Skip to content

DTL.Util.TerrainUtil (ユーティリティ)

Gunji Ryota edited this page Jan 13, 2020 · 4 revisions

バージョン 0.1.0以降

namespace DTL.Util {
    public class TerrainUtil
}

概要

TerrainUtil とは "ITerrainDrawerを実装するクラスによって出力されたMatrixをTerrainのHeightMapに出力する" 機能を持つクラスである。

TerrainData のHeightMapの (0, 0) からMatrixを出力する。

コンストラクタ

// (1)
TerrainUtil(Terrain terrain, List<Texture2D> texture2D, ITerrainDrawer terrainGenerator, int height, int width, int depth, uint smooth = 0)
// (2)
TerrainUtil(Terrain terrain, List<Texture2D> texture2D, ITerrainDrawer terrainGenerator, int height, int width, int depth, List<float> textureToHeight, uint smooth = 0)

コンストラクタ

説明
(1) 出力先のTerrain, Terrainに出力するTexture, Matrixを生成するインスタンス, HeightMapの縦横, 深さ, 平滑化を行う回数を指定したTerrainUtilのインスタンスを生成する。
(2) 出力先のTerrain, Terrainに出力するTexture, Matrixを生成するインスタンス, HeightMapの縦横, 深さ, テクスチャを出力する条件を指定したリスト, 平滑化を行う回数を指定したTerrainUtilのインスタンスを生成する。

プロパティ

Name Descriptions Accessibility Version
Terrain terrain HeightMapを出力するTerrainオブジェクト public get, private set v0.1.0
TerrainData terrainData Terrainの詳細データ public get, private set v0.1.0
int depth Terrainのdepth public get, public set v0.1.0
int width Terrainのwidth。値は2の累乗にする public get, public set v0.1.0
int height Terrainのheight。値は2の累乗にする public get, public set v0.1.0
float[,] matrix 正規化したMatrix public get, public set v0.1.0
uint smooth 平滑化する回数 public get, public set v0.1.0

メンバ

名前 説明 対応バージョン
void Smooth() HeightMapの(x, y)要素を(x + [-1, 1], y + [-1, 1])の範囲の平均に変更する v0.1.0
void Draw() TerrainにMatrixを出力する v0.1.0

Example(C#)

using System.Collections.Generic;
using UnityEngine;

using DTL.Util;
using DTL.Shape;

public class GeneratePerlinIslandTerrain : MonoBehaviour {
    public int depth = 50;
    public int height = 200;
    public int width = 200;
    public double frequency = 6.0;
    public uint octaves = 8;
    public int maxHeight = 150;

    private Terrain terrain;
    private PerlinIsland perlinIsland;

    // 出力するTextureを持つリストを宣言。
    public List<Texture2D> texture2D = new List<Texture2D>();

    void Start() {
        // ITerrainDrawerを持つクラスのインスタンスを生成
        perlinIsland = new PerlinIsland(frequency, octaves, maxHeight);
        // Terrainを生成
        this.terrain = GetComponent<Terrain>();
        // TerrainUtilのインスタンスを生成。
        TerrainUtil terrainUtil = new TerrainUtil(terrain, texture2D, perlinIsland, height, width, depth);
        // TerrainにMatrixを出力。
        terrainUtil.Draw();
    }
}

Output

コメント 2019-11-03 193644

Todo

任意の開始地点からHeightMapへの出力を可能にする。TerrainData.SetHeights

Clone this wiki locally