应用开发3DOF手柄SDK的系统技术方案

技术编号:29155862 阅读:11 留言:0更新日期:2021-07-06 22:54
本申请提供一种应用开发3DOF手柄SDK的系统,包括手柄数据处理模块、跨平台通信模块和服务模块;本发明专利技术通过Un i ty开发手柄SDK在VR设备中的应用中进行了使用,在VR设备的屏幕中中可以显示手柄模型以及手柄控制射线,手柄模型上能实时反馈手柄上的按键状态,手柄的手柄控制射线能实时反馈手柄的运动姿态,手柄姿态数据,手柄按键数据,手柄触摸板数据都是来自手柄插件,应用在开发时使用了手柄插件,应用启动时,会初始化手柄插件,建立手柄数据传输通道,使得应用可以根据手柄实时数据进行场景渲染以及手柄模型渲染,供用户直观感受和操作。

【技术实现步骤摘要】
应用开发3DOF手柄SDK的系统
本专利技术涉及手柄SDK领域,具体而言,涉及一种应用应用开发3DOF手柄SDK的系统。
技术介绍
SDK,即软件开发工具包(SoftwareDevelopmentKit)是指被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。在移动终端领域,内容开发者可以基于渠道商提供的SDK来开发相应的移动终端程序,并上传到渠道商进行推广和分发。通常,内容开发商开发完一个基于移动操作系统(例如Android系统)的移动终端应用(例如以APK文件格式的应用程序形式)后,由于内容开发商的能力有限,因此,内容开发商会发布自己的SDK供内容开发者下载使用。现有的市场上,市场上并没有一种能够对3DOF手柄的SDK进行开发的系统,使得应用可以根据3DOF手柄实时数据进行场景渲染以及手柄模型渲染,供用户直观感受和操作。
技术实现思路
针对上述现有技术问题中的至少一项,本申请提供一种应用开发3DOF手柄SDK的系统,使得应用可以根据3DOF手柄实时数据进行场景渲染以及手柄模型渲染,供用户直观感受和操作。为了实现本专利技术的上述目的,采用以下技术方案:一种应用开发3DOF手柄SDK的系统,包括:手柄数据处理模块,用于完成手柄数据通信接口在Unity侧的封装;跨平台通信模块,用于将手柄操控功能以及手柄数据从androidjava和native平台转换数据到Unity的CS开发平台,完成手柄操控功能以及手柄数据的封装并编译成native库文件;通过调用所述native库文件获取手柄操控功能的函数接口表,识别当前手柄操控功能的类型,根据所述当前手柄操控功能的类型确定需要调用的对应的函数接口表,然后直接调用所述函数接口表中的接口与当前手柄操控功能进行交互;跨平台通信模块使用java代码实现上述功能,以aar库的形式作为Unity中一个开发手柄SDK插件,从而完成开发手柄SDK插件构建操作;服务模块,用于负责向多类型手柄客户端分发手柄数据,管理所述多类型手柄客户端与所述服务模块之间的注册和注销;接收多类型手柄客户端对手柄的控制操作以及与底层的手柄交互系统进行实时通信;在Unity侧封装后的所述手柄数据通信接口以及所述aar库一起添加到应用的APK中;在应用的APK运行时,将在Unity侧封装后的手柄数据通信接口以及aar库运行在所述应用开发3DOF手柄SDK的系统的应用进程中,将所述服务模块运行在所述应用开发3DOF手柄SDK的系统的手柄交互系统进程中。进一步地,所述函数接口表的设计按照如下操作:首先将手柄操控功能作为一个全局对象,再将手柄操控功能按照不同操作方式进行划分形成若干个手柄子功能;按照所述手柄子功能建立子对象,将所述子对象进行二次拆分,按照泛型接口定义函数接口表,达到工厂模式/代理模式/封装模式开发软件的效果。进一步地,所述手柄数据处理模块具有重回中心功能,用于手柄姿态的姿态数据水平方向重回中心操作,在重回中心操作后,使手柄控制射线出现在VR设备屏幕的正前方中心位置。进一步地,所述手柄姿态的姿态数据指的是姿态四元数;所述手柄姿态的姿态数据水平方向指的是姿态四元数中Yaw方向数据。进一步地,所述手柄数据处理模块在实现重回中心功能的具体步骤是:直接长按手柄home按键,启动手柄重回中心功能,手柄会记录当前的手柄姿态数据并生成姿态四元数,将所述姿态四元数转换成欧拉角,将所述手柄姿态的姿态数据水平方向的角度调整为0,修改后的欧拉角再转换成四元数,记录成重回中心补偿四元数数据;在每次手柄姿态发生改变时,此时重新获取改变后的手柄姿态的姿态四元数,使用新获取到的姿态四元数乘以所述重回中心补偿四元数数据,将相乘后的姿态四元数传递给VRApp渲染线程,此时VRApp中绘制手柄和手柄控制射线时就会回到中间位置,手柄和手柄控制射线出现在VR设备屏幕的正前方中心位置。进一步地,所述手柄数据处理模块具有手柄触摸板滑动检测功能,根据收到的实时手柄触摸板触摸点数据,分析手指在所述手柄触摸板上的滑动轨迹,以及手指在手柄触摸板滑动过程中的速度及加速度,具体步骤是:预设操作:将所述手柄触摸板作为基础构建一个二维平面形成二维的平面坐标系,手柄触摸板上每一点映射到平面坐标系中的一点,将用户在手柄触摸板上的触摸数据预处理成平面坐标系中一系列点,此点的信息包括手指在手柄触摸板上的位置坐标、手指在手柄触摸板上的触摸时间、以及手指在手柄触摸板上的每一点的按压状态;通过连续的手柄触摸板触摸点数据获取用户的手指在手柄触摸板上的位置坐标,将多个所述位置坐标进行连接形成反映手柄触摸板上的滑动轨迹;通过手指在手柄触摸板上的触摸时间以及手指在手柄触摸板上的位置坐标,根据加速度计算公式,计算手指在手柄触摸板上的运动加速度;通过手指在手柄触摸板上相邻两个位置坐标的距离以及两个位置坐标所需的触摸时间,计算出相邻两个位置坐标之间的速度;通过手指在手柄触摸板上的每一点的按压状态,用来评估结束用户手指对手柄触摸板的触摸行为,也可以根据用户手指在手柄触摸板的触摸位置所在平面象限,转换成手柄触摸板的四个方向按键使用。进一步地,手柄数据处理模块具有手柄按键处理功能,根据收到的实时手柄按键信息以及用户设置的按键长按时间阈值,检测按键属于长按操作或点击操作;按键长按的默认逻辑是:按键按压状态超过3秒,再松开就是长按;按键按压状态不到三秒松开就是点击事件,含有长按处理的按键,都是根据按键松开时进行事件上报给应用,应用进行相关的处理。进一步地,手柄数据处理模块具有Trigger按键处理功能:手柄的Trigger按键按照硬件处理方式有数字Trigger和模拟Trigger两大类,其中,数字Trigger存在按压状态和未按压状态,产生的事件主要以点击为主;模拟Trigger采用Trigger按键的按压深度进行上报数据,上报的数据含有Trigger按键的按压深度和Trigger按键的按压时间信息;根据Trigger按键的按压深度和Trigger按键的按压时间信息,估算出Trigger按键是否有加速行为,是否是快速按压、缓慢抬起或按压。进一步地,服务模块在手柄数据通信上对手柄数据进行了优化一起添加,给VRApp侧提供数据,一次跨进程通信完成一次完整的手柄数据状态,减少跨进程调用,保证手柄数据各个部分处于同步状态;服务模块与底层的手柄交互系统共享一个进程,实现数据共享,完成高频数据高效传输;服务模块与底层的手柄交互系统通信通道使用本地广播和事件监听器机制。进一步地,服务模块在传递手柄高频数据和低频数据采用不同的方式,使得高频数据低延时,高频数据使用共享内存通道传输,低频数据采用接口调用和回调的方式;服务模块在管理多类型手柄客户端采用了hashmap结构,使用应用进程和客户类型进行双重判断,使各类型手柄客户本文档来自技高网...

【技术保护点】
1.一种应用开发3DOF手柄SDK的系统,其特征在于,包括:/n手柄数据处理模块,用于完成手柄数据通信接口在Unity侧的封装;/n跨平台通信模块,用于将手柄操控功能以及手柄数据从android java和native平台转换数据到Unity的CS开发平台,完成手柄操控功能以及手柄数据的封装并编译成native库文件;通过调用所述native库文件获取手柄操控功能的函数接口表,识别当前手柄操控功能的类型,根据所述当前手柄操控功能的类型确定需要调用的对应的函数接口表,然后直接调用所述函数接口表中的接口与当前手柄操控功能进行交互;/n跨平台通信模块使用java代码实现上述功能,以aar库的形式作为Unity中一个开发手柄SDK插件,从而完成开发手柄SDK插件构建操作;/n服务模块,用于负责向多类型手柄客户端分发手柄数据,管理所述多类型手柄客户端与所述服务模块之间的注册和注销;接收多类型手柄客户端对手柄的控制操作以及与底层的手柄交互系统进行实时通信;/n在Unity侧封装后的所述手柄数据通信接口以及所述aar库一起添加到应用的APK中;在应用的APK运行时,将在Unity侧封装后的手柄数据通信接口以及aar库运行在所述应用开发3DOF手柄SDK的系统的应用进程中,将所述服务模块运行在所述应用开发3DOF手柄SDK的系统的手柄交互系统进程中。/n...

【技术特征摘要】
1.一种应用开发3DOF手柄SDK的系统,其特征在于,包括:
手柄数据处理模块,用于完成手柄数据通信接口在Unity侧的封装;
跨平台通信模块,用于将手柄操控功能以及手柄数据从androidjava和native平台转换数据到Unity的CS开发平台,完成手柄操控功能以及手柄数据的封装并编译成native库文件;通过调用所述native库文件获取手柄操控功能的函数接口表,识别当前手柄操控功能的类型,根据所述当前手柄操控功能的类型确定需要调用的对应的函数接口表,然后直接调用所述函数接口表中的接口与当前手柄操控功能进行交互;
跨平台通信模块使用java代码实现上述功能,以aar库的形式作为Unity中一个开发手柄SDK插件,从而完成开发手柄SDK插件构建操作;
服务模块,用于负责向多类型手柄客户端分发手柄数据,管理所述多类型手柄客户端与所述服务模块之间的注册和注销;接收多类型手柄客户端对手柄的控制操作以及与底层的手柄交互系统进行实时通信;
在Unity侧封装后的所述手柄数据通信接口以及所述aar库一起添加到应用的APK中;在应用的APK运行时,将在Unity侧封装后的手柄数据通信接口以及aar库运行在所述应用开发3DOF手柄SDK的系统的应用进程中,将所述服务模块运行在所述应用开发3DOF手柄SDK的系统的手柄交互系统进程中。


2.根据权利要求1所述的应用开发3DOF手柄SDK系统,其特征在于,所述函数接口表的设计按照如下操作:
首先将手柄操控功能作为一个全局对象,再将手柄操控功能按照不同操作方式进行划分形成若干个手柄子功能;
按照所述手柄子功能建立子对象,将所述子对象进行二次拆分,按照泛型接口定义函数接口表,达到工厂模式/代理模式/封装模式开发软件的效果。


3.根据权利要求1所述的应用开发3DOF手柄SDK系统,其特征在于,所述手柄数据处理模块具有重回中心功能,用于手柄姿态的姿态数据水平方向重回中心操作,在重回中心操作后,使手柄控制射线出现在VR设备屏幕的正前方中心位置。


4.根据权利要求3所述的应用开发3DOF手柄SDK系统,其特征在于,所述手柄姿态的姿态数据指的是姿态四元数;所述手柄姿态的姿态数据水平方向指的是姿态四元数中Yaw方向数据。


5.根据权利要求4所述的应用开发3DOF手柄SDK系统,其特征在于,所述手柄数据处理模块在实现重回中心功能的具体步骤是:
直接长按手柄home按键,启动手柄重回中心功能,手柄会记录当前的手柄姿态数据并生成姿态四元数,将所述姿态四元数转换成欧拉角,将所述手柄姿态的姿态数据水平方向的角度调整为0,修改后的欧拉角再转换成四元数,记录成重回中心补偿四元数数据;
在每次手柄姿态发生改变时,此时重新获取改变后的手柄姿态的姿态四元数,使用新获取到的姿态四元数乘以所述重回中心补偿四元数数据,将相乘后的姿态四元数传递给VRApp渲染线程,此时VRApp中绘制手柄和手柄控制射线时就会回到中间位置,手柄和手柄控制射线出现在VR设备屏幕的正前方中心位置。


6.根据权利要求3所述的应用开发3DOF手柄SDK系统,其特征在于,所述手柄数据处理模块具有手柄触摸板滑动检测功能,根据收到的实...

【专利技术属性】
技术研发人员:周延献
申请(专利权)人:南京爱奇艺智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1