orbitcontrols.js:如何放大/缩小

时间:2016-12-17 12:34:06

标签: javascript three.js

使用orbitcontrols.js(使用THREE.js),我希望在代码中实现与旋转鼠标滚轮相同的效果。例如,我想调用camera.zoomIn()之类的东西,让它向目标移动一定距离。有谁知道怎么做?

2 个答案:

答案 0 :(得分:2)

通过查看源代码,您可以在.dollyIn(dollyScale)对象上调用.dollyOut(dollyScale)OrbitalControls

编辑:这些不是公共方法;可以通过编辑OrbitalControls.js来访问它们。

我已将this.dIn = dollyIn;添加到THREE.OrbitControls功能,现在我可以通过从外部拨打controls.dIn(1.05); controls.update();来放大。

答案 1 :(得分:1)

至少在简单的情况下,您可以更改摄像机的位置(例如,将xyz乘以一个系数),自动更新OrbitControls

带有<input type="range">滑块的示例:

zoomer.addEventListener('input', function(e) {
    var zoomDistance = Number(zoomer.value),
        currDistance = camera.position.length(),
        factor = zoomDistance/currDistance;

    camera.position.x *= factor;
    camera.position.y *= factor;
    camera.position.z *= factor;
});

https://codepen.io/Sphinxxxx/pen/yPZQMV