DOC-02-01 概览

本章小结了为JavaFX设计的Java 8 API中可用的JavaFX 3D图形技术功能特性。

JavaFX 3D图形 API为JavaFX平台提供了一个通用三维图形库。你可以使用3D几何学、镜头和光照来创建、显示和操控3D空间中的对象。

我们假设你具有中等水平的Java和JavaFX知识。

http://www.oracle.com/technetwork/java/javase/downloads/下载Java Developnent Kit(JDK)8。JDK 8中包含了JavaFX API,其中包含3D图形处理功能特性。

3D图形处理应用场景

图1-1展示了在JavaOne2012主题会议上展示的JavaFX 3D样例程序的截图。JavaFX SDK早期原型中包括了对3D网格(Mesh)、镜头(Camera)和光照(Lighting)的支持,样例程序构建了一个基于它的概念验证。你可以在站点http://www.youtube.com/embed/AS26gZrYNy8?rel=0上看到对应的演示。

1-1 JavaFX 3D样例程序

JavaFX 3D图形处理的应用场景可以包括:

● 库存和过程可视化

● 科学和工程可视化

● 3D图表

● 机械CAD和CAE

● 医学成像

● 产品营销

● 建筑设计与模拟

● 任务规划

● 培训

● 娱乐

JavaFX 2.x版中的3D功能特性

在JavaFX 2.x版本中可以创建2维对象并可以将它们变换到3D空间中。你可以通过集成Group类来创建自定义Group,并且设置任何你想要的子变换矩阵。你可以模拟其他3D内容专业包——如Maya、3D Studio Max等——所提供的变换组(Transform Group)的行为,因为你可以自定义对应变换组中的子矩阵。参考《在JavaFX中应用变换(Applying Transformation in JavaFX)》来了解更多关于变换特性的信息。

例1-1展示了构造一个Group子类Xform的样例代码,其中带有一个平移(Translation)、一个中心点(Pivot)、三个旋转(Rotation)、一个缩放(Scale)和一个反向中心点(Inverse Pivot)。

例 1–1   3D变换代码样例

Xform子类由Group类继承而来是因为Group原来是设计用于二维(2D)UI布局。Node的中心点会在2D UI布局时的特定场景下被重新计算,但是如果你按照例1-1所示的代码继承Group创建了Xform子类,并且使用了那些新变换,它会忽略2D UI布局。

尽管对于2D布局中的UI控件来说,对中心点的重计算功能是让人很满意的,但是在3D布局中它可能并不是你想要的东西。由于中心点会按Node的布局范围的中心来进行重计算,因此对布局范围的任何改变将会对中心点造成改变,这将导致对象的自动移动。因此对一个Group Node来说,任何对其子节点的改变,包括位置、几何形状、效果、方向或者缩放,都将会导致Group的布局边界改变。在3D布局中时这将会导致对象不以预期的方式自动移动,但是在2D布局中它却以令人满意的方式工作。因此在一个3D布局中,你会希望忽略对中心点的自动计算。

Node上一些有帮助的3D Transform方法在例1-2中被列出来了。

1–2 Node上有帮助的3D Transform方法

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/08/graphics_overview/
百度已收录