【修正】问题五十五:怎么用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
- 【修正】问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)
- 问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)
- 问题六十三:怎么用ray tracing画sphere sweeping图形(2)——teapot
- Q97:怎么用三角形网格细分Bezier曲面——以Utah Teapot为例
- 问题五十四:怎么用ray tracing画参数方程表示的曲面(2)—— bezier surface
- 问题十二:怎么用ray tracing画第一张图
- 问题三十九:怎么用ray tracing画圆环
- 问题四十二:怎么用ray tracing画任意圆环片段
- 问题四十六:怎么用ray tracing画superellipsoid
- 问题四十七:怎么用ray tracing画superellipsoid (2)
- 问题五十:怎么用ray tracing画blobs
- 问题五十一:怎么用ray tracing画tear drop
- 问题五十七:怎么用ray tracing画translational sweeping图形
- 问题五十八:怎么用ray tracing画conic sweeping图形
- 问题六十三:怎么用ray tracing画sphere sweeping图形
- 问题十三:怎么用ray tracing画个球
- 问题十七:怎么用ray tracing画多个球?
- 问题三十二:怎么用ray tracing画多边形(polygon, triangle)
- 常用的清除浮动的方法
- VC++ 字符串操作学习总结
- FileProvider使用
- ERROR
- position属性的5个值
- 【修正】问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)
- 第一章17重载函数
- Java面试题收集
- freemaker excel 合并行
- elasticsearch索引自动维护
- Python 序列之元组tuple
- C++作业3
- 全面理解面向对象的 JavaScript
- Mvc 提交表单的4种方法全程详解