2015-02-10 35 views
0

我的問題在github-- https://github.com/mrdoob/three.js/issues/6043#issuecomment-73478885 我知道TrackballControls.js用於控制攝像頭,而不是模型。 但我想用這個TrackballControls.js.當我控制模型的旋轉模型,我可以平移,縮放,旋轉。當我旋轉模型時,我不會感覺旋轉相機,但似乎旋轉模型本身。我需要一個鼠標事件。版本70關於TrackballControls.js輪轉

方法:

controls.target = model.position; 
or controls.target.copy(model.position) 

他們沒有使用;

+0

也許http://threejs.org/examples/misc_controls_transform.html會有所幫助。 – WestLangley 2015-02-10 08:39:44

+0

感謝您的回答,但是我想要的效果就像http://www.lao3d.com/model.html?modelid=14743,你可以看到它,操作模型,平移,旋轉,縮放;旋轉後翻譯,你可以找到,它是不同的TrackballControls.js.Thank你再次 – sjavacat 2015-02-10 09:23:44

+0

我看到。你將不得不編寫你自己的ObjectController來做到這一點。 – WestLangley 2015-02-10 10:25:59

回答

0

在lao3d.com Viewer中可以看到,您希望旋轉獨立於其平移的世界Y和X軸上的對象。

所以我做了這個小例子http://jsfiddle.net/nk3977jb/1/

考慮到相機可能會旋轉。 因此,使用相機的四元數來創建其當前的向上和向右矢量以獲得向上和向量矢量,然後計算它的叉積。

var view = new THREE.Vector3(0, 0, -1); 
    view.applyQuaternion(camera.quaternion); 
    var cross = new THREE.Vector3(); 
    cross.crossVectors(view, camera.up); 

你能想到的觀點是-Z進入屏幕,+ Y是從哪個朝上的攝像機了矢量旋轉的攝像頭,並具有被交叉的,因此-Z和+ Y指向右側的雙重交叉。

通過這些軸設置,您可以旋轉周圍的物體。