Aframe 1.0.4-设置scene.environment不会更新材质

问题描述

所以我在这里看到了一条旧帖子:

https://discourse.threejs.org/t/is-there-a-way-to-increase-scene-environment-map-exposure-without-affecting-unlit-materials/13458/4

这表示...“如果将env贴图应用于Scene.environment,它将自动用作场景中所有物理材质的环境贴图(假定未设置材质的env贴图)。”

因此,在场景中使用Aframe组件对此进行了尝试:

AFRAME.registerComponent('setenvironment',{
  init: function () {
    var sceneEl = this.el;
    var loader = new THREE.CubeTextureLoader();
    loader.setPath('./');

    var textureCube = loader.load([
      './images/py.png','./images/pz.png','./images/nx.png','./images/ny.png','./images/px.png','./images/nz.png'
    ]);
    textureCube.encoding = THREE.sRGBEncoding;
    sceneEl.object3D.environment = textureCube;
  }
});

已成功设置环境属性,但其他对象材质仍将envMap设置为null,并且环境照明对材质不起作用。

有什么想法吗?

解决方法

aframe 1.0.4使用three.js版本111dev。场景的environment属性是在修订版112(source)中引入的。

如果使用无框架master构建-好像是working properly(基于基于three.js r119的构建)。

否则,您将不得不遍历网格,并手动设置material.envMap属性。