Java 3Dシーンで未観測のヘルスバーを描きます
-
30-09-2019 - |
質問
だから私はJava 3Dでゲームに取り組んでおり、ユニットの上にホバリングするヘルスバーを実装しています。
私は、ユニットの位置の上の3Dポイントでクワッドを描画し、看板の動作を適用して常にカメラに直面することから始めました。
しかし、私が立ち往生している問題は、ヘルスバーが他の景色によって時々あいまいになっていることです。
したがって、次のオプションを検討しています。
ヘルスバーのピクセルのZ /深度バッファー値をオーバーライドして、レンダラーに、後でレンダリングするものよりもカメラに近いと思わせます。
私は試した
renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS)
. 。レンダラーは、以前に同じエリアで描いたあらゆるものの上にヘルスバーを描きますが、他の景色が後でヘルスバーの上に描かれても助けにはなりません。Java 3Dでこれを行うためのより良い方法はありますか?
ヘルスバーの3D位置をカメラの前の2Dプレーンに投影します。実行可能に聞こえますが、これに必要なすべての数学を再発明する前に、誰かが既存の解決策を指摘できるかもしれません。
Java 3DからLWJGLやJMonkeyEngineのようなものに切り替えます(この問題だけでなく、Java 3Dが死んだという一般的な不満など)。この特定の問題に対してより柔軟であるかどうかさえわかりませんが。そして、私が読んだことから、Game Devで最悪の間違いの1つは、開発中のエンジンを切り替えることです。
解決
使用 画家のアルゴリズム: :ヘルスバーを描きます 後 シーンの残りの部分を描きました(もちろん、Zテストがオフになっています)。