Por que a luz não é contínua no meu modelo?

9

Criei um modelo de cubo texturizado básico com o Blender para praticar modelagem e depois importei-o para o Unity. Depois de acender alguma luz, fica bem feio. A luz não é contínua em uma linha de cubos texturizados:

insira a descrição da imagem aqui

O que é mais estranho, a luz nos blocos que compõem o piso é contínua. O que estou fazendo errado?

É assim que parece sem texturas:

insira a descrição da imagem aqui

Se eu não soubesse que esses cubos são perfeitos, diria que há uma ligeira curva na superfície. Também tentei clarear a textura, mas também não ajudou:

https://dl.dropbox.com/u/45620018/lighter%20texture.PNG

Simplesmente exportei o modelo do Blender e não configurei nada normal ou coisas assim. No entanto, eu também não fiz nada de especial com o modelo de tijolo de piso.

Verifiquei os normais e eles parecem apontar para a direção certa.

insira a descrição da imagem aqui

Também não vejo realmente a diferença entre os dois modelos. No painel de texturas, também defino a projeção como plana:

insira a descrição da imagem aqui

Eu verifiquei os diferentes painéis no Blender e a única opção relacionada ao normal no painel "Dados do objeto" é "Auto Smooth" e está desativada por padrão:

insira a descrição da imagem aqui

nosferat
fonte
Funciona corretamente se você desabilitar a textura?
msell

Respostas:

7

Pela imagem sem textura, tenho certeza de que o problema é que seus modelos de cubo têm normais inadequados. Você precisa dizer ao Blender que suas bordas do cubo devem ser nítidas, não suaves - o que você tem agora são cubos que agem como aproximações de seis lados das esferas.

Eu não conheço o Blender, então não posso lhe dizer exatamente como fazer isso, mas pode ser chamado de "plano" em vez de faces "suaves" ou normais, ou pode haver uma maneira de "quebrar" uma borda específica. Seu modelo de piso parece ter normais corretos, então talvez você deva ver o que há de diferente nele.

Kevin Reid
fonte
2
Você estava certo, eu tive que dizer ao Blender para deixar as bordas afiadas. Eu poderia conseguir isso com o modificador EdgeSplit. ( wiki.blender.org/index.php/Doc:2.4/Manual/Modifiers/Generate/… )
nosferat
Você pode simplesmente selecionar todas as faces do Blender e dar a elas sombreamento "plano" através do menu esquerdo (o ativado por "T"). Ou, no Unity, você pode selecionar a parte superior da hierarquia de importação do Blender, escolher o cálculo normal (em vez de importar) e, em seguida, escolher um ângulo de suavização (selecionar algo como 60 deve dar o efeito desejado). Eu não acho que isso seja realmente um problema de normais, pois os normais são bons, caso contrário você não veria nada no Unity (ou no Blender, se você habilitar o descarte da face posterior).
Shivan Dragon
4

Algumas sugestões sobre qual pode ser o problema:

a) Você verificou se todas as faces normais da malha estão apontando na direção certa? É bastante simples fazer isso no Blender)

b) Você aplicou o mapeamento UV correto? O Unity exporta todos os dados de textura com base em como você configura as coisas no Blender. Observe o painel Textura no Blender, especialmente o painel 'Mapeamento' em Texturas (idealmente, ele deve estar definido como UV.

(PS, qual é a política aqui em anexos ou na publicação de links para arquivos de projeto, digamos um link do Dropbox ou do Google Drive na pergunta? Isso deve ser tão simples de corrigir se eu puder ver todos os arquivos.)

balajeerc
fonte
2
Para responder à sua pergunta de anexo, no Stack Exchange, os links externos para arquivos para perguntas individuais não são os preferidos, pois tendem a desaparecer. As imagens devem ser carregadas em nossa própria hospedagem (através do botão de upload no editor), para que a equipe do SE possa garantir a sua permanência. Não há suporte específico para não-imagens (por exemplo, os arquivos do Blender para esta pergunta), mas é melhor encontrar alternativas, pois fica mais parecido com “por favor, depure meu código muito grande”, o que dificilmente será útil para qualquer pessoa, exceto o solicitante original, ao contrário dos objetivos da SE.
Kevin Reid