Falsche Schattierung in Blitz3d (=> Normalenvektoren?)
Übersicht

![]() |
AymanBetreff: Falsche Schattierung in Blitz3d (=> Normalenvektoren?) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen,
ich habe mit 3DS-Max R3.1 einen simplen Körper gebaut, den mir Blitz3d einfach nicht gescheit schattieren will. Und da mich dieses Problem nun schon seit Monaten nervt, hoffe ich auf Eure Hilfe. Der Körper ist ein Prototyp für eine Coriolis Raumstation (wer kennt die noch aus Elite?): Ein Isokaeder von dem ein kleiner Quader (für den Eingangsbereich/Hangar) boolsch abgezogen wurde. Das ist auch schon alles. In 3DS sieht alles ok aus. Wenn ich das Modell aber in Blitz3D mit "EntityFX <entity>, 4" flach schattiert darstelle, dann wird die Vorderseite der Station (die mit dem Eingang) und der Eingang/Hangar selbst falsch beleuchtet. Ich habe mal ein ZIP-Archiv als Demo auf einen FTP-Server gelegt. Sind nur 16 KB. ftp://217.226.203.67/pub/coriolis.zip Hier noch ein Bild kleines Bild: ftp://217.226.203.67/pub/coriolis-problem.jpg (die beiden URLs sind nur bis etwa Montag 17:00 Uhr gültig) Ich vermute, dass hier die Normalenvektoren des Meshs in die falsche Richtung zeigen. Was kann oder muss ich hier anstellen, damit dieses Objekt richtig schattiert wird? Warum vor allem sieht das Objekt in 3DS-Max korrekt aus, während Blitz3d damit nicht zu Rande kommt? Das Problem scheint immer bei Körpern aufzutauchen, die ich in 3DS mit boolschen Operationen (hier: Differenz) aus zwei Ursprungsobjekten erzeugt habe. Wie aber sonst sollte ich diesen Körper erzeugen? Ich hoffe wirklich Ihr könnt mir hier weiterhelfen. Vielen Dank im Voraus! Grüße Ayman to.agadir@gmx.de |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe glaube ich das selbe Problem ich konnte es auch nicht so richtig lösen, aber ich weiß schon zum Teil wie ich es umgehen kann.
Schau mal in diesen Thread in dem selben Forum, den ich vor 2 Tagen aufgemacht habe: https://www.blitzforum.de/viewtopic.php?t=3078 Ich werde dieses Problem so umgehen, daß ich mit GILE(s) ein Shadowmap auf die Texturen legen werde und dann wird es richtig geshadet. Man darf es also nicht mit einer nicht-ambiente Lichtquelle von BB3D machen. Diese Sache ärgert mich auch sehr und hat mir viel Zeit geraubt. Ich habe noch etwas festgestellt. Wenn man Vertixes hin- und herschiebt, tritt das Problem eher auf. |
||
![]() |
Ayman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zunächst mal vielen Dank für Deine Antwort, Omenaton_2. Hat sich ja sonst keiner getraut ![]() Ich habe den von Dir angegebenen Thread durchgelesen. Das mit den 'Smoothing Groups' ... scheint irgendwas BB3D-internes zu sein. Einen Befehl gibt es dafür ja nicht. Wenn ich das richtig verstanden habe, dann hat jeder Vertex eine Normale, die sich aus den Mittelwerten der Normalen der mit ihm verbundenen Dreiecksflächen ergeben... oder so ähnlich. Das sollte aber m.E. nicht der Grund sein, denn innerhalb meines 'Hangars' (der quaderförmigen Höhle in meinem Grundkörper) tritt das Problem besonders stark zu Tage und die Flächen der Innenwände sind - da es ja ein Quader ist - so trivial wie nur was. Trotzdem ist hier jedes zweite Dreieck verkehrt beleuchtet. Der von Dir beschriebenen Ansatz Zitat: mit GILE(s) ein Shadowmap auf die Texturen legen ... sagt mir leider im Moment gar nichts. Ich vermute es handelt sich um einen Trick innerhalb von 3DS-Max. Ich habe 3DS-Max zur Zeit (aus Frust wegen dieser Sache) deinstalliert. Ich werde es mir aber wieder installieren und dann danach suchen. Du sagst: Zitat: Man darf es also nicht mit einer nicht-ambiente Lichtquelle von BB3D machen. Meinst Du es darf kein Licht von einer gerichteten Lichtquelle darauf fallen? Das würde aber doch die Einsatzmöglichkeiten von Blitz3D massiv einschränken. Dann dürfte ich ja in der ganzen Szene keine solche Lichtquelle verwenden... Da das ganze aber mal ein Weltraumspiel werden soll, gibt es Sonnen und damit Lichtquellen, die nur aus einer Richtung scheinen... oder habe ich Dich hier falsch verstanden? Zitat: Ich habe noch etwas festgestellt. Wenn man Vertixes hin- und herschiebt, tritt das Problem eher auf. Ja, das habe ich auch gemerkt. Wenn UpdateNormals hier nicht hilft, muss man wohl die Normalenvektoren nach dem Laden von Hand neu setzten. Dafür würde ich mir zumindest ein Tool wünschen ... Ich bleibe jedenfalls am Ball. Wenn ich was rausbekomme, poste ich es auch in Deinem Thread. Grüße Ayman |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
smoothing group hat garnix mit blitz3d intern zu tun sondern mit dem modeller.
Smoothing heisst dass die vertices von verschiedenen triangles geteilt werden und dadurch ne "durchschnittsvertexnormale" entsteht an diesem Vertex. wenn sie nicht in der selben smoothing group sind, hat jedes triangle lauter eigene Vertices, wodurch die übergänge wie "scharfe kanten" erscheinen. ( würdest dann zb auf ner kugel jede seite erkennen wie wenn du flat shading nimmst ) |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab jetzt nicht alles gelesen , aber ich weiß das man die Eckpunkte
von Flächen bei harten Kanten nicht doppelt benutzen sollte weil jeder Vertex nur eine Normale hat . |
||
![]() |
Ayman |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Markus2: Wie kann ich das konkret verhindern? | ||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du dir nen Würfel vorstellst dann für jede Seite
4 Vertices pro Fläche benutzen . In C4D kann man z.B. Flächen markieren und abtrennen auch wenn die Eckpunkte vorher geteilt waren mit anderen Flächen . |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich schrieb:
"...mit GILE(s) ein Shadowmap auf die Texturen legen ..." Ayman: "... sagt mir leider im Moment gar nichts. Ich vermute es handelt sich um einen Trick innerhalb von 3DS-Max. Ich habe 3DS-Max zur Zeit (aus Frust wegen dieser Sache) deinstalliert. Ich werde es mir aber wieder installieren und dann danach suchen. " Gile[s] ist ein Software extra für das Erstellen von Shadowmaps und hat nichts mit 3DStudio zu tun. Modelle kannst du weiterhin in 3Dstudio machen, aber dann am Ende sie in zum Beispiel in Giles einladen und dort Lichter setzen und Shadowmaps (zusätzliche Texturenebene mit Shadinginformationen) abspeichern. Dann lädst du die in Giles bearbeitete 3DS-Mesh ein und du hast theoritisch eine Szene wo alles sehr schön beleuchtet ist (schöner, als BB3D das tun könnte) und keine Shadingprobleme. Dabei darfst keine nicht-ambiente Lichtquelle setzen, aber das ist kein Nachteil, weil die Shadowmaps die Effekte einer Directional Light voll ersetzen können. Ich habe das alles noch nicht 100%ig ausprobieren können, weil GileS ich noch nicht als Vollversion habe. (Ist aber bestellt.) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du scheinst nicht viel Ahnung von Licht zu haben oder?
Ob da ne Lightmap drauf is oder nicht ändert am Problem NICHTS da es ein Problem der Geometrie is nicht vom Licht oder der Textur. Allgemein bei Problemen dieser Art ein UpdateNormals drüber lassen und wenn es dann net gut is nochma zurück in den Modeller und dort gucken was man gesetzt hat. Speziell in Modellern wie Max, C4D oder Maya NIE vergessen dass ihr mesh-modifier ins mesh reinbaken / flaten müsst so dass die geometrie auch wirklich geändert wird. sonst können ziemlich zerlegte modelle am schluss rauskommen! |
||
![]() |
Ayman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zu Gile[s]:
Zitat: Dabei darfst keine nicht-ambiente Lichtquelle setzen, aber das ist kein Nachteil, weil die Shadowmaps die Effekte einer Directional Light voll ersetzen können. Ich kenne mich mit Shadowmaps nicht aus. Wie kann ich denn in Blitz3D dafür sorgen, dass ein derart erstelltes Objekt von verschiedenen Seiten beleuchtet wird, je nach dem, wo gerade die Lichtquellen (bei mir: Sonnen) relativ zum Objekt stehen bzw. wie mein Objekt gerade rotiert ist? So 'ne Coriolis Raumstation dreht sich ja ständig um die eigenen Axe... |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: du scheinst nicht viel Ahnung von Licht zu haben oder?
Ob da ne Lightmap drauf is oder nicht ändert am Problem NICHTS da es ein Problem der Geometrie is nicht vom Licht oder der Textur. Das ändert sehr wohl etwas. Das Problem wird zwar nicht wirklich behoben, aber es wird umgangen. Die falsch geshadeten Dreiecke erscheinen nur in Abhängigkeit von Lichtquellen. Ayman: "Ich kenne mich mit Shadowmaps nicht aus. Wie kann ich denn in Blitz3D dafür sorgen, dass ein derart erstelltes Objekt von verschiedenen Seiten beleuchtet wird, je nach dem, wo gerade die Lichtquellen (bei mir: Sonnen) relativ zum Objekt stehen bzw. wie mein Objekt gerade rotiert ist? So 'ne Coriolis Raumstation dreht sich ja ständig um die eigenen Axe..." - In so einem Fall, wo du immer andere Shading brauchst, weil sich das Objekt dreht, eignen sich Shadowmaps nicht gut. Die sind für Innenräume oder Außenwände gedacht, aber nicht für bewegliche Objekte. Du mußt dann doch die BlitzBasic Lichtquellen benutzen, dann mußt du irgendwie den ShadingError doch beseitigen. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mehr Polygone nutzen, da VertexLighting von den Vertices abhängt.
Alternativ dazu helfen auch geschickt gewählte Texturen, dass man die ruppige Übergänge nicht direkt erkennt |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group