Hi!
I’m trying to implement the Transform.LookAt function that can be found here: Unity - Scripting API: Transform.LookAt
This function calculates Yaw, Pitch and Roll and updates the rotation of the object.
Example(Update position and rotation of the sun):
sun.localPosition = Vector3(?, ?, ?);
sun.LookAt(targetPos, upVector) //this should be the same as glm::lookAt(sunPos, targetPos, upVector) I think?
I found another guy who tried to implement the whole Transform class: opengl - Build unity like Transform class - Game Development Stack Exchange
And I found his implementation of LookAt:
void Transform::LookAt(glm::vec3 targetPosition)
{
if((targetPosition - m_Position) == glm::vec3(0,0,0)) return;
glm::vec3 direction = glm::normalize(targetPosition - m_Position);
m_Rotation.x = asinf(-direction.y)* RadToDeg;
m_Rotation.y = -atan2f(-direction.x, -direction.z)*RadToDeg;
NormalizeAngles();
m_NeedUpdate = true;
}
But “m_Rotation” does only contain Pitch and Yaw, not Roll. How did they(Unity) calculate Roll?
Thanks in advance.