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
Javascript three.js中的阴影贴图问题,带有更改顶点位置的ShaderMaterial_Javascript_Three.js_Webgl - Fatal编程技术网

Javascript three.js中的阴影贴图问题,带有更改顶点位置的ShaderMaterial

Javascript three.js中的阴影贴图问题,带有更改顶点位置的ShaderMaterial,javascript,three.js,webgl,Javascript,Three.js,Webgl,在我的项目中,我使用着色器材质渲染地形。顶点位置在顶点着色器中根据高度贴图纹理进行修改: vec4 mvPosition = modelViewMatrix * vec4( position + normal * heightMapScale, 1.0); gl_Position = projectionMatrix * mvPosition; 地形看起来不错,但当我试图在上面添加对象时,阴影很奇怪。似乎顶点不知道它们的新位置:( 请转到以下链接获取截图和现场演示(很抱歉,我没有足够的声誉在这

在我的项目中,我使用着色器材质渲染地形。顶点位置在顶点着色器中根据高度贴图纹理进行修改:

vec4 mvPosition = modelViewMatrix * vec4( position + normal * heightMapScale, 1.0);
gl_Position = projectionMatrix * mvPosition;
地形看起来不错,但当我试图在上面添加对象时,阴影很奇怪。似乎顶点不知道它们的新位置:(

请转到以下链接获取截图和现场演示(很抱歉,我没有足够的声誉在这里发布图片)

截图:

现场演示:

可以看到左侧的立方体具有正确的阴影,而右侧的立方体没有,因为面在着色器中向上移动

有什么办法解决这个问题吗


谢谢gman,谢谢你的建议!确实应该修改更多的着色器。对于我的问题,worldpos_顶点中的worldPosition变量也应该更新:

// move the vertex position
"float fBump = position.x < 0. ? 0. : 350.;",
"vec4 newPosition = vec4( position + normal * fBump, 1.0);",
// to replace THREE.ShaderChunk[ "default_vertex" ]
"vec4 mvPosition = modelViewMatrix * newPosition;",
"gl_Position = projectionMatrix * mvPosition;",
// to replace THREE.ShaderChunk[ "worldpos_vertex" ]
"vec4 worldPosition = modelMatrix * newPosition;",
//移动顶点位置
“浮动泵=位置x<0.?0:350.;”,
“vec4 newPosition=vec4(位置+正常*fBump,1.0);”,
//替换三个.ShaderChunk[“默认顶点”]
“vec4 mvPosition=modelViewMatrix*newPosition;”,
“gl_位置=投影矩阵*mvPosition;”,
//替换三个。ShaderChunk[“worldpos_顶点”]
“vec4 worldPosition=modelMatrix*newPosition;”,

此处更新的演示:

我想这不是一个有用的答案,但您需要修改阴影渲染着色器以进行相同的高度贴图调整