uniapp微信小程序3D XR-FRAME
1.在pages.json中配置展示页面(style中添加下面:)
"usingComponents": {
"xr-start": "../../wxcomponents/xr-start"
}
2.manifest.json中配置mp-weixin
"setting" : {
"urlCheck" : false,
"postcss" : true,
"es6" : true,
"minified" : true
},
"usingComponents" : true,
"lazyCodeLoading" : "requiredComponents",
3.pege文件同级依次建立文件wxcomponenrs/xr-start/(index.js、index/json、index/wxml)
4.index.js
// index.js
Component({
properties: {},
data: {},
methods: {},
});
5. index.json
{
"component": true,
"renderer": "xr-frame",
"usingComponents":{}
}
6. index.wxml(页面3d渲染内容,详情参考文档)
<xr-scene>
<xr-assets bind:progress="handleAssetsProgress" bind:loaded="handleAssetsLoaded">
<xr-asset-load type="gltf" asset-id="damage-helmet" src="/static/gltf/lou.gltf" /></xr-assets>
<xr-light type="ambient" color="1 1 1" intensity="1" />
<xr-light type="directional" rotation="40 70 0" color="1 1 1" intensity="3" cast-shadow /><xr-gltf node-id="damage-helmet" model="damage-helmet" />
<xr-gltf model="miku" position="-0.15 0.75 0" scale="0.07 0.07 0.07" rotation="0 180 0" anim-autoplay /><xr-camera
position="0 15 60" target="damage-helmet" background="skybox"
clear-color="0.4 0.8 0.6 1" camera-orbit-control
/>
</xr-scene>
7. 页面.vue
<template>
<view style="display: flex; flex-direction: column">
<xr-start
id="main-frame"
disable-scroll
:width="renderWidth"
:height="renderHeight"
:style="'width:' + width + 'px;height:' + height + 'px;'"
>
</xr-start>
</view>
</template>
<script>
export default {
data() {
return {
width: 300,
height: 300,
renderWidth: 300,
renderHeight: 300,
};
},
onLoad(option) {
this.width = uni.getWindowInfo().windowWidth;
this.height = uni.getWindowInfo().windowHeight;
const dpi = uni.getWindowInfo().pixelRatio;
this.renderWidth = this.width * dpi;
this.renderHeight = this.height * dpi;
},
mounted() {},
methods: {},
};
</script>