- Global:
- float PunktTiefe;
- Vector3D VorigePosition;
- Objekt Obj;
- void OnMouseClick( float X, float Y )
- {
- // Tiefe herausfinden wie im gluUnProject-Wiki-Artikel
- // Objekt "Obj" auf das geklickt wurde herausfinden und speichern.
- Vector3D VorigePosition = Ergebnis von gluUnProject( X, Y, tiefe, ... );
- PunktTiefe = tiefe; // also die tiefe des (2D-) Punktes speichern.
- }
- void OnMouseMove( float X, float Y )
- {
- Vector3D NeuePosition = Ergebnis von gluUnProject( X, Y, PunktTiefe, ... );
- Vector3D Offset = NeuePosition - VorigePosition;
- Obj.Move( Offset ); // Move hier weil translate die Rotation des Objektes mit einbezieht. Hier solltest du nur die Position (die 4. Spalte der Matrix) ändern unabhängig von der Rotation.
- VorigePosition = NeuePosition;
- }