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 如何动态切换";“接受阴影”;在3.js中?_Javascript_Three.js - Fatal编程技术网

Javascript 如何动态切换";“接受阴影”;在3.js中?

Javascript 如何动态切换";“接受阴影”;在3.js中?,javascript,three.js,Javascript,Three.js,我有一个带有简单用户界面的3.js场景。复选框表示对象receiveShadow属性的布尔值。在运行时,当我切换此复选框时,它不会反映场景中的更改 如果我对castShadow执行完全相同的操作,则确实有效 您可能需要的一些导入代码片段: renderer.shadowMapEnabled=true material.needsUpdate=true 如何为receiveShadow启用此功能?如果动态切换receiveShadow属性,则必须为材质设置needsUpdate标志 mesh.re

我有一个带有简单用户界面的3.js场景。复选框表示对象
receiveShadow
属性的布尔值。在运行时,当我切换此复选框时,它不会反映场景中的更改

如果我对
castShadow
执行完全相同的操作,则确实有效

您可能需要的一些导入代码片段:
renderer.shadowMapEnabled=true
material.needsUpdate=true


如何为
receiveShadow
启用此功能?

如果动态切换
receiveShadow
属性,则必须为材质设置
needsUpdate
标志

mesh.receiveShadow = true; // or false
mesh.material.needsUpdate = true;

然后,渲染器将
needsUpdate
标志重置为
false


three.js r.73

Ok我现在在网格初始化后添加了
mesh.material.needsUpdate=true
。但是,当我记录
mesh.material
时,
needsUpdate
属性始终设置为
false
,即使我明确将其设置为
true
。有什么线索吗?
needsUpdate
标志在
renderer.render()
中的渲染器更新材质后重置为
false
。啊,这对我来说是一个关键时刻!每次更改后,我通过调用
mesh.material.needsUpdate=true
解决了这个问题。谢谢你的帮助@Westlangley这些事情都不是凭直觉的。为什么不让三个人来检测变化呢?例如,
obj.receiveShadow
可以是一个getter/setter,它可以自动修改
obj.material.needsUpdate
。。。或者别的什么。。。