私が目にしている重大なパフォーマンス ヒットが、最適化して取り除くことができるものなのか、それともこれが現状なのかを把握しようとしています。
私はオバマのように見えるジオメトリを持っています。それは約 11K の三角形、5600 ほどの面 (四角形と三角形の両方) です。これは Maya でモデリングされ、使用されているレンダリング方法に応じて 2 つの方法のいずれかで OBJ としてエクスポートされます。
1 つのエクスポート方法では、Maya からマテリアル ファイルをエクスポートしません。モデルで使用される 5 つの異なるテクスチャ マップを取得し、それらを 1 つのテクスチャにステッチして、モデル内の UV を書き直して、統合テクスチャ内の新しいテクスチャ位置を参照します。最終的に統一されたテクスチャは 1024x512 です。
2 番目のエクスポート方法では、Maya からエクスポートされたマテリアル ファイルを使用し、5 つの異なるテクスチャを削減して、他の方法で使用される統合テクスチャの対応するものよりもすべてのケースで小さくします。5 つの異なるテクスチャを並べると、約 768x512 になります。
同じジオメトリをレンダリングする 2 つの方法のその他の唯一の違いは、2 番目の方法には 1 つの半透明のマテリアルがあることです。目の上の角膜 (クリア レイヤー) は 0.1 (かろうじて見える) の透明度とわずかに青/灰色の色合いに設定されています。 .
最初のレンダリング方法の半透明の角膜の代わりに、角膜上に眼球の画像を表示するだけで、この方法では目 (虹彩と瞳孔) が表示されることはありません。それらはそこにありますが、不透明な角膜の背後にあるため、レンダリングによって破棄されただけです。
ここに大きなパズルがあります。レンダリング メソッド 1 は簡単に 60 fps に達し、そのようなジオメトリが 2 つあるとそこにとどまります。レンダリング方法 2 は、毎秒 20 ~ 25 フレームでレンダリングします。2 番目のジオメトリでのレンダリングはまだ試していません。フレーム レートが大幅に低下したことに少し驚いています。半透明の角膜を不透明に変更しても、フレーム レートは依然として低くなります (同じレート)。
どちらの方法も THREE.JSONLoader を使用します。Render メソッド 1 は単一の MeshLambertMaterial を使用し、Render メソッド 2 は meshFaceMaterial と 6 つのマテリアルの配列を使用します。
複数のマテリアルと複数のテクスチャを使用することで、それほどヒットすることはありますか? 私のわずか6よりも指数関数的に多くの材料を必要とする、より複雑な環境で人々は何をしていますか?