Java

【JavaFX】3Dモデルを読み込んで描画する方法を解説

OBJファイルからモデルを描画する

使用するモデルはこちらです。

これは大昔に生息していたサーベルタイガーです。名をスミロドンと言います。

https://free3d.com/ja/3d-models/スミロドン

こちらのリンクからフリー素材をダウンロードすることができます。

もし見つからない場合は、他のOBJファイルを探してみてください。

ライブラリをダウンロードする

JavaFXで使用することができる3Dモデルインポート用のライブラリがあるので、そちらをダウンロードします。

http://www.interactivemesh.org/models/jfx3dimporter.html

こちらのリンクにアクセスし、「Download」と書かれた場所にある、「download」をクリックしてください。

 

ダウンロードされるのはZIPファイルです。なので、解凍しましょう。

解凍したフォルダの中にはたくさんファイルがありますが、今回必要となるのは「

jimObjModelImporterJFX.jar」というJARファイルです。

ちなみにJARファイルというのはJavaで使用できるライブラリファイルのことです。

このJARファイルを、ソースファイルと同じ場所においてください。

 

そして今回はOBJファイルの描画を行いますが、今回使用するライブラリでは他にも、「OBJ・STL・X3D・3DS・COLLADA・FXML」の計6種類のフォーマットに対応しているので、別のフォーマットを読み込みたい場合は、以下のJARファイルを使用してください。

使用するフォーマット名 使用するJARファイル
OBJ jimObjModelImporterJFX.jar
STL jimStlMeshImporterJFX.jar
X3D jimX3dModelImporterJFX.jar
3DS jim3dsModelImporterJFX.jar
COLLADA jimColModelImporterJFX.jar
FXML jimFxmlModelImporterJFX.jar

コンパイルと実行のコマンド

ライブラリを使用する場合は、「-cp」オプションを使います。

コンパイルの場合

実行する場合

 

OBJモデルを描画する(スミロドンを描画する)

(Main.java)

 

結果

無事、描画することができました。

しかし、これではスミロドンの鋭い犬歯や猛獣の顔が見えません。

なので、マウスでモデルを回転できるようにしてみます。

 

マウスでモデルを回転させる

(Main.java)

 

結果

非常にかっこいい姿を虎(とら)えることに成功しました。

解説

少し長いので解説します。

まず、Nodeクラスで管理しているモデルの座標変換を行う場合は、「getTransforms」でObsevableListにアクセスします。

このリストに「Rotate」クラスを「add」関数で登録すると、「Rotate」クラスの内容がNodeクラスに適用されるようになります。

今回はX軸用の「Rotate」とZ軸用の「Rotate」の2種類の「Rotate」を登録しました。

 

そして「Rotate」クラスの中身の変更ですが、今回は「DoubleProperty」クラスを用いて値を操作していきます。

やり方としては、「Rotate」クラスと「DoubleProperty」クラスを関連させて、「DoubleProperty」クラスの「get・set」関数で値の操作をしていくことになります。

 

次に、マウスカーソルの座標とモデルの回転角度の関連のさせ方です。

これは、単純にウィンドウ内でのマウスカーソルの移動距離をモデルの回転角度としました。

つまり、マウスカーソルが270ピクセル移動したら、モデルは270度回転することになります。

 

解説は以上です。

今回のソースを基に、他の3Dモデルも試してみてはいかがでしょうか。

ABOUT ME
IT系だんし
プログラミングが大好きな人。 趣味でゲームやツール製作をしながら、プログラミング記事を書き続けています。