首先,让我们从我的数学背景开始。我学过微积分I- IV和微分方程。我上了第一个学期的计算机图形学课程,我们实现了我们自己的图形管道,包括在没有任何图形API的情况下使用Phong进行着色。
这学期我要上研究生级别的高级计算机图形学课程,但当我读到其中涉及的数学时,我就迷失了方向。这个类基本上是一个图像合成类。我们将在第一个项目中构建光线跟踪器,并在此基础上进行构建。
在阅读高级计算机图形学时,我通常会学到一堆数学知识。我知道计算机图形需要大量的数学运算,但当我试图弄清楚如何将数学运算实现到代码中时,我遇到了一些问题。为了在CG中脱颖而出,我真的需要掌握这方面的诀窍。
例如,GPU Gems的这篇文章:http://http.developer.nvidia.com/GPUGems/gpugems_ch01.html有一堆数学知识,但我不知道从哪里开始实现这些数学知识。
我是不是漏掉了什么?我是不是应该看看数学,然后就能推导出代码呢?有没有教程/书可以帮助我理解我需要做什么?
发布于 2011-01-11 10:23:57
这篇文章是使用FFT,或者实际上是反FFT来生成一个移动的高度场。阅读有关FFT的内容。要进行2d运算,首先对行进行1DFFT,然后对列进行1DFFT。一旦你有了高度场,偏导数可能是通过取x或y轴上相邻高度的差来获得的,这取决于它是哪个偏导数。乍一看,我没有看到其中的积分,但它们确实出现在一些图形论文中,并且有计算它们的方法。
我也可以推荐大家浏览一下ompf论坛:http://ompf.org/forum/
发布于 2011-01-22 16:15:52
对于你在GPU gems文章中看到的那种数学编程,通常属于数值分析。数值分析的更多应用方面将在关于数值方法或科学编程的课程或书籍中讨论。我建议从维基百科上关于numerical analysis的文章开始,看看一些具体的链接文章。一旦您知道了一些相关方法的名称,就很容易找到示例代码。
提示:实现导数和积分的很大一部分实际上只是学习如何处理程序中的限制(在数学意义上)。通常,这并不是明确声明的。
发布于 2011-01-11 11:07:23
除了“学习更多的数学和实践”之外,我可以给出的一个提示是,一些数学结构通常在代码中有一个类似的结构,只是可能不明显。
积分(和求和)通常被实现为代码中的循环或跨帧的求和(在图形中通常是这种情况)。导数和偏量是值之间的变化,这些值通常表现为跨帧的增量或像素等离散元素之间的增量。
这些规则并不是100%有效的,但是如果你可以从它们生成的代码的角度来观察更可怕的数学元素,那么它将更容易被理解。从一个坚实的基础开始工作是很重要的,所以要确保你已经掌握了基础,剩下的就是经验和实践。
https://stackoverflow.com/questions/4653170
复制相似问题