Warum leuchtet mein Modell nicht kontinuierlich?

9

Ich habe mit Blender ein einfaches strukturiertes Würfelmodell erstellt, um das Modellieren zu üben, und es dann in Unity importiert. Nachdem ich etwas Licht gemacht habe, sieht es ziemlich hässlich aus. Das Licht einer Reihe strukturierter Würfel ist nicht kontinuierlich:

Geben Sie hier die Bildbeschreibung ein

Was noch seltsamer ist, das Licht auf den Blöcken, aus denen der Boden besteht, ist kontinuierlich. Was mache ich falsch?

So sieht es ohne Texturen aus:

Geben Sie hier die Bildbeschreibung ein

Wenn ich nicht wüsste, dass dies perfekte Würfel sind, würde ich sagen, dass die Oberfläche eine leichte Krümmung aufweist. Ich habe auch versucht, die Textur aufzuhellen, aber es hat auch nicht geholfen:

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

Ich habe das Modell einfach aus Blender exportiert und keine Normalen oder ähnliches eingerichtet. Allerdings habe ich auch mit dem Bodenziegelmodell nichts Besonderes gemacht.

Überprüfte die Normalen und sie scheinen in die richtige Richtung zu zeigen.

Geben Sie hier die Bildbeschreibung ein

Auch sehe ich den Unterschied zwischen den beiden Modellen nicht wirklich. Im Texturfenster habe ich auch die Projektion auf flach gesetzt:

Geben Sie hier die Bildbeschreibung ein

Ich habe die verschiedenen Bedienfelder in Blender überprüft und die einzige normalbezogene Option im Bedienfeld "Objektdaten" ist "Automatisch glätten". Sie ist standardmäßig deaktiviert:

Geben Sie hier die Bildbeschreibung ein

nosferat
quelle
Funktioniert es richtig, wenn Sie die Texturierung deaktivieren?
Msell

Antworten:

7

Aus dem Bild ohne Textur bin ich mir ziemlich sicher, dass das Problem darin besteht, dass Ihre Würfelmodelle unangemessene Normalen haben. Sie müssen Blender mitteilen, dass Ihre Würfelkanten scharf und nicht glatt sein sollen. Was Sie jetzt haben, sind Würfel, die sich wie sechsseitige Annäherungen von Kugeln verhalten.

Ich kenne Blender nicht, daher kann ich Ihnen nicht genau sagen, wie Sie dies erreichen sollen, aber es könnte als "flach" anstelle von "glatten" Gesichtern oder Normalen bezeichnet werden, oder es könnte eine Möglichkeit geben, eine bestimmte Kante zu "brechen". Ihr Bodenfliesenmodell scheint korrekte Normalen zu haben, also sollten Sie vielleicht sehen, was daran anders ist.

Kevin Reid
quelle
2
Sie hatten Recht, ich musste Blender sagen, dass er die Kanten scharf machen soll. Ich könnte dies mit dem EdgeSplit-Modifikator erreichen. ( wiki.blender.org/index.php/Doc:2.4/Manual/Modifiers/Generate/… )
nosferat
Sie können einfach alle Gesichter in Blender auswählen und sie über das linke Menü (das durch "T" aktivierte) "flach" schattieren. In Unity können Sie auch den oberen Rand Ihrer Blender-Importhierarchie auswählen, Normalen berechnen lassen (anstatt importieren) und dann einen Glättungswinkel auswählen (wenn Sie etwa 60 auswählen, erhalten Sie den gewünschten Effekt). Ich denke nicht, dass dies wirklich ein Normalproblem ist, die Normalen sind in Ordnung, sonst würden Sie in Unity nichts sehen (oder in Blender, wenn Sie das Backface-Culling aktivieren würden).
Shivan Dragon
4

Ein paar Vorschläge, wo das Problem liegen könnte:

a) Haben Sie überprüft, ob alle Gesichtsnormalen des Netzes in die richtige Richtung zeigen? Es ist ganz einfach, dies in Blender zu tun.

b) Haben Sie das richtige UV-Mapping angewendet? Unity exportiert alle Texturdaten basierend darauf, wie Sie die Dinge in Blender eingerichtet haben. Schauen Sie sich das Texturbedienfeld in Blender an, insbesondere das 'Mapping'-Bedienfeld unter Texturen (idealerweise sollte es auf UV eingestellt sein.

(PS: Wie lauten die Richtlinien hier für Anhänge oder das Posten von Links zu Projektdateien, z. B. ein Dropbox- oder Google Drive-Link in der Frage? Dies sollte so einfach zu beheben sein, wenn ich nur alle Dateien sehen könnte.)

balajeerc
quelle
2
Um Ihre Anhangsfrage zu beantworten, werden bei Stack Exchange externe Links zu Dateien für einzelne Fragen nicht bevorzugt, da sie in der Regel verschwinden. Bilder sollten auf unser eigenes Hosting hochgeladen werden (über den Upload-Button im Editor), damit das SE-Team sicherstellen kann, dass sie bleiben. Es gibt keine besondere Unterstützung für Nicht-Bilder (z. B. die Blender-Dateien für diese Frage), aber es ist besser, Alternativen zu finden, da es eher so aussieht wie "Bitte debuggen Sie meinen sehr großen Code", was für niemanden außer den sehr nützlich ist ursprünglicher Fragesteller, entgegen den Zielen der SE.
Kevin Reid