细分 网格细分 一、问题说明: 在3D计算机图形领域,我们通常想让粗网格更平滑。 作为将每个多边形面细分为更接近光滑表面的更小面的递归过程的限制,可以从粗网格计算光滑表面。 我们称之为流程细分。 在这个项目中,我们专注于三角形网格,从基本的VRML 3D模型文件(.wrl)中读取输入数据,然后代码将数据构造为半边结构,并以此结构进行循环细分或修改蝴蝶细分. 最后,代码可以将细分的结果数据存储到一个.wrl文件中。 2.我的实现: 代码功能如下: 1)能够读写基本的VRML 3D模型文件(.wrl) 2)实现了半边数据结构,用于表示、遍历和操作3D三角形网格。 3)实现了循环细分。 4)实施了修改后的蝴蝶细分。 5)使用openGl来显示网格,它不仅可以显示顶点和边,还可以显示曲面。
2023-01-31 19:58:23 74KB C++
1
自己在学习《计算几何》中有关Bezier曲线、曲面时做的一个细分小程序,该程序基于VC++6.0 和 OpenGL! 该程序代码中,有自己在编写时添加的很多实用小注释,对初学都应该有一定的帮助!另外,该程序也设置了几个功能键, F4 F5,分别是执行加细操作和 返回操作!
2022-05-20 01:43:38 45KB Bezier VC++ OpenGL Subdivision
1
Catmull-Clark-细分曲面 Catmull–Clark 算法是一种在计算机图形学中通过细分曲面建模来创建平滑曲面的技术。 Catmull-Clark 曲面使用以下细化方案递归定义: 从任意多面体的网格开始。 该网格中的所有顶点都称为原始点。 为每个面添加一个面点将每个人脸点设置为相应人脸所有原始点的平均值。 对于每条边,添加一个边点。 将每个边缘点设置为两个相邻面点及其两个原始端点的平均值。 对于每个面点,为面的每个边添加一条边,将面点连接到面的每个边点。 对于每个原始点P,取所有n个(最近创建的)面点的平均值F,对于接触P的边,取所有n个边中点的平均值R,其中每个边中点为其两个端点的平均值顶点。 将每个原点移动到该点 $$ \frac{F + 2R + (n-3)P}{n}。 $$ 这是 P、R 和 F 的重心,权重分别为 (n − 3)、2 和 1。 将每个新
2021-12-04 00:20:51 3KB Mathematica
1