ボクセルゲームを開発していますが、間違ったテクニックを使用しているようです。私は現在、ブロックを作成するためにフラットタイルを使用しています。
自然に地形が見えるボクセルゲームを見ました。つまり、非ブロック性です。ゲームは1立方メートルあたり4 * 4 * 4のブロックがあり、土、砂、石などのブロックは丸いエッジを持ち、一種の溶け合いを持っています(通常のゲームのように)。こちらがスクリーンショットです
これはどのように達成されますか?
ボクセルゲームを開発していますが、間違ったテクニックを使用しているようです。私は現在、ブロックを作成するためにフラットタイルを使用しています。
自然に地形が見えるボクセルゲームを見ました。つまり、非ブロック性です。ゲームは1立方メートルあたり4 * 4 * 4のブロックがあり、土、砂、石などのブロックは丸いエッジを持ち、一種の溶け合いを持っています(通常のゲームのように)。こちらがスクリーンショットです
これはどのように達成されますか?
回答:
これは、高さの異なる立方体の間のランプを補間することによって実現されます。
こんな景色があると(横から)
#
#### ##
############
ポリゴンを追加して、次のようにします。
/#\
/####\ /##\
############
これらのランプを計算するアルゴリズムは、マーチングキューブアルゴリズムです。
さらに美しくしたい場合は、単一のポリゴンを使用してキューブ間を補間するだけでなく、複数のポリゴンの曲線を使用してください。ただし、シーンに非常に多くのポリゴンが追加されるので、カメラに近いキューブに対してのみこれを実行する必要があることに注意してください。
画像と同様の品質を実現するには、2つの障害に対処する必要があります。1つは芸術的で、もう1つは技術的(メモリ、処理)です。まず、あなたはすでに芸術的な問題を解決していると思います。モデル、アート、シェーダーなどを作成できます(一部はアートの問題に答えられないためです)。
主な技術的問題は、作成したモデルを詳細レベルでボクセル化すると、膨大な数の小さなボクセルが作成されることです。膨大な数のボクセルを処理してレンダリングすることは簡単ではありません。これに対する答えはスパースボクセルオクトリーと呼ばれ ます
SVOは、すべてのボクセルを処理せずに、表示されているボクセルのみを処理することなく、非常に詳細なモデルをレンダリングする機能を提供します。SVOをレンダリングするには、通常のラスター化手法ではなくレイキャスティングを使用する必要があることに注意してください。
これは、SVOのBSDライセンス実装を伴うオープンソースですhttps://code.google.com/p/efficient-sparse-voxel-octrees/
これは、ポリゴンとSVOベースのレンダリングを説明するビデオです(長所と短所)。