我需要制作灯光(太阳)来投射阴影到所有场景(DirectionalLight是最好的,对吧?),但质量不好,所以我尝试设置阴影:开/关,低,正常,高:
A= 512 ... 8192;b= 300 ... 8000
light.castShadow = checked; - no update (but if reload an objects it is work)
light.shadow.mapSize.width/height = a; - this works
light.shadow.camera.top/bottom/left/right = b; - no updating
尝试查看更改,但都不起作用:
light.shadow.camera.updateProjectionMatrix(); - shadows disappear at all
scene.updateMatrixWorld();
camera.updateProjectionMatrix();
camera.updateMatrixWorld();
camera.updateMatrix();
有没有更好的晒太阳的方法?以及如何重新绘制阴影?
添加一个示例以更好地理解我的意思-> Example
发布于 2016-06-17 06:20:33
根据此链接:https://github.com/mrdoob/three.js/wiki/Updates
在运行时不易更改的
属性(材质至少渲染一次):
alpha测试uniforms
在这些方面的更改需要构建新的着色器程序。您需要将material.needsUpdate标志设置为true。
发布于 2020-04-29 09:44:39
如果你想在运行时改变影子mapSize,你必须使用dispose()
light.shadow.map.dispose()
light.shadow.map = null
let s = 1024
light.shadow.mapSize = new THREE.Vector2(s, s)
https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects
https://stackoverflow.com/questions/37823427
复制相似问题