当前位置: 首页 > article >正文

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>


http://www.kler.cn/a/287950.html

相关文章:

  • WebChromeClient 方法分类及其功能
  • vue3【实战】切换全屏【组件封装】FullScreen.vue
  • Spring:bean的配置
  • Spring Boot3 实战案例合集上线了
  • windows@多系统引导名字修改@默认引导系统修改@bcdedit配置
  • @Autowired和@Resource的区别
  • 机器学习之监督学习(二)逻辑回归(二元分类问题)
  • 【ESP32】mqtt 发送和接收
  • 半导体是什么?
  • Spark MLlib模型训练—回归算法 Random forest regression
  • 【uniapp重大bug】uni-data-select的localdata改变,也会触发@change方法
  • Unity(2022.3.41LTS) - UI简介,了解
  • 鸿蒙(API 12 Beta3版)【媒体资源使用指导】Media Library Kit媒体文件管理服务
  • PHP高效进销存管理系统智能管理库存销售与采购系统小程序源码
  • Java 实现二叉树展平为链表
  • python打包 exe 提示no module named flask
  • 关于zotero无法识别拖入的pdf和caj的题录信息
  • 安全随机数生成指南
  • 38次8.28(docker03:容器网络,主从镜像)
  • 23种设计模式之代理模式
  • 如何写接口自动化测试断言?
  • SpringBoot 数据访问-jpa
  • 【CSS】如何写渐变色文字并且有打光效果
  • 嵌入式系统基础知识介绍
  • DAY65
  • 基于STM32和OpenCV的车载智能导航系统:实现实时交通标志与信号识别与预警(代码示例)