Quaternion rotation
-
Hello friends,
I'm trying to work with the Quaternion-Object.
My cam-Object should align to the direction vector and pointed in this case in X-Direction.
But if print the q.v value I get a zero vector and the rotation is not applied
Does I misunderstood the Quaternion-Syntax? I can't find nothing about that.
–
Thanksimport c4d cam = op.GetObject() def main(): direction = c4d.Vector(10,0,0).GetNormalized() angle = 0 q = c4d.Quaternion() q.SetAxis(direction, angle) b = q.GetMatrix() b.off = cam.GetAbsPos() cam.SetMg(b) print q.v
-
Hi Tudor,
actually your code is properly behaving, since the angle is set to 0. If, by chance, you set it to PI/2 you will immediately see that the camera promptly rotates and point up to the sky.
Hope the screenshot clarifies the situation
Best, Riccardo
-
I thought I can use this direction vector as Quaternion-Axis. The cam should point than to the target.
But but it seems i need a different approach.import c4d, math cam = op.GetObject() target = op[c4d.ID_USERDATA,1] def main(): tarPos = target.GetAbsPos() camPos = cam.GetAbsPos() direction = (tarPos - camPos).GetNormalized() angle = math.pi/2 #? q = c4d.Quaternion() q.SetAxis(direction, angle) b = q.GetMatrix() b.off = cam.GetAbsPos() cam.SetMg(b)
-
Hi Tudor, that's indeed not the way to proceed.
Quaternion is just a tool to conveniently represent a rotation in the space. That said the approach you need to follow is just to rotate the camera until it points where your target is.
Cheers, Riccardo
-
Hi,
please, do not delete discussions threads. The contained information might be valuable for future readers.
Cheers,
Andreas