Estoy tratando de hacer un terreno de baja poli en la unidad, pero por alguna extraña razón sigue suavizándolo. Intenté eliminar Recalculate Normals, pero eso no pareció ayudar (también arruinó la iluminación). No publique ningún enlace a activos en la tienda de activos.
También usando la unidad 2020.2.1f1
La idea detrás de la malla de baja poli es duplicar vértices para lograr bordes nítidos. Cuando normalmente creamos una malla, tiene N vértices. Y cuando vuelve a calcular las normales, Unity genera exactamente N normales. Eso significa que para cada ángulo en su malla solo hay un vector normal, que los motores 3D intentan suavizar. Entonces, suponiendo un ejemplo 2D simplificado, se ve así:
En cambio, su objetivo es duplicar el vértice para cada triángulo, al que pertenece este vértice, de modo que cada borde sea disjunto, y eso haría que Unity genere normales separadas para cada borde y agudice el ángulo. Me gusta esto:
Desafortunadamente, no hay forma de crear múltiples normales para un vértice, eso es porque tendrías que duplicarlos. Entonces, por ejemplo, desea crear una malla con dos triángulos con un borde afilado. En código sería algo similar a esto:
var mesh = new Mesh(); // Basically amount of your vertices is equal to amount of indices. var vertices = new Vector3[6]; var triangles = new int[] { 0, 1, 2, 3, 4, 5 }; // Define first triangle. vertices[0] = new Vector3(1, 0, 0); vertices[1] = new Vector3(0, -1, 0); vertices[2] = new Vector3(0, 0, 0); // Define second triangle vertices[3] = vertices[2]; // Duplicating vertex #2. vertices[4] = vertices[1]; // Duplicating vertex #1. vertices[5] = new Vector3(-1, 0, 1); mesh.vertices = vertices; mesh.triangles = triangles; mesh.RecalculateNormals();Consulte también este artículo, describe muy bien el comportamiento del sombreado en los motores 3D según los vértices compartidos y separados: Tutorial 9: Indexación VBO
Actualización: como se menciona en los comentarios, también puede intentar usar el modelo de sombreado plano. Pero que yo sepa, es posible que no sea compatible con algunas plataformas.