【MR开发】在Pico设备上接入MRTK3(三)——在Unity中运行MRTK示例

在前面的文档中,介绍了如何在Unity工程中配置号MRTK和Pico SDK

  • 【MR开发】在Pico设备上接入MRTK3(一)在Unity中导入MRTK3依赖
  • 【MR开发】在Pico设备上接入MRTK3(二)在Unity中配置Pico SDK

本文将介绍如何运行一个简单的带有MRTK的示例


以下正文


导入MRTK示例

导入目的

这里我们主要是需要MRTK中手部相关预制件和部分UI示例。

快捷导入

导入MRTK示例场景的Unitypackage,下载地址

注意事项

  • 这个package不包含MRTK3的相关依赖,需确保在这之前已成功导入MRTK3。
  • 出现TMP Importer的弹窗,点击Import导入TMP
  • 部分资源有缺失,去掉这些资源。(因为这个暂时用不上)

例如,去掉下图中的MRTK_Logo等对象
在这里插入图片描述

接入Pico的手部模型

打开示例场景

打开Assests/Scenes/SampleScene.unity
在这里插入图片描述

修改手部模型

  1. 修改“MRTK RightHand Controller”组件的Model设置。

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
2. 同理,修改另外一个手部模型
3. 禁用Pico的默认射线对象
禁用Ray对象

若不禁用,则会出现MRTK的射线与Pico的手部射线对象同时存在的情况

注意
Pico SDK文档中介绍,将手部预制件(如HandLeft)添加到“XR-Rig”->“Camera Offest”的节点下面。而当接入MRTK后,请勿添加。否则场景中会出现多个手部模型。

修改组件

注意:若是采用前文的整合包资源,则无需这个步骤。我已做修改。
下载地址:MRTK3整合包下载链接

修改MRTK的脚本

这里参考了MRTK3在PICO4上的使用小结
这里会用到之前设置的“PICO_INSTALL”,采用条件编译

  1. 修改ArticulatedHandController
    在这里插入图片描述

此脚本挂载于MRTK XR Rig下的MRTK LeftHand Controller和MRTK RightHand Controller物体上。修改其中的UpdateInput方法,添加条件编译指令,示例如下:

        /// <inheritdoc />protected override void UpdateInput(XRControllerState controllerState){//...// Debounce the polyfill pinch action value.bool isPinched = pinchAmount >= (pinchedLastFrame ? 0.9f : 1.0f);#if !PICO_INSTALL// Inject our own polyfilled state into the Select state if no other control is bound.if (!selectAction.action.HasAnyControls() || isTrackingStatePolyfilled){controllerState.selectInteractionState.active = isPinched;controllerState.selectInteractionState.activatedThisFrame = isPinched && !pinchedLastFrame;controllerState.selectInteractionState.deactivatedThisFrame = !isPinched && pinchedLastFrame;}if (!selectActionValue.action.HasAnyControls() || isTrackingStatePolyfilled){controllerState.selectInteractionState.value = pinchAmount;}// Also make sure we update the UI press state.if (!uiPressAction.action.HasAnyControls() || isTrackingStatePolyfilled){controllerState.uiPressInteractionState.active = isPinched;controllerState.uiPressInteractionState.activatedThisFrame = isPinched && !pinchedLastFrame;controllerState.uiPressInteractionState.deactivatedThisFrame = !isPinched && pinchedLastFrame;}if (!uiPressActionValue.action.HasAnyControls() || isTrackingStatePolyfilled){controllerState.uiPressInteractionState.value = pinchAmount;}pinchedLastFrame = isPinched;
#elsecontrollerState.selectInteractionState.active = isPinched;controllerState.selectInteractionState.activatedThisFrame = isPinched && !pinchedLastFrame;controllerState.selectInteractionState.deactivatedThisFrame = !isPinched && pinchedLastFrame;controllerState.selectInteractionState.value = pinchAmount;controllerState.uiPressInteractionState.active = isPinched;controllerState.uiPressInteractionState.activatedThisFrame = isPinched && !pinchedLastFrame;controllerState.uiPressInteractionState.deactivatedThisFrame = !isPinched && pinchedLastFrame;controllerState.uiPressInteractionState.value = pinchAmount;pinchedLastFrame = isPinched;
#endif}// Cast to expose hand state.//...}}

添加PXR组件

添加PXR_Manager,并启用手势追踪
在这里插入图片描述

运行示例场景

运行截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 安装sql server 登陆失败

错误&#xff1a; Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]. Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish co…

【virtuoso】sp测电阻

电路测量原理&#xff1a; 1. 电路原理图 2. 仿真设置 点击select&#xff0c;在原理图选择port设置sp扫频范围 3. plot图像 3.1 plot电阻图像 由公式可得&#xff0c;电阻值为阻抗的实部&#xff0c;所以 1. 选择 ZP 2. 绘制real 3. 点击Z11 4. 即可看到电阻值 3.2 plot电容图…

C++第七讲:STL--list的使用及模拟实现

C第七讲&#xff1a;STL--list的使用及模拟实现 1.list的使用1.1list是什么1.2构造、析构、赋值运算符重载1.3迭代器1.4empty、size、max_size1.5front、back1.6assign -- 代替1.7push_back和emplace_back1.8emplace1.9insert、erase、swap、resize、clear1.10find1.11splice1.…

CSDN Markdown 编辑器语法大全

Markdown 是一种轻量级标记语言&#xff0c;它以简洁、易读易写的特点&#xff0c;被广泛应用于技术文档、博客文章、笔记等领域。CSDN 的 Markdown 编辑器为用户提供了丰富的功能&#xff0c;让用户能够轻松地创建格式规范、内容丰富的文档。以下是一份详细的 CSDN Markdown 编…

大数据治理--法规遵从与隐私保护

目录 ​编辑一、国际及地方数据保护法规 1.1 国际数据保护法规 1.1.1 欧盟《通用数据保护条例》&#xff08;GDPR&#xff09; 1.1.2 美国《加州消费者隐私法案》&#xff08;CCPA&#xff09; 1.1.3 中国《网络安全法》及《个人信息保护法》 1.2 地方数据保护法规 二、…

深入解析缓存技术

文章目录 1. 缓存基本原理2. 缓存更新机制2.1 Cache Aside模式2.2 Read/Write Through2.3 Write Behind Caching2.4 对比总结 3. 缓存数据过期策略3.1 最近最少使用&#xff08;Least Recently Used, LRU&#xff09;算法3.2 先进先出&#xff08;First-In-First-Out, FIFO&…

OpenCV高级图形用户界面(10)创建一个新的窗口函数namedWindow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 创建一个窗口。 函数 namedWindow 创建一个可以作为图像和跟踪条占位符的窗口。创建的窗口通过它们的名字来引用。 如果已经存在同名的窗口&am…

linux线程 | 全面理解同步与互斥 | 同步

前言&#xff1a;本节内容主要讲解linux下的同步问题。 同步问题是保证数据安全的情况下&#xff0c;让我们的线程访问具有一定的顺序性。 线程安全就规定了它必须是在加锁的场景下的&#xff01;&#xff01;那么&#xff0c; 具体什么是同步问题&#xff0c; 我们加下来看看吧…

lesson01 Backtrader是什么

[Backtrader]专题连载 Backtrader是什么&#xff1f; Backtrader 是 2015 年开源的 Python 量化回测框架&#xff08;支持实盘交易&#xff09;。专注于为量化交易策略提供回测和实盘交易功能。它允许用户集中精力编写可复用的交易策略、指标和分析工具&#xff0c;而无需花费…

衡石分析平台系统分析人员手册-可视化报表仪表盘

仪表盘​ 仪表盘是数据分析最终展现形式&#xff0c;是数据分析的终极展现。 应用由一个或多个仪表盘展示&#xff0c;多个仪表盘之间有业务关联。 仪表盘编辑​ 图表列表​ 打开仪表盘后&#xff0c;就会看到该仪表盘中所有的图表。 调整图表布局​ 将鼠标移动到图表上拖动…

能源领域新政策,我们应该关注什么?

近日&#xff0c;国家发展改革委和国家能源局联合发布了《能源重点领域大规模设备更新实施方案》的通知。该方案指出&#xff0c;能源科技领域是大规模设备更新和消费品以旧换新行动实施的关键领域。 《方案》设定了到2027年&#xff0c;能源重点领域设备投资规模较2023年增长2…

CentOS 8 Stream环境下通过yum安装Mysql

1.在Mysql下载页面MySQL :: Download MySQL Community Server页尾 点击 “MD5 checksums and GnuPG signatures” 进入下一页面 2.打开下载yum repo文件页面 (MySQL :: Download MySQL Yum Repository) 3.点击"DownLoad"按钮&#xff0c;打开下载页面&#xff0c; 4.…

2012年国赛高教杯数学建模C题脑卒中发病环境因素分析及干预解题全过程文档及程序

2012年国赛高教杯数学建模 C题 脑卒中发病环境因素分析及干预 脑卒中&#xff08;俗称脑中风&#xff09;是目前威胁人类生命的严重疾病之一&#xff0c;它的发生是一个漫长的过程&#xff0c;一旦得病就很难逆转。这种疾病的诱发已经被证实与环境因素&#xff0c;包括气温和湿…

如何利用kafka实现高效数据同步?

在我们之前的文章有详细介绍过Kafka的结构、特点和处理方式。具备告诉处理能力的kafka被利用在数据同步和数据传输上&#xff0c;今天来说下kafka是怎么实现高效的数据同步和传输。 一、可靠的数据传输 1. 持久性保证&#xff1a;Kafka 将数据持久化到磁盘上&#xff0c;即使在…

深度学习实战94-基于图卷积神经网络GCN模型的搭建以及在金融领域的场景

大家好,我是微学AI,今天给大家介绍一下深度学习实战94-基于图卷积神经网络GCN模型的搭建以及在金融领域的场景。文章首先介绍了GCN模型的原理及模型结构,随后提供了数据样例,并详细展示了实战代码。通过本文,读者可以深入了解GCN模型在金融场景下的应用,同时掌握代码的具…

wifi、热点密码破解 - python

乐子脚本&#xff0c;有点小慢&#xff0c;试过多线程&#xff0c;系统 wifi 连接太慢了&#xff0c;需要时间确认&#xff0c;多线程的话系统根本反应不过来。 也就可以试试破解别人的热点&#xff0c;一般都是 123456 这样的傻鸟口令 # coding:utf-8 import pywifi from pyw…

BF 算法

目录 BF算法 算法思路 完整代码 时间复杂度 查找所有起始位置 BF算法 BF算法&#xff1a;即暴力(Brute Force)算法&#xff0c;是一种模式匹配算法&#xff0c;将目标串 S 的第一个字符与模式串 T 的第一个字符进行匹配&#xff0c;若相等&#xff0c;则继续比较 S 的第二…

【最新华为OD机试E卷-支持在线评测】TLV解码(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

【git】如何快速准确的回退(reverse)已经合并(merge)主分支(master)的新提交代码

文章目录 前言一、merge模式二、回滚步骤总结 前言 我们在做一些需求&#xff0c;正常流程经过开发&#xff0c;测试到最后和代码上线。但是有时候就会发生一些小插曲&#xff0c;比如产品说老板说某某某你的代码要延后上线&#xff01;&#xff01;或者你写的不合格预发环境出…

在Openshift(K8S)上通过EMQX Operator部署Emqx集群

EMQX Operator 简介 EMQX Broker/Enterprise 是一个云原生的 MQTT 消息中间件。 我们提供了 EMQX Kubernetes Operator 来帮助您在 Kubernetes 的环境上快速创建和管理 EMQX Broker/Enterprise 集群。 它可以大大简化部署和管理 EMQX 集群的流程&#xff0c;对于管理和配置的知…