0

我想计算得到的柏拉图(或者可能是阿基米德)实体的表面网格,并为每个面应用置换贴图。网格应显示位移图的精细细节,并且是水密和多方面的(用于 3D 打印)。

为此,我考虑过使用 CGAL 隐式函数 3d 曲面网格划分器。然后,我会将每个体素点映射到相应的面部,应用从体素空间到面部的坐标系变换,并查找面部的高度场。我知道如何为每个面构建变换矩阵,所以我想到了以下算法来测试实体中是否包含体素:

  1. 找到离点A最近的人脸
    • 对于给定的点 A,通过迭代所有顶点并比较与 A 的距离,找到柏拉图式(阿基米德)实体的 3 个最近顶点
    • 根据顶点数组中最小的索引对3个顶点进行排序
    • 从顶点索引中构建一个整数(字典索引): (v[0] n n+v[1]*n+v[3]*1) 其中 n 是顶点的数量
    • 迭代一个元组数组(字典索引,人脸)并找到具有相同字典索引的人脸
  2. 每个面都有一个预先计算的变换矩阵和一个高度场。应用变换矩阵并查找高度场以了解 A 是在实体内部还是外部

我想存在更好的解决方案,尤其是寻找合适的面孔?另一种方法可能是不使用表面网格器,而是从面中构建表面:获取每个面的位移图并将变换矩阵应用于它以构建实体,但是我需要简化每个面网格并将它们合并不知何故,结果是水密和多方面的(如果置换贴图具有某些值,则面应该支持孔),所以我认为具有隐式函数的基于体素的方法是最通用的工具。

4

1 回答 1

0

基于体素的方法并不成功:对于许多伪像,对于低分辨率。最后我创建了 2d 高度图,对它们应用简化算法,然后将它们投影到实体的面上,最后通过自定义算法将面网格合并为一个网格。

于 2013-07-31T11:33:19.310 回答