有没有办法执行布尔运算,例如联合,交叉和JavaFX 3D对象之间的区别,例如,在Sphere实例,Cylinder实例和Box实例之间说。
从Shape类继承的JavaFX 2D对象已经有了union()和subtract()方法 http://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Shape.html
我想知道JavaFX或F(X)yz库中的Shape3D对象是否有这样的东西。如果不是,我很想知道实施这些操作的最佳方式。
亲切的问候,
答案 0 :(得分:6)
正如@ jdub1581所说,在JavaFX中,没有直接的方法来获得3D原始形状的布尔运算。
这并不意味着在您知道或提供网格信息的情况下无法执行这些操作。
虽然F(X)yz库有许多复杂的3D shapes,其中完全提供了网格信息,但它不会对它们执行布尔运算。
3D布尔运算是Constructive Solid Geometry技术的基础。 CSG实体是使用布尔运算(并集,交集,差异)从几个基元(立方体,棱柱,球体,圆柱体,圆锥体和圆环体)构造的。
这种技术基于Java的实现JCSG。来自Michael Hoffer,他的作者:
基于BSP的CSG(构造实体几何)的Java实现。它是我所知道的唯一简单且免费的Java实现。此实现使用基于csg.js的优化CSG算法。
基于该实现,JFXScad是一个基于JavaFX的项目,使用JCSG创建可以3D打印或导出为STL / OBJ的复杂形状。
使用此项目,您可以在左侧面板上键入,并在右侧生成3D形状。这是可用的样本之一:
如您所见,通过挤压创建了几个手臂,并使用Cylinder
,union
,... {/ p>与difference
结合使用。