2013-05-30 8 views
6

Three.JS r58を使用していて、画面上でCubeGeometryオブジェクトのサイズを変更したいとします。実行時にTHREE.CubeGeometryのサイズを変更する

私が試した1つのアプローチは、サイズ変更が必要なときに、影響を受けるキューブを削除し、更新されたサイズで新しいキューブを追加することです。このプロセスは機能しますが、視覚化を劇的に遅くします。新しいものを削除/追加するのではなく、Three.jsを使って動的にCubeGeometryのサイズを変更する方法があるかどうかを知りたいと思います。 jsfiddleのサンプルが評価されています。

答えて

3

メッシュの.scale.set(x, y, z)this ticket参照)を呼び出します。

最初scaleは(Object3Dのコンストラクタ、Meshの親クラスを参照してください)(1, 1, 1)に設定されています。必要な次元で、必要なパーセンテージスケールでそれらの値を増やしたいと思うでしょう。

this fiddle.scale.set(1.5, 1.5, 1.5)を使用して、すべての方向でキューブを50%増加させます。

+0

明らかにメッシュをスケーリングしている間に...メッシュをスケーリングするとき、問題はオブジェクトのスケーリングとそれに関連するオブジェクトの座標系に影響があります。したがって、オブジェクトAのジオメトリをスケールしたければ、後でAに追加されるオブジェクトBもそのスケールで不正な形になります。ジオメトリ自体を拡大縮小できないのは本当ですか? CubeGeometryでは、必要なときに簡単に新しいジオメトリを作成できます。ロードされた3Dオブジェクトジオメトリ(.stlファイルなど)では、実際にはオプションではありません。 –

+0

私はこの問題をここ(https://discourse.threejs.org/t/1021/10)に持ち込み、私のプロジェクト(https://github.com/trusktr/infamous/tree/threejs)で解決策をリリースしようとしています。 )。今のところ、私の実装では、(すべての子の座標空間に影響を与えずに)サイズ変更にジオメトリを再作成するだけです。その議論では、Object3Dに似たジオメトリを独自のワールド変換で扱うという考えを述べました。これによりサイジングが非常に速くなります。 – trusktr