考虑到阴影投射的成本,我想知道是否有一个特征或可能/实验方法在three.js中渲染一个阴影贴图(即使在webgl中),对于动态定位的静态对象(例如:程序)市)。因此,结果可以在静态对象的下一帧中使用,而不需要任何费用。阴影渲染只有在某些东西移动时才会完成。
答案 0 :(得分:3)
修改
mrdoobs批准:
renderer.shadowMap.autoUpdate = false;
renderer.shadowMap.needsUpdate = true; // when scene changes
原始答案:
我找到了自己的方式:我复制了verticesNeedUpdate
的工作方式。我在WebGLRenderer中添加了shadowMapNeedsUpdate = true
参数。在ShadowMapPlugin的渲染函数中,我检查此参数是否为真,并在以下情况下将其设置为false:
if( _renderer.shadowMapEnabled===false || _renderer.shadowMapNeedsUpdate===false ) return; _renderer.shadowMapNeedsUpdate = false
这样,阴影贴图在第一次渲染时渲染一次,如果场景需要实时阴影贴图,则必须在渲染循环中对其进行精确处理。否则计算能力被释放