Three.js: Menyesuaikan opasitas / ukuran partikel dan garis

Dibuat pada 27 Jun 2011  ·  11Komentar  ·  Sumber: mrdoob/three.js

Saya memiliki sistem partikel dan garis. Saya dapat dengan mudah mengatur warna setiap simpul dan tepi di baris saya dengan membuat array warna dan mengatur VertexColors ke true. Pertanyaan saya adalah Bagaimana cara menyesuaikan ukuran a) opasitas b) dari setiap simpul / tepi secara individual dalam sistem / garis partikel saya.

Terima kasih!

Zenna

Question

Komentar yang paling membantu

@WestLang begitu. terimakasih atas infonya!

di sisi lain alangkah baiknya jika hal ini bisa dilakukan di JS terutama bagi orang yang belum paham dengan bahasa shader termasuk saya. terima kasih semuanya sama!

Semua 11 komentar

Saya juga ingin mengetahui hal ini.

geometry.colors adalah pemetaan larik 1 dengan 1 simpul. Jadi jika Anda ingin mengubah warna geometry.vertices[ 1 ] Anda perlu mengubah geometry.colors[ 1 ] .

Hai mrdoob.

geometry.colors [1] akan menjadi Three.color. Saya dengan senang hati dapat mengubah warnanya, tetapi sejauh yang saya tahu nilai opacity tidak disimpan di sana. Jadi bagaimana saya bisa mengubah opacity dari satu simpul / garis?

Uh oh...

Anda tidak dapat melakukan ini dengan mudah, opasitas ditentukan per bahan bukan per elemen. Kami menurunkan alpha dari Color beberapa waktu lalu.

Salah satu cara yang mungkin adalah melalui atribut khusus dan MeshShaderMaterial mana Anda akan memiliki 4 warna komponen.

Hal yang sama untuk ukuran, saat ini tidak ada cara untuk mengubahnya per partikel atau per baris dengan atribut dan bahan default. Anda akan membutuhkan aliran atribut lain untuk ukuran dan kemudian memiliki bahan khusus yang akan menggunakan ini.

Sekarang saya tidak ingat mengapa kami memutuskan untuk menghapus alfa dari Color ...

Saya juga tidak ingat, saya dapat menemukan ini:

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

Sepertinya warna hex dengan alpha membuat masalah. Sekarang, dengan lebih banyak dependensi dalam pipeline aset, saya rasa itu akan lebih menyakitkan.

dapat menentukan opasitas per simpul akan sangat berguna untuk melakukan sistem partikel.

apakah ada rencana untuk mendukung ini di rilis mendatang?

Saya tidak yakin apa kesulitan teknisnya di sini. Secara intuitif, memiliki sesuatu seperti geometry.opacityValues tampaknya merupakan cara yang kompatibel ke belakang dan tidak mengganggu untuk mendukung ini. mungkin juga ada tanda pointsMaterial.vertexOpacityValues global untuk menonaktifkan dukungan ini jika tidak diperlukan atau menyebabkan masalah, seperti kasus untuk warna simpul.

@quyin Anda dapat melakukan apa yang Anda inginkan dengan ShaderMaterial kustom. Lihat stackoverflow jika Anda membutuhkan bantuan.

@WestLang begitu. terimakasih atas infonya!

di sisi lain alangkah baiknya jika hal ini bisa dilakukan di JS terutama bagi orang yang belum paham dengan bahasa shader termasuk saya. terima kasih semuanya sama!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat