Unity Leap开发-核心Leap组件

2024-01-06 04:08
文章标签 组件 开发 unity 核心 leap

本文主要是介绍Unity Leap开发-核心Leap组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Unity环境中获取Hands的最快方法是使用Leap Rig预制件(用于VR / AR应用程序)或LeapHandController预制件(用于非VR / AR应用程序)。

 

The Providers

LeapProvider定义了我们的模块期望用于检索Frame数据的基本接口。这种抽象允许您创建自己的LeapProviders,这在Leap Controller硬件不能立即进行测试或开发时非常有用。

LeapServiceProvider是与您平台上运行的Leap服务通信的类,它为您的应用程序提供包含Leap hands的Frame对象。通常,任何需要来自传感器的Hand数据的类都需要引用LeapServiceProvider来获取该数据。

LeapXRServiceProvider是您应该用于XR应用程序的专用组件。将此组件直接放在您的XR相机上,这样它就可以正确地解决传感器和耳机姿势跟踪之间的跟踪时序差异。

最后,如果您的应用程序需要手动构建标准Hand管道的手数据或过滤通过LeapServiceProvider传递的手数据,则PostProcessProvider是一个方便的抽象类,您可以使用单个函数定义来实现。

The standard Hand pipeline(标准的Hand管道

Hand Model Manager通过Hand Models提供标准的Leap Hand数据流,主要用于驱动3D手模型的可视化表示,例如Capsule HandsRigged Hands

为了使Hand Model Manager能够运行,您必须将组添加到其Model Pool中 - 对于您打算在应用程序中使用的每对图形IHandModel或HandModel。

我们的标准钻机预制件将Hand Model Manager作为根Leap Rig对象的直接子项并作为主摄像机的兄弟。如果玩家的原始空间(Leap Rig变换)在场景周围移动,这可以防止手漂移。

Leap Motion XR rigs

Basic_XR_Rig.png

使用Capsule Hands的基本XR装备设置。

大跃进钻机预制是一个现成的XR装备,让你开始建立使用Leap Motion的XR应用。它由以下对象组成:

飞跃钻机是根对象。如果你想在XR空间中移动你的玩家,这就是你应该操纵的变换。默认情况下,此对象包含可选的XRHeightOffset脚本,它提供了一种简单的方法,可以让您的播放器在Unity内置的不同XR平台上保持一致的高度。

主摄像机是大跃进钻机的直接孩子。它的本地位置和旋转由Unity的XR集成直接控制; 你将无法手动移动它(为此,你应该移动它的父级,Leap Rig,有时称为你的摄像机装备或只是你的“装备”)。

所述 LeapXRServiceProvider部件直接连接到主摄像机。它是一种特殊类型的LeapServiceProvider,可从传感器检索手部数据,还可以解释传感器与耳机姿势跟踪之间的延迟差异。(如果您在耳机中快速环顾四周,这可以防止被跟踪的手漂移。)

手模型管理的对象是主摄像机的兄弟,是你所有的HandModels,如父对象胶囊手操纵手

任何其他以玩家为中心的对象,例如Attachment Hands预制件,交互引擎中交互管理器预制件,或您自己的自定义播放器对象,也可以作为主摄像头的兄弟姐妹。

A basic set of Leap hands(一套基本的双手

这些指针可以立即为您提供原型设计,甚至可以满足简单XR应用程序的所有需求。

HandModel实现

HandModel实现由Hand Pool自动合并,但必须手动添加为Hand Pool中的组才能运行。放入预制件,然后在HandPool组件中添加对预制件的引用,以使这些指针呈现。

RiggedHands.png

Rigged Hands

作为Core资产的最新成员, Rigged Hands是我们在构建演示或VR内容时在Leap使用的标准手。它们被实现为HandModels,这意味着它们需要作为一个组添加到LeapHandController对象的HandPool中才能运行。如果您对使用带有SkinnedMeshRenderer的自定义手形网格感兴趣,与Rigged Hands类似,则需要查看 Hands Module

注意:要使Rigged Hands看起来正确,您需要将您的设置设置Quality Settings/Other/Blend Weights为“4 Bones”(全局质量设置)或覆盖Skinned Mesh Renderers'Quality设置为“4 Bones”(覆盖Rigged Hands的质量设置,应该打开默认情况下)。如果你不这样做,那么被操纵的手会在手掌上出现奇怪的伸展。

CapsuleHands.png

胶囊手 (Capsule Hands

胶囊手生成一组球体和圆柱体来渲染使用大跃进第一手资料的手。它们以程序方式呈现Leap手中的所有原始数据。对CapsuleHand进行相对较小的更改。脚本,您可以快速创建一组符合您的应用程序的视觉风格的手。

Attaching objects to hand joints(将物体附着到手关节

                                 AttachmentHands.png

                                                  附件手(Attachment Hands

Attachment Hands本身通常不用于举手; 相反,您可以将AttachmentHands预制件作为主摄像机的同级进行拖动,并使用脚本自动生成的变换来轻松地将对象附加到Leap指针或引用手上的特定目标关节。要将对象附加到手上,只需将其拖动为要将其附加到的关节的子项,然后根据需要对齐它。Attachment Hands不是手模型,因此不需要将它们添加到手模型管理器的模型池中来运行,它们只需要在场景中实现LeapProvider(例如 LeapServiceProvider)。

这篇关于Unity Leap开发-核心Leap组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/575165

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis