【发布时间】:2013-03-04 01:41:09
【问题描述】:
我想计算得到的柏拉图(或者可能是阿基米德)实体的表面网格,并为每个面应用置换贴图。网格应显示位移图的精细细节,并且是水密和多方面的(用于 3D 打印)。
为此,我考虑过使用 CGALs 隐式函数 3d 曲面网格器。然后我会将每个体素点映射到相应的面部,应用从体素空间到面部的坐标系变换并查找面部的高度场。我知道如何为每个人脸构建变换矩阵,所以我想到了以下算法来测试实体中是否包含体素:
- 找到离点A最近的人脸
- 对于给定的点 A,通过迭代所有顶点并比较与 A 的距离,找到柏拉图(阿基米德)立体的最近 3 个顶点
- 根据顶点数组中最小的索引对3个顶点进行排序
- 从顶点索引中构建一个整数(字典索引):(v[0]nn+v[1]*n+v[3]*1) 其中 n 是顶点数
- 迭代一个元组数组(字典索引,人脸)并找到具有相同字典索引的人脸
- 每个面都有一个预先计算的变换矩阵和一个高度场。应用变换矩阵并查找高度场以了解 A 是在实体内部还是外部
我想有更好的解决方案,尤其是寻找合适的面孔?另一种方法可能是不使用表面网格器,而是从面中构建表面:获取每个面的位移图并将变换矩阵应用于它以构建实体,但是我需要简化每个面网格并将它们合并不知何故,结果是无懈可击的和多方面的(如果置换贴图具有某些值,则面应该支持孔),所以我认为基于体素的隐式函数方法是最通用的工具。
【问题讨论】: