Kann ich bei vielen Maschen mit der gleichen Geometrie und dem gleichen Material die Farben ändern?

Ich habe eine große Anzahl (~ 1000) vonTHREE.Mesh Objekte, die aus demselben konstruiert wurdenTHREE.Geometry undTHREE.MeshPhongMaterial (die eine Karte hat).

Ich möchte diese Objekte einzeln färben.

Naiv versuchte ich das zu ändernmesh.material.color Durch Ändern dieser Eigenschaft für eines der Objekte wird jedoch die Farbe aller Objekte gleichzeitig geändert. Dies ist sinnvoll, da es nur ein Material gibt, das von allen Objekten gemeinsam genutzt wird.

Meine nächste Idee war, eine separate zu erstellenTHREE.MeshPhongMaterial für jedes Objekt. Also, jetzt habe ich eine große Anzahl vonTHREE.Mesh Objekte, die aus dem gleichen konstruiert wurdenTHREE.Geometry, aber individuell habenTHREE.MeshPhongMaterials (die die gleiche Textur haben). Dadurch kann ich die Farben einzeln ändern, aber die Leistung ist schlechter. Das Chromprofil zeigt, dass die App viel Zeit damit verbringt, materielle Dinge wie das Wechseln von Texturen zu erledigen.

Die Materialfarbe ist im Shader nur einheitlich. Das Aktualisieren dieser Uniform sollte also recht schnell gehen.

Frage: Gibt es eine Möglichkeit, eine Materialfarbe von der Maschenebene zu überschreiben?

Wenn ja, könnte ich das Material auf alle meine Objekte verteilen und meine Leistung wiedererlangen, während ich die Farben individuell ändere.

[Ich habe v49 und v54 getestet, sie haben identische Leistung und Degression]

aktualisieren: Ich habe einen Testfall erstellt, und der Leistungsabfall ist aufgrund dessen geringer als ich dachte, aber messbar.

Hier sind zwei Links:

http://danceliquid.com/docs/threejs/material-test/index.html?many-materials=falsehttp://danceliquid.com/docs/threejs/material-test/index.html?many-materials=true

Im ersten Fall gibt es nur zwei Materialien, im zweiten Fall hat jeder Würfel sein eigenes Material. Ich messe die Framerate des ersten Falls mit 53 fps auf diesem Computer und die Framerate des zweiten ist 46 fps. Dies entspricht einem Rückgang von etwa 15%.

In beiden Fällen ändert sich die Farbe des Materials jedes Würfels bei jedem Frame. Bei vielen Materialien sieht man tatsächlich, dass jeder Würfel seine eigene Farbe hat. Bei nur zwei Materialien sehen wir, dass alle dieselbe Farbe haben (wie erwartet).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage