【发布时间】:2017-08-29 11:13:28
【问题描述】:
我将这个示例用于我的 WebGL 全景立方体: https://threejs.org/examples/?q=pano#webgl_panorama_equirectangular
我想在限制范围内放大和缩小,即设置最大和最小缩放级别,但不是像代码默认提供的那样无限。对于无限缩放,如果滚动太多,稍后会反转视图,上面示例中的函数如下所示:
function onDocumentMouseWheel( event ) {
camera.fov += event.deltaY * 0.05;
camera.updateProjectionMatrix();
}
为了解决我尝试在允许范围内更新 FOV 的问题:
function onDocumentMouseWheel( event ) {
var fovMAX = 95;
var fovMIN = 5;
var newFov = camera.fov + event.deltaY * 0.05;
if (newFov > fovMIN && newFov < fovMAX) {
camera.fov = newFov;
camera.updateProjectionMatrix();
};
}
请注意我的 FOV 是 90:
camera = new THREE.PerspectiveCamera( 90, window.innerWidth / window.innerHeight), 0.1, 100 );
这似乎对于最大放大级别非常有效 - 当 FOV 为 5 时它会停止并且不会进一步放大。但是,当我缩小到 FOV 95 时,它会停止,但如果我继续用鼠标进一步缩小,我会再次无限放大,即使 FOV 仍然是 95。
如何停止/控制无限缩小?
【问题讨论】:
-
你使用的是轨道控制器还是类似的东西?
-
是的 OrbitController 我正在使用
-
这可能会覆盖您的价值观。您可以禁用它并仅测试您的缩放逻辑吗?
标签: javascript three.js webgl