Kamera bewegung in eine Scene



  • Hallo Leute,

    ich habe gelesen, das die Scene so transformiert wird, damit sich die Kamera im Ursprung befindet, um später andere transformationen effizienter ausführen zu lassen?

    Wikipedia:

    Neben den Objekten definiert die Szene auch eine virtuelle Kamera oder einen Betrachter, der die Position und Blickrichtung angibt, aus der die Szene gerendert werden soll. Um die spätere Projektion und das Clipping zu vereinfachen, wird die Kamera und die Szene so transformiert, dass sich die Kamera am Ursprung befindet, mit Blickrichtung entlang der z-Achse. Das resultierende Koordinatensystem wird Kamera-Koordinatensystem genannt und die Transformation Kameratransformation.

    Und aus Effizengründen wird folgendes gemacht:

    Aus Effizienzgründen werden die Modell- und die Kameratransformation üblicherweise in eine Transformationsmatrix zusammengefasst, sodass die Weltkoordinaten übergangen werden. Außerdem sind weitere, aufwändigere Transformationen wie Vertex Blending möglich. Frei programmierbare Vertex-Shader, die die Geometrie verändern, können ebenfalls ausgeführt werden.

    Ich habe meine Szene im Ursprung ausgerichtet. Die Kamera zeigt auch Ursprung. Wenn ich mich nun um die Szene herum bewegen möchte, bewege ich die Kamera um die Bounding-Sphere der Scene entlang.

    Ist das entsprechend Performanzgründen schlecht? Sollte ich lieber die scene um ihren Ursprung drehen?

    Und am besten noch due Kamera immer im Ursprung lassen, und die szene ensprechend vor der Kamera ausrichten udn dann rotieren?

    P.S. Ich bin neu in dem Bereich, und ich verwende Ogre3D.



  • Hallo NullBockException,

    zunächst mal macht es logisch keinen Unterschied, ob du eine Viewing- oder eine Model-Transofrmation durchführst. Bewegst du die Kamera in x-Richtung bei starrer Szene ist das visuelle Ergebnis identisch mit dem Ergebnis wenn du die Szene in -x-Richtung bewegst (bei starrer Kamera). Daher auch die Zusammenfassung (z.B. bei OpenGL) zu einer Modelview-Transformation.

    Die Rotation entspricht einer Matrixmultiplikation des jeweiligen Vertex. Da du aber sowieso jeden Vertex mit der Modelview-Matrix multiplizierst dürfte es aus Performance-Sicht keine Rolle spielen, welche Option du verwendest. Intuitiv wäre es natürlich sinnvoller die Kamera zu rotieren. Stell dir vor du müsstest eine komplexere Kamerafahrt realisieren, dann würdest du garantiert die Kamera animieren.

    Viele grüße,
    MaBa


Log in to reply