Seeing# in C#-Apps einbinden

wpf-component-testIn den letzten Wochen habe ich mich darauf konzentriert, Möglichkeiten zu schaffen, um Seeing# leichter in C# Apps einbinden zu können – völlig egal ob diese am Desktop oder als Windows Universal App laufen. Ziel ist, dass die Einbindung in allen Fällen möglichst einfach und möglichst ähnlich durchgeführt werden kann. Zu diesem Zweck habe ich die verschiedenen Steuerelemente für WPF und Universal Apps modifiziert, so gibt es jetzt in WPF einen eigenen Xaml-Namespace. Der größere Punkt ist aber eine Einführung eines Komponenten-Systems, mit dem man bereits im Xaml verschiedene Aspekte der 3D-Anzeige zusammenbauen kann. Beispielweise, welche Objekte dargestellt werden sollen und wie die Bedienung der Kamera funktionieren soll.

Ohne viel drum herum zu schreiben sieht das für eine einfache 3D-Anzeige mit Kamera-Steuerung in WPF folgendermaßen aus:

Das Ergebnis ist ein WPF-Fenster mit einem schlichten 3D-Würfel und einer Kamera, die auf Maus- und Tastatur-Eingaben reagiert und entsprechend um den Würfel kreist. Die drei Eigenschaften der Klasse FocusedPointCameraComponent beschreiben, wie weit die Kamera vom 3D-Objekt entfernt sein kann. Der „fokussierte Punkt“ wird nicht gesetzt und ist somit 0, also die Ursprungskoordinate im 3D-Raum.

wpf-component-test

Für Windows Universal Apps sieht das sehr ähnlich aus, nur das man hier die Namensräume nicht ganz so schön anpassen kann, wie in Wpf:

Eine Komponente ist nichts anderes als eine Klasse, die ein paar Methoden implementiert. Die obigen sind bereits im Standard von Seeing# enthalten, können also direkt so verwendet werden. Die Komponente SimpleCenteredCubeComponent beispielsweise ist folgendermaßen umgesetzt:

Die Komponenten für die Kamera-Steuerung sind dagegen schon etwas größer, aber auch nicht wirklich komplex. Das Coding dazu kann man sich direkt auf Github [1] anschauen.

Verweise
[1] = …b.com/RolandKoenig/SeeingSharp/tree/master/SeeingSharp.Multimedia/Components/_Input

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.