Skip to content

Latest commit

 

History

History
331 lines (270 loc) · 9.3 KB

Development_Guide_Flip_CN.md

File metadata and controls

331 lines (270 loc) · 9.3 KB

Flip Controller SDK

目录

版本记录

版本 ChangeLOG 更新日期
v1.0.1-beta 增加Flip Controller Unity3D SDK(Android/Win10)
增加Android绑定工具(BTConfig)
2017.03.13

名词约定

名称 解释
controller 手柄
HMD 头戴显示器,即VR头显
X-Cobra 手柄的别称

目录介绍

  • Demo :针对主流的HMD,提供演示DEMO
  • Document\Flip :说明文档
  • Tools:工具包
  • Unity:Flip Controller Unity SDK

按键定义

注:短按'home'键回中

使用指南

Android Phone

步骤:

  1. 安装BTConfig工具
  2. 手柄配对
  3. 安装测试应用体验

1 安装BTConfig工具

1.1 在android手机上安装如下两个apk

  • BTConfig.apk: 用于手柄配对的工具
  • DeviceTest.apk:用于测试设备的工具,可以在手机上输出rotation、button等信息

2 手柄配对

2.1 装入电池,手柄自动开机。

2.2 打开手机上的蓝牙功能,并打开BTConfig工具。

2.3 先按下BTConfig的Controller的“Bind”按钮,然后同时按着手柄的'APP'和'HOME'键,配对成功后手柄状态变为"Paired",退出应用;

手柄只需要配对一次;更换新的手柄时,先按BTConfig的"Clear"按键,清除上一次的配对信息,然后重复手柄配对的步骤

3 运行DeviceTest测试设备

设备和手机保持连接状态,运行DeviceTest,通过界面可观察到从手柄姿态、按键等信息。

4 演示demo

名称 HMD
PickCubesDOF3Cardboard.apk Cardboard
[Playground for Cardboard.apk](./../../Demo/Playground for Cardboard.apk) Cardboard

Window PC

步骤:

  1. 安装蓝牙驱动
  2. 手柄配对
  3. 运行DeviceTest测试设备

1 安装蓝牙驱动

未带蓝牙的台式机箱,笔记本电脑跳过此步骤

1.1 下载安装CSR Driver 点击这里下载

1.2 插入CSR Dongle,设备管理里面将其改为系统蓝牙

1.3 右键点击 更新驱动程序软件

1.4 点击 浏览计算机

1.5 点击 从计算机的设备驱动列表中选取

1.6 选择 Generic Bluetooth Adapter 点击 下一步 windows状态栏出现蓝牙功能

2 手柄配对

打开系统蓝牙界面,打开手柄,配对手柄

3 运行DeviceTest测试设备

电脑和手柄保持连接状态,运行DeviceTest[v1.0.0-beta].exe,通过界面可观察到从手柄姿态、按键等信息

开发指南

Unity

1 开发环境要求

名称 要求
Operating System Windows 10
Mac OSX >= 10.7.5
Bluetooth LE Dongle 支持4.0 BLE 蓝牙适配器
Unity3D引擎 5.4以上版本
Apple XCode TBD
Android Studio TBD

2 准备

  1. 参考<使用指南>,安装平台的运行环境
  2. 下载Unity SDK Plugin for Flip Controller

3 SDK使用

  1. 建立新的Unity3D project, 点击如下按钮:

Assets -> Import -> Package -> Custom Package

选择将下载的"Unity SDK Plugin for Flip Controller"导入

  1. 点击如下按钮,选择DeviceTest场景:

Assets -> Ximmerse SDK -> DemoScenes -> 01 - Device Test

  1. 编译DeviceTest Demo,这里以Android平台为例
    1. 切换发布平台:

Files -> Build Setting -> 选择平台 -> Switch Platform

  • 2.设置

选择“Player Setting”按钮,将API Level设置为19

  • 3.选择“Build”,编译DeviceTest应用,运行测试

4 编程

  1. 脚本说明
    • XDevicePlugin

      Unity和native之间的通信桥梁
      注意:通常这个类在引擎中没有直接使用,因为这个类的数据是原始数据,必须进一步计算才能正确使用。
      Namespace
      Ximmerse.InputSystem

    • ControllerInput

      包含控制器信息,如按钮状态、原始位置、原始旋转等
      Namespace
      Ximmerse.InputSystem

    • TrackedObject

      在VR中绑定控制器,获取并使用手柄的IMU等信息

    • TrackedHead

      继承TrackedObject,在VR中绑定Head anchor,获得并使用HMD头部数据

    • ControllerInputManager

      单例,初始化所有的controllerinput,管理controllerinput
      Namespace
      Ximmerse.InputSystem

    • DeviceStatus

      获取并使用输入设备的状态,如连接状态电量等信息

  2. Buttons
    • controllerInput.GetButton(ControllerButton buttonMask) //按键一直按住
    • controllerInput.GetButtonDown(ControllerButton buttonMask) //按键按下
    • controllerInput.GetButtonUp(ControllerButton buttonMask) //按键抬起
  3. touchPos
    • controllerInput.touchPos
  4. Rotation
    • controllerInput.GetRotation()
  5. Accelerometer
    • controllerInput.GetAccelerometer()
  6. Gyroscope
    • controllerInput.GetGyroscope()
  7. Battery
    • controllerInput.batteryLevel
  8. connectionState
    • controllerInput.connectionState
  9. Recenter
    • controllerInput.Recenter()

Cardboard

  1. 建立新的Unity3D project, 导入unitypackage

    Assets -> Import -> Package -> Custom Package 选择Flip-v1.0.0-beta-0313.unitypackage

  2. 下载并导入Google VR unitypackage

    Assets -> Import -> Package -> Custom Package 选择GoogleVRForUnity.unitypackage

  3. 编译PickCubes demo

    Files -> Build Setting -> 选择平台Android -> Switch Platform

  4. 设置

    Files -> Build Setting -> Player Settings 填写Bundle Identifier,选择Minimum API Level为API level 19

  5. 导出

    连接手机,点击Build And Run

Windows Native C++

1 SDK使用步骤

  1. 系统蓝牙连接手柄,如下:

  1. 打开Native C++ sdk项目解决方案

    Native C++\windows\vs2015\vs2015.sln

  2. 编译解决方案
  3. 拷贝dll(或配置环境变量)

    Native C++\windows\libs\x64下的dll拷贝至
    Native C++\windows\vs2015\x64\Debug

  4. 运行程序查看手柄连接状态和数据

2 SDK流程图

3 编程API

Native C++ sdk API位于xdevide.h,具体API接口如下:

  • int XDeviceInit(void)

    初始化,并连接手柄

  • int XDeviceExit(void)

    退出,并断开手柄

  • int XDeviceGetInputDeviceHandle(char* name)

    获取设备句柄
    param: "XCobra-0"
    return: handle

  • int XDeviceUpdateInputState(int which)

    更新设备状态
    param: handle

  • int XDeviceGetInt(int which, int fieldID, int defaultValue)

    获取设备的连接状态或电量等值
    param: handle,FieldID,default
    return: int value

  • int XDeviceGetInputState(int which, void* state)

    获取手柄按键和IMU等具体信息
    param: handle,state
    return: errorCode

  • int XDeviceSendMessage(int which, int Msg, int wParam, int lParam)

    发送命令,如回中kMessage_RecenterSensor
    param: handle,MessageID,wParam,lParam

Android Native(TBD)