Search Unity

Smooth lightning problem Procedural Generation

Discussion in 'General Graphics' started by Fewnity, Aug 2, 2019.

  1. Fewnity

    Fewnity

    Joined:
    Dec 28, 2015
    Posts:
    5
    Hello!
    I'm trying to make a Procedural Generation system, but I have a problem.

    The terrain lightning doesn't look like smooth.
    Here is the code :

    Code (CSharp):
    1. using System.Collections.Generic;
    2. using UnityEngine;
    3.  
    4. public class Map : MonoBehaviour
    5. {
    6.     public MeshFilter m_MeshFilter;
    7.     public MeshRenderer m_MeshRenderer;
    8.     public Material Mat;
    9.     public float XSize = 5f;
    10.     public float ZSize = 5f;
    11.     public float YCoef = 2f;
    12.  
    13.     // Start is called before the first frame update
    14.     void Start()
    15.     {
    16.         Mesh NewMesh = new Mesh();
    17.         Vector3[] Vertices = new Vector3[(int)XSize * (int)ZSize * 4];
    18.         List<int> Triangles = new List<int>();
    19.  
    20.         int CurrentVertice = 0;
    21.         int LastZ = 0;
    22.  
    23.         for (int Z = 0; Z < ZSize; Z++)
    24.         {
    25.             Vertices[CurrentVertice] = new Vector3(0, Mathf.PerlinNoise(0, LastZ / ZSize * 10) * YCoef, Z);
    26.             Vertices[CurrentVertice + 1] = new Vector3(0, Mathf.PerlinNoise(0, Z  / ZSize * 10) * YCoef, Z + 1);
    27.             CurrentVertice += 2;
    28.             for (int X = 0; X < XSize; X++)
    29.             {
    30.                 Vertices[CurrentVertice] = new Vector3(X + 1, Mathf.PerlinNoise((X + 1) / XSize, LastZ / ZSize * 10) * YCoef, Z);
    31.                 Vertices[CurrentVertice + 1] = new Vector3(X + 1, Mathf.PerlinNoise((X + 1) / XSize, Z / ZSize * 10) * YCoef, Z + 1);
    32.  
    33.  
    34.                 Triangles.Add(CurrentVertice - 2);
    35.                 Triangles.Add(CurrentVertice - 1);
    36.                 Triangles.Add(CurrentVertice);
    37.  
    38.                 Triangles.Add(CurrentVertice - 1);
    39.                 Triangles.Add(CurrentVertice + 1);
    40.                 Triangles.Add(CurrentVertice);
    41.  
    42.                 CurrentVertice += 2;
    43.             }
    44.             LastZ = Z;
    45.         }
    46.  
    47.         //Generate UVS
    48.         Vector2[] uvs = new Vector2[Vertices.Length];
    49.         for (int i = 0; i < uvs.Length; i++)
    50.             uvs[i] = new Vector2(Vertices[i].x, Vertices[i].z);
    51.  
    52.         //Set mesh
    53.         NewMesh.vertices = Vertices;
    54.         NewMesh.uv = uvs;
    55.         NewMesh.triangles = Triangles.ToArray();
    56.         NewMesh.RecalculateNormals();
    57.         m_MeshRenderer.material = Mat;
    58.         m_MeshFilter.mesh = NewMesh;
    59.     }
    60. }
    Can you help me?
    Thanks!

    Sorry for my english lol :)
     

    Attached Files:

    Last edited: Aug 2, 2019