Projektion und Kamera (OpenGL 3.3)



  • Man verwendet einfach unterschiedliche Transformationsmatrizen für jedes unabhängige Objekt.



  • Und wie sagt man dem Shader welche Matrix er bei welchem Vertex nehmen soll?



  • Skybuildhero schrieb:

    Und wie sagt man dem Shader welche Matrix er bei welchem Vertex nehmen soll?

    Du bist es doch, der den Shader programmiert!?



  • Ja aber ich hab nich verstanden wie man dem Shader zusätzlich zu dem Vertex auch noch die Matrix, die zu diesem Vertex gehört, übergibt. Ich meine man kann ja jetzt nich einfach 5 Matrizen übergeben und sagen: "Such dir die richtige raus".
    Das möchte ich halt wissen. Wie man ihm sagt welche Matrix er nutzen soll. 😕



  • Warum sollte jeder Vertex eine andere Matrix benötigen?



  • Und zudem hab ich jetzt die Projektionsmatrix wie in der PDF angegeben erstellt:

    proj = mat4( cot(fovy/2)/aspect, 0         , 0               , 0                 ,
                 0                 ,cot(fovy/2), 0               , 0                 ,
                 0                 , 0         , -((f+n) / (f-n)), -((2*f*n) / (n-f)),
    	     0                 , 0         , -1	             , 0                );
    

    Wenn ich dass jetzt zu meiner Matrix dazumultipliziere, ist der Bildschirm schwarz. Muss man da evtl. irgentwelche Einstellungen ändern, die sonst verhindern, dass man ein Objekt auf der Z-Achse verschiebt oder eine Projektion einbaut (muss man vllt. die Standartprojektion außer Kraft setzen oder so?)

    Position = Projektion * Skalation * RotationX * RotationY * RotationZ * Translation * Vertex;
    

    😕



  • Achso und ich meine ja wie macht man dem Shader deutlich, dass der Vertex, den er da bearbeitet, zu "Würfel A" gehört? Weil "Würfel A" eine andere Matrix hat als "Würfel B". Also wie sagt man dem Shader das der Vertex zu "Würfel A" gehört und somit mit "MatrixVonWürfelA" multipliziert werden muss, und nicht mit "MatrixVonWürfelB". Wie übergibt man noch den Parameter (z.B. int Zugehörigkeit = 1 (1 für A)) an den Shader? Das hab ich noch nicht verstanden.



  • Skybuildhero schrieb:

    Achso und ich meine ja wie macht man dem Shader deutlich, dass der Vertex, den er da bearbeitet, zu "Würfel A" gehört? Weil "Würfel A" eine andere Matrix hat als "Würfel B". Also wie sagt man dem Shader das der Vertex zu "Würfel A" gehört und somit mit "MatrixVonWürfelA" multipliziert werden muss, und nicht mit "MatrixVonWürfelB". Wie übergibt man noch den Parameter (z.B. int Zugehörigkeit = 1 (1 für A)) an den Shader? Das hab ich noch nicht verstanden.

    1. MatrixVonWürfelA setzen
    2. Würfel A zeichnen
    3. MatrixVonWürfelB setzen
    4. Würfel B zeichnen

    😉



  • Achso...

    Aber dauert das nicht etwas lange, wenn man jetzt z.B. einen Menschen animiert? Da braucht ja jeder Knochen eine Matrix und wenn man die dann innerhalb eines Frames alle setzt...und das auf nem server mit sagen wir 30 Spielern also 30 Menschen?
    Dauert das nicht zu lange?



  • Klar, in dem Fall wird man die Matritzen in einem Buffer ablegen und jedem Vertex einen Index verpassen, über den man dann die richtige Matrix aus dem Buffer lesen kann... 😉



  • OK
    Danke!

    Jetzt nurnoch die Frage oben 😃


Anmelden zum Antworten