Three.js: Ajustement de l'opacité / taille des particules et des lignes

Créé le 27 juin 2011  ·  11Commentaires  ·  Source: mrdoob/three.js

J'ai un système de particules et une ligne. Je peux facilement définir la couleur de chaque sommet et arête de ma ligne en créant un tableau de couleurs et en définissant VertexColors sur true. Ma question est de savoir comment ajuster la taille a) d'opacité b) de chaque sommet / bord individuellement dans mon système de particules / ligne.

Merci!

Zenna

Question

Commentaire le plus utile

@WestLangley je vois. Merci pour l'info!

Par contre, ce serait bien si cela peut être fait en JS, en particulier pour les personnes qui ne sont pas familières avec le langage shader, moi y compris. merci tout de même!

Tous les 11 commentaires

Moi aussi, j'aimerais le savoir.

geometry.colors est un tableau mappant 1 par 1 les sommets. Donc, si vous voulez changer la couleur de geometry.vertices[ 1 ] vous devez modifier geometry.colors[ 1 ] .

Salut Mrdoob.

geometry.colors [1] serait un Three.color. Je peux changer la couleur avec plaisir, mais pour autant que je sache, la valeur d'opacité n'y est pas stockée. Alors, comment puis-je changer l'opacité des sommets / lignes simples?

Oh oh ...

Vous ne pouvez pas faire cela facilement, l'opacité est spécifiée par matériau et non par élément. Nous avons supprimé l'alpha de Color quelque temps.

Un moyen possible serait d'utiliser des attributs personnalisés et des MeshShaderMaterial où vous auriez des couleurs à 4 composants.

La même chose pour les tailles, il n'y a actuellement aucun moyen de les changer par particule ou par ligne avec des attributs et des matériaux par défaut. Vous auriez besoin d'un autre flux d'attributs pour la taille, puis d'un matériel personnalisé qui l'utiliserait.

Maintenant, je ne me souviens plus pourquoi nous avons décidé de supprimer l'alpha de Color ...

Je ne me souviens pas non plus, j'ai pu trouver ceci:

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

On dirait que les couleurs hexadécimales avec des alphas posaient des problèmes. Maintenant, avec plus de dépendances dans le pipeline d'actifs, je suppose que ce serait encore plus douloureux.

pouvoir spécifier l'opacité par sommet serait très utile pour faire des systèmes de particules.

y a-t-il un plan pour soutenir cela dans une prochaine version?

Je ne sais pas quelle est la difficulté technique ici. intuitivement, avoir quelque chose comme geometry.opacityValues semble une manière rétrocompatible et non intrusive de supporter cela. il peut également y avoir un drapeau global pointsMaterial.vertexOpacityValues pour désactiver ce support s'il n'est pas nécessaire ou cause des problèmes, comme c'est le cas pour les couleurs de vertex.

@quyin Vous pouvez faire ce que vous voulez avec un ShaderMaterial . Consultez stackoverflow si vous avez besoin d'aide.

@WestLangley je vois. Merci pour l'info!

Par contre, ce serait bien si cela peut être fait en JS, en particulier pour les personnes qui ne sont pas familières avec le langage shader, moi y compris. merci tout de même!

Cette page vous a été utile?
0 / 5 - 0 notes