Three.js: 阴影贴图-在透明平面上投射阴影

创建于 2012-04-23  ·  28评论  ·  资料来源: mrdoob/three.js

你好

我需要在透明平面上投射阴影,以便仅获得所示的阴影而不是应用于平面的材质(我希望它完全透明)。 在three.js中可以吗? 我正在使用THREE.SpotLight作为光源。

作为一种解决方法,我认为我可以将完全透明的纹理贴图用作材质,并查看是否按预期工作,但是想知道是否可以通过调整标准材质属性来实现这种效果。

谢谢

Question

最有用的评论

截至r77 ShadowMaterial现在处于核心地位。

所有28条评论

确定尝试的解决方法不起作用,因为我无法在透明纹理映射平面上投射任何阴影...

我认为那是不可能的。

我不确定我是否理解这个问题,但是阴影应该投射在透明材料上。

不应该起作用的是光线穿过透明材料。 就是说,对于阴影,一切都是完全不透明的或完全透明的,两者之间没有任何限制,与材质的透明度无关。

另请参阅#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帖子。

谢谢。
有用!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jack-jun picture jack-jun  ·  3评论

fuzihaofzh picture fuzihaofzh  ·  3评论

Bandit picture Bandit  ·  3评论

scrubs picture scrubs  ·  3评论

akshaysrin picture akshaysrin  ·  3评论