Jon*_*ord 14 3d graphics raytracing rasterizing
光栅化(三角形)和光线跟踪是我遇到的渲染3D场景的唯一方法.还有其他人吗?此外,我很想知道任何其他真正"在那里"做3D的方法,例如不使用多边形.
Lar*_*itz 42
Aagh!这些答案都是非常不知情的!
当然,问题不精确也无济于事.
好的,"渲染"是一个非常广泛的话题.渲染中的一个问题是摄像机可见性或"隐藏表面算法" - 确定每个像素中看到的对象.可见性算法有各种分类.这可能是海报所询问的内容(鉴于他们认为它是"光栅化"和"光线追踪"之间的二分法).
经典(虽然现在有点过时)的分类参考是Sutherland等人的"A Characterization of Ten Hidden-Surface Algorithms",ACM Computer Surveys 1974.它已经过时了,但它仍然非常适合提供一个思考如何对这些算法进行分类的框架.
一类隐藏表面算法涉及"光线投射",其计算从相机通过每个像素的线与对象(其可具有各种表示,包括三角形,代数表面,NURBS等)的交点.
其他类别的隐藏表面算法包括"z-buffer","scanline技术","列表优先级算法"等.在没有多少计算周期且没有足够的内存来存储z缓冲区的日子里,他们对算法很有创意.
现在,计算和内存都很便宜,因此三种技术几乎都胜出:(1)将所有内容切割成三角形并使用z缓冲区; (2)射线铸造; (3)类似雷耶斯的算法,它使用扩展的z缓冲区来处理透明度等.现代显卡做#1; 高端软件渲染通常是#2或#3或组合.虽然已经提出了各种光线跟踪硬件,有时已经构建,但从未被捕获,现代GPU现在可编程到足以实际光线跟踪,尽管它们的硬编码光栅化技术处于严重的速度劣势.其他更奇特的算法多年来一直被淘汰.(尽管各种排序/喷溅算法可用于体绘制或其他特殊用途.)
"光栅化"实际上只是意味着"弄清楚物体所在的像素".公约规定它不包括光线追踪,但这是不稳定的.我想你可以证明光栅化答案"这个形状重叠的像素",而光线跟踪回答"哪个对象在这个像素后面",如果你看到差异.
现在,隐藏表面去除不是"渲染"领域唯一需要解决的问题.知道每个像素中可见的对象只是一个开始; 你还需要知道它是什么颜色,这意味着有一些计算光在场景中传播的方法.有一大堆技术,通常分为处理阴影,反射,和"全局照明"(即,其反弹对象之间,而不是直接从灯推出).
"光线跟踪"是指应用光线投射技术来确定阴影,反射,全局照明等的可见性.可以对所有内容使用光线跟踪,或使用各种光栅化方法进行相机可见性和光线追踪,以获得阴影,反射,和GI."光子映射"和"路径追踪"是用于计算特定类型的光的传播的技术(使用射线追踪,因此它只是错误地说,他们在某种程度上从根本上不同的渲染技术).还有一些不使用光线跟踪的全局照明技术,例如"光能传递"方法(这是解决全局光传播的有限元方法,但是在该领域的大多数部分最近已经失宠).但是使用光能传递或光子映射进行光传播STILL需要您以某种方式制作最终图像,通常采用标准技术之一(光线投射,z缓冲/光栅化等).
提到特定形状表示(NURBS,体积,三角形)的人也有点困惑.这是光线跟踪与光栅化的正交问题.例如,您可以直接扫描跟踪nurbs,或者您可以将nurbs切成三角形并跟踪它们.您可以直接栅格化三角形到Z缓冲,但你也可以直接在光栅化扫描线顺序高阶参数曲面(CF里/木工/等CACM 1980年).
| 归档时间: |
|
| 查看次数: |
7954 次 |
| 最近记录: |