首页 文章

计算机图形学:数学到代码

提问于
浏览
7

首先,让我们从我的数学背景开始 . 我采用了微积分I - IV和微分方程 . 我参加了第一学期的计算机图形学课程,其中我们实现了几乎我们自己的图形管道,包括使用Phong进行着色而没有任何图形API .

本学期我正在攻读高级计算机图形学课程,在阅读数学时,它会让我失望 . 这个类基本上是一个图像合成类 . 我们将在第一个项目中构建一个光线跟踪器,并从那里开始构建它 .

在阅读高级计算机图形学时,我通常会得到一堆数学 . 我理解计算机图形学是数学上的重要但我在试图弄清楚我想如何将数学实现到代码中时遇到了问题 . 我真的需要掌握这一点才能在CG中脱颖而出 .

例如,这篇来自GPU Gems的文章:http://http.developer.nvidia.com/GPUGems/gpugems_ch01.html有一堆数学,但我不知道如果我愿意,从哪里开始实现数学 .

那么,有什么我想念的吗?我想看看数学并能够得到代码吗?那里有教程/书籍可以帮助我理解我需要做什么吗?

3 回答

  • 0

    那篇文章正在使用FFT,或者实际上是逆FFT来生成移动高度场 . 阅读FFT . 要做2d,首先对行进行1d FFT,然后对列进行1d FFT . 一旦你有了高度场,就可以通过沿x或y轴取相邻高度的差异来获得偏导数,这取决于它的部分 . 我一眼就看不到积分,但它们确实出现在一些图形文件中,并且有评估它们的方法 .

    我还建议您浏览ompf论坛:http://ompf.org/forum/

  • 0

    您在GPU宝石文章中看到的数学编程通常属于数值分析 . 在数值方法或科学编程的课程或书中,将更多地应用数值分析 . 我建议从numerical analysis上的维基百科文章开始,并查看一些具体的链接文章 . 一旦知道了一些相关方法的名称,就很容易找到示例代码 .

    小贴士:实现衍生品和积分的很大一部分实际上就是学习如何处理程序中的限制(在数学意义上) . 通常,这没有明确说明 .

  • 1

    除了“研究更多的数学和实践”之外,我可以给出的一个提示是,一些数学结构通常在代码中具有类似的结构,它可能并不明显 .

    积分(和求和)通常被实现为代码中的循环或跨帧的总和(在图形中通常是这种情况) . 衍生物和部分是值之间的变化,其通常表现为跨帧的增量或像像素的离散元素之间的差异 .

    这些规则并不是100%,但如果您可以根据它们生成的代码开始查看更可怕的数学元素,那么它将更容易吸收 . 在坚实的基础上工作是很重要的,所以要确保你的基础知识有所下降,其余的则来自经验和实践 .

相关问题