2

サーバーから取得して変更できないネストされたメッシュのセットを表示しようとしています。メッシュは、回転と位置がローカル座標であるのに対し、スケーリングはすべてグローバル座標であるという点で少し変わっています。

理想的には、子メッシュを THREE.Mesh に追加して階層を維持することを好みますが、階層がフラット化されるソリューションも実行可能です。

私の問題は、単に子メッシュを追加すると、子メッシュのサイズが爆発的に大きくなることです:

this.add(child);

サーバーはスケーリング情報が継承されていないと想定するため、子のボリュームと子の子のボリュームが大きくなりすぎます。

私は簡単に試しました:

child.scale.divide(this.scale);
this.add(child);

THREE.Object3Dが [Rotation x Scale x Translation ]matrixとして定義されているためだと思います。

私の線形代数は少しさびています。子供のスケーリング ベクトルを調整する方法について、誰かが私にいくつかの指針を与えることができますか?

4

1 に答える 1

2

オブジェクトを適切な階層順序で追加し、スケールを ( 1, 1, 1 ) に設定し、次を使用して各オブジェクトのジオメトリを正しいグローバル サイズに拡大します。

geometry.scale( s, s, s );

three.js r.86

于 2013-06-20T20:54:01.337 に答える