Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Edward

Frischling

  • »Edward« ist der Autor dieses Themas

Beiträge: 18

Wohnort: Bremen

Beruf: Fachinformatiker

  • Private Nachricht senden

1

18.02.2004, 17:49

Beleuchtung und Vertexnormalvektoren

Hallo zusammen.

Ich arbeite mich gerade in DirectX 9 ein und versuche, ein kleines Programm zu schreiben, welches Beleuchtung benutzt. Ohne Beleuchtung komme ich gut klar. Aber sobald ich sie einschalten will, sehe ich nicht das, was ich sehen möchte. Wahrscheinlich liegt es daran, dass ich die Vertex-Normalvektoren falsch berechne.

Ich habe im "Raum" nichts anderes als ein paar Würfel, die ich im Code selbst zusammengebastelt habe, und eine Kugel, die aus einer Modell-Datei geladen wird.

Bei der Kugel funktioniert die Beleuchtung einwandfrei. Bei den Würfeln jedoch nicht.

Kann mir jemand sagen, wie ich am besten den Normalvektor eines Vertex berechnen kann?


Vielen Dank.

Alex

PS: Ich bin im Besitz von David's Buch. Wenn ihr also wisst, wo ich eine Antwort darauf in diesem Buch finden kann, wäre ich auch für einen Hinweis diesbezüglich dankbar (im Kapitel über Beleuchtung habe ich bisher nichts passendes gefunden).
Um zu wissen, wo die Grenze ist muss man sie erst durchbrechen.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

18.02.2004, 18:00

http://www.scherfgen-software.net/forum/viewtopic.php?p=14092#14092

3

18.02.2004, 18:07

Die Formel für die Berechnung eines Normalenvektor sieht in etwa so aus:

Quellcode

1
2
3
4
vector3 Normal(const vector3& v1, const vector3& v2, const vector3& v3)
{
  return Normalize(Cross(v2-v1, v3-v1));
}
Die Funktion Cross berechnet das Kreuzprodukt zweier Vektoren. Eine fertige Funktion für die Berechnung des Kreuzproduktes und des Normalenvektors eines Dreieckes findest du aber auch in der Mathe Bibi von David's TriBase Engine.

In diesem Thread (letzter Beitrag von mir) hab ich eine Möglichkeit aufgeschrieben wie man die Normalenvektoren berechnen kann.

;D David war ein tick schneller
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Edward

Frischling

  • »Edward« ist der Autor dieses Themas

Beiträge: 18

Wohnort: Bremen

Beruf: Fachinformatiker

  • Private Nachricht senden

4

18.02.2004, 18:26

Mal schau'n...

Danke euch beiden. Werd' mich mal an die Arbeit machen.
Um zu wissen, wo die Grenze ist muss man sie erst durchbrechen.

Werbeanzeige