首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Three.js阴影质量更新

Three.js阴影质量更新
EN

Stack Overflow用户
提问于 2016-06-15 06:55:28
回答 2查看 960关注 0票数 0

我需要制作灯光(太阳)来投射阴影到所有场景(DirectionalLight是最好的,对吧?),但质量不好,所以我尝试设置阴影:开/关,低,正常,高:

A= 512 ... 8192;b= 300 ... 8000

代码语言:javascript
代码运行次数:0
运行
复制
    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

尝试查看更改,但都不起作用:

代码语言:javascript
代码运行次数:0
运行
复制
light.shadow.camera.updateProjectionMatrix(); - shadows disappear at all
scene.updateMatrixWorld();
camera.updateProjectionMatrix();
camera.updateMatrixWorld();
camera.updateMatrix();

有没有更好的晒太阳的方法?以及如何重新绘制阴影?

添加一个示例以更好地理解我的意思-> Example

EN

回答 2

Stack Overflow用户

发布于 2016-06-17 06:20:33

根据此链接:https://github.com/mrdoob/three.js/wiki/Updates

在运行时不易更改的

属性(材质至少渲染一次):

alpha测试uniforms

  • numbers的数量和类型以及lights

  • presence的类型:纹理、雾、顶点颜色、蒙皮、变形、阴影贴图、

在这些方面的更改需要构建新的着色器程序。您需要将material.needsUpdate标志设置为true。

票数 0
EN

Stack Overflow用户

发布于 2020-04-29 09:44:39

如果你想在运行时改变影子mapSize,你必须使用dispose()

代码语言:javascript
代码运行次数:0
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37823427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档