簡體   English   中英

THREE.JS,忽略父母的輪換

[英]THREE.JS, ignore parent's rotation

我試圖使子對象遵循父對象的位置並表現得像普通子對象,但是我希望它保持其旋轉不變。

在不影響性能的情況下執行此操作的最佳方法是什么(我的CPU預算已經緊張,已經運行了2個工作程序並且有很多對象)? 是否有一個設置僅允許影響孩子的位置?

同樣重要的是,當父母旋轉時,孩子的位置應該跟隨該旋轉。

您想防止子對象旋轉時子對象旋轉。

這兩種模式之一可以滿足您的需求。 他們的行為略有不同。

第一種模式:

var gyro = new THREE.Gyroscope();

scene.add( parent );
parent.add( gyro );
gyro.add( child ); // add child to gyroscope

child.position.set( x, y, z );

第二種模式:

object = new THREE.Object3D();
object.position.set( x, y, z ); // child's desired position relative to parent

scene.add( parent );
parent.add( object ); // add object to parent
scene.add( child ); // add child to scene

在第二種情況下,您將必須在渲染循環中手動更新孩子的位置,如下所示:

child.position.setFromMatrixPosition( object.matrixWorld );

three.js r.71

我建議

child.position.copy(object.position);

而不是WestLangley的答案中建議的內容:

child.position.setFromMatrixPosition( object.matrixWorld );

我遇到了后者不准確的問題,導致孩子的位置抖動。

請注意,這僅回答您問題的第一部分,即如何遵循父母的位置,同時保持孩子的旋轉不變。

可能需要澄清您問題的第二部分,因為這對我來說還不是很清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM