计算机图形学 读书笔记(五) 网格参数化 Triangulated Surface Parameterization

写个读书笔记,一来作为字典以后可以查,二来记录自己的理解。

并没有对每个知识点的详细解释,大部分只有主观的定性的解释。


网格参数化的意义:

提供了网格和其他domain(如贴图)的映射,即:将一个三维网格的顶点信息,铺开,记录在一个二维数组里面。 一般用u,v作为坐标。(我推测的,因为贴图的坐标是uv吐舌头

网格参数化的方法:

用最低的变形,将一个网格铺开在一个平面上。 

任何封闭表面都可以由一条缝展开后,铺在一个平面上。但变形、扭曲是不可避免的,尤其是突出的表面部分(称为极值点),展开后扭曲最明显。

所以网格参数化的主要工作就变成了:计算一条缝,用最短的路径,经过所有的极值点,来获取最小的扭曲。(本文并没有讲计算完缝之后怎么保存每个顶点的数据,因为ppt里没讲 = =#,我也很好奇)


Minimum spanning tree (MST) method  和Greedy algorithm是主要算法,Sheffer 和 Gu 用这两个算法计算缝。

但本节主要讲了skeleton based 方法 (也用了mst和greedy)。   

skeleton-based method:

用Mst生成的seam(缝) 同一个极值点会经过多次。所以用一个骨骼生成一个最小完全斯坦纳树,这个骨骼作为一条缝会好一些。 compute an approximation to the minimal full component Steiner tree, deriving it from the straight skeleton(没看懂,没有讲这个方法具体好多少) 

straight skeleton:  

对于一个简单多边形,他的骨架如下图,即骨架是一个以多边形的顶点为 叶节点的树。 

如果一个骨架以这个多边形的所有顶点为terminals,那么这个骨架就是一个full component steiner tree。


将2d的skeleton 扩展到3D需要解决两个问题:

1.最短tour到所有terminals。

2.将tour 收缩为skeleton, 即变为full component steiner tree。

half-edge data structrue: 

将三角网格用有向的边来描述, 即一条无向的边变成两条有方向的边。并将整个网格变成有向图。



skeleton- based method大概步骤:

1.用mst生成最初的遍历


2.同一个节点不要经过两次, 方法是:跳过重复的节点,直接连到下一个节点去。 

3.收缩骨骼:方法:两条边相遇的地方都是可以收缩的。


4.拉直骨骼:  前述步骤产生的骨骼很参差不齐,最后再平滑一下。

最后比较如下


猜你喜欢

转载自blog.csdn.net/qq_30795577/article/details/79884755