35

Three.js では、カメラを 3D 空間のある点に向けたいと思います。

この目的のために、次のcamera.lookAtように関数を使用してみました。

camera.lookAt(new THREE.Vector3(-100,-100,0));

しかし、呼び出しはまったく効果がないことがわかりました。それはまったく何もしません。ベクター内の数値を変更してみましたが、変更する必要があるときに常に画面に同じ外観が表示されます。

THREE.TrackballControlsコードにあるを削除すると、正常に動作することがわかりましたcamera.lookAt()。THREE.TrackballControls の使用方法に何か問題がありますか? これは私がそれらを初期化する方法です:

    controls = new THREE.TrackballControls( camera, renderer.domElement );

    controls.rotateSpeed = 10.0;
    controls.zoomSpeed = 1.2;
    controls.panSpeed = 0.2;

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

    controls.staticMoving = true;
    controls.dynamicDampingFactor = 1.0;

    var radius = 5;
    controls.minDistance = radius * 1.1;
    controls.maxDistance = radius * 100;

    controls.keys = [ 65, 83, 68 ]; // [ rotateKey, zoomKey, panKey ]*/

そして、レンダリング関数で次のことを行います。

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

Three.js に関するドキュメントはかなり少ないので、ここで質問したいと思います。私は何か間違ったことをしていますか?

4

6 に答える 6

54

のソース コードを見て、I want it to look at にTHREE.TrackballControls設定し、シーンを再レンダリングすることで、カメラを好きな場所に向けることができることがわかりました。trackballControls.targetTHREE.Vector3

于 2012-04-26T16:33:05.323 に答える
2

私はそれを考え出した。初期化時にオーバーライドを防止THREE.TrackballControlsまたはTHREE.OrbitControlsオーバーライドするには、現在 a を使用して実装されている方法(デフォルトは) ではなく、コントロールのプロパティをベクターとベクターの合計に等しくなるようにcamera.lookAt設定する行を変更する必要があります。targetcamera.positioncamera.getWorldDirection()new THREE.Vector3()(0, 0, 0)

の場合THREE.TrackballControls、39 行目を次のように変更します。

this.target = new THREE.Vector3().addVectors(/*new line for readability*/
    object.position, object.getWorldDirection());

36THREE.OrbitControls行目も同様です。実際にはテストしていませんTrackballControls.jsが、動作しOrbitControls.jsます。お役に立てれば。

于 2014-10-27T21:43:04.163 に答える
1

別の解決策は次のとおりです。次元が 0 のオブジェクト (つまり立方体) を作成します。

var cameraTarget = new THREE.Mesh( new THREE.CubeGeometry(0,0,0));

render 関数で、camera.lookAt を cameraTarget の位置に設定します。

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

次に、cameraTarget を好きなように動かします。

于 2016-01-12T15:24:41.967 に答える