From c050fdfc5f6c2e664bc5f8d39ab2aeaa0387e99c Mon Sep 17 00:00:00 2001 From: Bartosz Hejduk Date: Mon, 28 Jun 2021 21:42:09 +0200 Subject: [PATCH] Added stepness task --- .../Assets/Scripts/ProceduralTextureScript.cs | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/cw6/Terrain/Assets/Scripts/ProceduralTextureScript.cs b/cw6/Terrain/Assets/Scripts/ProceduralTextureScript.cs index 2529dc56..a38d74b8 100644 --- a/cw6/Terrain/Assets/Scripts/ProceduralTextureScript.cs +++ b/cw6/Terrain/Assets/Scripts/ProceduralTextureScript.cs @@ -3,31 +3,37 @@ using System.Collections.Generic; using UnityEngine; using System.Linq; // used for Sum of array -public class ProceduralTextureScript : MonoBehaviour { +public class ProceduralTextureScript : MonoBehaviour +{ public float snowHeight; public float rockSlope; // Start is called before the first frame update void Start() { - + } - float transition(float start, float end,float value) { - if (start > end) { + float transition(float start, float end, float value) + { + if (start > end) + { return 1 - transition(end, start, value); } - if (value < start) { + if (value < start) + { return 0; } - if (value >= end) { + if (value >= end) + { return 1; } var scaledValue = (value - start) / (end - start); return scaledValue; } - public void runProcedrualTexturing() { + public void runProcedrualTexturing() + { var terrain = gameObject.GetComponent(); var layers = terrain.terrainData.alphamapLayers; var height = terrain.terrainData.alphamapWidth; @@ -38,40 +44,38 @@ public class ProceduralTextureScript : MonoBehaviour { Debug.Log(height); Debug.Log(width); - Debug.Log(terrain.terrainData.GetInterpolatedHeight(0.5f,0.5f)); + Debug.Log(terrain.terrainData.GetInterpolatedHeight(0.5f, 0.5f)); var newSplatMap = new float[width, height, layers]; //for (int i=0; i<) - - for (int i=0; i < width;i++) { - for (int j = 0; j < width; j++) { + + for (int i = 0; i < width; i++) + { + for (int j = 0; j < width; j++) + { float x = j / (float)height; float y = i / (float)width; var splatWeights = new float[layers]; - var terrainHeight = terrain.terrainData.GetInterpolatedHeight(x,y); - - for (int k = 0; k < layers; k++) { - splatWeights[k] = Random.RandomRange(0.0f,1.0f); + var terrainSteepness = terrain.terrainData.GetSteepness(x, y); + for (int k = 0; k < layers; k++) + { + splatWeights[k] = terrainSteepness; } - - float sum = splatWeights.Sum(); - for (int k = 0; k < layers; k++) { - newSplatMap[i,j,k]=splatWeights[k]/sum; + for (int k = 0; k < layers; k++) + { + newSplatMap[i, j, k] = splatWeights[k] / sum; } } } terrain.terrainData.SetAlphamaps(0, 0, newSplatMap); - - var a = terrain.terrainData.treeInstances; - } // Update is called once per frame void Update() { - + } }