-
Notifications
You must be signed in to change notification settings - Fork 10
DTL.Util.TerrainUtil (ユーティリティ)
Gunji Ryota edited this page Jan 13, 2020
·
4 revisions
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 |
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();
}
}
任意の開始地点からHeightMapへの出力を可能にする。TerrainData.SetHeights
Copyright (c) 2017-2019 Kasugaccho. Copyright (c) 2018-2019 As Project.
Distributed under the Boost Software License, Version 1.0.(See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)