ドキュメント



JavaFX: JavaFXグラフィックスの操作

1 概要

この章では、JavaFXのJava 8 APIによって現在使用できるJavaFX 3Dグラフィックス機能の概要を説明します。

JavaFX 3DグラフィックスAPIによって、汎用の3次元グラフィックス・ライブラリが、JavaFXプラットフォームに提供されます。3Dジオメトリ、カメラおよびライトを使用して、3D空間でオブジェクトを作成、表示および操作できます。

JavaおよびJavaFXに関する中級レベルの知識があることを前提とします。Java Development Kit (JDK) 8リリースをhttp://www.oracle.com/technetwork/java/javase/downloads/からダウンロードしてください。JDK 8には、3Dグラフィックス機能を含むJavaFX APIが含まれています。

3Dグラフィックスのユースケースのサンプル

図1-1に、JavaOne 2012の基調講演で実演されたJavaFX 3Dアプリケーションの例のスナップショットを示します。これは、3Dメッシュ、カメラおよびライトのサポートが追加されたJavaFX SDKの初期のプロトタイプ上で概念実証として作成されました。これは、http://www.youtube.com/embed/AS26gZrYNy8?rel=0 Webサイトで表示できます。

図1-1 JavaFX 3Dアプリケーションのサンプル

図1-1の説明が続きます
「図1-1 JavaFX 3Dアプリケーションのサンプル」の説明

その他のJavaFX 3Dグラフィックスのユースケースのサンプルは、次のとおりです。

  • Inventory and Process Visualization

  • Scientific and Engineering Visualization

  • 3D Charting

  • Mechanical CAD and CAE

  • Medical Imaging

  • Product Marketing

  • Architectural Design and Walkthroughs

  • Advanced User Experience

  • Mission Planning

  • Training

  • Entertainment

JavaFX 2.xリリースの3D機能

JavaFX 2.xリリースでは、2次元オブジェクトを作成し、それを3D空間で変換できます。Groupクラスをサブクラス化して独自のカスタム・グループを作成し、変換サブマトリックスを任意のものに設定できます。どのサブマトリックスが変換グループの一部であるかをカスタマイズできるため、Mayaや3D Studio Maxなどの他の3Dコンテンツ専用パッケージの変換グループの動作をシミュレートできます。この変換機能の詳細は、「JavaFXでの変換の適用」を参照してください。

例1-1に、平行移動、ピボット、3つの回転、スケールおよび逆ピボットを含む、GroupのサブクラスXformを作成するサンプル・コードを示します。

例1-1 3D変換のコード・サンプル

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から作成されるのは、グループはもともとは2次元(2D) UIレイアウト用に設計されているためです。ノードのピボットは2D UIレイアウトでは特定の条件で再計算されますが、例1-1に示すようにグループをサブクラス化してXformを作成し、それらの新しい変換を使用する場合、2D UIレイアウトはバイパスされます。

2D UIピボット再計算は2DレイアウトのUIコントロールには適していますが、3Dレイアウトで必要なものではありません。ピボット・ポイントがノードのレイアウト境界の中心として再計算されるため、レイアウト境界が変わるとピボット・ポイントは変わり、結果としてオブジェクトは自動的に移動します。したがって、グループ・ノードの場合、その子(位置、ジオメトリ、効果、方向、スケールなど)が変わると、グループのレイアウト境界が変わります。これによってオブジェクトは、3Dレイアウトに関しては意図しない方法で、しかし2Dに関しては適切な方法で、自動的に移動します。したがって、3Dレイアウトでは、自動ピボット再計算を明確にバイパスする必要があります。

ノードでの有用な3D Transformメソッドのいくつかを例1-2に示します。

例1-2 ノードでの有用な3D Transformメソッド

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)

ウィンドウを閉じる

目次

JavaFX: JavaFXグラフィックスの操作

展開 | 縮小