Polygonnormale

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

StepTiger

Betreff: Polygonnormale

BeitragDi, Nov 07, 2006 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo wieder mal.

Hab mal wieder ne extradumme Frage. Ich bastel immer noch an dem Normalmap Ersteller.

Wie kann man die Polygonnormale eines einzelnen Dreiecks darstellen? Ich finde einfach keine Lösung =(
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragDi, Nov 07, 2006 1:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Indem du ein Quad mit der Textur einer Linie / Pfeil darauf stellst und entsprechend ausrichstest.

Alternativ kannst du auch den 2D Befehl Line nehmen und die von "normalenpunkt" zu "normalenpunkt + normale" ziehen wobei du das ganze einfach in 2D Koordinaten umrechnest via Cameraproject
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StepTiger

BeitragDi, Nov 07, 2006 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
da liegt nicht mein Problem Smile

Die Darstellung ist ne Kleinigkeit! (Du unterschätzt mich, Dreamora ^^)

Mir geht es um die Winkelrechnung und ich weiß nicht, wie ich diesen Punkt, da wo die normale hinführt, finden soll. Ich finde einfach keinen Weg, den X und Y Winkel zwischen den Dreieckspunkten zu finden.

Soweit danke!
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Shark

BeitragDi, Nov 07, 2006 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du jetzt von deinen Dreieckspunkte die länge kennst ( mit helfe von pythagoras).
Dann könntest du doch mit dem Kosinussatz deine Winkel berechnen.
a² = b² + c² - cos2bc * cos alpha
b² = a² + c² - cos2ac * cos beta
c² = a² + b² - cos2ab * cos gamma

Ich hoffe es hilft dir, denn ich hab noch nie etwas von " Polygonnormale" gehört.

mfg Shark

Vertex

BeitragDi, Nov 07, 2006 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
EdgeA = Vertex1 - Vertex0
EdgeB = Vertex2 - Vertex0
Normal = EdgeA x EdgeB

Das x bedeutet Kreuzprodukt der Vektoren EdgeA und EdgeB.

Weiß nicht mehr, ob du den Normalvektor noch normalisieren musst. Wirste ja sicher bei einem Beispiel herausfinden.

mfg olli

Edit, ja, muss noch normalisiert werden.

Code: [AUSKLAPPEN]
Vertex0% = TriangleSurface(Triangle, 0)
Vertex1% = TriangleSurface(Triangle, 1)
Vertex2% = TriangleSurface(Triangle, 2)

EdgeAX# = VertexX(Surface, Vertex1) - VertexX(Surface, Vertex0)
EdgeAY# = VertexY(Surface, Vertex1) - VertexY(Surface, Vertex0)
EdgeAZ# = VertexZ(Surface, Vertex1) - VertexZ(Surface, Vertex0)

EdgeBX# = VertexX(Surface, Vertex2) - VertexX(Surface, Vertex0)
EdgeBY# = VertexY(Surface, Vertex2) - VertexY(Surface, Vertex0)
EdgeBZ# = VertexZ(Surface, Vertex2) - VertexZ(Surface, Vertex0)

NormalX# = EdgeAY*EdgeBZ - EdgeAZ*EdgeBY
NormalY# = EdgeAZ*EdgeBX - EdgeAX*EdgeBZ
NormalZ# = EdgeAX*EdgeBY - EdgeAY*EdgeBX

Length# = Sqr(NormalX*NormalX + NormalY*NormalY + NormalZ*NormalZ)
If Length# = 0.0 Then
   NormalX = 0.0
   NormalX = 0.0
   NormalX = 0.0
Else
   RLength# = 1.0 / Length
   NormalX = NormalX * RLength
   NormalY = NormalY * RLength
   NormalZ = NormalZ * RLength
EndIf


so, in etwa müsste es funktionieren. Den Normalvektor solltest du dann über TFormVector noch in Weltkoordinaten umwandeln...

mfg olli
vertex.dreamfall.at | GitHub

StepTiger

BeitragDi, Nov 07, 2006 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
2 Sachen ^^

TriangleVertex

und

NormalX#=0.0
NormalY#=0.0
NormalZ#=0.0


Hab den Code noch nicht probiert, aber das ist Sicherheit.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group