你好
我需要在透明平面上投射阴影,以便仅获得所示的阴影而不是应用于平面的材质(我希望它完全透明)。 在three.js中可以吗? 我正在使用THREE.SpotLight
作为光源。
作为一种解决方法,我认为我可以将完全透明的纹理贴图用作材质,并查看是否按预期工作,但是想知道是否可以通过调整标准材质属性来实现这种效果。
谢谢
确定尝试的解决方法不起作用,因为我无法在透明纹理映射平面上投射任何阴影...
我认为那是不可能的。
我不确定我是否理解这个问题,但是阴影应该投射在透明材料上。
不应该起作用的是光线穿过透明材料。 就是说,对于阴影,一切都是完全不透明的或完全透明的,两者之间没有任何限制,与材质的透明度无关。
另请参阅#1509中的讨论
不应该起作用的是光线穿过透明材料。 就是说,对于阴影,一切都是完全不透明的或完全透明的,两者之间没有任何限制,与材质的透明度无关。
是的,我想这就是他的意思。
供参考,如果有人需要http://pastie.org/5088640
@skrat感谢一百万为该着色器。 非常适合阴影捕捉器!
@etx呃,该着色器有什么作用? :U
它只是给我带alpha的阴影,带有该着色器的其余对象是不可见的。 它类似于CGI软件中的阴影捕捉器。 我正在使用threejs在照片上渲染产品,所以这非常有用。
啊对。 因此,它为您提供了黑色纹理,并且可见性存储在Alpha通道中。 正确?
是的
@etx如何使用上面的着色器完成此操作? 我得到的只是一架黑色飞机……
我一直在寻找一种方法来获得他的效果,但是,使用上面的代码段,我遇到了THREE.WebGLShader: Shader couldn't compile.
错误。
@skrat有机会重新上传该着色器吗? Pastie链接不再起作用,我提前遇到了完全一样的问题。。谢谢!
@etx @skrat您能否请重新上传更新的着色器? 您发布的那个似乎不再起作用,例如@JosephClay,我收到“无法编译着色器”错误...
尝试THREE.ShadowMaterial()
。 请参阅此stackoverflow帖子。
@WestLangley您认为我们应该将ShadowMaterial
提升为核心吗?
@WestLangley非常感谢-解决了它。 @mrdoob我认为这是一个非常有用的功能,很多人从GCI那里都知道,因此这可能是对核心功能的良好提升
@WestLangley您认为我们应该将ShadowMaterial提升为核心吗?
我没有一种或另一种强烈的感觉...如果我没记错的话,它遭受与MeshLambertMaterial
相同的缺陷-一个光影下的texel不会从任何其他光中获得光。
是的,这是一个面具。 基本上是以前的阴影。
你好
ShadowMaterial听起来完全符合我的需要,我很高兴您已经实现了它-但是我无法确定我需要下载/链接到哪个版本的three.js才能使其正常工作。 你能为我指出正确的方向吗?
r74
或更高
谢谢! 我仍然得到THREE.ShadowMaterial不是构造函数。
还没有包含在构建中,它在examples文件夹中。 您需要单独包括:
<script src="js/materials/ShadowMaterial.js"></script>
也会将其提升到核心,这是4kb
完美,谢谢! 我之前查找了shadowMaterial文件,但找不到它。
非常适合我的需求。
截至r77
ShadowMaterial
现在处于核心地位。
@mrdoob很棒的举动,谢谢
尝试
THREE.ShadowMaterial()
。 请参阅此stackoverflow帖子。
谢谢。
有用!
最有用的评论
截至
r77
ShadowMaterial
现在处于核心地位。