Javascript 如何动态切换";“接受阴影”;在3.js中?
我有一个带有简单用户界面的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
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.73Ok我现在在网格初始化后添加了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
。。。或者别的什么。。。