2

TrackballControls に問題があります。それは機能せず、完全に理由がわかりません。私はこの例のようにこれをやっています: link for example . 私は解決策を探していましたが、それでも何が間違っているのかわかりません。コードに何か不足していますか?

シミュレーション:シムのリンク

私は2つのTrackballControls.js cozを持っています.1人が書いた解決策を探していたとき、彼女の場合、ローカルファイルではなく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();
}
4

1 に答える 1

12

こんにちは、ロード時に animate 関数を 1 回だけ呼び出しているようです。init を実行してから、次のように requestAnimationFrame shim を使用してアニメーション関数を作成する必要があります。

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

それは少なくともあなたを動かすはずです。これにより、すべてのフレームでコントロールが更新され (つまり、マウスの動きがカメラの位置/回転に変換されます)、新しい関連情報でシーンが再レンダリングされます。参考までに、少なくともこれを行うレンダリング関数を記述する必要もあります。

function render() {
    renderer.render(scene, camera);
}
于 2013-08-21T16:28:04.427 に答える