0

私は THREE.RollControls を使用するプログラムに取り組んでいます。ユーザーが画面の中心から離れすぎると、迷子になる傾向があるため、画面の中心に面して向きを変える機能の作成に取り組んでいます。シーン。

私がやろうとしていたことは、単に次のように呼び出すことでした:

camera.lookAt(scene.position)

ただし、影響はありません。私がさまざまなスタックオーバーフローの質問で読んでいたものから、具体的には次 のとおりです。ThreeJS camera.lookAt() は効果がありません。何か間違っていますか?

彼らの解決策は、カメラ自体を変更するのではなく、コントロールを使用してカメラの位置を変更することだったようです。

ロール コントロールに「ターゲット」があるとは思わないので、THREE.Vector3() に基づいてカメラが見ている場所をリセットする方法がわかりません。これを行う簡単な方法はありますか?私は基本的にしなければなりません:

これまでのところ、次のことを「試みました」: - カメラの位置とシーンの位置の差を計算します。- このベクトルを正規化します - カメラの前方方向からそれを引きます - このベクトルを controls.forward.add(thisVector) で使用します

しかし、これは私が望むことをまったく行いません(おそらく、自分が何をしているのかわからないためです)

お時間をいただきありがとうございます。

アイザック

4

1 に答える 1

1

同じことが RollControls についても私を悩ませましたが、問題を解決するために別のアプローチを取りました。コントロールはサンプル コード (r55) に含まれているため、コア ライブラリの一部ではないため、コントロールを変更できます。私の変更はhttp://www.virtuality.gr/AGG/EaZD-WebGL/js/three.js/examples/js/controls/RollControls.jsで確認 できます。 this.mouseLook。false に初期化して、ボタンが押されたとき、つまりシーン内を移動するときだけ true にします。それは私の問題を解決しました。

于 2013-02-13T22:51:48.613 に答える