细分曲面简介(subdivision surface)
2016-06-02 16:56
579 查看
转载自:https://segmentfault.com/a/1190000002925331
在三维建模领域里,细分曲面算是一个比较常见的术语了,经常用于动画角色的原型设计,甚至在工业设计领域,也开始流行用细分建模来进行原型设计。教科书里一讲到细分曲面,必然提一下《Geri's Game》,这部动画片里人物造型应用的就是细分曲面技术。
那么究竟什么是细分曲面呢?小时候学素描,开始的时候都要学着画一个圆。一般从正方形开始,然后不断的割角,最后就成了一个圆。这其实就是一个细分曲线。这类作图方法,可以形象地称为切割磨光方法:设计师先勾划出物体的大致轮廓线,然后不断的细化割角。
把画圆的方法推广到三维,就得到了画球的方法。
应用细分曲面做三维模型的原型设计非常的方便。通常只需要两个步骤,先创建出模型的大致轮廓,然后设置需要切割的点线面。比如这个桌子模型,先创建出它的轮廓模型,看起来非常简单,然后设置哪些点线面需要切割。感兴趣的朋友可以到三维公园去逛逛,那里有大量的细分曲面,而且还提供了在线细分建模的工具,非常容易上手。
细分曲面的核心就一个点:细分规则。不同的细分规则,生成的细分曲面外形是有区别的。常见的细分规则有Catmull-Clark细分,Doo-Sabin细分,Loop细分等。具体的细分规则可以参考教科书或者相关论文。
上面我们讲了,细分曲面可以应用于原型设计。主要特点是上手简单且表现力也很丰富。另外,一般的工业设计软件常用的曲面表示是样条曲面(分段多项式表示的曲面),这属于一种连续的信息表示,用于生产制造时,需要对曲面进行离散化。比如3D打印制造,它的输入就是一个网格。细分建模,可以直接得到网格,不需要样条曲面这种中间格式的表示。
在显卡上,也有细分曲面的应用。在游戏场景中,由于实时性的要求,网格的面片数量要求要尽量的低,但是,网格少了,模型的细节也少了。为了尽可能的提升网格的数量,显卡渲染流水线中加入Tessellation模块,这个模块直接在硬件上对网格进行了细分。
细分建模产生的网格,其面片分布非常的规则(regular)。规则的网格不管是用于几何处理,还是用于有限元计算,都有非常好的性质,比如计算稳定性。另外,细分网格表示的数据量非常小,很适合于网络传输。
在三维建模领域里,细分曲面算是一个比较常见的术语了,经常用于动画角色的原型设计,甚至在工业设计领域,也开始流行用细分建模来进行原型设计。教科书里一讲到细分曲面,必然提一下《Geri's Game》,这部动画片里人物造型应用的就是细分曲面技术。
那么究竟什么是细分曲面呢?小时候学素描,开始的时候都要学着画一个圆。一般从正方形开始,然后不断的割角,最后就成了一个圆。这其实就是一个细分曲线。这类作图方法,可以形象地称为切割磨光方法:设计师先勾划出物体的大致轮廓线,然后不断的细化割角。
把画圆的方法推广到三维,就得到了画球的方法。
应用细分曲面做三维模型的原型设计非常的方便。通常只需要两个步骤,先创建出模型的大致轮廓,然后设置需要切割的点线面。比如这个桌子模型,先创建出它的轮廓模型,看起来非常简单,然后设置哪些点线面需要切割。感兴趣的朋友可以到三维公园去逛逛,那里有大量的细分曲面,而且还提供了在线细分建模的工具,非常容易上手。
细分曲面的核心就一个点:细分规则。不同的细分规则,生成的细分曲面外形是有区别的。常见的细分规则有Catmull-Clark细分,Doo-Sabin细分,Loop细分等。具体的细分规则可以参考教科书或者相关论文。
上面我们讲了,细分曲面可以应用于原型设计。主要特点是上手简单且表现力也很丰富。另外,一般的工业设计软件常用的曲面表示是样条曲面(分段多项式表示的曲面),这属于一种连续的信息表示,用于生产制造时,需要对曲面进行离散化。比如3D打印制造,它的输入就是一个网格。细分建模,可以直接得到网格,不需要样条曲面这种中间格式的表示。
在显卡上,也有细分曲面的应用。在游戏场景中,由于实时性的要求,网格的面片数量要求要尽量的低,但是,网格少了,模型的细节也少了。为了尽可能的提升网格的数量,显卡渲染流水线中加入Tessellation模块,这个模块直接在硬件上对网格进行了细分。
细分建模产生的网格,其面片分布非常的规则(regular)。规则的网格不管是用于几何处理,还是用于有限元计算,都有非常好的性质,比如计算稳定性。另外,细分网格表示的数据量非常小,很适合于网络传输。
相关文章推荐
- 解决Vista系统OpenGL驱动问题的方法整理
- Delphi下OpenGL2d绘图之画四边形的方法
- Delphi下OpenGL2d绘图之画点的方法
- Delphi下OpenGL2d绘图之初始化流程详解
- Delphi使用OpenGL2d绘图之画图片Bmp的方法
- 通过OpenGL ES混合模式缩放视频缓冲区来适应显示尺寸
- VC运用OPENGL加载BMP纹理图的实现方法汇总
- PHP 二维数组和三维数组的过滤
- java实现OpenGL ES纹理映射的方法
- java基于OpenGL ES实现渲染实例
- OpenGL坐标系介绍
- 【翻译】安卓opengl ES教程之四——添加颜色
- linux下opengl的安装(with qt)
- OpenGL超级宝典笔记——显示列表
- OpenGL超级宝典笔记——顶点数组
- OpenGL生成轮廓
- OpenGL超级宝典笔记——性能比较
- OpenGL超级宝典笔记——顶点缓冲区对象
- OpenGL超级宝典笔记——选择
- OpenGL超级宝典笔记——反馈