three.js R71 - 移除了环境光,如何配置以获得相同的渲染结果?

three.js R71 - ambient removed, how configure to get same rendering results?

three.js r71 the ambient property has been removed from THREE.Material

之前我使用 ambient 来设置我在网格上使用的材质的正确渲染(光照)效果。现在我所有网格的外观都发生了巨大变化。

我怎样才能让我的材质渲染得和 r71 之前完全一样?

这里讨论这个问题:

https://github.com/mrdoob/three.js/issues/6501

或者您可以用较早的着色器覆盖 r71 着色器(或只使用三个较早版本的着色器)。

原因来了...

根据@WestLangley;我引用 his post in the discussion(link 来自@pprchsvr):

material.ambient was the ambient reflectance of the material. For real-world objects, it should normally match material.color, the diffuse reflectance of the material. (Objects, after all, do not know where the photons came from.)

We chose to simplify the API, and hardwire material.ambient to match material.color. Consequently, material.ambient has been removed.

这意味着您将无法再设置不同于 material 颜色的环境颜色,而且据我所知没有“快速修复”来为那些 materials 和以前一样。


  • 一个可能的解决方案是尝试通过 tuning/changing material 颜色和场景中的环境光使 material 像以前一样出现。
    另请参阅 THREE.AmbientLight and THREE.MeshBasicMaterial(和其他 material)的 three.js 文档以供参考。

  • 或者您可以使用 THREE.ShaderMaterial 创建您自己的着色器 material,您可以在其中(重新)创建一个允许您显式设置环境颜色的着色器。