2016-12-17 20 views
1

orbitcontrols.js(THREE.jsを使用)を使用して、マウスホイールを回転させるのと同じ効果をコードで達成したい。例えば、camera.zoomIn()のようなものを呼び出して、目標に向かって設定された距離を移動させたいとします。誰でもこれを行う方法を知っていますか?orbitcontrols.js:ズームイン/ズームアウトする方法

答えて

2

OrbitalControlsオブジェクトで.dollyIn(dollyScale).dollyOut(dollyScale)と呼ぶことができます。

編集:これらはパブリックメソッドではありません。 1つはOrbitalControls.jsを編集することによってそれらにアクセスできます。

THREE.OrbitControlsの機能にthis.dIn = dollyIn;を追加しました。外からcontrols.dIn(1.05); controls.update();を呼び出してズームインできます。

+0

おかげでクリス、あなたはこの するvarコントロール=新しいTHREE.OrbitControls(カメラ、renderer.domElement)を意味; このようなものが後に続く controls.dollyIn(.5); ?私はオブジェクトがプロパティまたはメソッドのエラーをサポートしていない取得します。 OrbitControlsオブジェクトのメンバーではないため、dollyInへの直接呼び出しを含むすべての組み合わせを試しましたが、常に同じ結果が得られます。 –

+0

あなたは正しいです。私は方法を見つけ、私の答えを編集しました。 –

+0

これはChrisさん、うまく動作します! –

0

は、少なくとも単純な場合のために、あなたは自動的OrbitControlsを更新カメラ(例えば因子によってxyzを乗算)の位置を変更することができます。 <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

関連する問題