Oi,
Preciso projetar sombras em um plano transparente para obter apenas a sombra mostrada e não o material aplicado ao plano (quero que seja totalmente transparente). Isso é possível no three.js? Estou usando THREE.SpotLight
como fonte de luz.
Como solução alternativa, acho que poderia aplicar um mapa de textura totalmente transparente como um material e ver se funciona conforme o esperado, mas gostaria de saber se eu conseguiria obter esse efeito apenas ajustando as propriedades do material padrão.
obrigado
OK, a solução alternativa tentada não funcionou, pois não consigo nenhuma sombra projetada em um plano de textura transparente mapeado ...
Não acho que seja possível.
Não tenho certeza se entendi a pergunta, mas as sombras devem ser projetadas em materiais transparentes.
O que não deveria funcionar é a luz brilhando através dos materiais transparentes. Ou seja, tudo é totalmente opaco ou totalmente transparente para sombras, sem nenhum meio-termo, independente da transparência do material.
Veja também a discussão em # 1509
O que não deveria funcionar é a luz brilhando através dos materiais transparentes. Ou seja, tudo é totalmente opaco ou totalmente transparente para sombras, sem nenhum meio-termo, independente da transparência do material.
Sim, acho que é isso que ele quis dizer.
Para referência, se alguém precisar http://pastie.org/5088640
@skrat Muito obrigado por esse shader. Funciona perfeitamente para um apanhador de sombras!
@etx uh, o que esse shader faz? :VOCÊ
Ele apenas me dá a sombra com alfa e o resto do objeto com esse sombreador é invisível. É semelhante a um coletor de sombras em software CGI. Estou usando o threejs para renderizar um produto sobre uma fotografia, então isso é muito útil.
Oh, certo. Portanto, ele fornece textura preta com a visibilidade armazenada no canal alfa. Corrigir?
Sim!
@etx Como você pode fazer isso usando o sombreador acima? o que recebo é apenas um avião preto ......
Tenho procurado uma maneira de obter seu efeito, entretanto, usando o trecho acima, estou recebendo um erro THREE.WebGLShader: Shader couldn't compile.
.
@skrat, alguma chance de você reenviar esse shader? o link do pastie não funciona mais e eu encontrei exatamente os mesmos problemas. Obrigado antecipadamente!
@etx @skrat, por favor, recarregue um shader atualizado? O que você postou parece não funcionar mais, como @JosephClay , recebo o erro "shader não pôde compilar" ...
Experimente THREE.ShadowMaterial()
. Veja esta postagem stackoverflow.
@WestLangley você acha que devemos promover ShadowMaterial
para o núcleo?
@WestLangley muito obrigado - isso resolveu o problema. @mrdoob , acho que é um recurso super útil que muitos conhecem do GCI, então pode ser uma boa promoção para o núcleo
@WestLangley você acha que devemos promover ShadowMaterial para o núcleo?
Não tenho um sentimento forte de uma forma ou de outra ... Se não me engano, sofre a mesma deficiência de MeshLambertMaterial
- um texel à sombra de uma luz não recebe luz de nenhuma outra luz .
Sim, é uma máscara. Basicamente, como as velhas sombras costumavam ser.
Oi,
ShadowMaterial soa exatamente como eu preciso e estou muito feliz que você o implementou - mas não consigo descobrir qual versão do three.js preciso baixar / link para fazê-lo funcionar. Você pode me apontar na direção certa?
r74
ou mais recente
Obrigado! Eu ainda recebo THREE.ShadowMaterial não é um construtor.
Ainda não está incluído na construção, está na pasta de exemplos. Você precisa incluí-lo separadamente:
<script src="js/materials/ShadowMaterial.js"></script>
iria promovê-lo ao núcleo também, é 4kb
Perfeito, obrigado! Procurei o arquivo shadowMaterial antes e não consegui encontrar.
Funciona de maneira fantástica para minhas necessidades.
A partir de r77
ShadowMaterial
agora está no núcleo.
@mrdoob ótima jogada, obrigado
Experimente
THREE.ShadowMaterial()
. Veja esta postagem stackoverflow.
Obrigado.
Funciona!
Comentários muito úteis
A partir de
r77
ShadowMaterial
agora está no núcleo.