Re: [max-msp] faking jit.gl.handle autorotate

Thijs Koerselman's icon

Coming back on this old post I never got a reply to...Not that I've spent a
whole year on this but I still can't figure it out:-)

If you use the mouse input to autorotate a jit.gl.handle all axis are
rotating most of the time. How is this calculated? I can't get my head
around it. I guess the mouse input generates a vector that is used to
compute the rotation and speed on every axis, but how?

I'd like to store/recall the vector and speed to compute the rotate or
rotatexyz parameters without using jit.gl.handle and without actual mouse
input. Can someone with better math skills help me out please?

-thijs

Wesley Smith's icon

Hi Thijs,
Try this patch out. It's really basic, but a start. The next
modification I would make would be to add the ability to change
rotation speed on the fly and not just at the end of a revolution as
it now stands.

best,
wes

Max Patch
Copy patch and select New From Clipboard in Max.

Thijs Koerselman's icon

Hi Wes, from what I understand your approach is similar to the one I use
right now (rotating one axis - the other 2 fixed offsets - moving the camera
around).
The problem is that using the mouse input on a handle, there are 3 axis
involved in the rotation. Your patch doesn't explain to me how to generate a
rotation like that. (without moving around the camera/scene)

I think this is more obvious looking at a plane then a torus. Forgive me if
I'm being stupid, but I don't know how I can explain myself otherwise.

best, -thijs

randall jones's icon

HI Thijs,

I'm not sure if the Jitter3DUtils or even JavaScript support was
available when you first asked your question. But now the answer is
simple: use the quaternion rotation code from the Jitter3dUtils.
Keep track of your rotation as a quaternion, accumulating it with
add_quats. Use quat_to_axis to convert into axis/angle format.
Plenty of intro-to-quaternions stuff from the gave development world
should be available through Google.

best
Randy

Wesley Smith's icon

The JS3dutils xyz_to_quat is a good place to look for what Randy is
talking about. In the previous patch, you can add more rotation by
the following:

Max Patch
Copy patch and select New From Clipboard in Max.

Joshua Kit Clayton's icon

Hey Thijs,

I'd suggest looking at both the Jitter3DUtils.js (c74:/js-extensions)
and the topic on joyrotate/nudgexyz which has some of these things
duplicated, but provides a nudgexyz method.

We could add this in a future version of Jitter3DUtils.js

-Joshua

Thijs Koerselman's icon

Thanks guys! that's exactly what I need. Last time I looked at Jitter3DUtils
I didn't understand anything so I couldn't remember whats in it either.
Quaternions is still a bit blurry but I'm getting there. The nudgexyz code
will definitely get me going. Thanks again.

Best, -thijs

Thijs Koerselman's icon

In case someone else cares to learn about quaternion rotations... I found
this really clear and helpful

-thijs