Dash (3-DOF Motion Controller for Mobile VR)
特点:
- 移动虚拟现实设备上的 3-DOF 运动控制器,手势捕捉、VR中3D激光定位、Volume controls
- 支持任何智能手机、VR头盔设备、兼容Android / IOS, Unreal或者Unity3d引擎
- 移动控制, 选取与UI交互, 瞄准射击, 动力反馈, 刀剑战斗等,具有Button、Trigger、Stick、Touchpad控制元素
DashDevKit (预定,$69加运费) : 控制器,连接PC的蓝牙适配器(Bluetooth 4.0),充电线,SDK/API,Demo示例
以前做手势识别用的 Oculus Touch,可惜只能连接到Oculus,今天我们来看看 Finch 的 VR 手柄,可以应用到移动端手势识别 + 运动追踪。
Shift (No-camera 6-DOF Motion Controller for Mobile VR)
特点:
- 移动虚拟现实设备上的 无相机运动控制器,手势捕捉(所有运动轨迹)、身体捕捉 (body tilt, reaching out, body slips on all directions)、360°捕捉范围、无FOV视角限制
- 支持GooglePlay(Daydream ),GearVR 商店平台,支持SteamVR,支持 IOS 和 Android
- 可以在移动设备上为 Oculus Rift 和 HTC Vive 开发VR游戏,低运算低耗电量
- 可在智能手机上像 Oculus Touch 和 HTC Vive 一样无线使用,无须连接PC和额外的相机
- 修正的惯性传感器可以在VR设备上看到你的双手,360°自由的捕捉范围,蓝牙4.2连接到手机,真实的动力反馈
Shift DK1 (预定,$179加运费): 2个控制器(操纵杆和上臂传感器),连接PC的蓝牙适配器(Bluetooth 4.0),充电线,SDK/API,3个Demo游戏示例
Digital Hands (No-camera Tracking for Mobile VR)
特点:
- 不需要摄像头即可追踪定位(依靠安装在使用者的手指、手掌、手臂上的传感器追踪运动)
- 食指触摸板提供输入选项,包括滑动、点击、双击,导航,点击菜单,输出文本等,具有手势识别
- 蓝牙无线传输,使用高级算法来捕获身体,手臂,手和手指的运动,并且节点数量减少(手腕和胸部无须传感器)
- 基于 IMU惯性传感器漂移量的最小化,具有一键校准功能
- 跨平台,针对 移动VR 或 PC 上的 VR (Windows 和 SteamVR)
按键与OculusTouch类似,可以进行丰富的手势捕捉及相关动画。
- IndexTrigger - main trigger
- GripButton - additional trigger
- ButtonThumb - analog stick or touchpad
- ButtonZero - home and calibration button
- ButtonOne - additional button
- ButtonTwo - additional button
Documents for dash, shifts, hands :
Platforms and requirements
Android:
- Android 5 or newer
- А gyroscope. Check if your Smartphone has a gyroscope
- 2 GB of RAM or more for the best experience
IOS:
- iOS 8 or newer
- iPhone 6 or newer
Windows:
- Windows 10 or newer
- CPU: Intel i3-6100 / AMD Ryzen 3 1200, FX4350 or better
- Graphics Card: NVIDIA GTX 960 / AMD Radeon R9 290 or better
- 8GB+ RAM
- USB 2.0 or newer
- Bluetooth 4.0 or newer
Specifications and tips for developers (Controller)
Light Indicators:
关机或没电的时候指示灯是不亮的,蓝色(不闪烁)表示正常,闪烁表示设备准备通过蓝牙连接配对,灰色表示硬件错误,LED熄灭之前不要进行任何操作,红色表示电量在10%以下。
Charging:
开机时不要进行开关机操作,推荐使用USB 3.0 5V电流进行充电,一次充电40~50分钟。
Turning the devices On, Off and Pairing:
短按“Home Button”开机,长按5秒关机;指示灯蓝色且短暂震动表示控制器准备配对,在 Smartphone or PC等接收设备上设置配对,配对有效距离为110cm,超过110cm后将失去配对,关机后重新开机将进入搜索配对模式。如果控制器配对了多个接收设备,开机时将配对到距离其最近的一个。
Setting & Configure Finch
Settings you can change during runtime (Unity and Unreal only):
请不要在运行时改动配置,根据你的应用选择使用3DOF的控制器"Dash"还是6DOF的控制器“Shift”,单手或双手操作。
但是在 Unity 和 Unreal 引擎开发应用内(3DOF and 6DOF),可以允许用户改变其设置,具体如下:
- 校准:未校准的控制器在VR中的手部运动将不符合手部骨骼运动规律,建议在游戏或应用启动时进行校准(launch calibration process),或者玩家看不到虚拟的控制器实例,或者当虚拟控制器实例的移动不与手臂运动方向一致时,最好当用户感觉控制器运动偏移的时候可以重新设置校准,或者在任何时刻进行校准。
- 3DOF (Finch Dash) 校准:控制器指向前方,按”Home Button“键几秒钟。
- 6DOF (Finch Shift) 校准:双手向前伸直(手臂肘关节不能弯曲,且与地面平行)并靠近(控制器依靠磁石连接在一起),同时按”Home Button“键,检查虚拟的手臂是否移动正确,不正确则检查设备穿戴是否正确。
- 控制器偏移(offset):位于骨骼节点层级中的控制器,用于FinchPlayer脚本,影响控制器实例的显示位置和运动方式,Standart(匹配骨骼 FinchBone.LeftHandCenter 、FinchBone.RightHandCenter)、Wrist(匹配骨骼FinchBone.LeftHand 、 FinchBone.RightHand)、Elbow(匹配骨骼FinchBone.LeftLowerArm 、FinchBone.RightLowerArm)、Shoulder(FinchBone.LeftUpperArm 、 FinchBone.RightUpperArm)
- 姿势追踪算法:3DOF控制器的算法具有两种类型:Finch自有算法或者Google Daydream VR 算法,可任选一种;6DOF控制器只会使用FinchVR自有算法。
- 电池充电:大型应用或连续性时间长的游戏,建议在VR控制器实例中,或者在主界面向玩家展示电量或者给予警告提示(不用频繁提示)。
- 不要忘记在游戏内通过Tips、tutorials,或者其他的帮助玩家理解或指导玩家在游戏中的操作。
- 场景中控制器实例的可见性:无论在应用内选用哪种实例模型去显示,要确保与场景交互的控制器实例在场景中看起来没那么僵硬。
FinchBody rotation mode:
- None - 身体不会追踪游戏相机(头盔)或控制器, 身体的旋转始终是 Quaternion.Identity
- 肩部旋转 - 身体追踪游戏相机(头盔)和上臂节点. 默认选项为 6DOF.
- 手部旋转 - 身体追踪游戏相机和控制器前向方向.
- 手部运动 - 身体以符合控制器运动器强度的角速度追踪游戏相机.
- HMD旋转 - 控制器将被重新矫正中心位置到HMD的旋转角度. 最佳选项为 3DOF.
- 肩部伸出的旋转角度 - 身体追踪游戏相机和上臂节点,允许你通过一只手伸出到远处物体.
- IMU惯性全身旋转 - 身体追踪游戏相机和上臂节点,允许你在小范围空间内追踪身体. 最佳选项为 6DOF.
Recenter mode:
- Forward - 控制器将重新矫正中心点到初始位置, 无论HMD朝向哪里.
- HMD rotation - 控制器将被重新矫正中心点到HMD的旋转位置.
Finch buttons
- Home button:提供了大量的功能,建议不要自定义功能、
- Thumb button:在stick 或者 touchpad 键的下方,可以用来辅助Stick or Touchpad运动,如通过Stick去选择菜单,然后通过Thumb Button去触发。
- Index trigger:主要的动作按键,如游戏中的射击,拾取或扔出,注意在所有的SDK中只能从 triggers - number中获取两种类型的数据:按下去的按键数,及按下去触发的事件(超过设定的阈值时 invoking)。
- App button(3DOF-only ):当游戏或应用内有菜单选项时可使用,也可以长按用于其他目的。
- Volume buttons(3DOF-only ):用于划分体积区域,也可以作为其他键触发其他事件。
- Middle trigger (grip button)(6DOF-only ):注意在所有的SDK中只能从 triggers - number中获取两种类型的数据:按下去的按键数,及按下去触发的事件(超过设定的阈值时 invoking)。
- Assistive buttons:尽量让一些事件在一个button上,如果感觉按键不够用,可以按不同的场景进行取舍
Finch Core API Documentation(C++)
类型为Hand手套、Shift、Dash, 返回None(初始化成功)、 NotInitialize(无法初始化)、 UnknownDeviceTyp(设备类型不对)、 RuntimeError(运行时错误)
|
清除退出 |
返回 Finch Core 的版本 |
|
Hand手套、Shift、Dash )
|
|
|
|
|
uint8_t FinchIsBoneAvailable(FinchBone bone) 骨骼数据可用则返回 true |
FinchQuaternion FinchGetBoneRotation(FinchBone bone) 返回骨骼在当前空间中的方向(四元数) |
FinchVector3 FinchGetBoneCoordinate(FinchBone bone) 返回骨骼相对左右肩膀中心点的位置 |
FinchVector3 FinchGetBoneLocalAcceleration(FinchBone bone) 返回骨骼在本地坐标系统中的加速度 |
FinchVector3 FinchGetBoneLocalAngularVelocity(FinchBone bone) 返回骨骼在本地坐标系统中的角速度 |
FinchVector2 FinchGetTouchpadAxes(FinchChirality chirality) 返回 TouchPad 坐标 |
float FinchGetNodeCharge(FinchNodeType node) 返回电量百分比 |
float FinchGetBoneLength(FinchBone bone) 返回骨骼模式下的骨骼长度 |
uint16_t FinchGetEvents(FinchChirality chirality, FinchEventType type) 返回控制器元素的事件类型 |
float FinchGetIndexTrigger(FinchChirality chirality) 返回 index trigger 的值 |
float FinchGetMiddleTrigger(FinchChirality chirality) 返回 middle trigger 的值 |
重新校准所选中的控制器(Right、Left 、Both ) |
FinchChirality为控制器类型: Right、Left 、Both,FinchRecenterMode 类型为Forward 【通过前向方向重新设置中心】、 HmdRotation 【通过HMD方向重新设置中心】)
|
|
|
FinchChirality 包括 Right、Left 、Both控制器,)
|
FinchChirality为控制器类型: Right、Left 、Both,FinchRecenterMode 类型为Forward 【通过前向方向重新设置中心】、 HmdRotation 【通过HMD方向重新设置中心】)
|
|
|
|
设置身体旋转模式(None 、ShoulderRotation 、HandRotation 、HandMotion 、HmdRotation )的值
|
|
以HMD的旋转角度更新控制器 |
void FinchSwapNode(FinchNodeType first, FinchNodeType second) 交换选择的节点 |
uint32_t FinchGetRawDataSize(FinchNodeType type) 返回所选择节点的行数据的大小 |
FinchIOError FinchGetRawData(FinchNodeType type, uint8_t* data, uint32_t length) 返回节点行的行数据 |
FinchIOError FinchWriteData(FinchNodeType type, uint8_t* data, uint32_t length) 同步模式下写入数据到一个节点 |
FinchIOError FinchAsyncWriteData(FinchNodeType type, uint8_t* data, uint32_t length) 异步模式下写入数据到一个节点 |
Finch Unity SDK
Steps to implement Finch support into Unity-applications:
1、Create project, download SDK file FinchSDK_v0.3.unitypackage or test demo FinchDemo_v0.21.7z .
2、添加 FinchMain prefab 到场景中,FinchMain 包含了重要的静态 FinchVR 脚本,是所有Dash、Shift 实例的处理接口。
Note:Each Unity scene should have only one FinchVR script (or FinchMain prefab) instance in it.
3、配置项目所支持的 Controller,具体参照本文 “Setting & Configure Finch” 部分。
4、实例化1个或2个Controller, 控制器类型包含:
- FinchSingleController:只能用于3DOF控制器(Dash),且游戏中只能使用1个控制器(左手或右手)。但当场景中有多个FinchSingleController 时只会显示一个控制器实例。
- FinchDualController:玩家可选择只使用1个或者2个控制器(3DOF or 6DOF),6DOF使用该prefab时,必须要设置为FinchDualController模式,如果只有一个controller 连接到应用,游戏正常运行但玩家在场景中只能看到一个控制器实例。
- FinchAvatar:在单个或者两个控制器中设置玩家的虚拟角色骨骼模型(UnityEngine.Animator),通过控制器的 position 控制角色的骨骼动画,除了控制器,还可以扩展为Head、Body、Arm等。
5、检查 Controllers,选择一个包含Finch组件的场景,可以连接控制器在PC/Android上进行验证,校准后可以在场景中看到一个Controller 实例跟随手部移动。
FinchCalibration场景,可以作为一个基本的校准环境简单应用到游戏的第一个关卡中。
请不要移除3DOFCalibrationScene及6DOFCalibrationScene,无论有几个控制器,所有的检测都是自动的。
Anthropometry6DOFCalibrationScene可以根据用户的身体参数校准6DOF(Shift)控制器,玩家需要输入性别和身高,一些参数(如骨骼长度)会被自动计算,也请不要移除。
除了在这些场景中进行校准之外,还可以在游戏运行的任何时候进行校准。
FinchVR | 初始化Finch Controller符合所设置的操作,提供了Finch Unity API |
FinchPlayer | Abstract script. Children classes translate head and controllers GameObjects on scene |
FinchSingleControllerPlayer | Inherited from FinchPlayer. Translates head and single controller GameObjects on scene |
FinchDualControllerPlayer | Inherited from FinchPlayer. Translates head and two controllers GameObjects on scene |
FinchAvatar | Proceeds character skeletal model animation according to controller position. Allows to visualize not only controllers, but also head, body, arms etc |
FinchControllerVisual | Visualizes controller element pressings |
FinchTouchPoint | Visualizes touch point |
Provides Finch controller API.
FinchController | Allows to use Finch controller API |
PlayerState | Keeps last update frame controller data |
BoneDictionary | Keeps list of proceeding skeletal model bones |
FinchSettings | Finch controller modes settings |
C API import implementation.
FinchCore | Provides API for FinchCore.dll using |
Interop | Only for direct dll using. It is Strictly not reccomended to use this class |
FinchCoreHelper | Consists unity_to_finch and finch_to_unity transforms methods. Is not used in API |
FinchNodesState | Consists all nodes states |
VibrationPackage | Single instruction for vibration engine |
FinchVector2 | Vector2 for direct dll using. Is not used in API |
FinchVector3 | Vector3 for direct dll using. Is not used in API |
FinchQuaternion | Quaternion for direct dll using. Is not used in API |
FinchDeviceType | Finch device type |
FinchControllersCount | Target Finch controllers count |
FinchDataSource | Data source. Consists following values: Controller for Finch controller; Disabled for default values |
FinchChirality | Chirality (e.g. left or right) |
FinchBone | Skeletal bone. Extends UnityEngine.HumanBodyBones enumaration |
FinchNodeType | Device node type. Consists following values: RightHand, LeftHand, RightUpperArm, LeftUpperArm |
FinchControllerElement | Finch controller input element (button, touchpad or trigger) |
FinchRecenterMode | Target result of recentering. When HmdRotation, controllers recenter to current Main Camera rotation; when Forward, both controllers and Main Camera recenter to default position |
FinchBodyRotationMode | Method of body rotation computing |
ControllerOffset | Finch controller position in skeletal bones hierarchy. Is used for FinchPlayer scripts |
FinchEventType | Event type. Consists following values: Begin, Process, End |
FinchNodesStateType | Node state type. Is used in FinchNodesState.GetState() |
FinchAxisCalibrationStep | Three Poses Calibration Step. Only for direct dll using. Is not used in API |
FinchInitError | FinchCore.FinchInit and FinchCore.FinchExit error type |
FinchUpdateError | FinchCore.FinchUpdate and FinchCore.FinchHmdUpdate error type |
FinchIOError | FinchCore.FinchWriteData and FinchCore.FinchAsyncWriteData error type |
GVR Unity SDK with Dash support
(版权所有,转载必须以超链接形式标明文章原始出处和作者)
相关推荐
雀科 Finch是针对基因组数据的最低限度独立置换排列局部敏感哈希(“ MinHashing”)的实现。 该存储库提供了一个库和命令行界面,可在中重新实现One Codex(并添加新功能/扩展!)。入门安装您可以从源代码构建...
第一整数邻居聚类层次结构(FINCH)算法 该存储库包含用于建议的FINCH聚类算法的Python和Matlab代码,在我们的《使用第一个邻域关系进行有效无参数聚类CVPR 2019口头。 @inproceedings{finch, author = {M. Saquib...
"Finch控制器:Finch机器人的GUI界面"是一款专为 Finch 机器人设计的桌面应用程序,它提供了一个图形用户界面(GUI)以便用户更直观、便捷地控制这款小巧的教育机器人。Finch机器人常用于编程教育,让学生通过编写...
芬奇机器人 一个用于使用Node.JS控制库。...var device = finch ( ) ; 如果发现问题或连接到设备存在问题,第二行将引发错误。 设备成功初始化后,可以发出Finch命令...发光二极管 device . led ( r , g ,
芬奇图Finch是一个库,可让您构建可通过Web扩展的客户端脚本访问的本地GraphQL API。 设置,您甚至可以从可连接的网站查询Finch GraphQL。安装npm install --save finch-graphql graphql react# oryarn add finch-...
这个压缩包“finch-intro”包含了对Finch库的介绍,以及相关的代码示例和演讲幻灯片,这些资料可以帮助我们深入理解Finch在实际开发中的应用。 Finch的核心理念是提供一种简洁、易于理解和维护的方式来构建Web服务...
芬奇的例子 此扩展是的示例扩展。 安装 $ yarn 发展 yarn dev chrome yarn dev firefox yarn dev opera yarn dev edge ... yarn build chrome ...该构建工具还在脚本中定义了一个名为process.env.NODE_ENV的变量。...
Finch-Collector是一个基于Python的应用程序,它专注于收集和管理各种细节信息,可能涵盖了多个领域,如数据采集、项目管理或信息整合。这个应用的核心可能是为了帮助用户系统化地存储、组织和检索他们需要的详细...
Finch Unity SDK 用于Finch 3DoF(Dash)和Finch 6DoF(Shift)控制器的SDK。 使用此SDK,您可以轻松地将Finch控制器支持实施到现成的或新的Unity项目中。 最新版本可从。 该文档可从。 您可以在SDK和文档中发现的。...
Finch:RESTful API 消费者 Finch 是 Python 的异步 RESTful API 使用者。 Finch 专注于移除与使用基于 http 的 API 相关的所有样板,并提供高级抽象来开发 API 客户端。 Finch 是在下发布的,因此您可以、并以改进...
它也可以作为Docker容器使用: docker run -v $(pwd):/finch roddylm/finch:latest -help 使用 创建一个名为layouts的目录。 使用{{ page.content }}其中添加模板文件,其中要呈现的页面内容应放在其中。 然后创建...
Finch 是一款专为 WordPress 设计的主题,以其简洁、现代且响应式的设计而受到用户的欢迎。在深入探讨 Finch 主题的知识点之前,让我们先了解一下 WordPress。WordPress 是一个开源的内容管理系统(CMS),广泛用于...
"Finch: 有限体积毛细管异质性建模"是针对地质建模领域的一种高级计算工具,它主要用于模拟地下的多孔介质中的流体流动和传递过程。Finch这个名字来源于雀鸟科,寓意其小巧而灵活,能够处理复杂的地下物理现象。它是...
《Finch Core 2.10-0.9.2与FastParse:Scala中的高效解析库》 在Scala编程世界中,高效的解析库是构建复杂应用程序的关键组件之一。本篇文章将深入探讨开源项目"Finch Core 2.10-0.9.2"以及与其密切相关的...
Finch是一种可配置的工具,旨在使跟踪产品的历史和演变变得简单且易于自动化。 它将项目的Git提交消息转换为格式正确的版本更改日志,以适应您团队的特定需求。 目录 执照 为什么叫“芬奇”? Finch的名称源于...
《Finch(OpenAL)在iOS开发中的应用详解》 Finch是一款开源音频库,它主要基于OpenAL技术,为iOS应用提供强大的音频处理能力。OpenAL(Open Audio Library)是一个跨平台的API,用于创建和播放三维音效,尤其在游戏...
**FINCH源代码详解** **一、FINCH算法概述** FINCH,即“First Neighbor-based Iterative Clustering Hierarchies”(基于最近邻的迭代聚类层次),是一种参数少、效率高的无监督聚类方法。它由论文《Efficient ...
您将尝试移动Finch机器人。 了解雀科运动 雀科通过向车轮施加动力来移动。 这是使用finch.setWheelPower(left, right) ,其中left和right代表各自车轮的动力。 此功率可以是-255到255之间的数字,其中负功率对应于...
### CES-VR/AR/MR头显、眼镜、一体机、配件、模组、技术与解决方案,超全汇总 #### VR头显 - **Vive Cosmos**:HTC推出的新一代VR头显,支持inside-out追踪,即无需外部传感器即可进行定位追踪。配备双6Dof手柄,...
《如何撰写商业计划》是由Brian Finch所著,本文将基于提供的内容摘要和标签,详细解释书中可能包含的知识点。 首先,关于“商业计划书”的核心概念,它是一种系统性文件,用于阐述企业或项目的宗旨、目标、市场...