Ich mache eine Anwendung in WPF. Ich benutze eine Menge die 3DTools . Ich habe ein Tetraeder und darin einen Würfel. Ich möchte den Würfel in 3D-Richtungen bewegen.
Mein Tetraeder, zentriert in (0,0,0), dreht sich mit einem Trackball (programmatisch habe ich einen transparenten Rahmen über meinem Ansichtsfenster, um die Ereignisse zu erfassen).
Die Benutzer der Anwendung sind der Meinung, dass es natürlicher ist, den Würfel immer in einer 2D-Ebene (parallel zum Bildschirm) zu bewegen. Wenn ich ihn also tiefer in den Bildschirm hineinbewegen möchte, drehe ich den Tetraeder einfach und bewege ihn z. B. in der Y-Achse. Ich denke, das kann eine gute Lösung sein.
Ich habe zwei Probleme, und ich möchte Hilfe, um dann zu lösen: erstens, wenn ich meine Tetraeder (innerhalb der Trackball) der Trackball sieht aus wie bewegen alle Systemkoordinaten. Ich sage das, weil ich Achsen für Debug-Zwecke zeichne, und diese Achsen werden auch gedreht. Aber das ist nicht wahr - sie bewegen sich nur, weil sie Objekte innerhalb des Trackballs sind (richtig?). EDIT Ich glaube, das Koordinatensystem im Trackball ändert sich wirklich. Wenn ich den Würfel in der Y-X-Achse bewege, verhält er sich gut. Aber wenn ich ein wenig drehen, und versuchen, in der Z-Achse zu bewegen, sehe ich es immer größer (näher an der Kamera) und kleiner (weit von der Kamera). =(
Meine Fragen lauten also Wie kann man eine Ebene definieren, die nicht durch den Trackball gedreht werden kann? Für mich sieht die Antwort in etwa so aus: "Ok, definiere es einfach außerhalb des Trackballs", aber wie ich schon sagte (und die 3DTools-Dokumentation sagt), habe ich einen Rand über meinem Viewport... Ich weiß also nicht, wie ich das handhaben soll.
Mein Tetraedron in einer Reihe von ScreenSpaceLines3D. Ich werde den Würfel darin behalten müssen. Meine zweite Frage ist Wie kann ich die Positionen der Scheitelpunkte des Tetraeders verfolgen, wenn er gedreht wird? ? Ich war sehr enttäuscht, als die Eigenschaft Position mir die ursprünglichen Positionen anzeigte und sonst nichts. Sollte ich die Matrixtransformationen beibehalten und dann auf meine Punkte anwenden, wenn ich sie brauche?
Entschuldigung für den langen Text, aber ich steckte wirklich in diesem nicht so sehr Programmierung Fragen. Ich bin in WPF bekannt, ich habe noch einige Mängel der Konzepte.
Vielen Dank im Voraus,
Pedro