Как сделать острые нормали в 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();
    }
}

ландшафт


Ответы (0 шт):