JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=abce3ae3e61ac9436a1ee0bdc5e73f4aMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Normalvektoren

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 05:04    Titel: Normalvektoren Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 08:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 08:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 08:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 08:56    Titel: Antworten mit Zitat

Wo beginne ich nochmal bei einem TriangleStrip, bei welchem Vektor? Und vorallem dann, wenn die ersten beiden in einer Ebene liegen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 09:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 09:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 09.11.2003, 09:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum