2013-08-21 107 views
3

我跟TrackballControls有問題。它不工作,完全我不知道爲什麼。我在這個例子中是這樣做的:link for example。我正在尋找解決方案,但仍然不知道我在做什麼錯。我在代碼中丟失了什麼嗎?three.js中的TrackballControls

模擬:link for my sim

我有2個TrackballControls.js表兄弟姐妹時,我一直在尋找的解決方案一人曾撰文指出,在她的幫助的情況下添加腳本如網址,而不是像本地文件:link

代碼:

controls = new THREE.TrackballControls(camera); 

controls.rotateSpeed = 1.0; 
controls.zoomSpeed = 1.2; 
controls.panSpeed = 0.8; 

controls.noZoom = false; 
controls.noPan = false; 

controls.staticMoving = true; 
controls.dynamicDampingFactor = 0.3; 

controls.keys = [ 65, 83, 68 ]; 

controls.addEventListener('change', render);` 
在功能動畫

下次更新:

function animate() { controls.update(); }

下一頁功能動畫被稱爲裝載機:

loader.load('./models/my_pc/models/my_pc.dae', function (collada) { 

model = collada.scene; 
model.scale.x = model.scale.y = model.scale.z = 0.0125; 
model.position.x = -2; 
model.position.y = 0; 
model.position.z = 2; 
model.rotation.x = -1.570796327; 
model.rotation.y = 0; 
model.rotation.z = 0; 

init(); 
animate(); 
} 
+0

「它不工作」是你可以給你的問題最無用的描述。你可以說得更詳細點嗎? –

+0

看起來像你正在使用修訂58.你有沒有嘗試使用修訂60的最新trackball.js?最近有一些修復程序可以幫助你解決問題。 另外它看起來像你有2個TrackballControl腳本加載在你的代碼?你可以在你正在實現TrackballControls的地方顯示代碼嗎? – GuyGood

+0

我有2 TrackballControls.js因爲當我正在尋找解決方案一個人寫道,在她的案件幫助添加腳本如url,而不是像本地文件:[鏈接](http://stackoverflow.com/questions/14726534/trackball - 控制 - 犯規 - 工作在建造 - - 三新-JS)。 – Beacze

回答

11
日安

,看來你在加載時只調用一次動畫函數。你需要做你的初始化,然後有一個動畫功能與requestAnimationFrame墊片像這樣:

function animate() { 
    requestAnimationFrame(animate);   
    controls.update();  
    render(); 
} 

這至少應該讓你感動。這將確保您的控件正在更新的每一幀(即,鼠標移動將被轉換爲相機位置/旋轉),然後您將使用新的相關信息重新渲染場景。僅供參考,你還需要編寫一個渲染功能,至少這樣做:

function render() { 
    renderer.render(scene, camera); 
} 
+0

謝謝,現在所有的工作都正常了,我的渲染函數是:'renderer.render(scene,camera);' – Beacze