Я добавил зум затухания в three.js r73
OrbitControls
, посмотреть демо:
http://jsfiddle.net/L0rdzbej/149/
Использование только как элементы управления орбиты по умолчанию, вы можете играть с этими настройками, чтобы настроить его:
controls.constraint.smoothZoom = true;
controls.constraint.zoomDampingFactor = 0.2;
controls.constraint.smoothZoomSpeed = 5.0;
недостаток: работает только для колесика мыши, а не коснитесь зум или средней мыши. Я предполагаю, что это может быть расширено, но до сих пор мне было все равно. Я открыт для предложений.
Мое решение основано на этом факте из paulkaplan от 2013 года: https://gist.github.com/paulkaplan/5770247. Излишне говорить, что три .js и Orbit Controls сильно изменились с тех пор. Я был бы признателен, если кто-то бывший автор хотел бы добавить эту функцию официально, но иногда это занимает довольно много времени ;-)
Чтобы дать вам краткий обзор я модифицированный следующее:
В OrbitContraint()
:
Пучок переменных, необходимых для масштабирования,
добавлена функция: this.smoothZoomUpdate = function() { /* ... */ };
и призыв к ней внутри OrbitConstraint.update()
функции:
Также внутри THREE.OrbitControls()
модифицированной функции onMouseWheel() { /* ... */ }
испытаны ли вы его? Это должно быть быстрее, чем писать вопрос о SO :) – Atrahasis
Конечно, я протестировал его. Кажется, не работает. –
Да, я имею в виду, что код еще не реализует его, но может скоро наступить. Вы можете проверить, как это делает TrackballControls. – Atrahasis