首页 > 解决方案 > A-Frame & Three.js:彩色地图使对象变白

问题描述

我正在尝试为对象分配新材质,但是当我分配新的(颜色)贴图时,对象呈现为白色,并且 AO 和阴影不再显示。就好像自发光属性是 100%。我可以毫无问题地更改颜色属性(例如“红色”或“蓝色”)、ao、正常等。加载的 glb 已经有一个带有颜色图和 ao 的工作材料,但我希望能够替换它。

我正在使用带有 A-Frame 的 8th Wall,但我已将以下内容注册为自定义 Three.js 组件。

const customMat = {
  schema: {}, // will pass textures via aframe later
  init() {
    this.el.addEventListener('model-loaded', (e) => {

      const material = new THREE.MeshStandardMaterial()
      const texLoader = new THREE.TextureLoader()
      texLoader.crossOrigin = ''

      const mapColor = texLoader.load('assets/cover_color.jpg')
      const mapAO = texLoader.load('assets/cover_ao.jpg')

      material.map = mapColor  // makes everything 100% white likes it's emissive
      // material.color = new THREE.Color('red') // works fine no problem
      material.aoMap = mapAO
      material.aoMapIntensity = 1
    
      e.detail.model.traverse((mesh) => {
        if (mesh.isMesh) {
          mesh.material = material
          mesh.material.needsUpdate = true // not sure if needed
        }
      })
    })
  },
}
export {customMat}

任何建议将不胜感激。我也用原始几何体试过这个,但同样的问题发生了。我似乎也无法修改现有材料的属性,所以我的方法可能从根本上是错误的。

标签: three.jsaframe8thwall-xr

解决方案


推荐阅读