Normalen eines Meshes drehen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

PacMani

Betreff: Normalen eines Meshes drehen

BeitragMo, März 08, 2010 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin nun auch in das Thema Meshbearbeitung in B3D eingestiegen und habe dazu gleich ein paar Fragen. Aber erstmal, worum es bei mir genau geht:
Hier ist ein Leveleditor, bei dem man Böden und Wände setzen kann. Die Böden setzen sich dabei aus mehreren Vektoren zusammen die man einfach einzeichnen kann. Allerdings sieht danach die Texturierung entsprechend grottig aus und die Normalen eines Triangles zeigen auch nicht alle in eine Richtung (neben dem Boden sieht man eine Wand mit korrekter Textur):
user posted image

Kann ich überhaupt Normalen verdrehen oder UV-Mapping nachträglich korrigieren, und wenn ja, wie?
  • Zuletzt bearbeitet von PacMani am Mo, März 08, 2010 22:32, insgesamt einmal bearbeitet

Xaymar

ehemals "Cgamer"

BeitragMo, März 08, 2010 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/help/?subcat=75

Da ist alles benötigte:) VertexTexCoords
Warbseite
 

PacMani

BeitragMo, März 08, 2010 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, da werde ich bei den Texturkoordinaten wohl rumrechnen müssen, da es ja auch mehr als nur 4 Vektoren sein können Wink
EDIT: Die Korrektur der Texturkoordinaten erwies sich als unglaublich leicht. Einfach die Koordinate des Vertex als UV(W) angeben, wenn nötig!


EDIT2: So, bei folgendem Problem weiß ich leider nicht weiter. Die Textur erscheint immer auf der falschen Fläche, ich will die aber oben (und zwar ohne BackfaceCulling etc.):
user posted image

Hier mal mein Code (habe mit VertexNormal schon rumprobiert, aber das bringt so oder so nix):
Code: [AUSKLAPPEN]
If CurrentMesh=0 Then
               CurrentMesh=CreateMesh()
               NameEntity CurrentMesh,"FLOOR"
               EntityTexture CurrentMesh, LoadTexture("texture\"+TextFloorTexture\Name+".png")
               ;EntityFX CurrentMesh,16
               CurrentSurface=CreateSurface(CurrentMesh)
               Vector0=AddVertex(CurrentSurface,PX,0,PZ,PX,PZ)
               VertexNormal CurrentSurface,Vector0,1,-1,1
            Else
               If Vector1=0 Then
                  Vector1=AddVertex(CurrentSurface,PX,0,PZ,PX,PZ)
                  VertexNormal CurrentSurface,Vector1,1,-1,1
               Else
                  If Vector2=0 Then
                     Vector2=AddVertex(CurrentSurface,PX,0,PZ,PX,PZ)
                     VertexNormal CurrentSurface,Vector2,1,-1,1
                     Triangle=AddTriangle(CurrentSurface,Vector0,Vector1,Vector2)
                     Vector1=Vector2
                     Vector2=0
                  End If
               End If
            End If
 

BIG BUG

BeitragDi, März 09, 2010 2:01
Antworten mit Zitat
Benutzer-Profile anzeigen
In welche Richtung ein Polygon zeigt wird durch die Reihenfolge der Vertices festgelegt. Wird ein Polygon aus Sicht Kamera im Uhrzeigersinn aufgebaut, so ist es sichtbar, ist es gegen den Uhrzeigersinn aufgebaut, ist es nicht zu sehen.
Entweder Du drehst die Reihenfolge der erzeugten Vertices um oder Du benutzt FlipMesh...
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

PacMani

BeitragDi, März 09, 2010 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir fällt einfach nichts ein, wie ich den Uhrzeigersinn der gezeichneten Dreiecke herausfinden könnte, damit ich dementsprechend die Vertices in einer anderen Reihenfolge hinzufügen kann... da mehrere Polygone entstehen, können einige in die richtige Richtung zeigen (sichtbar) oder eben in die falsche (nicht sichtbar, gegen Uhrzeigersinn), FlipMesh würde mir da nichts bringen. Außer ich erstelle ein zweites Mesh bei dem ich dann nach Fertigstellung des ersten FlipMesh ausführe, sodass "falsche" Polygone von "richtigen" überdeckt werden... aber das ist unglaublich unsauber Sad Tipps/Tricks, wichtigen Befehl übersehen?
 

BIG BUG

BeitragMi, März 10, 2010 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Musst halt Deinen Code so umbauen, dass alle Polygone richtig erzeugt werden.
Entscheidend ist die Reihenfolge der Vertices bei AddTriangle, nicht in welcher Reihenfolge die Vertices erzeugt wurden.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group