【前言】:最近自己捣鼓数据手套,想用unity3D集成数据手套CyberGlove,开发一个数据手套可以控制的虚拟手交互场景。还没开始就遇到一个麻烦的问题,unity3D支持C#脚本,而数据手套CyberGlove只提供了静态链接库.lib和头文件.h作为开发的SDK。于是乎如何在unity3D中获取数据手套的各指关节角度成为一个麻烦事,经过多方查询资料,初步形成了以下方案。
【方案】:分析unity3D中需要用到数据手套CyberGlove的那些API,将其提取出来进行封装,即在VS上建立DLL工程,然后定义新的函数,这些函数调用数据手套CyberGlove的API,接着将工程编译生成DLL。然后在unity3D通过调用该DLL中的函数,间接调用数据手套的原始API。借鉴网上C#调用C++ DLL库的方法,整个实现过程记录如下。
【步骤】
(1)提取unity3D需要调用数据手套API,如下:
#include <vhandtk/vhtBase.h>
1、获得手套的连接
vhtIOConn *gloveConn = vhtIOConn::getDefault(vhtIOConn::glove);
2、创建手套
vhtCyberGlove *glove = new vhtCyberGlove(gloveConn);
3、手套刷新
glove->update