联合,交叉和JavaFX 3D对象之间的区别

Jea*_*e-B 3 3d javafx javafx-2 javafx-8 javafx-3d

有没有办法执行布尔运算,如联合,交叉和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对象是否有这样的东西.如果不是,我很想知道实施这些操作的最佳方法.

亲切的问候,

Jos*_*eda 7

正如@ jdub1581所说,在JavaFX中,没有直接的方法来获得具有3D原始形状的布尔运算.

这并不意味着在您知道或提供网格信息的情况下无法执行这些操作.

虽然F(X)yz库具有许多复杂的3D 形状,但是网格信息完全提供,它不会对它们执行布尔运算.

3D布尔运算是构造实体几何技术的基础.CSG实体是使用布尔运算(并集,交集,差异)从几个基元(立方体,棱柱,球体,圆柱体,圆锥体和圆环面)构造的.

这种技术有一种基于Java的实现,即JCSG.来自Michael Hoffer,他的作者:

基于BSP的CSG(构造实体几何)的Java实现.它是我所知道的唯一简单且免费的Java实现.该实现使用基于csg.js的优化CSG算法.

基于该实现,JFXScad是一个基于JavaFX的项目,使用JCSG创建可以3D打印的复杂形状,或导出为STL/OBJ.

使用此项目,您可以在左侧面板上键入,并在右侧生成3D形状.这是可用的样本之一:

JFXcad

正如你所看到的,一些武器被挤压创建,并联合Cylinder使用S union,difference,...