Eu tenho um sistema de partículas e uma linha. Posso definir facilmente a cor de cada vértice e borda em minha linha criando uma matriz de cores e definindo VertexColors como true. Minha pergunta é como posso ajustar a) opacidade b) tamanho de cada vértice / aresta individualmente em meu sistema de partículas / linha.
Obrigado!
Zenna
Eu também gostaria de saber disso.
geometry.colors
é um array mapeando 1 por 1 os vértices. Então, se você quiser mudar a cor de geometry.vertices[ 1 ]
você precisa modificar geometry.colors[ 1 ]
.
Olá, mrdoob.
geometry.colors [1] seria um Three.color. Posso felizmente mudar a cor, mas pelo que sei o valor da opacidade não está armazenado lá. Então, como posso alterar a opacidade de vértices / linhas simples?
Uh oh ...
Você não pode fazer isso facilmente, a opacidade é especificada por material, não por elemento. Descartamos o alfa de Color
há algum tempo.
Uma maneira possível seria por meio de atributos personalizados e MeshShaderMaterial
onde você teria cores de 4 componentes.
O mesmo ocorre com os tamanhos, atualmente não há como alterá-los por partícula ou por linha com atributos e materiais padrão. Você precisaria de outro fluxo de atributos para o tamanho e, em seguida, teria um material personalizado que o usaria.
Agora não me lembro por que decidimos remover alfa de Color
...
Também não me lembro, consegui encontrar o seguinte:
https://github.com/mrdoob/three.js/commit/dc6e335dc9f7f38f1c79a5a6c112019d6fcce69d
Parece que as cores hexadecimais com alfas estavam causando problemas. Agora, com mais dependências no pipeline de ativos, acho que seria ainda mais doloroso.
ser capaz de especificar a opacidade por vértice seria muito útil para fazer sistemas de partículas.
existe algum plano para oferecer suporte a isso em uma versão futura?
Não tenho certeza de qual é a dificuldade técnica aqui. intuitivamente, ter algo como geometry.opacityValues
parece uma forma compatível com versões anteriores e não intrusiva de apoiar isso. também pode haver um sinalizador global pointsMaterial.vertexOpacityValues
para desabilitar este suporte se não for necessário ou causando problemas, como no caso das cores dos vértices.
@quyin Você pode fazer o que quiser com um ShaderMaterial
. Consulte stackoverflow se precisar de ajuda.
@WestLangley entendo. Obrigado pela informação!
por outro lado, seria bom se isso pudesse ser feito em JS, especialmente para pessoas que não estão familiarizadas com a linguagem de shader, inclusive eu. obrigado mesmo assim!
Comentários muito úteis
@WestLangley entendo. Obrigado pela informação!
por outro lado, seria bom se isso pudesse ser feito em JS, especialmente para pessoas que não estão familiarizadas com a linguagem de shader, inclusive eu. obrigado mesmo assim!