2016-07-29 26 views
0

Ich habe zwei .dae Dateien, eine hat 1 Million Gesichter und die zweite hat 20 Millionen Gesichter. Ich importierte sie mit ColladaLoader. Das Problem ist, dass die 20 Millionen Gesichter mit 30fps und die 1 Million Gesichter mit 2fps laufen. Wie ist das? Wie kann ich das beheben?Threejs Millionen Gesichter Rendering Performace Collada Dateien

+0

Nicht nur die Anzahl der Gesichter bestimmt die Leistung. Können Sie vielleicht ein Codebeispiel bereitstellen? Andere Faktoren könnten sein: Anzahl der Meshes, Anzahl und Art der Materialien, Anzahl der tatsächlich gerenderten Gesichter und so weiter. –

Antwort

0

Sie müssen überprüfen, wie viele Netze in diesen Modellen vorhanden sind. Die Leistung hängt weitgehend von der Anzahl der Zeichenaufrufe (Meshes) in einem Modell ab, da mehr Draw-Aufrufe mehr Daten an die GPU weitergeben.

Für ein Beispiel hatte ich ein Netz mit 3,5 Millionen Flächen und es hatte mehr als 1000 Maschen. Ich habe 20 fps dafür. Aber wenn ich alle Meshes zu einem einzigen Mesh verschmolz, bekam ich 60 fps.

Die Lösung dieses Problems besteht darin, die Geometrien der Meshes zu einem einzigen zusammenzuführen und ein einzelnes Mesh mit diesen Geometrien zu erstellen. Für BufferGeometry können Sie das gesamte Vertex-Array, das Farb-Array und das normale Array zusammenführen. Zum Zusammenführen von Indexarrays müssen Sie den Basisvertex für jeden Indexwert hinzufügen.