javascript - 使用three.js点击到达某个位置后如何停止相机动画
问题描述
我有一小段代码可以让相机在点击时放大地球模型。到达某个位置后如何停止相机动画。
当您单击球体模型时,将调用渲染函数以启动相机动画循环。相机位置从 20 开始并继续减少。一旦相机位置达到 5,如何停止动画。
https://jsfiddle.net/diviseed/ve9qb2cx/10/
var domEvents = new THREEx.DomEvents(camera, renderer.domElement);
domEvents.addEventListener(earth, 'click', function(event){
console.log('you clicked on the earth');
alert("test");
var render = function (actions) {
renderer.render(scene, camera);
console.log(camera.position.z); // starts at 20 and reduces with every call
camera.position.z -= 0.1;
requestAnimationFrame( render );
};
render();
// cameraloop();
}, false)
现在,相机继续动画而不会停止。一旦相机到达位置 5,我想停止相机。
解决方案
将 controls.minDistance 设置为 4.11(球体半径 + 相机近平面距离 + 一点软糖)(或任何你想要的最小距离)
https://jsfiddle.net/2nbgfkpy/
然后在您移动相机之后,确保调用 controls.update() 以便 OrbitControls 有机会在相机上强制执行其约束。
Stack Overflow is getting really stupid about posting requirements
推荐阅读
- basex - 查询 .evtx 转换为 .xml
- amazon-web-services - WS - 从 worker_groups 获取实例 ID
- c++ - 在 .dll 中使用 typedef void*
- powershell - New-ADFineGrainedPasswordPolicy : 服务器不愿意处理请求
- r - r data.table 日期之间的最小值,不包括 NA
- python - 关于 Python 中的按位或运算的困惑
- wordpress - 仅在产品类别过滤器中显示与主要类别相关的类别,而不是在 woocommerce 中显示全部
- reactjs - 页面加载不到一秒钟(带有“正在加载...”),整个页面消失
- docker - curl 在 docker 容器中不起作用
- nginx - 重定向后需要配置nginx保留url参数