Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

197
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda