Object aus der Sicht einer Kamera platzieren
-
Ich möchte ein Objekt in einem 3d Raum platzieren. Das Objekt soll aus der Sicht der Kamera platziert werden. z.B. Vector3(-1, 1, 30) -> das Objekt ist in der Ecke und 30 von der Kamera entfernt. Wie kann ich das machen?? Ich hattedie Idee vieleicht die Position durch die view und projection Matrix zu teilen ( pos / (view * proj)), eine andere Idee wäre ( die ich völlig hirnrissig finde) die Position zu der Position der Kamera zu addieren und über das richtungs Quarternion zu drehen dann das ganze mal der projectionsmartix zu nehmen: ( worldpos = ((screenpos * kamera_quaternion) + kamera_pos) * projMatrix)
-
postion der camera + inverseviewmatrix*(0,0,1,0)*gewünschteentfernung;
so dürfte es gehen, wobei du bei oGL dann 0,0,-1,0 nehmen müßtest.
rapso->greets();
-
Also: ich möchte die Datentypen einmal wissen:
Vector3 KameraPosition + Matrix4 inverseviewmatrix* Quarternion(0,0,1,0)* float Entfernung
aber wo finde ich die Position auf dem Bildschirm?? ich möchte eine Funktion haben:
Vector3 getWorldPosFromCamera(Vector3 pos);
der Rückgabewert soll die Weltkoordinaten sein.
Der x und y - Wert soll die Position auf dem Bildschirm aufnehmen. ( -1 <= x <= 1 und -1 <= y <= 1) bei 1 oder -1 ist das Objekt ganz in der Ecke. der z - Wert gibt die Entfernung an.
Den Code stelle ich mir ungefähr so vor: (Ich programmiere mit OGRE)
Vector3 getWorldPosFromCamera(Vector3 pos)
{
Vector3 CameraPosition = mCamera->getPosition();
Vector3 WorldPosition;
Matrix4 inversedviewMatrix = mCamera->getViewMatrix()->inverse();//hier fehlet noch etwas
WorldPosition = CameraPosition + inversedviewMatrix* Quarternion(0,0,1,0)* pos.zreturn WorldPosition;
}
-
Das lässt sich doch irgendwie lösen, oder?? Wenn sich mein Problem nicht lösen lässt, dann möchte ich wengstens die Datentypen von der Lösung von rapso wissen...
-
So, ich hab jetzt schonmal zwei Vectoren: ein Vector, wo die Camera ist und ein Vector, der in die Richtung zeigt, wo das Object platziert werden soll. Wie kann ich die Entfernung bestimmen?? Ich möchte nachher einen vector haben mit dem ich das Object in dem World platzieren kann.
Sorry für die vielen Doppelposts....