1

だから私はオービットコントロールが機能していますが、ページに3つのオブジェクトがあります。1 つを制御すると、すべてを制御します。また、パン/ズームは OrthographicCamera ではまったく機能しません。

OrbitControls の各インスタンスに独自の変数を割り当てているため、すべてのインスタンスでグローバルではありません。

controlsObjOne = new THREE.OrbitControls(cameraObjOne);
controlsObjOne.addEventListener('change', renderObjOne);

他のモデルには ObjTwo、Three などを使用します。オービットを除いて、すべてがこのように機能します (カメラ、ライト、レンダリングなど)。このライブラリで可能ですか、または複数のオブジェクトで動作する、私が見たことのない別のライブラリがありますか?

4

1 に答える 1

3

これは、デフォルトで、OrbitControlseventListenersがマウス/タッチ入力用の をドキュメントにアタッチするためです。domElement2 番目のパラメーターとして aを渡すことができます。次に、すべてeventListenersがその要素にバインドされます (たとえば、レンダラー canvas domElement)。mousemoveただし、マウスがキャンバス領域にある場合にのみ登録されるため、ナビゲーションの可能性が大幅に制限されます。

あなたが望むのは、マウスが押されたらマウスを自由に動かすためmousedownのレンダラーキャンバスとドキュメント上の eventListenersです。mousemove

キャンバス要素を引き渡すための 3 番目のパラメーターを使用して、修正版を作成しました: https://gist.github.com/mrflix/8351020

于 2014-01-10T12:23:51.800 に答える