I've read a lot about these 2 controls and currently I'm using TrackballControls.
I need to rotate an object along all three axis (Both controls already do that), but I also need to set sometimes a new camera position/rotation by hand. And this doesn't really work.
My workaround is to disable the trackballcontrols, get the quaternions-object of the new position, apply these to camera.up and then enable the camera
But as mentioned, this doesn't really work stable.
I read that OrbitControls could be a better solution for such a task. But OrbitControls has a "limit" on vertical rotation of objects and I need to rotate my objects without limits.
So my questions are:
1. Which Controls System is more suitable for my task
2. If it's Trackball - how would you set manually a new camera position and rotation? And if it's Orbit - is there a way to disable this vertical rotation limit?
Thanks a lot!!
Regards - Misa
First of all, TrackballControls and OrbitControls rotate the camera, not the objects.
Second, OrbitControls enforces the camera up direction, and TrackballControls allows the camera to rotate upside-down.
TrackballControls has a reset() method, which restores the target (center of rotation), camera position, and camera up vector to their original settings.
controls.reset();
The above code will restore the original position, target, and up vector. You can change those too, if you want, before you call controls.reset().
controls.position0.set( 0, 0, 10 ); // set a new desired position
controls.target0.set( 0, 0, 0 ); // set a new target
controls.up0.set( 0, 1, 0 ); // set a new up vector
controls.reset();
Read the reset() function source code so you understand what it is doing.
EDIT: OrbitControls now has a reset() method, too. Check the source code.
three.js r.82
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With