I have the Cylinder orientation given by the object surface normal vector in terms of 3D vector Vx;Vy;Vz. and I want to convert it to Quaternion rotation.
So I can represent the orientation of the Cylinder in unity 3d.
Suppose we have the angles of rotation with respect to the camera (given by direction cosine):
Vx;Vy;Vz= <60;54;49> degrees.
How it possible to convert this angles from direction cosine to Quaternion rotation?
I’m fuzzy about what you are looking for here. Say you have a cylinder that is on a surface and parallel to a normal and you move that cylinder to a now position on the surface so you want align with the new normal, you can do:
Backing off to what you ask for specifically, you need a reference vector. You need to define what represents zero rotation for that vector. So if you are talking about a terrain in which flat is Vector3.up, you can get the rotation:
var q = Quaternion.FromToRotation(Vector3.up, hit.normal);
‘hit.normal’ is the normal of the surface. Typically it is acquired from casting a ray.