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)细分曲面相关推荐

  1. Q82:三角形网格[Triangle Mesh]图形的平滑着色[Smooth Shading]

    三角形网格[Triangle Mesh]图形的平滑着色[Smooth Shading],主要分三步: 1,计算单个三角形的法向量.根据三角形的三个顶点来求. 2,计算单个顶点处的法向量.根据共该顶点的 ...

  2. 7.物体的几何表示——细分曲面

    ♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥ ...

  3. OpenGL 4.0的Tessellation Shader(细分曲面着色器)

    细分曲面着色器(Tessellation Shader)处于顶点着色器阶段的下一个阶段,我们可以看以下链接的OpenGL渲染流水线的图:Rendering Pipeline Overview - Op ...

  4. Tessellation Shader(细分曲面着色器)

    Tessellation Shader)是OpenGLES4.0引入的,处于顶点着色器阶段的下一个阶段,它是由ATI在2001年率先设计出来的. 细分曲面着色器 直到这个阶段,对于操作几何图元而言,只 ...

  5. OpenGL Tessellation细分曲面的实例

    OpenGL Tessellation细分曲面的实例 先上图,再解答. 正常显示,细分之前 按下M键,细分之后 完整主要的源代码 源代码剖析 先上图,再解答. 正常显示,细分之前 按下M键,细分之后 ...

  6. DOO-SABIN 细分曲面(编辑中)

    之前实现了简单的细分曲线,即Chaikin细分算法,现在准备实现DooSabine细分曲面 我这里借助http://www.idav.ucdavis.edu/education/CAGDNotes/C ...

  7. 图形学论文:《A subdivision algorithm for computer display of curved surfaces》细分曲面的计算方法

    <A subdivision algorithm for computer display of curved surfaces> 细分曲面的计算方法 PDF下载地址 该报告提出了一种用于 ...

  8. SketchUp中的细分曲面椅子建模教程

    作者:TutorialsUp 今天分享的是关于 SketchUp 细分曲面椅子建模教程 作者根据椅子设计的正.侧.俯三视图,在SketchUp中进行3D建模. 复杂的曲面与异形对象并不是SketchU ...

  9. maya多边形建模怎样做曲面_maya细分曲面到多边形,MAYA

    修改 > 转化 > 细分曲面到多边形(Modify > Convert > Subdiv to Polygons) 细分方法(Tessellation Method) 选择以下 ...

最新文章

  1. 设计模式之建造者模式(生成器模式、Builder)摘录
  2. 如何理解分时系统的四个特征
  3. loadrunner写脚本常用C函数
  4. 2018 年全球互联网十大数据泄露事件盘点
  5. Hibernate 具体用法(自整理)
  6. spring初始化相关
  7. Elasticsearch大文件搜索
  8. linux中运行ifconfig出现错误,不能sudo apt install net-tools,Linux不能联网
  9. 研究所月入两万?见过越上班工资越少的骚操作吗...
  10. Firefox浏览Flash网页乱码的解决方案
  11. ISO27001测试题
  12. 英雄联盟服务器维修中启动游戏失败,电脑登录英雄联盟失败的八种解决方法
  13. illumina不愧是二代测序无冕之王
  14. 树莓派4B连不上wifi的一个意想不到的原因
  15. leaflet 卷帘,比较两个地图的叠加sideBySide
  16. 补码的加减法运算及溢出判断
  17. 使用nodejs、express以及MySQL制作一个简单类淘宝的登录注册页面
  18. 全球及中国镀银铜纳米粒子行业供需预测与发展格局分析报告2021~2026年
  19. 2.4G有源智能电子学生卡(SI24R2E应用实例)
  20. android 模拟器作用,安卓模拟器:看似简单实则用处极大的日常功能

热门文章

  1. react key值警告问题
  2. Linux拷贝文件夹
  3. Postfix+Mysql+Apache+Dovecot+Thunderbird+Extmail+E
  4. cocos2d-x内存自动释放机制
  5. 剑指offer——面试题29:数组中出现次数超过一半的数字
  6. python import无法导入该脚本的父目录下的另一个子目录的模块
  7. 批量ping IP并检测IP延迟率和丢包率脚本
  8. windows 7 netsh wlan命令连接wifi
  9. SpringMVC框架使用注解执行定时任务(转)
  10. eclipse下的tomcat内存设置大小(转)