我在three.js中實現了一個模型查看器,其中兩個場景是疊加的。主場景中的對象使用TrackballControls進行控制。疊加場景中的對象使用不受任何控制類別控制的單獨相機進行投影。我這樣做是爲了允許主場景中的對象縮放,旋轉和平移覆蓋場景中的對象以模擬旋轉(通過重繪對象,因爲應該顯示與xy軸平行的平面以外的任何內容)。我連續渲染了這兩個場景,如下所示:在兩個場景中使用TrackballControls
this.renderer.render(this.scene, this.camera);
this.renderer.clear(false, true, false);
this.renderer.render(this.overlayScene, this.overlayCamera);
大多數情況下工作正常。我遇到的問題是,當我重繪覆蓋場景中的對象時,它與主場景中的旋轉不同步。我試圖在覆蓋場景中使用TrackballControls,但這似乎使得重繪對象變得更加困難。有沒有比使用兩個場景來實現相同目標更好的方法?如果使用兩個場景是最好的方法,我怎樣才能保持兩個場景同步?
如果我明白你的問題是正確的,我曾經有同樣的問題。我用兩個場景解決了這個問題,但是對於第二個場景,攝像機是靜態的,並且與主場景攝像機處於相同的起始位置。現在,如果控制對象的(凸輪)旋轉等於疊加場景凸輪旋轉,則通過您使用的任何控制移動主場景中的凸輪,請檢查疊加場景。如果沒有,我用newMat4.extractRotation()來獲取mainCam的旋轉矩陣,然後轉置這個旋轉矩陣。然後我使用obj.setFromRotationMatrix在我想以INVERSE方式旋轉的對象上。 – GuyGood