3D

【JavaFX】3D描画での隠面消去の方法

隠面消去ができていない場合のサンプルプログラム

(Main.java)

 

結果

Z座標からすると、青い玉の方が奥にあるはずですが、実行してみると青色が前面に描画されてしまっています。

これは、隠面消去がなされておらず、単純に青い玉の方が後に追加されたために上書きされてしまったということです。

なので次に、隠面消去をするように設定していきます。

隠面消去をする

さて、これから隠面消去をしていくわけですが、実はメチャクチャ簡単です。

直す部分はここだけ。

(Main.java)

結果

しっかり隠面消去がなされ、青い玉がちゃんと奥の方にあることがはっきりわかるようになりました。

 

解説

修正した箇所は「Scene」のインスタンス化部分だけです。

重要なのは、「Scene」コンストラクタの第4引数にあります。

「Scene」にはいくつかのコンストラクタが存在するのですが、4つの引数を求めているコンストラクタでは、第4引数で「depthBuffer」と名付けられた引数が存在します。

この「depthBuffer」は奥行きに応じて描画する順番を決めるための容量を必要とするか否かを決める引数となります。

ですので、こちらの引数に「true」を代入してあげると、奥行きが反映されるようになります。

つまり、隠面消去がなされるというわけです。


【筆者オススメ!】
↓Javaをさらに勉強したい方へ(スポンサーリンク)



↓JavaFXをさらに勉強したい方へ(スポンサーリンク)

↓3Dプログラミングをさらに勉強したい方へ(スポンサーリンク)
ABOUT ME
IT系だんし
プログラミングが大好きな人。 趣味でゲームやツール製作をしながら、プログラミング記事を書き続けています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です