版本 | 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'键回中
步骤:
- 安装BTConfig工具
- 手柄配对
- 安装测试应用体验
1.1 在android手机上安装如下两个apk
- BTConfig.apk: 用于手柄配对的工具
- DeviceTest.apk:用于测试设备的工具,可以在手机上输出rotation、button等信息
2.1 装入电池,手柄自动开机。
2.2 打开手机上的蓝牙功能,并打开BTConfig工具。
2.3 先按下BTConfig的Controller的“Bind”按钮,然后同时按着手柄的'APP'和'HOME'键,配对成功后手柄状态变为"Paired",退出应用;
手柄只需要配对一次;更换新的手柄时,先按BTConfig的"Clear"按键,清除上一次的配对信息,然后重复手柄配对的步骤
设备和手机保持连接状态,运行DeviceTest,通过界面可观察到从手柄姿态、按键等信息。
名称 | HMD |
---|---|
PickCubesDOF3Cardboard.apk | Cardboard |
[Playground for Cardboard.apk](./../../Demo/Playground for Cardboard.apk) | Cardboard |
步骤:
- 安装蓝牙驱动
- 手柄配对
- 运行DeviceTest测试设备
未带蓝牙的台式机箱,笔记本电脑跳过此步骤
1.1 下载安装CSR Driver 点击这里下载
1.2 插入CSR Dongle,设备管理里面将其改为系统蓝牙
1.3 右键点击 更新驱动程序软件
1.4 点击 浏览计算机
1.5 点击 从计算机的设备驱动列表中选取
1.6 选择 Generic Bluetooth Adapter 点击 下一步 windows状态栏出现蓝牙功能
打开系统蓝牙界面,打开手柄,配对手柄
电脑和手柄保持连接状态,运行DeviceTest[v1.0.0-beta].exe,通过界面可观察到从手柄姿态、按键等信息
名称 | 要求 |
---|---|
Operating System | Windows 10 Mac OSX >= 10.7.5 |
Bluetooth LE Dongle | 支持4.0 BLE 蓝牙适配器 |
Unity3D引擎 | 5.4以上版本 |
Apple XCode | TBD |
Android Studio | TBD |
- 参考<使用指南>,安装平台的运行环境
- 下载Unity SDK Plugin for Flip Controller
- 建立新的Unity3D project, 点击如下按钮:
Assets -> Import -> Package -> Custom Package
选择将下载的"Unity SDK Plugin for Flip Controller"导入
- 点击如下按钮,选择DeviceTest场景:
Assets -> Ximmerse SDK -> DemoScenes -> 01 - Device Test
- 编译DeviceTest Demo,这里以Android平台为例
-
- 切换发布平台:
Files -> Build Setting -> 选择平台 -> Switch Platform
- 2.设置
选择“Player Setting”按钮,将API Level设置为19
- 3.选择“Build”,编译DeviceTest应用,运行测试
- 脚本说明
- 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
获取并使用输入设备的状态,如连接状态电量等信息
- XDevicePlugin
- Buttons
- controllerInput.GetButton(ControllerButton buttonMask) //按键一直按住
- controllerInput.GetButtonDown(ControllerButton buttonMask) //按键按下
- controllerInput.GetButtonUp(ControllerButton buttonMask) //按键抬起
- touchPos
- controllerInput.touchPos
- Rotation
- controllerInput.GetRotation()
- Accelerometer
- controllerInput.GetAccelerometer()
- Gyroscope
- controllerInput.GetGyroscope()
- Battery
- controllerInput.batteryLevel
- connectionState
- controllerInput.connectionState
- Recenter
- controllerInput.Recenter()
- 建立新的Unity3D project, 导入unitypackage
Assets -> Import -> Package -> Custom Package 选择Flip-v1.0.0-beta-0313.unitypackage
- 下载并导入Google VR unitypackage
Assets -> Import -> Package -> Custom Package 选择GoogleVRForUnity.unitypackage
- 编译PickCubes demo
Files -> Build Setting -> 选择平台Android -> Switch Platform
- 设置
Files -> Build Setting -> Player Settings 填写Bundle Identifier,选择Minimum API Level为API level 19
- 导出
连接手机,点击Build And Run
- 系统蓝牙连接手柄,如下:
- 打开Native C++ sdk项目解决方案
Native C++\windows\vs2015\vs2015.sln
- 编译解决方案
- 拷贝dll(或配置环境变量)
Native C++\windows\libs\x64下的dll拷贝至
Native C++\windows\vs2015\x64\Debug - 运行程序查看手柄连接状态和数据
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