2016-06-14 122 views
0

我需要为所有场景投射阴影(DirectionalLight是最好的,是吧?),但质量很差,所以我正在尝试进行设置阴影:开/关,低,正常,高:Three.js阴影质量更新

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

回答

0

根据此链接:不能在运行时很容易地改变https://github.com/mrdoob/three.js/wiki/Updates

属性(一旦材料 呈现在至少一次):

  • 数字和类型的制服
  • 数量和类型的灯光
  • 存在或不存在的:质地,雾,顶点颜色,剥皮,变形,阴影贴图,alpha测试

变化这些都需要新的着色器程序的建设。您需要将material.needsUpdate标志设置为true。

+0

Thenk you for reply,but in does not help。问题是一样的:只是场景的一部分(在中心)有阴影.. [示例](https://s31.postimg.org/lmw07ztsb/image.png)以更好地理解 –

+0

@IgorErsgow好的。如果增加相机平面(顶部,右侧等),则还需要增加阴影贴图大小。如果你设置b = 8000,那么a = 8k(例如)。如果您需要随时更改阴影质量,我认为最简单的方法是制作几个光照实例并激活您选择的实例。 – arnaldof

+0

感谢您的回复!我明白你在说什么,但好像你没有得到任何问题。你能否请你看一个有问题的例子(最后一个链接)。在那里,我试图画出问题....我也想过几个灯光,但我认为这不是制作高质量全景画阴影的最佳方法。 –