Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 ThreeJS更新缓冲区几何体的阴影_Javascript_Three.js_Shadow - Fatal编程技术网

Javascript ThreeJS更新缓冲区几何体的阴影

Javascript ThreeJS更新缓冲区几何体的阴影,javascript,three.js,shadow,Javascript,Three.js,Shadow,我在ThreeJS中加载了一个model.gltf,其中包含一个改变对象形状的关键帧动画(这是一个点级动画)。工作正常,但阴影不会改变! 我使用了geometry.computeVertexNormals(),但当我应用它时,我的模型变成了黑色 有人能帮我做这个吗 谢谢, Simone应该没有理由调用BufferGeometry.computeVertexNormals()。可以通过执行以下操作来启用阴影投射: gltf.scene.transverse(函数(对象){ if(object.is

我在ThreeJS中加载了一个model.gltf,其中包含一个改变对象形状的关键帧动画(这是一个点级动画)。工作正常,但阴影不会改变! 我使用了
geometry.computeVertexNormals()
,但当我应用它时,我的模型变成了黑色

有人能帮我做这个吗

谢谢,
Simone

应该没有理由调用
BufferGeometry.computeVertexNormals()
。可以通过执行以下操作来启用阴影投射:

gltf.scene.transverse(函数(对象){
if(object.isMesh){
object.castShadow=true;
}
}
如果模型也应接收阴影,请将属性
receiveShadows
也设置为
true

您还需要在渲染器上启用阴影,正确配置灯光的阴影摄影机,并确保地板具有可以接收阴影的材质(例如,非
MeshBasicMaterial
)。以下示例可能是一个很好的方向:


应该没有理由调用
BufferGeometry.computeVertexNormals()
。您可以通过执行以下操作来启用阴影投射:

gltf.scene.transverse(函数(对象){
if(object.isMesh){
object.castShadow=true;
}
}
如果模型也应接收阴影,请将属性
receiveShadows
也设置为
true

您还需要在渲染器上启用阴影,正确配置灯光的阴影摄影机,并确保地板具有可以接收阴影的材质(例如,非
MeshBasicMaterial
)。以下示例可能是一个很好的方向:


实际上,我的对象已经投射了阴影,它只是在形状更改时不会更新:如果我导出带有最后一个关键帧的模型(变形对象)阴影是不同的,这意味着它只在init上工作…如果有帮助的话,我可以提供一些屏幕…你也可以分享一个吗?很抱歉回复太晚,但我现在在澳大利亚,有不同的时区。我在两个JSFIDLE上工作:这不是我的模型,但动画非常相似。第一个示例显示了s阴影随着顶点的改变而改变(您也可以尝试改变灯光的位置)第二个,这就是我的模型发生的情况(我删除了这行代码sphere.geometry.computeVertexNormals();)但是如果我将computeVertexNormals添加到我的几何体中,我的模型会完全变黑!你知道为什么吗?我没有提到这一点,也许会有所帮助:我正在使用BufferGeometry,而在我提供的小提琴中是SphereGeometry。这会有很大的不同吗?实际上我的对象已经投射了阴影,当形状为c时它不会更新hange:如果我导出带有最后一个关键帧(变形对象)的模型阴影是不同的,这意味着它只在init上工作…如果有帮助的话,我可以提供一些屏幕…你也可以分享一个吗?很抱歉回复太晚,但我现在在澳大利亚,有不同的时区。我在两个JSFIDLE上工作:这不是我的模型,但动画非常相似。第一个示例显示了s阴影随着顶点的改变而改变(您也可以尝试改变灯光的位置)第二个,这就是我的模型发生的情况(我删除了这行代码sphere.geometry.computeVertexNormals();)但是如果我将computeVertexNormals添加到我的几何体中,我的模型会完全变黑!你知道为什么吗?我没有提到这一点,也许可以帮上忙:我正在使用BufferGeometry,而我提供的小提琴是SphereGeometry。这会有很大的不同吗?