Java 修剪三角形网格
我能够从.stl文件加载三角形网格。我会画,一切都很好。然而,当我需要从一个形状“裁剪”这个三角形网格时,事情就变得复杂了。我想要一个如下所示的方法:Java 修剪三角形网格,java,3d,javafx,mesh,java-3d,Java,3d,Javafx,Mesh,Java 3d,我能够从.stl文件加载三角形网格。我会画,一切都很好。然而,当我需要从一个形状“裁剪”这个三角形网格时,事情就变得复杂了。我想要一个如下所示的方法: public TriangleMesh cropFrom(Shape shape) { TriangleMesh croppedTriangleMesh = new TriangleMesh(); for (Point point : currentTriangleMesh.getPoints()) { if (
public TriangleMesh cropFrom(Shape shape) {
TriangleMesh croppedTriangleMesh = new TriangleMesh();
for (Point point : currentTriangleMesh.getPoints()) {
if ( shape.contains(point) ) {
// Let the magic happens!
}
}
return croppedTriangleMesh;
}
我知道三角形网格与点(x、y、z)、面和纹理坐标一起工作。我不知道如何检索给定点的相关面和纹理坐标(反之亦然)。我不知道该怎么开始,也不知道该从哪里看。这似乎不是一个热门话题
提前感谢您的时间和帮助 您可能需要研究多边形网格的布尔运算。这通常是一个困难的操作,可以很容易地完成,但不可靠,如以下方法:
- 分割两个对象的所有相交曲面
- 无论是使用光线跟踪还是使用邻接信息,都可以识别在任一对象中哪些曲面在内部和外部
- 最后,根据需要执行的操作,仅保留选定曲面
- 交集-将A的PERT保持在B内,将B的部分保持在A内
- 并集-将A的PERT保持在B之外,将B的部分保持在A之外
- 差异A-B-将A部分保持在B外部,将B部分保持在A内部(并翻转法线)