CN101644989B - 基于数字头盔的通用三维虚拟场景实时交互方法 - Google Patents
基于数字头盔的通用三维虚拟场景实时交互方法 Download PDFInfo
- Publication number
- CN101644989B CN101644989B CN2009100347995A CN200910034799A CN101644989B CN 101644989 B CN101644989 B CN 101644989B CN 2009100347995 A CN2009100347995 A CN 2009100347995A CN 200910034799 A CN200910034799 A CN 200910034799A CN 101644989 B CN101644989 B CN 101644989B
- Authority
- CN
- China
- Prior art keywords
- helmet
- interactive
- digital
- digital helmet
- virtual scene
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于数字头盔的通用三维虚拟场景实时交互方法:利用数字头盔的硬件接口规范及数据协议或软件开发包(SDK)从计算机接口中读取并解析数字头盔状态数据,获得头盔的空间位置及方位角参数,根据三维虚拟场景软件交互配置定义,将所获得的获得头盔的空间位置及方位角参数与三维虚拟场景中视点等参数结合,转化为模拟鼠标/键盘输入,调用操作系统应用程序编程接口(API),将模拟鼠标/键盘输入状态信息转化为真实交互设备信息,驱动三维虚拟场景的实时交互。以此实现基于数字头盔控制三维可视化软件中的虚拟场景实时旋转、漫游等交互。基于该方法,可将数字头盔与其它三维可视化软件相集成,提高软件的三维交互能力。
Description
技术领域
本发明涉及了计算机图形学、虚拟现实技术、用户接口管理系统技术、计算机硬件接口技术、计算机操作系统技术等领域,具体涉及了获取数字头盔状态信息、映射为标准输入设备鼠标、键盘消息,将模拟的鼠标键盘消息发送给三维可视化软件并进行三维场景的交互控制。
背景技术
人机交互技术是计算机图形学和虚拟现实领域中不可或缺的组成部分,是属于用户接口管理系统(User Interface Management System,UIMS)的一项重要技术。而交互设备是完成交互任务的重要基础,其主要实现定位、选择、取值,拾取等五种交互任务。目前的三维可视化软件如3d Max、Maya等主要通过鼠标和键盘进行场景的定位和变换,在三维游戏中则除了鼠标键盘外,还可以采用游戏杆进行交互。这些设备的交互能力有限,在软件中被人为地映射为场景平移、旋转、缩放等操作,交互方式不够自然、灵活。此外,这类交互软件还限制了用户的双手,使得更加复杂的交互难以实现。
虚拟现实技术最早出现在上世纪60年代,在航空航天、建筑、医疗、教育、艺术等领域有着广泛的应用。其中数字头盔直接佩戴在使用者头部,可以根据用户头部的运动控制场景的变换,极大的增强了三维交互式虚拟现实的自由感和沉浸。但数字头盔的使用需要虚拟现实系统等专门软件的支持,而一般的三维可视化软件均不支持数字头盔。
发明内容
本发明的目的在于解决目前数字头盔需要专门软件系统支持,不能运用于大多数三维可视化软件系统中的缺陷,提供一种基于数字头盔的通用三维虚拟场景实时交互方法,将使用者佩戴的数字头盔的运动状态映射为标准输入设备键盘、鼠标的状态消息传送给三维可视化系统,以实现用数字头盔控制三维可视化系统中的三维交互。
本发明的技术方案是:基于数字头盔的通用三维虚拟场景实时交互方法,该方法包括以下三个步骤:
步骤1利用数字头盔的硬件接口规范及数据协议或SDK从计算机接口中读取并解析数字头盔状态数据,获得头盔的空间位置及方位角参数;
步骤2根据三维虚拟场景软件交互配置定义,建立数字头盔运动状态信息与标准输入设备鼠标、键盘输入信息间的映射关系,将从步骤1中获得的数据映射为标准交互设备(鼠标、键盘)输入状态信息;
步骤3调用操作系统API,将步骤2中得到的模拟标准交互输入设备状态信息转化为真实交互设备信息,驱动三维虚拟场景的实时交互。
所述步骤7中从计算机硬件接口中获取数字头盔状态信息的方法有两种:(7)利用数字头盔供应商提供的硬件接口规范及数据协议,调用操作系统API,从计算机硬件接口中获取数字头盔状态信息;(2)调用数字头盔供应商提供的软件开发包,利用开发包中提供的方法获取数字头盔状态信息。本方法所需要获得的数字头盔状态信息包括数字头盔空间位置数据(x,y,z)及数字头盔方位角数据(alpha,beta,gama)。
所述步骤2中的交互方式映射是指建立数字头盔运动状态信息与标准输入设备鼠标、键盘输入信息间的映射关系。数字头盔运动信息包括头盔位移分量(x,y,z)和头盔方位角(alpha,beta,gama);键盘信息包括按键(vk)及按键状态(vkState);鼠标信息包括鼠标位置(x,y)与鼠标状态(左键按下、左键释放、右键按下、右键释放、滚轮向前、滚轮向后、鼠标移动)。根据三维可视化系统的交互定义,将数字头盔的连续运动信息映射为键盘与鼠标的连续信息组合。将数字头盔位移状态映射到单位立方体,将数字头盔旋转状态映射到单位球体,然后再映射到三维可视化软件的交互窗口中。
所述步骤3中将步骤2所获得特定输入设备状态信息转化为真实交互设备信息发送给计算机,是通过操作系统自带的应用程序编程接口,将自定义的鼠标、键盘消息插入到系统消息队列中,并被三维可视化软件所接受处理,以实现对三维可视化软件的交互控制。
附图说明
图1是本发明实施例1的流程图
图2a是本发明实施例1平移映射规范空间
图2b是本发明实施例1旋转映射规范空间
具体实施方法
下面结合附图和实施例做进一步详细说明。
实施例1
本实例以Windows XP SP3为操作系统环境,Visual Studio 2008 SP1为开发环境,C++为开发语言,以Virtual Research公司HMD v8数字头盔控制AutoDesk公司的3D Max软件进行三维场景交互。
如图1所示,基于数字头盔的通用三维虚拟场景交互方法,按照如下步骤建立数字头盔交互配置程序HMD_panel.exe:
步骤1利用数字头盔的SDK从计算机接口中读取并解析数字头盔状态数据,获得头盔的空间位置及方位角参数;
步骤2根据三维虚拟场景软件交互配置定义,将从步骤1中获得的数据映射为鼠标、键盘的输入状态信息;
步骤3调用Microsoft Windows操作系统应用程序编程接口SendInput(),将步骤2中得到的模拟标准交互输入设备状态信息转化为真实交互设备信息,驱动三维虚拟场景的实时交互。
完成HMD_panel.exe之后,连接并安装头盔显示器,确认运行正常;启动三维软件,以3DMAX为例,明确其三维观察窗口的鼠标和键盘映射方式;启动HMD_panel.exe后,进入到用户配置界面,按照3DMAX的三维交互相关的鼠标和键盘映射,设置界面平移和旋转选项;启动头盔交互模式,利用数字头盔控制3D Max三维场景变换;最后结束头盔交互模式并退出数字头盔交互配置程序。
具体实施步骤如下:
步骤1利用数字头盔的SDK从计算机接口中读取并解析数字头盔状态数据,获得头盔的空间位置及方位角参数。
数据获取需要涉及设备初始化、设备读取、设备关闭三个方面。为了适应不同的头盔设备,定义相应的回调函数如下。只要满足如下接口的定义,则能适应任何一种头盔。
(1)初始化设备的回调函数接口
#typedef void*(*PROC_INIT)(void);
(2)数据读取回调函数接口
#typedef bool(*PROC_READER)(void*context,
float*x,float*y,float*z;
float*alpha,float*beta,float*gama);
其意义是头盔交互系统通过调用该函数接口,即可获得头盔的位置x,y,z以及方位角度alpha、beta、gama等重要数据。
(3)关闭设备回调函数接口:
#typedef void(*PROC_CLOSE)(void*context);
以上三个回调函数接口一般由用户针对具体的头盔硬件来实现。
(4)定义头盔数据获取类CHMD_Reader如下:
其中成员变量m_context表示数据获取接口的运行情景,视具体的设备访问方法而定。CHMD_Reader的使用方法是这样的,先用这个类定义一个对象,接着调用这个类的方法:
a.定义一个对象:
CHMD_Reader reader;
b.设置用户定义的回调函数:
reader.SetInit(cb_init_usr_defined);
reader.SetReader(cb_reader_usr_defined);
reader.SetClose(cb_close_usr_defined);
c.调用回调函数开启设备、获取数据、最后关闭设备。
步骤2根据三维虚拟场景软件交互配置定义,将从步骤1中获得的数据映射为鼠标、键盘的输入状态信息。
(1)头盔、鼠标和键盘等设备状态的数据结构。
a.定义HS为头盔状态:HS
HS定义为结构体:
其中x,y,z分别表示头盔的位移分量,a,b,r分表表示头盔的方位角。
b.定义键盘状态:KS
KS定义为结构体:
其中state表示按键状态:“1”表示是释放状态,“2”表示按下状态;vk表示虚拟键。一般只需要考虑功能键如″CTRL SHIFT SPACE″和字符键″A...Z;0,1,...,9,-,+″以及光标键″上下左右″
c.定义鼠标状态:MS
MS定义为结构体:
其中state的取值范围可以为:
分别表示鼠标的左右键状态、滚轮状态、移动状态等。
(2)定义两种映射:
H1:头盔的连续运动→连续的按键组合;
H2:头盔的连续运动→连续的鼠标运动。
其中H1视具体的交互情景而定,如将头盔的移动量映射为持续的光标键的按下状态;对于某些辅助按键并不需要实际的头盔数据,如Alt、Ctrl、Shift等,可根据需要自动产生。
(3)平移映射的计算
如图2a,给定头盔的移动范围:[0,HX],[0,HY],[0,HZ];以及三维场景的范围:[0,SX],[0,SY],[0,SZ]。
a.按键映射方法H1:
If头盔移动量大于零then发送与平移场景对应的按键消息
b.映射方法H2:
由头盔的位移分量(hx,hy,hz),计算屏幕上鼠标的位移分量(mx,my)。
头盔位移规范化:(中心对称)
uhx=hx/HX-0.5;
uhy=hy/HY-0.5:
uhz=hz/HZ-0.5;
虚拟场景移动量:
sx=uhx*SX+sx0;
sy=uhy*SY+sy0;
sz=uhz*SZ+sz0;
其中平移分量(sx0,sy0,sz0)为预先定义的参考基点,相当于观察者在虚拟三维场景中的初始位置。
鼠标移动量计算:
Mx=sx*kx;
My=sy*ky;
其中系数kx,ky分别为三维软件自定义的放缩系数,也可由用户自己任意设置.需要注意的是移动分量sz并没有被鼠标利用,但是可以映射为某个按键,即可表示跳起的高度.
(4)旋转映射的计算
如图2b,头盔的方位角度活动范围给为:[-A/2,A/2],[-B/2,B/2],[-R/2,R/2];
虚拟场景的旋转角度一般为:[0,2*Pi],[0,2*Pi],[0,2*Pi],分别表示绕x,y,z轴的旋转角度.
a.按键映射H1:
给定头盔的方位角度a,b,r,产生相应的按键消息,即
If头盔转动量大于零then发送与旋转场景对应的按键消息
其中转动量的计算增量方式,即新的角度减去旧的角度.
b.鼠标移动量映射H2:
给定头盔的方位角度a,b,r,产生鼠标移动消息和相应的移动量.这意味着对空间球体的连续旋转变换.而要从已知的空间旋转变换得到平面鼠标的移动往往没有唯一解.为简单起见,可将头盔的方位角视为连续实施的欧拉角度,从中任选两个角度分别映射到鼠标的移动分量上即可.
规范化头盔旋转量:
ha=2*a/A;
hb=2*b/B;
hr=2*r/R;
映射鼠标移动分量:
mx=ha*Pi*radius;
my=hb*Pi*radius;
其中radius为空间操纵球的半径,可以根据需要进行设置.
步骤3调用操作系统API,讲步骤2中得到的模拟标准交互输入设备状态信息转化为真实交互设备信息,驱动三维虚拟场景的实时交互。模拟传统输入设备的方法是:调用系统API。下面给出在本实施例中使用的关键数据结构。
(1)API定义以及参数说明.
UINT SendInput(UINT nInput,LPINPUT pInput,int cbsize)
该函数能够将自定义的鼠标,键盘、以及其他硬件消息插入到系统的消息队列中.当这些消息被三维软件所处理时,则能模拟三维软本身的交互行为.函数的参数意义如下:
nInput:一起发送的消息数目
LPINPUT:输入消息数组指针
Cbsize:单个消息结构体的的大小.
LPINPUT定义:
结构体中type字段可取值为:INPUT_MOUSE,INPUT_KEYBOARD,INPUT_HARDWARE.
结构体中mi字段为鼠标输入结构体,定义为:
其中dx、dy分别表示鼠标的绝对位置或者相对位置,这取决于字段dwFlags的设定:MOUSEEVENTF_ABSOLUTE.
结构体中字段ki为键盘输入结构体,定义为:
(2)将鼠标键盘状态转换为实际输入消息
对每一个被映射的设备状态,定义一个与之对应的INPUT结构体对象,然后调用SendInput()将所有INPUT对象发送到当前消息队列中去.下面给出该函数调用的方法。
a.模拟键盘输入的系统API方法.
定义原型函数:
void Simu_keyboard(KS*pKS,int nks);
其中参数pKS表示按键状态列表,nks表示列表长度.该函数的简要实现方法如下:
b.模拟鼠标输入的系统API方法.
定义原型函数:
void Simu_mouse(MS*pMS,int nms);
其中参数pMS表示按键状态列表,nms表示列表长度.该函数的简要实现方法如下:
Claims (5)
1.基于数字头盔的通用三维虚拟场景实时交互方法,该方法包括以下三个步骤:
步骤1利用数字头盔的硬件接口规范及数据协议或软件开发包(SDK)从计算机接口中读取并解析数字头盔状态数据,获得头盔的空间位置及方位角参数;所述步骤1具体包括:将数字头盔与计算机之间通过串口、并口或USB接口方式中的一种进行连接;利用数字头盔供应商提供的硬件接口规范及数据协议,调用操作系统应用程序编程接口(API)或数字头盔供应商提供的软件开发包(SDK),从接口中获得数据;从获取的数据中解析出数字头盔相对于基坐标系的位移矢量和方位角度;
步骤2根据三维虚拟场景软件交互配置定义,建立数字头盔运动状态信息与标准输入设备鼠标、键盘输入信息间的映射关系,将从步骤1中获得的数据映射为标准交互输入设备状态信息;所述步骤2具体包括:将步骤1中所获得的数字头盔相对于基坐标系的位移矢量和方位角度映射为特定的输入设备状态信息,输入设备状态信息包括鼠标移动方向、移动量、按键状态以及键盘的按键状态,根据具体三维可视化软件交互方式,定义相应的交互映射关系;
步骤3调用操作系统应用程序编程接口(API),将步骤2中得到的标准交互输入设备状态信息转化为真实交互设备信息,驱动三维虚拟场景的实时交互;所述步骤3具体包括:调用操作系统应用程序编程接口,将步骤2所获得特定输入设备状态信息转化为真实交互设备信息发送给计算机,计算机系统自动将获得的真实交互设备信息发送给目标三维可视化软件,并进行场景的交互。
2.根据权利要求1所述的基于数字头盔的通用三维虚拟场景实时交互方法,其特征是:所述步骤2中的交互方式映射是指建立数字头盔运动状态信息与标准输入设备鼠标、键盘输入信息间的映射关系;数字头盔运动信息包括头盔位移分量(x,y,z)和头盔方位角(alpha,beta,gama);键盘信息包括按键(vk)及按键状态(vkState);鼠标信息包括鼠标位置(x,y)与鼠标状态;根据三维可视化目标系统的交互行为定义,将数字头盔的连续运动信息映射为键盘与鼠标的连续信息组合。
3.根据权利要求1所述的基于数字头盔的通用三维虚拟场景实时交互方法,其特征是:所述步骤2中的交互方式映射中的位移映射是将数字头盔位移状态映射到单位立方体,然后再映射到三维可视化软件的交互窗口中。
4.根据权利要求1所述的基于数字头盔的通用三维虚拟场景实时交互方法,其特征是:所述步骤2中的交互方式映射中的旋转映射是将数字头盔旋转状态映射到单位球体,然后再映射到三维可视化软件的交互窗口中。
5.根据权利要求1所述的基于数字头盔的通用三维虚拟场景实时交互方法,其特征是:所述步骤3中将步骤2所获得特定输入设备状态信息转化为真实交互设备信息发送给计算机,是通过操作系统自带的应用程序编程接口,将自定义的鼠标、键盘消息插入到系统消息队列中,并被三维可视化软件所接受处理,以实现三维可视化软件的交互控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100347995A CN101644989B (zh) | 2009-09-08 | 2009-09-08 | 基于数字头盔的通用三维虚拟场景实时交互方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100347995A CN101644989B (zh) | 2009-09-08 | 2009-09-08 | 基于数字头盔的通用三维虚拟场景实时交互方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101644989A CN101644989A (zh) | 2010-02-10 |
CN101644989B true CN101644989B (zh) | 2011-12-21 |
Family
ID=41656890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100347995A Expired - Fee Related CN101644989B (zh) | 2009-09-08 | 2009-09-08 | 基于数字头盔的通用三维虚拟场景实时交互方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101644989B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105706023A (zh) * | 2013-10-31 | 2016-06-22 | 惠普发展公司,有限责任合伙企业 | 与不支持的输入设备的通信 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102752385B (zh) * | 2012-06-29 | 2015-07-22 | 广东大晋对接信息科技有限公司 | 一种跨平台全景3d展示方法及系统 |
CN103049266A (zh) * | 2012-12-17 | 2013-04-17 | 天津大学 | Delta3D三维场景漫游的鼠标操作方法 |
CN103488489B (zh) * | 2013-09-30 | 2017-02-01 | 乐视网信息技术(北京)股份有限公司 | 一种数据处理方法及装置 |
CN105068679A (zh) * | 2015-07-22 | 2015-11-18 | 深圳多新哆技术有限责任公司 | 调整虚拟物件在虚拟空间中位置的方法及装置 |
US10735691B2 (en) * | 2016-11-08 | 2020-08-04 | Rockwell Automation Technologies, Inc. | Virtual reality and augmented reality for industrial automation |
CN106569830B (zh) * | 2016-11-10 | 2019-11-29 | 北京小鸟看看科技有限公司 | 虚拟现实设备及在其中实现消息提示框显示的方法和插件 |
CN108958479B (zh) * | 2018-06-14 | 2021-11-02 | 南京师范大学 | 基于数据手套的通用三维虚拟场景实时交互方法 |
CN109471533B (zh) * | 2018-11-09 | 2021-09-07 | 深圳职业技术学院 | 一种vr/ar教室内的学生端系统及其使用方法 |
CN113760085A (zh) * | 2020-06-03 | 2021-12-07 | 李连波 | 虚拟环境构建和应用方法、vr设备及虚拟现实交互系统 |
CN114827692A (zh) * | 2022-04-29 | 2022-07-29 | 深圳市瑞云科技有限公司 | 一种基于智能电视操作云桌面的系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000306084A (ja) * | 1999-04-26 | 2000-11-02 | Mitsubishi Electric Corp | 三次元画像表示方法 |
CN101231752A (zh) * | 2008-01-31 | 2008-07-30 | 北京航空航天大学 | 无标定真三维全景显示与交互装置 |
-
2009
- 2009-09-08 CN CN2009100347995A patent/CN101644989B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000306084A (ja) * | 1999-04-26 | 2000-11-02 | Mitsubishi Electric Corp | 三次元画像表示方法 |
CN101231752A (zh) * | 2008-01-31 | 2008-07-30 | 北京航空航天大学 | 无标定真三维全景显示与交互装置 |
Non-Patent Citations (3)
Title |
---|
张卡等.三维坐标转换的两种方法及其比较研究.《数学的实践与认识》.2008,(第23期), * |
张卡等.基于数字近景立体摄影的三维表面模型构建.《数据采集与处理》.2007,(第03期), * |
张卡等.车载三维数据采集系统的绝对标定及精度分析.《武汉大学学报(信息科学版)》.2008,(第01期), * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105706023A (zh) * | 2013-10-31 | 2016-06-22 | 惠普发展公司,有限责任合伙企业 | 与不支持的输入设备的通信 |
CN105706023B (zh) * | 2013-10-31 | 2019-01-15 | 惠普发展公司,有限责任合伙企业 | 与不支持的输入设备的通信 |
US10289219B2 (en) | 2013-10-31 | 2019-05-14 | Hewlett-Packard Development Company, L.P. | Communicating with an unsupported input device |
Also Published As
Publication number | Publication date |
---|---|
CN101644989A (zh) | 2010-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101644989B (zh) | 基于数字头盔的通用三维虚拟场景实时交互方法 | |
Liagkou et al. | Realizing virtual reality learning environment for industry 4.0 | |
US7301547B2 (en) | Augmented reality system | |
Wagner et al. | Handheld augmented reality displays | |
JP7299414B2 (ja) | 画像処理方法、装置、電子機器及びコンピュータプログラム | |
CN106774949A (zh) | 协同仿真交互方法、装置和系统 | |
US20150193979A1 (en) | Multi-user virtual reality interaction environment | |
Bao | The application of intelligent algorithms in the animation design of 3D graphics engines | |
Lee et al. | Two-handed tangible interaction techniques for composing augmented blocks | |
CN103514619A (zh) | 二维角色表现三维动作的系统及方法 | |
US20060244745A1 (en) | Computerized method and computer system for positioning a pointer | |
CN102848389A (zh) | 基于视觉运动捕捉的机械臂标定及跟踪系统实现方法 | |
CN104360729A (zh) | 基于Kinect和Unity3D的多交互方法与装置 | |
CN110928404B (zh) | 追踪系统及其相关追踪方法 | |
CN109102560A (zh) | 三维模型渲染方法及装置 | |
CN102608922B (zh) | 一种基于Vega和RTW的光电经纬仪实时可视化仿真平台 | |
CN110766788A (zh) | 将虚拟物体映射到现实世界的方法及装置 | |
CN112667072A (zh) | 大学生职业行为习惯养成训练虚拟系统及方法 | |
CN108958479A (zh) | 基于数据手套的通用三维虚拟场景实时交互方法 | |
CN109765798B (zh) | 一种影视摄影的半实物仿真系统 | |
Mortensen et al. | Real-time global illumination for vr applications | |
CN114816157A (zh) | 受api驱动的数字孪生可视化解决方案 | |
CN111476873A (zh) | 一种基于增强现实的手机虚拟涂鸦方法 | |
Nivedha et al. | Enhancing user experience through physical interaction in handheld augmented reality | |
Han et al. | Ar pottery: Experiencing pottery making in the augmented space |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111221 Termination date: 20140908 |
|
EXPY | Termination of patent right or utility model |