<xr-assets bind:progress="handleAssetsProgress" bind:loaded="handleAssetsLoaded">
<xr-asset-load type="gltf" asset-id="gltf-item" src="{{url}}/scene.glb" />
<xr-asset-load type="gltf" asset-id="anchor" src="https://mmbizwxaminiprogram-1258344707.cos.ap-guangzhou.myqcloud.com/xr-frame/demo/ar-plane-marker.glb" />
<xr-asset-material asset-id="standard-mat" effect="standard" />
</xr-assets>
代码中为两个glb加载,其中官方文档给出的内容可以顺利加载到本地:
我自己的云端文件加载内容如下:
请问为什么加载不出来glb文件
感觉这里很大概率是 url 设置的时机问题,xr-asset-load 不允许动态改动字段。
如果需要根据 url 动态加载,建议使用脚本
// gltf加载参考脚本 async loadGLTF(gltfList) { const scene = this.scene const gltfModel = await Promise.all(gltfList.map(gltfItem => scene.assets.loadAsset({ type: 'gltf', assetId: 'gltf-' + gltfItem.id, src: gltfItem.url, }))) console.log('glTF asset loaded') this.setData({ gltfLoaded: true }) }
<xr-scene bind:ready="handleReady">
methods: {
handleReady: function({ detail }) {
this.scene = detail.value
console.log('scene ready')
// 加载场景资源
try {
this.loadGLTF(this.data.gltfResList)
} catch (err) {
console.log('[gltf load] error: ', err)
}
}
}
执行后,能显示 'glTF asset loaded'
但在场景中没有将模型显示出来,是不是少了什么指令
async loadGLTF(gltfList) {
console.log(mSceen);
const gltfModel = await Promise.all(gltfList.map(gltfItem => mSceen.assets.loadAsset({
type: 'gltf',
assetId: 'gltf-' + gltfItem.id,
src: gltfItem.url,
})))
console.log('glTF asset loaded')
vThis.setData({ gltfLoaded: true })
},