[英]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.