Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

196
Vistas
Malla generada sin suavizar en la unidad

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

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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í:

Borde liso

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:

Borde afilado

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.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda