Два варианта:
1 Вы можете включить карту AO при экспорте из Blender , что требует некоторой настройки, поскольку узел Principled BSDF Blender не выполняетиметь вход AO.
2 Если вы хотите добавить текстуру AO отдельно, компонент material
не может изменять объекты, у которых уже есть материал, поэтому он не совместим сgltf-model
компонент.Для этого вам понадобится небольшой пользовательский компонент.Примерно так:
AFRAME.registerComponent('ao-map', {
schema: {
src: {default: ''}
},
init: function () {
var aoMap = new THREE.TextureLoader().load(this.data.src);
aoMap.flipY = false;
this.el.addEventListener('model-loaded', function(e) {
e.detail.model.traverse((o) => {
if (o.isMesh) {
o.material.aoMap = aoMap;
if (o.geometry.attributes.uv2 === undefined &&
o.geometry.attributes.uv !== undefined) {
o.geometry.addAttribute( 'uv2', new THREE.BufferAttribute( o.geometry.attributes.uv.array, 2 ) );
}
}
});
});
}
});
<a-entity gltf-model="..." ao-map="src: my-ao.png"></a-entity>