目次:
ビデオ: Google I/O Extended: Recap Live Japan 2019 #RecapLiveJP 2024
JavaFXでは仮想3D世界の作成が以前より簡単になりました。この例では、JavaFXプログラムに球体を追加し、アニメーション化して光源を追加する方法を学習します。
ステップ1:球を追加する
まず、Sphereクラスで表される球を追加します。 Sphereコンストラクタは、球の半径を指定する単一のパラメータを受け入れます。たとえば、これらの線は半径が100の球を作成し、それを平行移動して仮想世界の中心点から外します。
<! - 1 - >球球=新しい球(100)。球。 setTranslateX(-180);球。 setTranslateY(-100);球。 setTranslateZ(100);ルート。 getChildren()追加(球);
球体に同じ青色のPhong材質を適用するのではなく、もっと面白いことをすることができます:このコードを使って、地球の円柱投影の画像から構築したPhong材質を適用します:
Image earthImage = new Image "file:earth。jpg"); PhongMaterial earthPhong =新しいPhongMaterial(); earthPhong。 setDiffuseMap(earthImage);球。 setMaterial(earthPhong);
この図は、結果として得られる球を示しています。
<! - 2 - > 土の円筒投影がフォン材として適用された球。このテクニックを使用して、球(またはその他の3Dオブジェクト)の周りの画像をラップすることができます。また、このプログラムの画像をWikipediaから入手することもできます。 Behrmann Projection を検索し、ファイルをダウンロードするだけです。 (Windowsペイントを使用すると、画像のエッジを少しだけ切り抜くことができます。これは、ウィキペディアで利用可能な画像のエッジが少ししかないためです。)
<! - 3 - >ステップ2:オブジェクトをアニメ化する
Whew! 3D仮想世界には、地球のように見える球体があります。この時点で他のオブジェクトを追加することもできます。
このステップでは、すべてのオブジェクトにアニメーションを追加して回転させます。各オブジェクトは単純なRotationTransitionアニメーションを取得します。最初に、球:
RotateTransition rt4 = new RotateTransition(); rt4。 setNode(球); rt4。 setDuration(Duration。ミリ秒(9000)); rt4。 setAxis(Rotate。Y_AXIS); rt4。 setByAngle(360); rt4。 setCycleCount(アニメーション.INEFINITE); rt4。 setInterpolator(インターポレータ.LINEAR); rt4。遊びます(); playメソッドが呼び出されると、球は回転を開始し、3秒ごとにz軸を中心に1回転します。
球がy軸を中心に回転し、世界が回転しているような印象を与えます。球の場合、速度は10秒ごとに1回転に設定されます。
ステップ3:光源を追加する
この3Dプログラミングの世界への最後のステップは、光源を追加することです。光源は、ここに示すように、シーンの外観全体を変更します。
光源を追加するには、次のコードを使用します。
あなたの3D世界には光源があります。
PointLightライト=新しいPointLight(カラー。ホワイト);光。 setTranslateX(-1000);光。 setTranslateY(100);光。 setTranslateZ(-1000);ルート。 getChildren()光を加える。PointLightクラスは、シーンの特定の点から発生し、指定された色の光を投影する光源を定義します(この場合は、古い白色です)。照明効果を作成するには、座標1、000を左に、100を下に、1000単位をユーザーに向けて変換して、光を再配置します。その結果、回転する物体の裏側に良い影ができます。