[WPF] Viewport3D & Transformationen



  • Moin moin,

    ich arbeite mich momentan etwas in C# und die WPF ein und habe ein kleines Verständnisproblem bzgl. der Transformationslogik von Objekten.
    Ziel ist es, mir einen kleinen Viewer für 3D-Modelle zu basteln. Dazu hab ich einen Viewport3D, in denen einige Modelle (ModelVisual3D) liegen und die ich - abhängig von der Benutzereingabe - entsprechend transformieren möchte. Meine bisherige Erfahrung mit 3D-APIs/Engines/Frameworks war immer die, dass man die Transformation durch schlichtes Setzen einer Transformationsmatrix bewerkstelligen konnte, die dann auf eine Menge von Vertices angewandt wurde.

    Nun habe ich einigen Artikeln entnehmen können, dass die Transformationen direkt am zu transformierenden Objekt gesetzt werden können, etwa so:

    ModelVisual3D model = new ModelVisual3D();
    ... // Fülle model
    var rotate = new RotateTransform3D (new AxisAngleRotation3D(new Vector3D(1,0,0),10));
    model.Transform = rotate;
    

    die dann am Objekt auch als State erhalten bleiben.

    Da ich noch nicht wirklich den Überblick über alle möglichen Alternativen habe, frage ich an dieser Stelle mal naiv nach, welches denn die beste Möglichkeit darstellt, um Objekte zu transformieren:

    (i) Ändere für jede Benutzereingabe die am Objekt gespeicherte Transformation entsprechend der Benutzereingabe? (schien mir etwas zu kompliziert)
    (ii) Benutze das Animationssystem?
    (iii) andere Möglichkeit... ? 😃


Anmelden zum Antworten