Component({ behaviors: [require('../../common/share-behavior').default], properties: { a: Number, }, data: { loaded: false }, lifetimes: {}, methods: { handleReady({detail}) { const xrScene = this.scene = detail.value; console.log('xr-scene', xrScene); }, handleAssetsProgress: function({detail}) { console.log('assets progress', detail.value); }, handleAssetsLoaded: function({detail}) { console.log('assets loaded', detail.value); this.setData({loaded: true}); this.setBallon(); }, async setBallon() { const scene = this.scene; const xrSystem = wx.getXrFrameSystem(); // 替换贴图 const ballonElm = this.scene.getElementById('ballon'); const ballonGLTF = ballonElm.getComponent(xrSystem.GLTF); const textureAsset = await scene.assets.loadAsset({ type: 'texture', assetId: `texture-1`, src: 'https://webar.hereto.cn/asset/fe/ast-show/BalloonTEXc1.png', }); for(const mesh of ballonGLTF.meshes) { console.log('textureAsset', textureAsset.value); mesh.material.setVector('u_specularFactor', xrSystem.Vector3.createFromNumber(0, 0, 0)); mesh.material.setTexture('u_baseColorMap', textureAsset.value); } // 替换状态 const ballonBlendElm = this.scene.getElementById('ballonBlend'); const ballonBlendGLTF = ballonBlendElm.getComponent(xrSystem.GLTF); for(const mesh of ballonBlendGLTF.meshes) { // 清理模型金属度 mesh.material.setVector('u_specularFactor', xrSystem.Vector3.createFromNumber(0, 0, 0)); // 通过alphaMode 的 Setter 设置,或者写入renderState,但需要手动控制宏 mesh.material.alphaMode = "BLEND"; mesh.material.setVector('u_baseColorFactor', xrSystem.Vector4.createFromNumber(0, 0.5, 0, 0.5)); } } } })