Q79:怎么用三角形网格(Triangle Mesh)细分曲面
79.1 思路分析
我们先以球心在原点的单位球面为例来说明细分过程。
79.2 C++代码实现
79.2.1 tessellate_flat_sphere()的实现
其实,实现起来还挺简单。只需要根据参数方程计算小三角形的顶点,然后新建三角形对象,然后将三角形对象添加到Grid即可。(画Grid的过程在“Q78”中已经实现)。
我们在Grid.cpp中添加一个函数tessellate_flat_sphere()来完成所需的事宜。
该函数的相关代码如下放截图:
79.2.2 World::build()
79.3 测试图形
tessellate_flat_sphere(8,4),耗时315s
tessellate_flat_sphere(16,8),耗时299s
tessellate_flat_sphere(160,80),耗时269s
tessellate_flat_sphere(1600,800),耗时438s
79.4 用三角形网格细分牛角面
用三角形网格细分曲面,其实很简单:
根据参数方程求出所有三角形的顶点,然后将所有三角形添加到一个Grid中,然后ray trace这个Grid即可。
所以,只要直到曲面的参数方程即可。
79.4.1 参数方程
79.4.2 将牛角面分割成三角形网格(tessellate_flat_horn())
79.4.3 World::build()
和细分球面时不同的地方只是“相机的位置”:
pinhole_ptr->set_eye(0,-2, 100);
pinhole_ptr->set_lookat(0,-2, 0);
79.4.4 测试图形
tessellate_flat_horn(8,4),耗时371s
tessellate_flat_horn(16,8),耗时434s
tessellate_flat_horn(160,80),耗时288s
tessellate_flat_horn(1600,800),耗时453s
79.5 其他说明
像这样以三角形网格的方式来ray trace参数形式的曲面,思路简单,速度较快。
回想“问题五十三:怎么用ray tracing画参数方程表示的曲面(1)”当时ray trace参数形式的球面和牛角面时,联立参数方程和光线方程,然后求个各种一阶微分、二阶微分。各种纠结,生成图形的过程是特别耗时,重点是生成的图形对不起观众。参考链接:
http://blog.csdn.net/libing_zeng/article/details/54565070
完整的代码,参考:http://download.csdn.net/detail/libing_zeng/9772259
Referrance
[1]. Kevin Suffern, Ray Tracing from theGround Up, A K Peters Ltd, 2007.
Q79:怎么用三角形网格(Triangle Mesh)细分曲面相关推荐
- Q82:三角形网格[Triangle Mesh]图形的平滑着色[Smooth Shading]
三角形网格[Triangle Mesh]图形的平滑着色[Smooth Shading],主要分三步: 1,计算单个三角形的法向量.根据三角形的三个顶点来求. 2,计算单个顶点处的法向量.根据共该顶点的 ...
- 7.物体的几何表示——细分曲面
♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥ ...
- OpenGL 4.0的Tessellation Shader(细分曲面着色器)
细分曲面着色器(Tessellation Shader)处于顶点着色器阶段的下一个阶段,我们可以看以下链接的OpenGL渲染流水线的图:Rendering Pipeline Overview - Op ...
- Tessellation Shader(细分曲面着色器)
Tessellation Shader)是OpenGLES4.0引入的,处于顶点着色器阶段的下一个阶段,它是由ATI在2001年率先设计出来的. 细分曲面着色器 直到这个阶段,对于操作几何图元而言,只 ...
- OpenGL Tessellation细分曲面的实例
OpenGL Tessellation细分曲面的实例 先上图,再解答. 正常显示,细分之前 按下M键,细分之后 完整主要的源代码 源代码剖析 先上图,再解答. 正常显示,细分之前 按下M键,细分之后 ...
- DOO-SABIN 细分曲面(编辑中)
之前实现了简单的细分曲线,即Chaikin细分算法,现在准备实现DooSabine细分曲面 我这里借助http://www.idav.ucdavis.edu/education/CAGDNotes/C ...
- 图形学论文:《A subdivision algorithm for computer display of curved surfaces》细分曲面的计算方法
<A subdivision algorithm for computer display of curved surfaces> 细分曲面的计算方法 PDF下载地址 该报告提出了一种用于 ...
- SketchUp中的细分曲面椅子建模教程
作者:TutorialsUp 今天分享的是关于 SketchUp 细分曲面椅子建模教程 作者根据椅子设计的正.侧.俯三视图,在SketchUp中进行3D建模. 复杂的曲面与异形对象并不是SketchU ...
- maya多边形建模怎样做曲面_maya细分曲面到多边形,MAYA
修改 > 转化 > 细分曲面到多边形(Modify > Convert > Subdiv to Polygons) 细分方法(Tessellation Method) 选择以下 ...
最新文章
- 设计模式之建造者模式(生成器模式、Builder)摘录
- 如何理解分时系统的四个特征
- loadrunner写脚本常用C函数
- 2018 年全球互联网十大数据泄露事件盘点
- Hibernate 具体用法(自整理)
- spring初始化相关
- Elasticsearch大文件搜索
- linux中运行ifconfig出现错误,不能sudo apt install net-tools,Linux不能联网
- 研究所月入两万?见过越上班工资越少的骚操作吗...
- Firefox浏览Flash网页乱码的解决方案
- ISO27001测试题
- 英雄联盟服务器维修中启动游戏失败,电脑登录英雄联盟失败的八种解决方法
- illumina不愧是二代测序无冕之王
- 树莓派4B连不上wifi的一个意想不到的原因
- leaflet 卷帘,比较两个地图的叠加sideBySide
- 补码的加减法运算及溢出判断
- 使用nodejs、express以及MySQL制作一个简单类淘宝的登录注册页面
- 全球及中国镀银铜纳米粒子行业供需预测与发展格局分析报告2021~2026年
- 2.4G有源智能电子学生卡(SI24R2E应用实例)
- android 模拟器作用,安卓模拟器:看似简单实则用处极大的日常功能
热门文章
- react key值警告问题
- Linux拷贝文件夹
- Postfix+Mysql+Apache+Dovecot+Thunderbird+Extmail+E
- cocos2d-x内存自动释放机制
- 剑指offer——面试题29:数组中出现次数超过一半的数字
- python import无法导入该脚本的父目录下的另一个子目录的模块
- 批量ping IP并检测IP延迟率和丢包率脚本
- windows 7 netsh wlan命令连接wifi
- SpringMVC框架使用注解执行定时任务(转)
- eclipse下的tomcat内存设置大小(转)