本小节讨论javaFX 3D图形特性。javaFX提供了通用的3维图形库,我们可以使用3D几何,照相机,灯光来创建和展示以及操作3D空间。假

设你拥有中级的java水平和javaFX知识,首先需要下载java8,java8中自带了javaFX,javaFX里包含了3D图形特性。

 

简单的3D图形使用实例

下图是2012年javaOne大会展示的javaFX 3D应用实例,它作为一个概念的验证在JavaFX SDK的早期原型添加3 d网格,相机,和照明的支持

javafx简单画板代码 javafx绘制图形_java

其他3D实例如下所示:

库存和过程可视化

 科学和工程可视化

 3D图表

 机械CAD和CAE

 医学成像

 产品营销

 建筑设计和走查

 先进的用户体验

 任务规划

 练习

 娱乐

 

javaFX2.x中的3D特性

JavaFX 2。x版本中,可以创建二维物体,并在三维空间中转换他们。你可以用子类或组类来创建您自己的自定义组或者设置sub-matrices转换成任何你想要的。你可以模拟其他3 d内容包的行为,比如玛雅和3 d Studio Max,因为您可以自定义哪些sub-matrices是变换群的一部分。

变形代码实例:

 

public class XformWithPivot extends Group {
    public Translate t = new Translate();
    public Translate p = new Translate();
    public Translate ip = new Translate();
    public Rotate rx = new Rotate();
    { rx.setAxis(Rotate.X_AXIS); }
    public Rotate ry = new Rotate();
    { ry.setAxis(Rotate.Y_AXIS); }
    public Rotate rz = new Rotate();
    { rz.setAxis(Rotate.Z_AXIS); }
    public Scale s = new Scale();
    public XformWithPivot() {
       super();
       getTransforms().addAll(t, p, rz, ry, rx, s, ip); 
    }
}

 

Xform子类继承了Group,Group最初是为了2D UI 布局设计的.  在2D UI布局中一些特定的情况下,节点的轴会重新计算。但是如果你使用新的变形创建Xform的时候,它将绕过2D UI 布局。

尽管在2D UI布局中,重新计算轴是令人满意的,但是在3D中你不会想使用这种办法的。轴心点是重新计算的中心节点的布局的界限,所以任何改变布局界限将导致轴心点变化,最终自动移动你的对象。为一组节点,任何改变孩子,包括位置、几何、效果,取向,或规模,将导致集团布局范围变化。这将自动将对象以意想不到的方式,当涉及到三维布局,但在理想的2 d时的方法。因此,在三维布局,你肯定想绕过自动枢轴重新计算。

节点上可用的3D变形方法

Transform getLocalToParentTransform()
Transform getLocalToSceneTransform()
public Point3D sceneToLocal(Point3D scenePoint)
public Point3D sceneToLocal(double sceneX, double sceneY, double sceneZ)
public Point3D localToScene(Point3D localPoint)
public Point3D localToScene(double x, double y, double z)
public Point3D parentToLocal(Point3D parentPoint)
public Point3D parentToLocal(double parentX, double parentY, double parentZ)
public Point3D localToParent(Point3D localPoint)
public Point3D localToParent(double x, double y, double z)