uniApp中使用小程序XR-Frame创建3D场景(1)环境搭建
1.XR-Frame简介
XR-Frame作为微信小程序官方推出的3D框架,是目前所有小程序平台中3D效果最好的一个,由于其本身针对微信小程序做了优化,在性能方面比其他第三方库都要高很多。
2.与Three.js的区别
做3D小程序的同学们对Three.js一定不陌生,这是个跨平台的3D前端框架,使用广泛,但是针对微信小程序的优化并不理想,而且库文件本身比较大,由于小程序的内存限制,一旦加载的3D文件过多,非常容易造成卡顿。
既然微信小程序端推出了XR-Frame,我们就应该积极的去熟悉这个框架,做出更好用的小程序。
3.在uniApp中创建XR-Frame组件

(1)新建wxcomponents文件夹
上图是我的项目目录,首先在与pages同级目录下,创建wxcomponents文件夹,这个文件夹就是要调用的xr-frame组件目录。
(2)在 wxcomponents 文件夹下创建 xr-start 目录
这个目录是我们要在其他页面调用xr-frame时需要使用的组件名称,这里我们先创建好。
(3)在 xr-start 目录下创建 index.js index.json index.wxml 三个文件
这三个文件分别代表了xr-frame的逻辑,配置,以及视图文件。下面是分别是这三个文件中的代码
index.js
这个js文件中以后要做一些对于属性的设置以及组件方法的编写。
// index.js
Component({properties: {},data:{},methods: {}
})
index.json
这个json配置文件就是告诉系统要采用xr-frame框架渲染。
{"component": true,"renderer": "xr-frame","usingComponents":{}
}
index.wxml
这个wxml文件是我们使用xr-frame的主要文件,我们先简单的只添加一个摄像机。
<xr-scene><xr-camera id="camera" clear-color="0.2 0.4 0.6 1" camera-orbit-control/>
</xr-scene>
(4) 创建完上面三个文件后,我们还需要修改 manifest.json 文件,切换到源码视图
修改微信相关设置
"mp-weixin" : {"appid" : "你的appid","setting" : {"urlCheck" : false,"postcss" : true,"es6" : true,"minified" : true},"usingComponents" : true,"lazyCodeLoading" : "requiredComponents"},
(5)修改pages.json文件中的配置
这里就是在你需要调用组件的页面上加入 usingComponents 设置。比如我在页面demo中加入如下配置
"pages": [ {"path" : "pages/demo/demo","style" : {"navigationBarTitleText" : "","enablePullDownRefresh" : false,"usingComponents": {"xr-start": "../../wxcomponents/xr-start"},"disableScroll": true}}],
到这里环境就配置好了,接下来我们看看如何在页面中使用XR-Frame
4.在项目中使用XR-Frame
这里我以demo.vue页面为例。
1 在view标签中直接加上xr-start标签即可引入
<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>
2 在data中设置一下默认的宽高
data() {return {width:300,height:300,renderWidth:300,renderHeight:300,}
},
3 在onLoad函数中获取屏幕大小,将xr-frame设置为全屏大小
onLoad(option){this.width = uni.getWindowInfo().windowWidththis.height = uni.getWindowInfo().windowHeightconst dpi = uni.getWindowInfo().pixelRatiothis.renderWidth = this.width * dpithis.renderHeight = this.height * dpi},
4 我们运行到小程序模拟器
这时我们应该能看到一个页面为蓝色的页面(camera中设置的color是蓝色),这说明xr-frame框架可以正常运行了。

下一篇我们讲解,如何在xr-frame中加载模型以及模型的优化。
相关文章:
uniApp中使用小程序XR-Frame创建3D场景(1)环境搭建
1.XR-Frame简介 XR-Frame作为微信小程序官方推出的3D框架,是目前所有小程序平台中3D效果最好的一个,由于其本身针对微信小程序做了优化,在性能方面比其他第三方库都要高很多。 2.与Three.js的区别 做3D小程序的同学们对Three.js一定不陌生…...
AI基础知识(4)--贝叶斯分类器
1.什么是贝叶斯判定准则(Bayes decision rule)?什么是贝叶斯最优分类器(Bayes optimal classifier)? 贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险最小的…...
填补市场空白,Apache TsFile 如何重新定义时序数据管理
欢迎全球开发者参与到 Apache TsFile 项目中。 刚刚过去的 2023 年,国产开源技术再次获得国际认可。 2023 年 11 月 15 日,经全球最大的开源软件基金会 ASF 董事会投票决议,时序数据文件格式 TsFile 正式通过,直接晋升为 Apache T…...
Docker 笔记(七)--打包软件生成镜像
目录 1. 背景2. 参考3. 文档3.1 使用docker container commit命令构建镜像3.1.1 [Docker官方文档-docker container commit](https://docs.docker.com/reference/cli/docker/container/commit/)Description(概述)Options(选项)Exa…...
图论06-飞地的数量(Java)
6.飞地的数量 题目描述 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法…...
Java设计模式之单例设计模式
单例设计模式就是保证整个软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得该对象的方法。 单例设计模式包括两种:饿汉式和懒汉式。 饿汉式: 含义: 在类加载时就创建并初始化单例对象。这种方式确保了…...
多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测
多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测 目录 多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.M…...
深入了解Android垃圾回收机制
文章目录 一、内存分配二、垃圾回收触发条件三、GC算法3.1 Dalvik虚拟机的GC算法3.2 ART的GC算法 四、优化GC性能五、监控GC耗时情况六、总结 在Android应用开发中,内存管理和垃圾回收(GC)对于应用性能和稳定性至关重要。理解GC机制有助于我们…...
如何学好Python语言
学习Python:一场充满探索与实践的编程之旅 Python,作为一种解释型、交互式和面向对象的编程语言,近年来在数据科学、人工智能、Web开发等多个领域得到了广泛的应用。掌握Python,不仅可以提升个人的编程技能,还能够为未…...
计算机408网课评测+资料分享
408当然有比较好的网课推荐,比如王道的视频课 现在大部分人备战408基本都用王道的讲义,然后再搭配王道408的课程来听,可以学的很好。 其中408视频课中,我认为讲的比较好的是数据结构,和操作系统,计算机组…...
使用 ZipArchiveInputStream 读取压缩包内文件总数
读取压缩包内文件总数 简介 ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,Z…...
JavaScript对象修饰教程
在JavaScript中,对象修饰是一种常见的编程模式,用于动态地向对象添加新的功能或修改现有功能,同时保持对象的原始结构不变。对象修饰可以帮助我们实现代码的复用、扩展和维护,让代码更加灵活和可扩展。本文将深入探讨JavaScript对…...
转置卷积(transposed-conv)
一、什么是转置卷积 1、转置卷积的背景 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作。这个将图像由小分辨率映射到大分辨率的尺寸恢复操作,…...
P1481 魔族密码
P1481 魔族密码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 字典树 在插入字符串 s s s时,不断记录 s 0... k s_{0...k} s0...k的个数取最大即可。 #include <bits/stdc.h> using namespace std; const int N 1e5 21; int cnt[N], tr[N][30], idx,…...
无人机/飞控--ArduPilot、PX4学习记录(2)
这是一篇碎碎念,零零碎碎的记录了环境配置过程,仅供本人记录学习历程和参考。(记录的挺乱的,但是文章链接里的博客写的是真好) 本章主要完成的目标: 安装PX4 并 成功运行出3D无人机界面。 参考文章: 搭建PX4环境&…...
【Arxml专题】-29-使用Cantools将CAN Matrix Arxml自动生成C语言代码
目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 CAN Matrix Arxml自动生成C语言代码 2.1 批处理文件CAN_Matrix_Arxml_To_C.bat内容说明 2.2 CAN Matrix Arxml文件要求 2.3 如何…...
【id:21】【20分】E. 抄袭查找(结构体+指针+函数)
题目描述 已知一群学生的考试试卷,要求对试卷内容进行对比,查找是否有抄袭。 每张试卷包含:学号(整数类型)、题目1答案(字符串类型)、题目2答案(字符串类型)、题目3答案…...
ASP.NET-常用控件总结
一、ASP.NET基础控件 1、asp:TextBox (输入框) ASP.NET TextBox 控件用于接收用户输入。 <asp:TextBox ID"txtInput" runat"server"></asp:TextBox>2、asp:DropDownList (下拉框) ASP.NET DropDownList 控件用于提供一个下拉列表供用户选择…...
SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决
😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决 ⏱️ 创作时间&a…...
MQTT Keep Alive机制
MQTT 协议是承载于 TCP 协议之上的, 而 TCP 协议以连接为导向, 在连接双方之间, 提供稳定、 有序的字节流功能。 但是, 在部分情况下, TCP 可能出现半连接问题。 所谓半连接, 是指某一方的连接已经断开或者…...
别再死记硬背Payload了!我用XSS-Game靶场,带你拆解18种过滤规则背后的绕过逻辑
从XSS-Game靶场实战中掌握18种过滤规则的逆向思维在网络安全领域,跨站脚本攻击(XSS)始终是Web应用面临的主要威胁之一。许多开发者虽然了解XSS的基本概念,但当面对各种复杂的过滤规则时,往往不知如何系统分析并构造有效…...
从零到上机:我的第一个Quest 3空间锚点应用是如何跑起来的(附完整Unity工程)
从零到上机:我的第一个Quest 3空间锚点应用是如何跑起来的(附完整Unity工程)第一次戴上Meta Quest 3时,那种虚拟与现实交织的震撼感至今难忘。但作为开发者,更让我着迷的是如何让虚拟物体在真实空间中"记住"…...
flameshow性能优化技巧:如何快速定位Go程序中的CPU热点
flameshow性能优化技巧:如何快速定位Go程序中的CPU热点 【免费下载链接】flameshow A terminal Flamegraph viewer. 项目地址: https://gitcode.com/gh_mirrors/fl/flameshow 🔥 想要快速定位Go程序中的性能瓶颈吗?flameshow是一个强大…...
ComfyUI-Manager完整指南:如何轻松管理你的AI工作流扩展库
ComfyUI-Manager完整指南:如何轻松管理你的AI工作流扩展库 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various c…...
全球无障碍宣传日:iOS 26 辅助功能大升级,这些实用小功能你用过吗?
辅助功能发展与升级很多人对辅助功能的印象还停留在 "小白点",但随着 iPhone 进入全面屏时代,它逐渐变得陌生。实际上,Apple 每年都会为其增添功能,方便身体有障人士使用 iPhone。而且,这些功能不仅惠及有障…...
别再手动维护接口文档了!用Spring Boot 3和Swagger 3实现代码与文档的自动同步
Spring Boot 3与Swagger 3:构建零维护成本的API文档工作流 每次接口变更都要手动更新文档?团队成员总是抱怨文档与实际接口不一致?在敏捷开发时代,传统文档维护方式已成为拖累工程效率的典型痛点。本文将揭示如何通过Spring Boot …...
正视孩童情绪波动,耐心陪伴平稳疏导
孩子的情绪就像夏天的天气,前一秒还晴空万里,后一秒可能就乌云密布。面对突如其来的哭闹、发脾气或者闷闷不乐,很多家长会急着“灭火”——要么讲道理,要么直接制止。但其实,情绪波动本身不是问题,它是孩子…...
手机也能玩转无人机仿真:用安卓QGC App连接同一WiFi下的PX4 JMAVSim模拟器
手机也能玩转无人机仿真:用安卓QGC App连接同一WiFi下的PX4 JMAVSim模拟器 无人机开发者和爱好者们,是否曾想过用手机就能完成整个无人机仿真测试流程?告别笨重的电脑束缚,只需一部安卓设备,就能在沙发上调试飞控算法。…...
在github上快速接入taotoken大模型api的python调用教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在GitHub上快速接入Taotoken大模型API的Python调用教程 对于希望快速集成大模型能力的开发者而言,找到一个统一、便捷的…...
在多模型聚合场景下利用Taotoken实现API调用的自动降级与容灾
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在多模型聚合场景下利用Taotoken实现API调用的自动降级与容灾 对于依赖大模型API的生产系统而言,服务的连续性与稳定性…...
