Problem mit directional Licht



  • Hallo!
    Ich habe mir eine hügelige Ebene erstellt, dazu ein Directionallicht. Nun rotiere ich das ganze um die Y Achse. Das Ergebnis: Rotierende Ebene, bei der es scheint, als sei 2 mal pro Drehung Lichtuntergang, wisst ihr wie man so etwas umgeht? 😕

    Kevin



  • Mir ist irgendwie nicht ganz klar wo dein Problem liegt 😕

    Wenn die Lichtquelle sich nicht mit der Landschaft dreht, dann wird natürlich jede Bergseite bei einer Umdrehung beleuchtet.

    Wenn du einen Tag/Nacht wechsel willst, dann solltest du mal drüber nachdenken, ob du nicht lieber die Lichtquelle bewegst. Schließlich dreht die Sonne sich ja nicht um den Horizont.

    Kann sein, dass ich dich jetz aber auch total missverstanden hab. 😕



  • mhm nein
    Also ich hab ne kleine Landschaft
    Dann habe ich bein Licht (Directional) reingebastelt. Und rotiere das Gesamtbild um die Y Achse. Jedoch ist manchmal (2 mal pro Umdrehung) die gesamte Landschaft schattig. Ich möchte aber, dass sie Dauerbeleuchtet ist, jedoch mit Schatten. Aber die Landschaft wird plötzlich dunkel - nicht dass sich die Schatten verschieben würden. Ach - ich upps einfach, hier könnt ihr euch es runterladen und mal angucken 😕 Möchte einfach dass es nicht dunkel wird, jedoch schattig bleibt. 🙂

    http://mitglied.lycos.de/Surkevin2/landschaft.zip

    DANKE!!

    Kevin



  • Surkevin schrieb:

    mhm nein
    Also ich hab ne kleine Landschaft
    Dann habe ich bein Licht (Directional) reingebastelt. Und rotiere das Gesamtbild um die Y Achse. Jedoch ist manchmal (2 mal pro Umdrehung) die gesamte Landschaft schattig. Ich möchte aber, dass sie Dauerbeleuchtet ist, jedoch mit Schatten. Aber die Landschaft wird plötzlich dunkel - nicht dass sich die Schatten verschieben würden. Ach - ich upps einfach, hier könnt ihr euch es runterladen und mal angucken 😕 Möchte einfach dass es nicht dunkel wird, jedoch schattig bleibt. 🙂

    http://mitglied.lycos.de/Surkevin2/landschaft.zip

    DANKE!!

    Kevin

    seite wird nicht gefunden ....



  • http://mitglied.lycos.de/surkevin2/
    da drauf gehn und dann auf landschaft.zip klicken 😉



  • Also ich denk ich weiß wo der Fehler liegen könnte.
    Für das Licht muss man ja Normalvektoren angeben oder? Ich habe ja ein Gitternetz erstellt, sagen wir wir haben ein Gitternetz von 4x4:

    1 5 9 13

    2 6 10 14

    3 7 11 15

    4 8 12 16

    Die Zahlen sind jetzt so angeordnet, wie ich sie angeordnet habe, in einer Schleife eben , ich hoffe ihr wisst was ich meine.
    Jedes dieser Quadrate besteht ja aus 2 Dreiecken, z.b. erstes Quadrat aus Dreieck 1,2,5 und 5,2,6 , kapisch? 🙂

    Ich habe jetz die Normalvektoren aus 1 2 3 berechnet, ich denke aber ich muss die Normalvektoren aus den Vertizen der Dreiecken errechnen oder?

    Wenn das stimmt, wärs gut. Könnte an der Berechnung ein solch komischer Effekt wie bei mir entstehen? Bitte sagt ja *bet*

    Könnt ihr mir sagen was die Normalvektoren eigentlich sollen? Hab das nich so ganz geblickt 😞 Wäre sehr lieb

    Kevin



  • Surkevin schrieb:

    Könnt ihr mir sagen was die Normalvektoren eigentlich sollen? Hab das nich so ganz geblickt 😞 Wäre sehr lieb

    Das habe ich vor 15min beantwortet, macht doch mal die Augen auf.

    Bye, TGGC



  • "Die Normalen müssen senkrecht zu den Tangentialebenen an den Punkten sein.

    Bei dem zweiten Problem hast du Renderstates nicht korrekt gesetzt. Schau mal ins SDK, das müsste Beispiele dabei sein, z.b. das Billboardzeug mit den Bäumen."

    Wenn du das meinst - hilft mir jetz nich wirklich weiter



  • Was verstehst du denn nicht? Senkrecht, tangential oder Ebene?



  • tangential - von einer Tangente leite ich jetz mal ab - im 90° Winkel dazu..

    jedoch darum geht es nicht....WIE berechnet DirectX das Licht + die Schatten? WAS Sind diese Normalvektoren und WIESO braucht man diese? Und wieso rechnet so etwas:

    D3DXVECTOR3 vNormal;
    		D3DXVECTOR3 v1;
    		D3DXVECTOR3 v2;
    
    		D3DXVec3Subtract(&v1, vVertex2, vVertex1);
    		D3DXVec3Subtract(&v2, vVertex3, vVertex1);
    
    		D3DXVec3Cross(&vNormal, &v1, &v2);
    
    		D3DXVec3Normalize(&vNormal, &vNormal);
    

    einen Normalvektor aus? Wie sieht der Normalvektor aus?

    Ich mag es nicht, Funktionen (o.ä.) zu verwenden die ich nicht verstehe.

    Deshalb hoffe ich auf eure Hilfe...

    Kevin



  • WIE berechnet DirectX das Licht

    Schau in die DXSDK Doku, da steht das genau haargenaun drin.

    die Schatten

    Erstmal garnicht.

    WAS Sind diese Normalvektoren

    Es heisst Normalenvektoren.

    WIESO braucht man diese

    Weil die in die Lichtberechnung eingehen, siehe die Formeln bzw. physikalischen Grundlagen dazu.

    wieso rechnet so etwas einen Normalvektor aus?

    Die Tagentialebene wird hier durch drei Punkte definiert. Daraus werden 2 Vektoren in dieser Ebene definiert. Deren Kreuzprodukt ist bekanntermassen senkrecht dazu. Get Mathebuch.

    Wie sieht der Normalvektor aus?

    Ein Strich mit'm Pfeil?

    Bye, TGGC



  • Der NOrmalenvektor muss senkrecht auf dem Dreieck stehen, das beleuchtet werden soll. Besipiel:

    Dreieck liegt direckt auf der x und z Achse, also waagerecht.
    Dann muss der Normalenvektor 0; 1; 0; sein, also direkt nach oben zeigen.
    Ausßerdem muss er normalisiert werden, das heißt, dass seine Länge sqrt(x^2 + y^2 + z^2) gelich 1 sein muss. Mehr gibts da eigentlich nicht zu machen.



  • Ok, ich danke euch!!


Log in to reply