Normalen eines Meshes drehen
Übersicht

PacManiBetreff: Normalen eines Meshes drehen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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): ![]() 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
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/help/?subcat=75
Da ist alles benötigte:) VertexTexCoords ![]() |
||
Warbseite |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gut, da werde ich bei den Texturkoordinaten wohl rumrechnen müssen, da es ja auch mehr als nur 4 Vektoren sein können ![]() 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.): ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group