Как сделать острые нормали в Unity?
Есть простой ландшафт у которого автоматически генерируются нормали, проблема в том что я хочу что бы все эти нормали выглядели остро (т. е. хорошо выделялись). Есть идеи как это сделать.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class Chunk : MonoBehaviour
{
int xSize = TerrainData.chunkSize;
int zSize = TerrainData.chunkSize;
float amp = TerrainData.amp;
float freq = TerrainData.freq;
Vector3[] vertices;
int[] triangles;
Vector3[] normalsA;
Mesh mesh;
Vector3 myPos;
private void Start()
{
myPos = transform.position;
GenerateMesh();
}
void GenerateMesh()
{
GetComponent<MeshFilter>().mesh = mesh = new Mesh();
mesh.name = "Procedural Grid";
vertices = new Vector3[(xSize + 1) * (zSize + 1)];
triangles = new int[xSize * zSize * 6];
for (int i = 0, z = 0; z <= zSize; z++)
{
for (int x = 0; x <= xSize; x++, i++)
{
float y = Mathf.PerlinNoise((x + myPos.x) / freq, (z + myPos.z) / freq) * amp;
vertices[i] = new Vector3(x, y, z);
}
}
for (int ti = 0, vi = 0, z = 0; z < zSize; z++, vi++)
{
for (int x = 0; x < xSize; x++, ti += 6, vi++)
{
triangles[ti] = vi;
triangles[ti + 3] = triangles[ti + 2] = vi + 1;
triangles[ti + 4] = triangles[ti + 1] = vi + xSize + 1;
triangles[ti + 5] = vi + xSize + 2;
}
}
mesh.vertices = vertices;
mesh.triangles = triangles;
mesh.RecalculateNormals();
}
}
