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] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送