LeapMotion开发 让物体跟随手掌的移动

2024-01-15 16:30

本文主要是介绍LeapMotion开发 让物体跟随手掌的移动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

设置一个Unity3D项目工程

Leapmotion资源包包括在windows平台上使用的plugin文件。该资源包包括手的预设,脚本和示例场景帮助你快速掌握leapmotion。

获取leapmotion资源包从: https://developer.leapmotion.com/downloads/unity

 

创建工程

首先,创建一个新的Unity工程文件,如图:

 

然后,导入LeapMotion资源包到工程中:

 

不同的Unity版本导入不同的资源包4.1.4和4.1.3都需要5.3以上的Unity版本,区别在于4.1.4比4.1.3多出了两个模块Leap Motion Interaction 和Engine 0.2.03,在这里我用的是4.1.4版本的leapmotion资源包。

 

导入的模块的介绍

LeapMotion资源包为Unity开发设计了集中模块可供开发者选择。核心包需要使用手部追踪,但是这些某块包含你想要使用的大部分功能。模块彼此之间并不相互依赖。当前可使用的模块包括:

l Attachments 

l Hands 

l Interaction Engine

l UI Input

l Detection Examples

导入模块与你导入leapmotion资源包的方法一样:

 

在4.1.4的资源包中已将包括了这些模块,如果是最新的资源包也可以单独下载这些模块资源,同样这些资源也有着Unity版本的限制,只能在何时的版本中使用资源包。

在VR场景中添加手

 

用LMHeadMountedRig替换场景中任何存在的摄像机。将LMHeadMountedRig预设放置使用者初始场景视图的位置上。

 

在该预设下有个leapmotion控制器,选中这个控制器,在面板中设置Hand Pool脚本的参数ModelPool的size为2表示有两种hand模型

然后在group name中设置名称,两个手的模型分别是左右手的几何模型和物理模型,将与之对应的模型拖到相应的框内即可。然后将下方的选项Is Enabled和Can Duplicate勾选上。

注意在场景中手的模型首先出现在相机的前方,该模块应该放在相机的外部,而不是作为LeapHandController的子物体。

记下来运行场景。


这是左手,因为是在VR中所以要配合虚拟眼镜观看,在PC上看是相反的。

下面介绍PC端的leapmotion的模块:

 

首先将预设拖到场景中,然后因为这个预设上没有相机,所以确保场景中有一个相机,并将控制器放置到相机的前方,修改控制器的脚本Hand Pool将其参数size该为2并将相应的模型放置到Model Pool中然后勾选Is Enabled和Can Duplicate。

直接获取Leap Motion的API

在unity中添加命名空间Leap.Unity 和Leap 就可以调用Leap的API了下面是一个例子,将其直接加到其他的游戏对象上,可以跟随手的运动。

using Leap;
using Leap.Unity;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class LeapBehavior : MonoBehaviour {LeapProvider provider;void Start (){provider = FindObjectOfType<LeapProvider>() as LeapProvider;}void Update (){Frame frame = provider.CurrentFrame;foreach (Hand hand in frame.Hands){if (hand.IsLeft){transform.position = hand.PalmPosition.ToVector3() +hand.PalmNormal.ToVector3() *(transform.localScale.y * .5f + .02f);transform.rotation = hand.Basis.CalculateRotation();}}}}


这段代码实现的效果入下图:

 

如果检测到左手这个cube就跟随左手移动。如果是右手那么就不会跟随。

这篇关于LeapMotion开发 让物体跟随手掌的移动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T