gpt4 book ai didi

javascript - three.js 中的轨迹球控件

转载 作者:行者123 更新时间:2023-12-01 16:15:58 25 4
gpt4 key购买 nike

我对 TrackballControls 有疑问。它不起作用,我完全不知道为什么。我在这个例子中这样做:link for example .我一直在寻找解决方案,但我仍然不知道自己做错了什么。我的代码中是否遗漏了什么?

模拟:link for my sim

我有 2 个 TrackballControls.js,因为当我在寻找解决方案时,有人写过,在她的案例中,帮助添加了类似 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 );`

函数 animate 的下一次更新:

函数动画(){
控制.更新();
}

下一个函数 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();
}

最佳答案

美好的一天,您似乎只在加载时调用了一次动画函数。你需要做你的初始化,然后有一个带有 requestAnimationFrame shim 的动画函数,如下所示:

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

这至少应该让你动起来。这将确保您的控件的每一帧都得到更新(即鼠标移动将转换为相机位置/旋转),然后您将使用新的相关信息重新渲染场景。仅供引用,您还需要编写一个渲染函数,至少要这样做:

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

关于javascript - three.js 中的轨迹球控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18347256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com