我对TrackballControls有问题。它不起作用,完全不知道为什么。我在这个示例中这样做:link for example。我一直在寻找解决方案,但仍然不知道自己在做什么错。我在代码中缺少什么吗?
模拟:link for my sim
当我在寻找解决方案时,我有2 TrackballControls.js coz,有人写过,在她的案例中,它有助于添加脚本,例如url,而不是本地文件: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();}
在加载器中调用下一个函数animate:
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();
}
最佳答案
美好的一天,看来您在加载时仅一次调用了animate函数。您需要进行初始化,然后使用带有requestAnimationFrame垫片的动画函数,如下所示:
function animate() {
requestAnimationFrame( animate );
controls.update();
render();
}
那至少应该让你动起来。这样可以确保控件的每一帧都得到更新(即,鼠标移动将转换为相机的位置/旋转),然后使用新的相关信息重新渲染场景。仅供引用,您还需要编写一个渲染函数,至少要这样做:
function render() {
renderer.render(scene, camera);
}
关于javascript - three.js中的TrackballControls,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18347256/