|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 09.11.2003, 05:04 Titel: Normalvektoren |
|
|
Kann mir wer sagen, warum ich diese Polys nicht sehe, wenn ich das so definiere (in Bezug auf die Normalvektoren)?
Code: |
struct CustomVertex
{
float x, y, z;
float nx, ny, nz;
float tu, tv;
};
CustomVertex Floor[] =
{
{-30.0f, 0.0f, -30.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f},
{-30.0f, 0.0f, 30.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f},
{ 30.0f, 0.0f, -30.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f},
{ 30.0f, 0.0f, 30.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f},
}; |
So sehe ich gar nichts...im Buch werden die Normalvektoren so definiert: 0.0f, 0.0f, 1.0f
Das müßte aber meiner Logik nach falsch sein, die Beleuchtung stimmt dann auch nicht mit der Position der Lichtquelle überein. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 09.11.2003, 08:46 Titel: |
|
|
Normalvektoren sollten im rechten Winkel von der Fläche wegzeigen. Deine Fläche zeigt nach unten, also müssten die Normalvektoren aller 4 Punkte 0, -1, 0 heißen und die Kammera sollte zumindest irgendwie von schräk unten nach oben auf die Fläche schauen, sonst siehst du nichts. (Nur einen Strich oder gar nichts, weil du die Rückseite der Fläche betrachtest. Beachte dazu das Culling deiner Flächen. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 09.11.2003, 08:49 Titel: |
|
|
meine Fläche zeigt nach unten? wieso das denn? Die Kamera ist schon frei bewegbar, das passt schon...
edit: meine Fläche zeigt sicher nach oben, da ich sie sonst eben wegen culling nicht sehen würde wenn ich das Licht deaktiviere...tu ich aber. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 09.11.2003, 08:53 Titel: |
|
|
Angenommen, deine Kamera steht auf Punkt 0, 0, -100 mit einem UpVektor 0, 1, 0 ist das Viereck eine Unterseite eines Würfels, weil du, wenn du von oben auf diese Fläche schaust die Eckpunkte gegen den Uhrzeigersinn definiert sind. Du mußs sie im Uhrzeigersinn definieren, damit die Fläche nach oben schaut... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 09.11.2003, 08:56 Titel: |
|
|
Wo beginne ich nochmal bei einem TriangleStrip, bei welchem Vektor? Und vorallem dann, wenn die ersten beiden in einer Ebene liegen? |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 09.11.2003, 09:04 Titel: |
|
|
Ich beginne immer hintenlinks, hintenrechts, vornelinks, vornerechts und mache danach immer weiter rechts mit hinten, vorne, hinten, vorne, ... weiter. Dann kann dein Normalenvektor auch 0,1,0 sein. (immer abgesehen davon, daß die Kamera auf ca. dem oben beschriebenen Ort ist... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 09.11.2003, 09:09 Titel: |
|
|
Chewie hat Folgendes geschrieben: | Wo beginne ich nochmal bei einem TriangleStrip, bei welchem Vektor? Und vorallem dann, wenn die ersten beiden in einer Ebene liegen? |
Schau mal auf:
http://216.5.163.53/DirectX4VB/Tutorials/DirectX8/GR_Lesson03.asp
vorbei.
Es geht zwar im Grunde um DirectX8 und VisualBasic.
Aber scroll einfach ein bisschne runter. Da wird gut illustriert wie man die verschiedenen Methoden zum "Triangle" rendern verwendet.
Triangle Strip, Triangle List ... |
|
Nach oben |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 09.11.2003, 09:21 Titel: |
|
|
Ich habs jetzt nochmal so herum ausprobiert, hat auch nichts dran geändert. Es hat vorher glaub ich auch schon nach oben gezeigt, sonst hätte ich es ja mit ambient light auch nicht gesehen....Kamera steht auf 0,5,0.
Man kann das in jedem Beispiel auf der CD, dass einen Boden verwendet, nachvollziehen: einfach das ambient light rausnehmen, dann sieht man, dass das pointlight vollkommen falsch auf den Boden wirkt. Weil die Normalvektoren eben schon falsch definiert sind. Bessert man das auf 0,1,0 aus, sieht man den Boden gar nicht mehr. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|