Du hast doch von deiner Mouse die 2D Koordinaten. Allerdings sind diese ja immer von 0 bis n. Also must du diese erst einmal Transformieren. Das geht recht einfach mit den beiden Formeln
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
inline float XCoord(const unsigned long x,
const unsigned long size)
{
return (float)(x / (size * 0.5f) - 1.0f);
}
inline float YCoord(const unsigned long y,
const unsigned long size)
{
return -(float)(y / (size * 0.5f) - 1.0f);
}
|
size gibt dabei immer die Ausdehnung an. Also z.B. 640 oder 480. Diest eine sehr einfach Lösung. Um einen gültigen 3D Vektor zu erhalten must du nur noch die Z Koordinate deines Modells nehmen.
ACHTUNG: Diese Methode ist nur gültig wenn man nur mit 2D Arbeitet. Also D3D für 2D Darstellung verwendet.
Ansonsten must du die Mouse Koordinaten anders umrechnen. Dafür gibt es dann eine Funktion in der TriBase Engine. Weis aber jetzt nicht wie die heißt.
Wenn du die Koordinaten hast, ist das Drehen kein Problem mehr. Ich nehme an das du einen Richtungsvektor hast, der angibt in welche Richtung dein Modell grad schaut. Du errechnest den Winkel zwischen diesem Richtungsvektor und dem Vektor der Mauskoordinaten. Und dann brauchst du nur noch das Modell mit einer Linearen Intepolation Rotieren lassen mit einer Normalen Rotationsmatrix.
EDIT:
Das war noch viel zu kompliziert gedacht. Noch einfacher. Normalisiere einfach den Vektor deiner Mauskoordinaten und führe eine Lineare Interoplation zwischen dem Aktuellen Richtungsvektor und dem Normalisierten Vektor der Mauskoordinaten durch.