Triangleorientierung
Übersicht

ProblemchenBetreff: Triangleorientierung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen,
ich habe folgendes Problem und seh wahrscheinlich den Wald vor lauter Bäumen nicht: In einem prozedural erstelltem Mesh zeigen einige der Flächennormalen in die falsche Richtung so das ich Löcher im Mesh habe. Dadurch, das die Polygone über eine Kantenliste repräsentiert sind, stehe ich beim zeichnen auf dem Schlauch, wie rum ich nun das Polygon definieren muss. Gibt es wohl eine einfache Möglichkeit rauszubekommen wie die Drehrichtung des zu zeichnenden Polygons aussehen muss? Für 2D habe ich folgendes gefunden: http://rw7.de/ralf/inffaq/polygon.html#sort Zitat: ...... Ausführlich geschrieben:
A = 0.5 ( bx*cy + cx*ay + ax*by - cx*by - ax*cy - bx*ay) Die Formel hat ein Extra. Das Vorzeichen des Flächeninhalt entspricht dem Drehsinn der drei Punkte. Also positiv für linksrum, negativ für rechtsrum..... Sowas suche ich für 3D, sodas man einfach auf einen Wert checkt wie etwa Code: [AUSKLAPPEN] If check#=0 Then AddTriangle(objekt_surface,v0,v1,v2) Else AddTriangle(objekt_surface,v2,v1,v0) Endif Ich hoffe, jemand hat eine Idee.... Danke & mfg Problemchen |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So einfach geht das in 3D leider nicht.
Da es in 3D wie du ja schon gemerkt hast, 2 Richtungen gibt, musst du beim erstellen selbst überlegen, welche der beiden möglichen Ausrichtungen du als "aussen" ansiehst. Es gibt keine universelle Lösung dafür, das hängt sehr von der Form des Objektes aus, was aussen ist. Wenn du einen Mittelpunkt im Objekt hast, ist es insofern einfach, dass du das Skalarprodukt der Normale und der Richtung 0 -> Dreieck bildest und das Vorzeichen betrachtest. < 0: Normale schaut nach innen > 0: Normale schaut nach aussen Das erklärt für viele auch, warum automatische Triangulierungsanwendungen (BSP Map Editoren als wohl meist genutztes hier) keine konkave Geometrie erlauben. Das heisst, dass dein Objekt dann so aufgebaut sein muss, das es keine Löcher oder Wölbungen nach innen haben darf. Dann sollte das bei gescheiter Wahl des Nullpunktes klappen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Problemchen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, aber schade eigentlich... Die Idee mit dem Vergleich der Trisnormale mit dem Vektor Mittelpunkt =>Tris kam mir auch nach viel Nachdenken, funktioniert aber leider nicht wie du schon sagtest bei zB einem Torus, deshalb hab ich es erstmal verworfen da mir allgemeingültige Lösungen am liebsten sind ![]() Bis denne und danke noch mal mfg Problemchen |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei einem Torus ist es easy, denn ein Torus ist ein Rotationskörper.
Dort musst du nur das Zentrum gescheiter wählen für den Richtungsvektor: Beim Torus ist es im Zentrum des kleinen Kreises, der den Schlauch erzeugt, net in der Rotationsachse. Wenn du eine klare Geometrie hast, lässt sich das eigentlich immer ohne Probleme erzeugen. Aber bei nicht-speziellen Körpern gibt es dann halt nur die 2 Möglichkeiten: 1. konkav 2. Du kannst die Oberfläche parametrisieren. In diesem Falle ist N = d/du * f(t) x d/dv *f(t) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group