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?