【修正】问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)

来源:互联网 发布:长安张宝林怎么样知乎 编辑:程序博客网 时间:2024/04/27 15:00

“问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)”原文链接:
http://blog.csdn.net/libing_zeng/article/details/54565443

当时输出的图形,着实对不起观众。
再次贴图如下:
这里写图片描述
这个图形对应的参数信息:将每一个patch分成80*80个小曲面片,耗时14779s。
花费了这么长时间,但是输出的图形是这个鬼样子。

后面,准备使用三角形细分bicubic bezier patches时,发现:
数据有点点“异常”。

这里写图片描述
如果直接根据patches数组中的数据到vertices数组中获取顶点数据,拿到的顶点数据其实是“错位的”。
正确的做法应该是:先将patches数组中的所有数据的值都“减1”。

在代码中对应修改如下:
这里写图片描述

修改数据后的输出图形:

这里写图片描述
红色框标注的是修改后的图形;其他3个是修改前的图形。仅从耗时来看,修改后输出图形所需时间要少得多。

看看修改后的图形:
前一个是单patch分成4*4个小曲面片,耗时74s;
前一个是单patch分成16*16个小曲面片,耗时285s;
这里写图片描述 这里写图片描述
尽管,还是有不少噪声点,但是效果勉强可以接受。

完整代码链接:http://download.csdn.net/detail/libing_zeng/9804197

后面,我们会通过三角形细分的方式来trace这个图形,效果当然会更好。

3 0
原创粉丝点击