現在ウディフェス用の作品を作成中です。見下ろし型3Dダンジョン探索ゲームにする予定です。この作品では3Dダンジョンを2Dキャラで探索する形式を採用します。
3Dゲームでキャラを描く場合、①ナチュラルな3Dキャラ②マイクラみたいな3Dキャラ③2Dキャラの選択肢があると思います。①は計算量が厳しく、②は作品の雰囲気がぶち壊されるという欠点があります。この点③はキャラ関係の計算量を2Dゲーと同じにできるのでウディタとの相性が良いと思います。③はゼノギアスで使われていたそうです。
●2Dキャラの表示方法
処理としては簡単で、キャラクターの中心の3D座標だけ決め、それを2D変換しピクチャ表示するだけです。よく見ると変なのかもしれませんが、2Dマップよりはマッチする気がします。描画優先順位をつける時も一緒に処理することでわりといい感じに見せられます。
●マップ作成
Excelで手作業です、正直かなり骨が折れるので自動化したいですが、高低差や斜めマップなど味のある形を作ろうとすると手でやる必要がありそうです。
●2DキャラのZ座標の床連動
大事な要素として、キャラのZ座標を床のZ座標に連動させることがあります。この処理をするためには①キャラのいる床を特定する②傾斜のある床の平面の方程式を求める③求めた平面の方程式にキャラのX座標とY座標を代入すると今キャラのいるXY座標での床のZ座標が得られます。
平面の方程式は下記HPの「外積と法線ベクトルを用いる方法」を参考にすると求められます(未だに外積も法線ベクトルも理解してないですがそれでもいけます)。
なにか役立ちそうなことがあれば追記していきます。
<備忘部分>
このブログの3D表現で活用している「3D空間において視点からの方位角と仰角で2Dスクリーン上の描画位置を把握する方法」には欠点があります。
右図のようにスクリーンの端にある描画対象ほど密集し歪みが生じるというものです。人間の目も同じらしいですが、頭の中で端の描画をカットしたり補正したりしているようです。この欠点の解決方法として、表示する角度の範囲を狭く(~60°)して歪みを小さくするというものがあります。他の方法を選ぶのもよく、こちらが参考になりそうです。
備忘部分の本題ですが、角度を狭めた時の問題点として大きな建物の描画が崩れやすいというものがあります。ウディタは四角形か三角形しか描画できないので、建物の壁面は4点の座標を指定して描くわけですが、そのうち1点が視点の端に来たときに描画が崩れます。描画する範囲を広くした上でスクリーンに投影する範囲を狭くすることで大崩壊(1点が視点を外れる)は避けられますが、歪みはかなり生じます。
この解決策のアイディアを備忘として記載します。
●大きい建物の場合は、自由変形時もパターン化が使えるので、画像をパターンとしてスクリーンの位置に応じてスライドする方法が無くはないように思います(ただ1/2、1/3、1/4
という変化の仕方なので荒れそうかつ難しそう)。
●実用性の高そうなものとして大きな一枚マップ(例えばエースコンバットの海部分)を考えています。一枚マップは1点1点が遠くにあるためかなり崩れます。そのためタイルを敷き詰める形で描画する必要がありますが、タイルの数が膨大になり描画処理が厳しくなります。ここで、タイルの自動統合とパターン化により、一定以下のサイズのタイルを柔軟に統合し描画タイル枚数を減らすこと&他方で一枚マップ全体をパターン化し、統合サイズにあわせて不自然さなく一枚マップを表現できることを考えています。
Comentários