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

1

05.04.2007, 13:35

Frage zu Licht und Normalvektoren

Hallo jungs ;)

also hab mich jetzt die lezten 2 tage bischen mit normalvektoren und beleuchtung bschäftigt und dabei stellen sich mir jetzt folgende fragen.

die normalvektoren eines raumes beispielsweise sehen so aus.

Boden 0,1,0
Decke 0,-1,0
Re Wand -1,0,0
Li Wand 1,0,0
Vordere Wand 0,0,-1
Hintere Wand 0,0,1

und für einen würfel so:
boden 0,-1,0
decke 0,1,0
Re Wand 1,0,0
Li Wand -1,0,0
Vo Wand 0,0,1
Hi Wand 0,0,-1

meine frage ist jetzt warum? ein raum und ein würfel sehen doch rein optisch betrachtet völlig ident aus, wieso richten sich aber die normalvektoren eines raumes ach innen und bei einem würfel nach außen?

und weiters wollte ich noch fragen, ob folgende funktion für die berechnung von normalvektoren korrekt ist. bei meinen testprogrammen fand ich eigentlich ,dass die beleuchtung korrekt und gut aussieht,aber das muss ja nichts heißen :)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// function : CalculateNormals

D3DXVECTOR3 CalcNormal(D3DXVECTOR3 vec1, D3DXVECTOR3 vec2, D3DXVECTOR3 vec3)
{
  // Variables

  D3DXVECTOR3 tempVec1, tempVec2, tempVec3;

  D3DXVECTOR3Subtract(&tempVec1, &vec2, &vec1);
  D3DXVECTOR3Subtract(&tempVec2, &vec3, &vec1);

  D3DXVECTOR3Cross(&tempVec3, &tempVec1, &tempVec2);
  D3DXVECTOR3Normalize(&tempVec3, &tempVec3);

  return tempVec3;
}


die berechnung ist glaub ich klar,muss ich nicht mehr viel erklären. also was haltet ihr davon?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

05.04.2007, 14:35

die berechnung ist soweit richtig. den tempVec3 könntest dir noch sparen.

Zitat

meine frage ist jetzt warum? ein raum und ein würfel sehen doch rein optisch betrachtet völlig ident aus, wieso richten sich aber die normalvektoren eines raumes ach innen und bei einem würfel nach außen?


das is ganz einfach: einen würfel schaust du von außen an und einen raum von innen...

3

05.04.2007, 15:12

aa lol :)

aber wo brauch man denn dann ne box? spontan würde mir jetzt ne itemkiste oder schatztruhe einfallen, aber wenn man die öffnen kann ist es ja eigentlich wieder ein raum und keine box oO


am ehesten noch ,wenn man mit ner kugel den horizont bzw. himmel etc simuliert, aber das ist dann wirklich das einzige was mir einfällt :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

05.04.2007, 15:16

der normalvektor gibt an "wohin das dreieck gerichtet ist". also die richtung aus der licht empfangen wird. kommt licht aus der andren richtungs isses finster.
eine kiste die man aufmacht hat außen dreicke die nach außen gerichtet sind und innen welche die nach innen gerichtet sind...

5

05.04.2007, 18:20

k jetzt wird mir das klar :)

danke

Werbeanzeige