I realized that orbitcontrols autoRotate property is being updated in respect of fps, so on high fpses like 144fps it becomes so fast, i wonder if there is any way to again use delta for useFrame or do i have to create autorotation property from zero and make it related to delta instead of fps…
sorry if my question is unclear or wrongly formatted
The biggest problem with the library controls is that they update inside the animation loop, so even if you have a static scene and don’t move the camera, the animation loop will still render at max fps, which is a waste of resources.
The best solution is to write your own controls, which is not that hard to do, to have maximum flexibility in how it works, I’d say it’s worth investing your time in it.
honestly i was afraid of having to rewrite my code and orbitcontrols, but since i already edited orbitcontrols to add pan limit i guess i just rewrite autoRotate function in useFrame using delta, should work i guess
OrbitControls
does not support framerate independent autorotate yet but there is now an issue GitHub that tracks the addition: OrbitControls are framerate dependent · Issue #26471 · mrdoob/three.js · GitHub
A workaround at app level is to manually compute autoRotateSpeed
via THREE.Clock
:
controls.autoRotateSpeed = 120 * clock.getDelta();
However, it would be nice if the controls support this feature by default.