Landscape (ランドスケープ)(景観)
格子角上に並んだXZ値の定まっているポリゴンに高さデータを与えて山みたいな表現が出来る技術
// 高さデータの用意
float fMap[MAP_Z][MAP_Z] =
{
{ 1, 2, 3, 4, 5, 6 },
{ 7, 8, 9, 10, 11, 12 },
{ 13, 14, 15, 16, 17, 18 },
{ 19, 20, 21, 22, 23, 24 }
}
// 頂点情報;
struct Vertex3D{
D3DXVECTOR3 Pos;
};
ポリゴンを作成するときは”N”みたいにする。
例)7・1・8・2 8・2・9・3 9・3・10・4 ・・・・ 23・17・24・18
この配列のデータを各ポリゴンの頂点が共有する形になる
Vertex3D *v;
v = (MAP_Z * MAP_X * 4 * 頂点)サイズの大きさのデータを確保する
頂点に高さを与える際 端まで来たかどうかの判定分をなくすために、4頂点の左上を原点と考えずに右下を原点と考える。
X = Z = 1;
Loop Z
Loop X
v[4*(MAP_Z+MAP_X)+0].Pos.y = fMap[z][x-1]; // 左下
v[4*(MAP_Z+MAP_X)+1].Pos.y = fMap[z-1][x-1]; // 左上
v[4*(MAP_Z+MAP_X)+2].Pos.y = fMap[z][x]; // 右下 ここを原点と考える
v[4*(MAP_Z+MAP_X)+3].Pos.y = fMap[z-1][x]; // 右上
End Loop
End Loop
この技術の欠点は壁などが作れないことである。
原因は同じ座標に高さの違う頂点を置けないのからである。
下の画像は壁に見えるが実際は微妙に坂になってる。
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||