《Surface Simplification Using Quadric Error Metrics》这篇论文介绍了一种网格简化的算法,通过“edge contraction”(边收缩)的方法来简化网格。边收缩的结果就是将两个顶点合成一个顶点,因此可以按照任意的顶点数目去简化网格。

假设有一个二次函数 Δ(v)=vTQv\Delta(\mathbf{v})=\mathbf{v}^T\mathbf{Q}\mathbf{v}Δ(v)=vTQv 可以描述顶点v\mathbf{v}v的“变形程度”,这篇论文的算法目的就是最小化总体的“变形程度”,即:
minimize∑vvTQv \text{minimize} \quad \sum_{\mathbf{v}} \mathbf{v}^T\mathbf{Q}\mathbf{v} minimizev∑vTQv
但是由于直接最小化不太现实,因为顶点数目会发生改变,所以这篇论文的算法步骤是这样的:
- 对每个顶点计算其初始的 Q\mathbf{Q}Q,满足 vTQv=0\mathbf{v}^T\mathbf{Q}\mathbf{v}=0vTQv=0 ;
- 保存所有合法的“点对”,包括所有的边对应的点对,以及距离小于一定阈值的顶点对;
- 对于每个合法的点对(v1,v2\mathbf{v}_1,\mathbf{v}_2v1,v2),生成合成的顶点vs\mathbf{v}_svs,这一步边收缩的代价为Δ(vs)=vsT(Q1+Q2)vs\Delta(\mathbf{v}_s)=\mathbf{v}_s^T(\mathbf{Q}_1+\mathbf{Q}_2)\mathbf{v}_sΔ(vs

最低0.47元/天 解锁文章
6677

被折叠的 条评论
为什么被折叠?



