Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 三点方向光_Three.js_Shadow Mapping - Fatal编程技术网

Three.js 三点方向光

Three.js 三点方向光,three.js,shadow-mapping,Three.js,Shadow Mapping,我正在尝试将shadowCascade功能从复制到我的项目。我以1:1的比例做了这件事,但是我只在特定的角度和旋转中得到一点阴影,并且经常被切断。此外,从开始启用阴影级联会引发着色器错误。我必须等待一段时间,直到我可以设置shadowCascade=true 我试图找到文档、链接或提示来解释shadowCascade是如何工作的,以及所有这些参数都做了些什么,但迄今为止都没有成功 总而言之,我很困惑,我真的不明白发生了什么,为什么。提前感谢您的澄清和帮助 编辑:在一年多的时间里,shadowC

我正在尝试将shadowCascade功能从复制到我的项目。我以1:1的比例做了这件事,但是我只在特定的角度和旋转中得到一点阴影,并且经常被切断。此外,从开始启用阴影级联会引发着色器错误。我必须等待一段时间,直到我可以设置shadowCascade=true

我试图找到文档、链接或提示来解释shadowCascade是如何工作的,以及所有这些参数都做了些什么,但迄今为止都没有成功

总而言之,我很困惑,我真的不明白发生了什么,为什么。提前感谢您的澄清和帮助


编辑:

在一年多的时间里,
shadowCascade
代码并不是一个重要的开发重点。可能会有问题。如果你想继续这样做,并追踪可能的bug,那就太好了。但是,有些问题可能是由于您的设备和/或浏览器造成的

现在,我建议您使用一个平行光,将角色作为
目标
,并使用一个紧凑的阴影框


three.js r.66

当直接启用shadowCascade时,我得到的错误是“数组大小必须是正整数”,比如136:variating vec4 vShadowCoord[MAX_SHADOWS];137:均匀mat4阴影矩阵[最大阴影];或者在另一个着色器114中:均匀采样2D阴影贴图[最大阴影];115:均匀vec2阴影贴图大小[最大阴影];116:均匀浮动阴影暗度[最大阴影];117:均匀浮动阴影偏移[最大阴影];118:可变vec4 VSHADOWCORD[最大阴影];这意味着maxShadows为0。maxShadows由triple.js中的allocateShadows设置。仅当方向光没有阴影级联时,“最大阴影”才会增加。这就是为什么它仍然是0。为什么这在其他例子中有效,我还不知道。好的,我解决了一些问题。删除shadowcameravible=true有助于消除错误,我改为打开shadowMapDebug=true;当我在three.js示例中使用shadowMapDebug=true时,什么都不会发生……当我移动相机时,阴影相机会移动……而且,由于我使用的是第三人称,所以我不需要在相机后面有阴影贴图。因此,我根据玩家的位置和旋转来调整方向灯的位置。我在播放器上安装了一个参考点(在我的例子中,是一个位置为(0,0,-19)的Object3D)。然后我将灯光相应地放置在render/tick方法中:var p2=new THREE.Vector3(0,45,0).applyMatrix4(sunlightReferencePoint.matrixWorld);光位置设置(p2.x+20,p2.y+50,p2.z);