首页 > 解决方案 > 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,它会自动用作场景中所有物理材质的环境贴图(假设未设置材质的 envmap)。”

因此,在场景中使用 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,环境光照对材质没有影响。

有任何想法吗?

标签: aframeenvironmentpbr

解决方案


aframe 1.0.4 使用 three.js 修订版 111dev。在修订版 112(来源environment中引入了场景的属性。

如果您使用 aframe构建 - 它似乎工作正常(因为它基于 three.js r119)。

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


推荐阅读