Skip to main content

自分でランダムな地形?を作って表示する。テクスチャもつける

🌱 ステップ①:データの設計(どんな情報を使うか?)

地形を作るには「たくさんの点(てん)」が必要です。
この点は「頂点(ちょうてん)」と呼ばれていて、1つ1つの頂点には次のような情報があります:

名前

何の情報?

position

その点がどこにあるか(x, y, z)

normal

光の当たり方(かたむき)

uv

絵(テクスチャ)の貼り方

これをたくさん集めて、「地面の形」を作っていきます。
地面の形は三角形をたくさん並べてできていて、三角形のつなぎ方を indices という番号のデータで管理します。


🧺 ステップ②:データの準備(どうやってデータを持っておく?)

C++のクラスで、Terrain(テレイン)という「地面クラス」を作ります。
中にはこんな変数があります:

std::vector<Vertex> vertices_; // 点の集まり(地面の形)
std::vector<uint32_t> indices_; // 三角形のつなぎ方(番号)

int width, height; // 地面の横と縦のマスの数
float scale;       // 1マスの大きさ(例:1.0f = 1メートル)

このクラスで、地面を作ったり、表示したりできるようになります!


🌋 ステップ③:ランダムに地形を作る(でこぼこをつけよう!)

MakeTerrain() という関数で、地面をランダムにでこぼこさせます。
ここでは「サイコロのような乱数(ランスウ)」を使って、山や谷を作ります:

float y = ランダムな数 * 高さの倍率;

そして、点を1マスずつ作っていきます:

for (int z = 0; z < 高さのマス数; z++) {
    for (int x = 0; x < 横のマス数; x++) {
        Vertex v;
        v.position = { xの位置, yの高さ, zの位置 };
        ...
        vertices_.push_back(v);
    }
}

そのあと、「マス」を三角形2枚にわけて、indices_ に三角形を作ります。


🖼️ ステップ④:地形を画面に表示する(ゲームの絵にする!)

できあがった vertices_indices_ を「GPU(じーぴーゆー)」に送って、DirectXで描きます。

context->IASetVertexBuffers(...); // 頂点(点)の情報をセット
context->IASetIndexBuffer(...);  // 三角形のつなぎ方をセット
context->DrawIndexed(...);       // 実際に画面に描く!

描くときには、光の当たり方や、テクスチャ(地面の絵)も設定して、見た目をよくします。


✅ まとめ

ステップ

やることの意味

データの設計

地面に必要な情報を決める(点や三角形)

データの準備

地面の形を覚えるための変数を作る

ランダム地形生成

高さをランダムに決めて地形を作る

地形の表示

地形のデータをGPUに送って画面に描く