[C#, Unity, 절차적 생성] 절차적 지형 생성 - 3.터레인 생성
·
Unity,C#/절차적생성(PCG)
■ 터레인 생성 앞서 생성했던 PerlinNoise 맵을 HeightMap으로 사용하여 Terrain을 만들어보자. Unity에서 Terrain을 생성하는 과정은 매우 간단하다. 1. Terrain 생성 코드public void CreateTerrain(){ var terrainData = terrain.terrainData; terrainData.heightmapResolution = Mathf.Max(noiseData.Width, noiseData.Height); terrainData.size = new Vector3(noiseData.Width, maxHeight, noiseData.Height); terrainData.SetHeights(0, 0, _fractalMap); Set..
[C#, Unity, 절차적 생성] 절차적 지형 생성 - 2.프랙탈 합
·
Unity,C#/절차적생성(PCG)
■ 프랙탈 합(Fractal Noise)하나의 PerlinNoise는 큰 흐름만 존재하고 세부 디테일이 부족하기 때문에, 복잡한 자연 지형을 표현하기엔 한계가 있다.복잡한 자연 지형을 표현하기 위해 동일한 PerlinNoise를 여러 옥타브(Octave)에 걸쳐 주파수(Frequency - 빈도)는 높이고, 진폭(Amplitude-세기)은 줄이며 반복적으로 합산한 복합 노이즈인 프렉탈 합(Fractal Noise)를 사용한다.이러한 방식은 fBm(Fractal Brownian Motion)이라고도 불리며, 다양한 랜덤 패턴의 기반이 된다.Fractal Noise는 자연 지형, 구름, 바위 텍스처 등의 절차적 생성에 사용된다. 보통 다음과 같은 파라미터로 주파수와 진폭을 제어한다.Lacunarity : 주..
[C#, Unity, 절차적 생성] 절차적 지형 생성 - 1.PerlinNoise
·
Unity,C#/절차적생성(PCG)
■ PerlinNoise PerlinNoise는 1983년 Ken Perlin이 개발한 그래디언트 기반의 노이즈(Gradient Noise)함수로, 지형의 절차적 생성, 텍스처 생성, 구름이나 연기 같은 자연 현상 표현 등 다양한 절차적 콘텐츠 생성에 활용된다. 1. Noise함수 Noise함수는 입력값에 따라 “의사 난수(Pseudo-random)”값을 반환하는 함수다. 일반적인 난수와 달리, 입력값이 비슷할수록 결과값도 유사해지는 부드러운 변화를 가진다.// 호출할 때마다 완전히 다른 값.Random.Range(0f, 1f);// 항상 같은 입력에 같은 결과.Mathf.PerlinNoise(x, y);// 입력이 조금 달라지면, 출력도 조금만 변화 -> 부드러운 노이즈Mathf.PerlinNoise..