Welche Werte habe ich nach Transformation mit ProjectionMatrix



  • Ja.

    Bye, TGGC



  • was heißt denn "ja"??



  • FelixManke schrieb:

    was heißt denn "ja"??

    Er versteht, warum Du es nicht sofort erklären wolltest... 🤡 :p



  • Na, dann ist das "ja" aber nicht gerade hilfreich.... Ich weiß, dass das ein recht kompliziertes und spezielles Problem ist, aber "ja" hilft wirklich nicht sehr viel weiter.



  • FelixManke schrieb:

    Na, dann ist das "ja" aber nicht gerade hilfreich.... Ich weiß, dass das ein recht kompliziertes und spezielles Problem ist, aber "ja" hilft wirklich nicht sehr viel weiter.

    Aber es ist das Einzige, was Du gefragt hast... 😉

    Hätte er GAR KEIN Feedback mehr gegeben, wärst Du auch eingeschnappt, oder?! 🤡



  • naja, ich freue mich ja, dass es eine Reaktion gab. Aber ich habe doch oben Fragen gestelt und nachdem ich feststellte, dass die ganze Sache doch nicht soo einfach ist, nochmal alles drumrum erklärt. Und da kann man glaube ich ne Menge zu diskutieren. Muss man natürlich nicht, aber kann man. Und auch mehr als nur "ja". Wenigstens "ja, da kann ich Dir auch nicht helfen", oder "ja, wie wäre es mit..." oder sowas.

    Aber ich will gar nicht soo sehr rummeckern. Bin icht eingeschnappt oder so. Aber hat dennoch jemand eine Idee, die über "ja" hinaus geht?? Ich habe versucht, in der DirectX-Doku was rauszufinden. Da stand was, dass die Projection Matrix zunächst in den Viewport transformiert, da dann das Clipping in der Pipeline kommt. Aber schlau draus bin ich auch nicht geworden.



  • Aha, scheinbar würdest du jetzt doch auch andere Vorschläge in Betracht ziehen? Wie wäre es, wenn du eine Stencil Mirror Technik an der Wasseroberfläche benutzt? Allerdings invertierst du die Matrix nicht einfach, sonder drehst sie nur entsprechend den Gesetzen der Optik.

    Bye, TGGC



  • Öhh, könntest du das etwas ausführen? Was meinst du denn mit den "Gesetzen der Optik"?? Ich will ja nicht spiegeln, sondern brechen. Halt, wie ein Löffel im Glas oder ein Fisch im Wasser. Die sind ja auch woanders, als man sie sieht.

    Naja, ich hätte da eine weitere Frage, die mich vielleicht weiter bringt. Werden Werte noch zwischen Vertex- und Pixelshader verändert ( transformiert, wenn ich im Vertex-Shader einen Wert (hier die Position) über ein Textur-Register ausgebe. Der Vertexshader ist ja, vergleichen mit der Fixed-Function-Pipeline, bis zur Pjejection-Transformation (einschließlich). Danach kommt das Clipping und das Transformieren in den Viewport. Dann der Rasterizer. Nun frage ich mich, ob auch Texturkoordinaten noch irgendwie transformiert werden. Und wenn ja, wie dann???



  • FelixManke schrieb:

    Öhh, könntest du das etwas ausführen? Was meinst du denn mit den "Gesetzen der Optik"?? Ich will ja nicht spiegeln, sondern brechen. Halt, wie ein Löffel im Glas oder ein Fisch im Wasser. Die sind ja auch woanders, als man sie sieht.

    Achso! Sorry, wusste micht, das man Brechung gar nicht mit den Gesetzen der Optik berechnet. Wie berechnest du die denn?



  • Ok, ich denke, wir können diesen Thread getrost bleiben lassen. Erstens ist der Unterton nicht der tollste. Ich dachte eigentlich, dass Foren dafür da sind, Fragen zu klären und zu helfen. Zweitens habe ich die Antwort bereits gefunden.

    Um einen Vertex so zu transformieren, dass er im "Screen-Space" ist (keine Ahnung, ob der so heißt. Ich meine nach der Projection-Transformation), muss man ihn mit der WorldViewProjection-Matrix transformieren UND DANN noch die xyz-Komponenten durch w teilen.

    Also:
    P' = P * matWorldViewPjoj;
    P'.x /= P'.w;
    P'.y /= P'.w;
    P'.z /= P'.w;

    Falls jemand etwas ähnliches braucht, kann er so hoffentlich etwas voran kommen.



  • War mir auch eine Freude zu helfen. Beantworte immer gern die Fragen, die da stehen.


Anmelden zum Antworten