1

私は現在、Three.js で多数のオブジェクトをロード/生成するのにかかる時間を最適化する方法を検討しています。これらのオブジェクトの入力は、2D フットプリントを構成する個々の頂点です。

私が使用した最初の方法はTHREE.Shape、個々の頂点からオブジェクトを作成し、次に を使用THREE.ExtrudeGeometryして 2D 形状を 3D オブジェクトにプルすることでした。すべてのオブジェクトに対してこれを行うには、約 3500 ミリ秒かかります。

私が検討した 2 つ目の方法は、生成された 3D オブジェクト (前のアプローチから) をJSON モデル形式を使用して JSON ファイルに事前にエクスポートし、実行時にオブジェクトを生成する代わりに、必要に応じてその JSON ファイルをインポートすることです。この JSON 表現のインポートとロードだけで約 3800 ミリ秒かかります。これは、実行時にオブジェクトを生成するよりも長くなります!

Three.js でオブジェクトをロード/生成するための最速の方法を知りたいです。および押し出しアプローチを高速化する方法に途方に暮れてTHREE.Shapeおり、JSON インポート アプローチが非常に遅い理由がわかりません (ジオメトリを事前に生成することで多くの時間を節約できると思いました)。

物事をスピードアップする可能性のある他の方法はありますか?

4

1 に答える 1

2

私はあなたの結果に全く驚かない。カスタムジオメトリを使用すると、メモリフットプリントもはるかに大きくなると思います...

BufferedGeometry は、カスタム ジオメトリの読み込みを確実に高速化します。しかし、その場でジオメトリを生成するよりも高速になるかどうかはわかりません。生成の利点は、プロセスをアニメーション化できることです。これにより、ユーザーは目の前でシーンが生き生きとしているのを見ることができます。カスタム ジオメトリを分割して、Verold Studio でマルチパート オブジェクトをロードするときと同様のことを行うことで、同様の効果を得ることができますが、生成されたシーンをより細かく制御できます。

また、ベンチマークでメモリ、CPU、およびネットワーク速度を確認することをお勧めします。特定の構成に合わせて最適化すると、優れたパフォーマンスが得られるパスにたどり着く可能性がありますが、ユーザーにとってはそうではありません。より多くのネットワークトラフィックと引き換えに、サーバーでより多くの事前計算を行うことができるアプローチには、間違いなくトレードオフがあります。構成の速度だけでなく、すべての要因を個別に測定していることを確認してください。

于 2013-04-08T13:36:58.387 に答える