【VR】Leap Motion 官网文档 HandModel(手部模型)

前言:

本系列译文是为迎合Unity VR的热潮与大家的学习需要,推出的针对Unity方向的Leap Motion官方文档中英对照翻译。

本篇为第六篇 《HandModel(手部模型)》 ,该类主要用于连接控制器和手部模型,以及处理手臂、肘部、手掌、手指的位置和角度等信息。

Handmodel is the base class for all the other hand scripts. If you are creating your own hands and need a custom hand script to go with them, extend HandModel and implement the Init() and Update() methods.
You may need to extend the FingerModel class, too.

手部模型是其它手部脚本的基础类。如果你想创建自己的手并需要一个自定义的手部脚本添加在上面,那么就需要继承HandModel类并实现它的Init( ) 和 Update( ) 方法。同时你还需要扩展FingerModel(手指模型)类。

class HandModel  手部模型类

The base class for all hand models, both graphics and physics.

所有手部模型的基类,包括图形的和物理的。

This class serves as the interface between the HandController object
and the concrete hand object containing the graphics and physics of a hand.

该类是HandController(手部控制器)对象和包含了图形及物理手模型的实体手的借口。

Subclasses of HandModel must implement InitHand() and UpdateHand().
The UpdateHand() function is called in
the Unity Update() phase for graphics HandModel instances; and in the Unity
FixedUpdate() phase for physics objects.InitHand() is
called once, when the hand is created and is followed by a call to UpdateHand().

HandModel类的子类必须实现InitHand() 和 UpdateHand()。 UpdateHand() 函数在Unity脚本的Update() 方法阶段被调用时,用于图形 HandModel的实例;而在Unity脚本的FixedUpdate()阶段调用时用于物理对象。InitHand() 只在手部创建后被调用一次,之后UpdateHand()被调用。

Public Functions   公共函数

Vector3 GetArmCenter()   获取手臂中心

Calculates the center of the forearm relative to the controller.

计算前臂相对于控制器的中心。

Return  返回值
A Vector3 containing the Unity coordinates of the center of the forearm.

前臂中心点的Unity坐标,为Vector3类型。

Vector3 GetArmDirection()  获取手臂方向

Calculates the direction vector of the forearm relative to the controller.

计算前臂相对于控制器的方向。

Return   返回值
A Vector3 representing the direction of the forearm (pointing from elbow to wrist).

代表前臂方向的Vector3向量(从肘部指向手腕)。

float GetArmLength()  获取手臂长度

Returns the measured length of the forearm in meters.

返回以米为单位的前臂长度。

Quaternion GetArmRotation()  获取手臂旋转角度

Calculates the rotation of the forearm relative to the controller.

计算前臂相对于控制器的旋转角度。

Return  返回值
A Quaternion representing the rotation of the arm relative to the controller.

手臂相对于控制器的旋转角度,以四元数表示。

float GetArmWidth()  获取手臂宽度

Returns the measured width of the forearm in meters.

以米为单位返回前臂的宽度。

HandController GetController()
 获取控制器

The parent HandController object of this hand.

该手部的HandController(手部控制器)父对象。

Vector3 GetElbowPosition()  获取肘部位置

Calculates the position of the elbow relative to the controller.

计算肘部相对于控制器的位置。

Return  返回值
A Vector3 containing the Unity coordinates of the elbow.

肘部的Unity坐标,Vector3类型。

Vector3 GetHandOffset() 获取手部偏移量

Calculates the offset between the wrist position and the controller based on theHandController.handMovementScale property
and the Leap hand wrist position.

计算基于HandController.handMovementScale属性的控制器肘部位置和Leap手肘部位置的偏移量。

Hand GetLeapHand() 获取Leap手部

Returns the Leap Hand object represented by this HandModel.

返回一个由当前HandModel(手部模型)表示的Leap手对象。

Note that any physical quantities and directions obtained from the Leap Hand object are relative to the Leap Motion coordinate system, which uses a right-handed axes and units of millimeters.

需要注意的是,从Leap 手部对象获取的物理数量和方向是相对于Leap Motion 坐标系的。该坐标系使用右手坐标系统并以毫米为单位。

Vector3 GetPalmDirection() 获取手掌方向

Calculates the direction vector of the hand relative to the controller.

计算手掌相对于控制器的方向向量。

Return  返回值
A Vector3 representing the direction of the hand relative to the controller.

手掌相对于控制器的方向,Vector3类型。

Vector3 GetPalmNormal() 获取手掌法线

Calculates the normal vector projecting from the hand relative to the controller.

计算手掌相对于控制器的法线向量。

Return  返回值
A Vector3 representing the vector perpendicular to the palm.

垂直于手掌平面的向量,Vector3类型。

Vector3 GetPalmPosition() 获取手掌位置

Calculates the position of the palm relative to the controller.

计算手掌相对于控制器的位置。

Return  返回值
A Vector3 containing the Unity coordinates of the palm position.

手掌位置的Unity坐标,Vector3类型。

Quaternion GetPalmRotation() 获取手掌角度

Calculates the rotation of the hand relative to the controller.

计算手掌相对于控制器的角度。

Return 返回值
A Quaternion representing the rotation of the hand relative to the controller.

手掌相对于控制器的四元数角度,Quaternion类型。

Vector3 GetWristPosition()  获取肘部位置

Calculates the position of the wrist relative to the controller.

计算肘部相对于控制器的位置。

Return  返回值
A Vector3 containing the Unity coordinates of the wrist.

肘部的Unity坐标,Vector3类型。

void InitHand() 初始化手部 【译者注:重要】

Implement this function to initialise this hand after it is created.

实现该函数,在手部被创建后进行初始化。

This function is called by the HandController during the Unity Update()
phase when a new hand is detected by the Leap Motion device.

当Leap Motion 设备检测到一个新的手时,该函数就会在Unity脚本的Update()阶段被HandController调用。

bool IsMirrored()  是否是镜像的

Whether this hand is currently mirrored.

当前的手是否是镜像的。

void MirrorZAxis(bool mirror = true)   镜像Z轴

Sets the mirror z-axis flag for this Hand Model and its fingers.

为该手部模型及其手指设置镜像Z轴标识。

Mirroring the z axis reverses the hand so that they face the opposite direction as if in a mirror.

以Z轴翻转手部产生镜像,使其方向相对,就像在镜子里一样。

Parameters 参数
  • mirror -

    Set true, the default value to mirror; false for normal rendering.

    镜像 - 默认为真,产生镜像;为加时正常渲染。

void SetController(HandController controller)
 设置控制器

Sets the parent HandController object.

设置手部控制器父对象。

void SetLeapHand(Hand hand)  设置Leap手部

Assigns a Leap Hand object to this hand model.

给当前手模型设置一个Leap手部。

Note that the Leap Hand objects are recreated every frame. The parent HandController calls
this method to set or update the underlying hand.

需要注意的是,Leap手部每一帧都会被重新创建。父对象HandController调用该方法用于设置和更新原本的手部。

abstract void UpdateHand() 更新手部 【译者注:重要】

Implement this function to update this hand once every game loop.

实现该函数,用于在每次游戏循环中更新一次手部。

For HandModel instances assigned to the HandController graphics
hand list, the HandController calls this function during the Unity
Update() phase. For HandModel instances in the physics hand list, theHandController calls
this function in the FixedUpdate() phase.

对于HandController图形手部列表中的HandModel实例,HandController将在Unity脚本的Update() 阶段调用该方法。

对于HandController图形物理列表中的HandModel实例,HandController将在Unity脚本的FixedUpdate() 阶段调用该方法。

Public Members  公共成员

FingerModel [] fingers
 手指模型

The array of finger objects for this hand.

该手部的手指对象数组。

The array is ordered from thumb (element 0) to pinky (element 4).

该数组顺序是从大拇指(下标为0)到小手指(下标为0)。

float handModelPalmWidth 手掌模型宽度

The model width of the hand in meters.

以米为单位衡量手掌模型宽度。

This value is used with the measured value of the user’s hand to scale the model proportionally.

该值和用户手部测量值一起,用于恰当的缩放模型。

const int NUM_FINGERS 手指数量

The number of fingers on a hand.

一个手上的手指数量。

————————————————————————————————

更多参考:

【VR】Leap Motion 官网文档 脚本参考(目录)

(版权声明:本篇为Leap Motion 官网文档译文,版权归Leap Motion 官网所有,图文内容仅供学习使用。)

时间: 2024-10-19 14:37:13

【VR】Leap Motion 官网文档 HandModel(手部模型)的相关文章

【VR】Leap Motion 官网文档 脚本参考(目录)

前言: 本系列译文是为迎合Unity VR的热潮与大家的学习需要,推出的针对Unity方向的Leap Motion官方文档中英对照翻译. 本篇第四篇 <脚本参考> 以目录链接的形式列出了Leap Motion为Unity提供的核心资源包中所包含的脚本定义的类. 关于每个类的详细内容后续献上,敬请期待. 英文原文网址:https://developer.leapmotion.com/documentation/unity/unity/Unity_Classes.html 译文首发&持续更

【VR】Leap Motion 官网文档 FingerModel (手指模型)

前言: 感谢关注和支持这个Leap Motion系列翻译的朋友们,很抱歉由于工作原因很久没有更新,今后这个翻译还会继续(除非官方直接给出中文文档).本篇献给大家的是 <FingerModel (手指模型)> ,该类主要用于手指模型的创建.更新.信息获取及控制等. FingerModel?  手指模型类 FingerModel is the base class for all the other finger scripts. If you are creating your own fing

【VR】Leap Motion 官网文档 HandController(手部控制器)

前言: 本系列译文是为迎合Unity VR的热潮与大家的学习需要,推出的针对Unity方向的Leap Motion官方文档中英对照翻译. 本篇第五篇 <HandController(手部控制器)> 介绍了HandController(手部控制器)预设体与HandController脚本组件使用,以及HandController类中定义的各个公共属性与方法. HandController  手部控制器 The HandController script is attached to the Ha

【VR】Leap Motion 官网文档 ConfidenceTransparency (确定性透明处理)

前言 由于新搭档的加入,翻译的工作进展快了许多. 本篇是Unity引擎中Leap Motion工具模型类中关于透明处理的类,希望对大家有帮助. 原译文链接:http://blog.csdn.net/qq_18408937/article/details/47382423 ConfidenceTransparency   确定性透明处理 Sets a hand's opacity based on its current confidence rating. 基于手部的当前确定性来设置它的透明度.

【VR】Leap Motion 官网文档 Unity插件概述

前言: Leap Motion的官网文档已经有不少的热心网友参与了翻译,但没有覆盖官网文档的全部. 为迎合Unity VR的热潮与大家的学习需要,本博客将推出针对Unity方向的官方文档翻译系列. 本篇主要对Leap Motion的Unity插件及坐标系系统进行简述. 英文原文网址:https://developer.leapmotion.com/documentation/unity/unity/Unity_Overview.html 译文首发&持续更新:http://blog.csdn.ne

【VR】Leap Motion 官网文档 DisconnectionNotice (未连接通知)

前言 不能不说~  新搭档真心给力!翻译的节奏很嗨.这两篇本人也简单参与了审校,姑且算是合作的吧. VR热逐渐趋于理智,但软件对VR硬设的探索和发挥依然停留在初始阶段.相对而言,一些VR硬设文档缺乏中文文档,为广大开发者的学习带来阻碍和不便.本系列译文就是在这样的背景下诞生的,而首先推出的是价位上人手可及的 Leap Motion系列. Leap Motion 的 DisconnectionNotice类会在没有连接时以视觉形式反馈给用户,以便让重新连接. 原译文链接:http://blog.c

【VR】Leap Motion 官网文档 ToolModel (工具模型)

前言 非常开心的是,Leap Motion官方文档的翻译工作有了新的伙伴加入,特此转发过来. 原译文链接:http://blog.csdn.net/qq_18408937/article/details/47373879 ToolModel  工具模型 ToolModel updates a model's position and orientation based on a tracked tool. Compared to hands, tools are very simple and

【VR】Leap Motion 官网文档 LeapUnityExtensions (LeapUnity扩展)

前言 Leap Motion Unity部分的API进入最后冲刺阶段,不算派生的小类,本篇是倒数第二篇. 不得不忠谢这合作的力量. 原译文链接:http://blog.csdn.net/qq_18408937/article/details/47452299 LeapUnityExtensions类提供了从Unity坐标系到Leap坐标系的各种转换功能. LeapUnityExtensions LeapUnity扩展 class Leap:UnityVectorExtension  Leap类(

【VR】Leap Motion 官网文档 MagneticPinch (磁性捏取)

前言 至此LeapMotion的Unity主体部分的翻译全部结束,同时本篇也是搭档的第十篇博客. 为了纪念这里程碑式的时刻,现将微信二维码头像换成合照 *^-^* 原译文链接:http://blog.csdn.net/qq_18408937/article/details/47452343 磁性捏取类是为了应对体感输入的一种有效方式,为了增强用户体验,让操作更容易比让操作更拟真往往更重要. MagneticPinch 磁性捏取 Attach this script to a RigidHand