java - 裁剪 TriangleMesh

  显示原文与译文双语对照的内容
0 0

我可以从. stl 文件加载一个 TriangleMesh 。 我可以画出来,一切都好。 但是,当我需要从形状中获得这个"裁剪"时,事情会变得复杂。 我希望有一个类似的方法:

public TriangleMesh cropFrom(Shape shape) {
 TriangleMesh croppedTriangleMesh = new TriangleMesh();
 for (Point point : currentTriangleMesh.getPoints()) {
 if ( shape.contains(point) ) {
//Let the magic happens!
 }
 }
 return croppedTriangleMesh;
}

我知道TriangleMesh用的是点( x,y,z ) 面和纹理坐标。 我不知道如何检索相关的面和纹理坐标给出点( 反之亦然) 。 我不清楚如何开始或者在哪里查看。 它似乎不是一个受欢迎的话题。

感谢你的时间和帮助 !

时间:原作者:1个回答

0 0

你可能需要使用多边形网格来查看布尔操作。 它通常是一个硬操作,可以轻松地完成,但不是鲁棒的,如下面的方法:

  • 分割两个对象的所有相交曲面
  • 使用光线跟踪或者使用邻接信息,确定在任意对象内和外部的曲面
  • finally,基于所需的操作,只保留选定的曲面
    • 交叉口- 将B 内的A 和B 内的部分保持在
    • Union - 保留外部B 和外部部分的perts
    • 差异A - B - 保持外部B的部分,保持B 内部的部分( 和翻转正常)

另外,采用多个精度算法和多边形对象转换为边界平面表示的方法是较慢和难以实现的。

最好使用其中一个库,实现这一点,比如 CGAL ( 其中之一) 。

原作者:
...