How to convert from world coordinates to camera coordinates

Question:

In the world coordinate system, there are objects with rotation values rx1,ry1,rz1 and position values px1,py1,pz1.

Similarly, there is an camera in the world coordinate system with rotation values rx2,ry2,rz2 and position values px2,py2,pz2.

What formula can be used to convert rx1,ry1,rz1,px1,py1,pz1 to the camera coordinate system?

The up vector of the camera is the Y-axis, always oriented toward the object near the world origin.

The camera and the model are supposed to move within the range as shown in the following gif image.
enter image description here

I would like to use Python to do the calculations, but I am open to any other answers, including other Unity C# or mathematical statements.

You are welcome to have commentary in quaternions or in matrices instead of euler angles.

Asked By: taichi

||

Answers:

Within Unity c# for the position you can simply use the built-in

var localPosition = camera.transform.InverseTransformPoint(theObject.transform.position);

for the rotation you can use

var localRotation = Quaternion.Inverse(camera.transform.rotation) * theObject.transform.rotation;

This should give you the localPosition and localRotation in the coordinate space of the camera.

Answered By: derHugo
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.