如何解决Threejs阴影:如何更新深度材质?
我有以下场景:
如您所见,我为定向光源激活了阴影。
问题是,当我使用顶点着色器(使用material.onBeforeCompile
)更改树顶顶点时,阴影不会自动更新
因此,在尝试解决此问题时,我了解到由于光源使用深度材料来计算阴影贴图,因此我还应该更新网格的深度材料...
这就是问题所在。
设置mesh.customDepthMaterial = new THREE.MeshDepthMaterial();
后,阴影甚至在我更改顶点着色器之前就消失了。
我不知道这是否有帮助,但是当我将网格物体的材质设置为new THREE.MeshDepthMaterial()
时,如果没有onBeforeCompile
功能,场景中的所有网格物体都会显示为黑色
编辑:添加代码
这是代码的链接:codepen
搜索功能createObject
,其中有一个段:
let mesh = new THREE.Mesh(geom,material);
// mesh.customDepthMaterial = new THREE.MeshDepthMaterial();
// mesh.customDepthMaterial.onBeforeCompile = (shader) =>
// {
// }
在场景中创建的所有网格都通过此功能。 如果取消注释第一条注释行,则来自太阳的阴影会消失,但是指针的阴影会保留。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。