Irgendwann in meiner Zeit bei e-on habe ich die Gizmos der Vue- Produktlinie beibehalten .
Ich kann Ihnen sagen, es wird mehrere Tage dauern, Vollzeit.
Wenn Sie keine Bibliothek oder einen super cleveren Weg finden, besteht der klassische Weg darin, die Koordinate der Maus im Fenster abzurufen, wenn Sie darauf klicken. Wenn es sich um eine relative Koordinate zum Ansichtsfenster handelt, können Sie x und y einfach durch Breite und Höhe teilen Holen Sie sich einen Vektor (float 2d) im Bereich [0,1]. subtrahieren (0,5,0,5) davon, um sowohl für x als auch für y in den Bereich [-0,5, 0,5] zu gelangen.
Dann machen Sie einen Strahl aus dieser Koordinate, indem Sie x und y einfach als Strahl x und y verwenden, und Sie setzen z auf die Brennweite. Manchmal ist das Seitenverhältnis bei dieser Operation ein Schmerz im Arsch. Ein bisschen Fummeln und Versuchsfehler werden Sie reparieren.
Dann müssen Sie den Schnittpunkt mit Ihren Gizmos-Elementen überprüfen. Entweder haben Sie ein Netz, das Sie generiert oder in einem Mixer oder einem anderen DCC modelliert haben, oder Netzteile, die sich gegenseitig artikulieren können. Verwenden Sie diese Netzteile einfach als Strahl / Dreieckskreuzungsabfrage.
Oder wenn Sie es haben, Strahl / Zylinder, Strahl / Kugel entsprechend Ihrem Gizmo Aussehen und Teilen.
Sie benötigen Schnittroutinen, die in der Lage sind, eine Transformationsmatrix auf das Primitiv anzuwenden, mit dem sie kollidieren . Sehr wichtig, da Ihr Gizmo mit dem Objekt, das es bewegt, übersetzt wird, sich dreht und mit der Umkehrung des Abstands zur Kamera skaliert, sodass eine feste projizierte Größe auf dem Bildschirm erhalten bleibt.
Dann haben Sie den Interaktionsteil. Am einfachsten ist es, das Delta des Punktes zu nehmen, an dem die Maus zum ersten Mal "Maus nach unten" war, und die aktuelle Position "Mausbewegung" in reinem 2D, und dieses Delta als aktuelle Achsenbewegung zu verwenden im Weltraum, multipliziert mit einigen k
, die Sie empirisch entscheiden. Entsprechend Ihren internen Einheiten im Vergleich zum Pixel im Vergleich zum aktuellen
Zoommaßstab usw. Der letzte Schritt besteht einfach darin, die Matrix des Gizmos auf das manipulierte Objekt anzuwenden, damit es diesem folgt.
Ich sage Ihnen, es ist eine ziemliche Reise in die Hölle, um sie umzusetzen, und wenn Sie dies in Ihrer Freizeit tun, rechnen Sie mit mehr als einer Woche. Mehrere Wochen, wenn Sie das Feld vollständig entdecken. Mehr als einen Monat, wenn Ihre Wochenenden mit anderen Aktivitäten beschäftigt sind :)
Ich schlage vor, dass Sie Embree 2.0 von Intel herunterladen, um die Abfrage für die Kreuzung von Strahlen und Dreiecken für Sie durchzuführen, damit Sie sich nicht darum kümmern müssen, dies zu codieren. Oder Sie könnten Code aus dem Mixer gnadenlos kopieren / einfügen und anpassen ... Ich denke, sie sind auf die Apache-Lizenz umgezogen? Sollte legal möglich sein.