Algorithmus zum Berechnen der Normalenvektor-Ausrichtung eines 3D Meshs

Das widerspricht sich doch nicht? Ein Polyeder darf auch konkav sein…
Hm sorry, wie gesagt bin nicht so der Matheguru.
Im CAD-Bereich würde man die Meshes als Solid bezeichnen also als geschlossene Volumenkörper.
Stell dir einfach einen Legostein als Mesh vor :)
 
Wenn du normalen berechen wilst von nem dreick nutzt dier vieleicht diese teil meines progs


werte[0].x=-1.0f;
werte[0].y=-1.0f;
werte[0].z=0.0f;
//werte[0].color=0xFF0000FF;
werte[0].tx=0.0f;
werte[0].ty=1.0f;

werte[1].x=0.0f;
werte[1].y=1.0f;
werte[1].z=0.0f;
//werte[1].color=0xFFFF0000;
werte[1].tx=0.5f;
werte[1].ty=0.0f;

werte[2].x=1.0f;
werte[2].y=-1.0f;
werte[2].z=0.0f;
//werte[2].color=0xFF00FF00;
werte[2].tx=1.0f;
werte[2].ty=1.0f;



//normale berechnen
zw1.x=werte[1].x-werte[0].x;
zw1.y=werte[1].y-werte[0].y;
zw1.z=werte[1].z-werte[0].z;

zw2.x=werte[2].x-werte[0].x;
zw2.y=werte[2].y-werte[0].y;
zw2.z=werte[2].z-werte[0].z;

//normalizieren
D3DXVec3Cross(&end,&zw1,&zw2);
D3DXVec3Normalize(&end,&end);

werte[0].nx=end.x;
werte[0].ny=end.y;
werte[0].nz=end.z;

werte[1].nx=end.x;
werte[1].ny=end.y;
werte[1].nz=end.z;

werte[2].nx=end.x;
werte[2].ny=end.y;
werte[2].nz=end.z;

als erstes gebe ich ein dreick alle punkte an und daraus berechne ich mir die normalen und standartiesiere sie mir.

wenn dir das net hilfz gug dir mal das prog
plus 14 an ist eine Mathe samlung und super erklärt hoffe konnte helfen
 
geh alle flächen durch. Geh davon aus, dass die erste fläche die du anguckst richtig ist. Danach betrachte jeweils nur flächen, die an schon bestimmte flächen angrenzen. nun wende die normale der aktuellen fläche so, dass sie auf die gleiche seite zeigt wie die eines bereits bestimmten, anliegenden triangels (indem du einfach die beiden vertices, welche sich die triangel teilen, in entgegengesetzter umlaufrichtung abläufst als bei dem schon bestimmten triangel). So hast du am Schluss alle normalen gleichgerichtet und kannst sie allenfalls noch allesammt swappen, falls sie in die falsche richtung schauen.

Aber vorsicht - gerade im gamebereich hat man selten geschlossene, saubere oberflächen. Die sind meistens irgendwo offen und es kann auch vorkommen dass eine 'edge' von mehr als zwei polygonen verwendet wird etc.

Warum hast du überhaupt zerschossene Ausgangsdaten?
 

Neue Beiträge

Zurück