<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.valueconsole.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 })
},