2011/01/25 Na-7
2011/01/29 Na-7
2011/02/03 Na-7
地形モデルから高さを取得する
注意 | この資料は、筆者が自らの経験を記録したものであり、他人に勧めるものではありません。 この資料を参考として行った行為がいかなる結果になろうとも、筆者は責任を負いませんので予めご承知おきください。 |
◎目次
◎概要 |
◎使用ツール |
◎サンプルプロジェクト |
◎補足事項 |
◎概要
地形モデルの頂点データから高さを取得し、地形の任意の場所の高さを取得するサンプルプロジェクトを紹介する。
ちなみに、こちらはXNAで地形モデルを作成する手法なので、地形モデルを別途準備する必要は無い(メリット)が、他の3DCGツール等で作成した地形モデルに置き換えることはできない(デメリット)。本稿の手法はこれを可能とするものである。
これにより、地形モデルのテクスチャマッピングや高度調整などの作業を、他の3DCGツールでグラフィカルに編集することが可能となる。
◎使用ツール
ツール名 | 入手元 |
XNA3.1(XNA GameStudio 3.1:ゲーム開発用フレームワーク) | http://msdn.microsoft.com/ja-jp/xna/default.aspx |
◎サンプルプロジェクト
地形モデルから高さを取得するサンプルプロジェクト(XNA3.1版)(450KB)
2011/02/03 更新
地形モデルから高さを取得するサンプルプロジェクト(メタセコイア地形モデル向け)(XNA3.1版)(450KB)
2011/01/29 追加登録
2011/02/03 更新
◎補足事項
・動作フロー
1.地形モデルをLoadする
2.地形モデルから頂点データのコピーを取得する
3.座標値をソート用配列にコピーする
4.ソートする
5.同一の頂点座標データを除去する
6.高さ情報を二次元配列に格納する
7.以後の動作は、こちらの公式サンプルに準ずる
・地形モデルの頂点数に合わせて、HeightInfoクラスの頂点数を変更すること
→縦横の頂点数は同一であることを想定している(異なる場合は各自対処)
→3DCGツールでの頂点数と、XNA読込時の頂点数は異なる場合があるので注意すること
→同一の頂点座標データは除去している(詳細はソースコメント参照)
・地形モデルの頂点フォーマットに合わせて、HeightInfoクラスの頂点フォーマットを変更すること
→サンプルの地形モデルはメタセコイアの地形作成機能で作成したものである
→3Dモデルの頂点フォーマットの確認方法はこちら
・安定性のあるソートが必要であったため、バブルソートを内包した
→必要があれば他のソートに置き換えること(詳細はソースコメント参照)
2011/01/29追記
・メタセコイア地形モデルは、1つのセルの三角形ポリゴン2枚の面の角度が異なる
→XNA公式サンプルのGetHeight()は上記を想定していないので、ズレが生じるケースがある(詳細はブログ参照)
→メタセコイア地形モデル向けのサンプルを追加したので、そちらのGetHeight()を参照すること