1

Object3D を別の Object3D (「追加」メソッド) に追加すると、子は親のものに応じて変換を変更します。

親に追加した後、子の位置/回転/スケールを保持する方法はありますか?

フィドル: https://jsfiddle.net/pqfzd8a2/1/

mesh = new THREE.Mesh(geometry, material);    
mesh.position.y = 25;

var mesh2 = mesh.clone();
mesh2.position.y = 80;

var mesh3 = mesh2.clone();

mesh.rotation.z = Math.PI*0.25;

scene.add(mesh);    
mesh.add(mesh2);
scene.add(mesh3);

何が行われましたか?

  1. メッシュが回転します。
  2. mesh2 と mesh3 は、同じ位置にある互いのクローンです。
  3. mesh2 がメッシュに追加され、mesh3 がシーンに追加されました。

mesh2 と mesh3 の違いは、それらが別の親に追加 (ペアレント化) されていることです (それに応じて、メッシュと直接シーンに)。何かに追加 (親) される前は、それらは同じ位置にありました。要点は、オブジェクトを追加 (ペアレント化) 前の状態に保つことです。

期待される結果: メッシュ 2 とメッシュ 3 は同じ位置にある必要があります。

実際の結果: メッシュ 2 は、追加後に位置/回転/スケールを変更します。

親になった後、オブジェクトをグローバルな変換を維持する方法は?

4

2 に答える 2