Leap Motion 之Unity开发实战 (一) 制作手的HandController 一. Unity官方包介绍 到如下链接下载 https://developer./unity
可将上述的包都下载下来,以备所用,大致解释一下。 1. CoreAssert 核心包,这是必须要导入的,包含了基础类、一些有用的脚本方法,以及一些做好的手预制件等。 2. Attachments 主要提供了一个可以(在较高自由级别上)定制的手模型和控制脚本,这个手模型继承了IHandModel接口,但不提供图元级别的内容,所以主要用于手势的逻辑控制。它应与图元手对象共同组成手的完整模型。这段理解起来较复杂,其实可以简单说:他主要用于挂脚本的。但挂脚本干什么呢?举例来说还不是控制在手掌、手指(任一)、胳膊等地要实现什么逻辑吧?比如抓个东西,点个火什么的,那你必须要有各自的位置来关联这些部位和控制相应的逻辑脚本了,这个东东就是干这个用的,所以它要和图元对象一起来用。 3. DetectionExamples 这个比较重要,检测手势逻辑的,比如手指伸开没有啊,手指指向什么物体了?这些都已经写好了,研习示例后,直接挂载和调用相应的组件脚本即可了。 4. UI-Input Model 这个直观理解,也是处理UI逻辑的,实现用手来触控(交互)各类UI组件(UGUI),例子写得非常好,各类UI交互逻辑封装得也很好。 5. HandsModel 增强型的手模型及逻辑,比核心包里的手模能更细致一些,但仍是低模级别的,可以一用。 6. PinchModel 识别抓取类手势的包,抓取类手势:LeapMotion将手掌的这一类动作,定义为Pinch Gesture,包括抓、捏、握等等,可以看看官方的视频Demo理解这一类手势。 总之:LeapMotion封装了主要的逻辑和模型在Unity的上述包中,大大节省了我们的开发工作量,从而不必从手的基本逻辑开始写起,直接调用已经做好的脚本组件,或直接使用各种预制件,组合、拼装、拖拽各类组件,形成自己的Unity应用,或者集中编写获取(或识别)手势后的业务逻辑,而不是从头做起(比如从Leap Service Provider获取Frame,再从Frame中获取Hand,Finger,再识别手势。。。。。)。 二. 制作手的HandController 1. 导入包 1) 其中先导入基础包:CoreAssert 2) 再导入HandsModule包:这里包括手的模型(含一些FBX),核心包里手的模型太简陋,所以需要这个包。 2. 制作LeapHandController 1) 在主摄影机下建一个GameObject,取名LeapHandController 2) 此对象下增加两个脚本组件(在Leap.Unity命名空间下):LeapHandController(控制手势数据的跟踪获取,并绘制图形的组件)和Leap Service Provider(其实:LeapMotion在Windows系统下有一个Leap Service服务,这个脚本就是与该服务进行交互,获取硬件传来的手势跟踪数据) 对后一个脚本基本的变量作如下设置
3) 再增加第三个脚本组件 Hand Pool 对其设置如下
4) 创建手的图元对象
5) 创建手的物理对象
6) 回过头来再修改HandPool的脚本属性
你已经猜到了,将上面的图元和物理对象分别赋到相应的变量槽位中,记得对两个Bool值选中。 再停一下,Hand Pool干什么用的啊?其实它非常有用,当给定了手的图元和物理对象后,HandPool创建并管理一个手的池子,并且负责对手进行三维呈现(渲染)。一个手呈现出以后就从池子里移除一个手,反之回收到池子中。池子的管理方式有很多好处吧,特别是性能方面了。 手的渲染其实是由HandRepresentation类负责的,这是一个虚类,实现类是HandProxy,这个类具体对Hand的model进行创建和管理,从而渲染出手的图元表现。对他的渲染调用则是由LeapHandController中的Update()里进行的。 3. 测试你的手 好了,修正一下LeapHandController对象与Camera的相对位置后,你就可以测试一下你的手了,看看这个胡椒手怎么样吧。 4. 替换手的材质 如果觉得这个灰胡椒手不满意,可以替换手的材质。 在PepperBaseCutLeft(Right)Hand下的pepper_hand_left(right)的Skinned MeshRenderer组件中,将Material替换成自己制作的材质,或者也可在官方包目录下Materials目录下查找官方制作的。 5. VR头戴 如果配合VR眼镜,那LeapMotion可能粘连到VR头盔上,必须要更改LeapHandController的Rotation值,可试着更改X:270,Y:-180。这样就从桌面向上的捕捉模式调整到头盔前向的捕捉模式了。【这一点,要理解LeapMotion对手势3D动作的捕捉原理,即一个立方视椎体,详见官方文档】
三. 官方两个例子 官方包里提供了两个场景例子,分别是VR(绑定到VR头盔前部)和PC(放置在桌面)桌面的,大致讲一下区别。 1. VR 场景中如何添加Hands 1) 找到LMHeadMountedRig预制件拖到场景中,删除已有的Camera 2) 将LMHeadMountedRig放置到游戏开始的地点。 3) 制作LeapHandController,拖到LMHeadMountedRig的对象下 4) 测试场景。 官方的VR包主要支持Oculus rift,我做的VR用的是国产3Glass,效果也不错。
2. PC场景中添加Hands 和我上面第二节介绍的类似。
|
|
来自: 文清阳 > 《LEAPMOTION》