Three.js: Anpassen der Deckkraft / Größe von Partikeln und Linien

Erstellt am 27. Juni 2011  ·  11Kommentare  ·  Quelle: mrdoob/three.js

Ich habe ein Partikelsystem und eine Linie. Ich kann die Farbe jedes Scheitelpunkts und jeder Kante in meiner Linie einfach festlegen, indem ich ein Farbarray erstelle und VertexColors auf true setze. Meine Frage ist, wie ich die a) Deckkraft b) Größe jedes Scheitelpunkts / jeder Kante in meinem Partikelsystem / meiner Partikellinie individuell anpassen kann.

Vielen Dank!

Zenna

Question

Hilfreichster Kommentar

@ WestLangley Ich

Auf der anderen Seite wäre es schön, wenn dies in JS möglich wäre, insbesondere für Leute, die mit der Shader-Sprache nicht vertraut sind, einschließlich mir. Trotzdem danke!

Alle 11 Kommentare

Auch ich würde das gerne wissen.

geometry.colors ist ein Array, das die Eckpunkte 1 zu 1 abbildet. Wenn Sie also die Farbe von geometry.vertices[ 1 ] ändern möchten, müssen Sie geometry.colors[ 1 ] ändern.

Hallo mrdoob.

geometr.colors [1] wäre eine Three.color. Ich kann die Farbe gerne ändern, aber soweit ich weiß, wird der Deckkraftwert dort nicht gespeichert. Wie kann ich die Deckkraft einzelner Scheitelpunkte / Linien ändern?

Oh oh ...

Dies ist nicht einfach möglich. Die Deckkraft wird pro Material und nicht pro Element angegeben. Wir haben Alpha vor einiger Zeit von Color .

Ein möglicher Weg wäre über benutzerdefinierte Attribute und benutzerdefinierte MeshShaderMaterial wo Sie 4-Komponenten-Farben haben würden.

Das Gleiche gilt für Größen. Derzeit gibt es keine Möglichkeit, sie pro Partikel oder pro Zeile mit Standardattributen und -materialien zu ändern. Sie würden einen anderen Attributstrom für die Größe benötigen und dann benutzerdefiniertes Material haben, das dies verwenden würde.

Jetzt kann ich mich nicht erinnern, warum wir beschlossen haben, Alpha von Color zu entfernen ...

Ich erinnere mich auch nicht, ich konnte folgendes finden:

https://github.com/mrdoob/three.js/commit/dc6e335dc9f7f38f1c79a5a6c112019d6fcce69d

Scheint, als würden Hex-Farben mit Alphas Probleme bereiten. Mit mehr Abhängigkeiten in der Asset-Pipeline wäre es wahrscheinlich noch schmerzhafter.

Die Möglichkeit, die Opazität pro Scheitelpunkt anzugeben, wäre für Partikelsysteme sehr nützlich.

Gibt es einen Plan, dies in einer zukünftigen Version zu unterstützen?

Ich bin mir nicht sicher, wo die technischen Schwierigkeiten liegen. Intuitiv scheint es eine abwärtskompatible, nicht aufdringliche Möglichkeit zu sein, so etwas wie geometry.opacityValues , um dies zu unterstützen. Es kann auch ein globales pointsMaterial.vertexOpacityValues -Flag geben, um diese Unterstützung zu deaktivieren, wenn sie nicht benötigt wird oder Probleme verursacht, genau wie dies bei Scheitelpunktfarben der Fall ist.

@quyin Mit einem benutzerdefinierten ShaderMaterial können Sie tun, was Sie wollen. Siehe Stapelüberlauf, wenn Sie Hilfe benötigen.

@ WestLangley Ich

Auf der anderen Seite wäre es schön, wenn dies in JS möglich wäre, insbesondere für Leute, die mit der Shader-Sprache nicht vertraut sind, einschließlich mir. Trotzdem danke!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen