我正在尝试为对象分配新材质,但是当我分配新的(颜色)贴图时,对象呈现为白色,并且 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}
任何建议将不胜感激。我也用原始几何体试过这个,但同样的问题发生了。我似乎也无法修改现有材料的属性,所以我的方法可能从根本上是错误的。