CN116185244B - 一种操作三维场景中物体旋转的方法、系统、装置及介质 - Google Patents
一种操作三维场景中物体旋转的方法、系统、装置及介质 Download PDFInfo
- Publication number
- CN116185244B CN116185244B CN202310464417.2A CN202310464417A CN116185244B CN 116185244 B CN116185244 B CN 116185244B CN 202310464417 A CN202310464417 A CN 202310464417A CN 116185244 B CN116185244 B CN 116185244B
- Authority
- CN
- China
- Prior art keywords
- handle
- rotation
- buffer
- queue
- value
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000013598 vector Substances 0.000 claims abstract description 88
- 238000004364 calculation method Methods 0.000 claims abstract description 24
- 238000004590 computer program Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 11
- 230000000694 effects Effects 0.000 abstract description 2
- 230000035945 sensitivity Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000035772 mutation Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000003756 stirring Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04815—Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
- G06F3/0383—Signal control means within the pointing device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及一种操作三维场景中物体旋转的方法、系统、装置及介质,属于虚拟现实技术领域。方法的特征包括:步骤1:获取三维场景中物体的轴向向量和手柄的速度向量;步骤2:计算手柄沿物体旋转平面的运动速度;步骤3:获取旋转方向缓存队列signBuffer;步骤4:获取旋转角度缓存队列angularBuffer;步骤5:计算手柄带动物体旋转的角度并输出。本发明实现了三维场景中的物体按照VR设备使用者实际操作进行旋转。同时还提供了对虚拟现实设备获取数据和计算后物体旋转数据的缓存,通过自由设置计算阈值,来筛除过小的转动值,实现操作灵敏度的调节,方便使用者根据自身感受调整以达到最佳体验效果。
Description
技术领域
本发明涉及一种操作三维场景中物体旋转的方法、系统、装置及介质,属于虚拟现实技术领域。
背景技术
目前虚拟现实技术已广泛应用于游戏娱乐、教学体验、数字孪生中。在沉浸式体验虚拟现实程序中,人们不仅通过VR头盔来观看三维引擎渲染的场景,有时还需要通过VR手柄或者VR手套操控三维引擎场景中的物体来进行交互。旋转带轴物体(如摇动手轮、旋转方向盘等)是三维场景物体交互中一项必不可少的操作。
目前绝大多数现有虚拟现实三维引擎插件中,对带轴物体的旋转操作,都是基于三维引擎所提供的物理引擎来实现或者插件自身根据物体物理特性来实现,导致操作者在三维场景中旋转物体时,必须要保持VR手柄与场景物体全程接触,并且VR手柄旋转动作也要符合场景中物体的旋转轨迹。在现实世界中,这种旋转物体的操作由于操作者可以真实抓住旋转物体,切实感受到抓取力和物体轴向力,使得操作非常容易。但是在虚拟现实场景中,操作者手部是无法像现实世界中那样对三维场景物体有任何感知,旋转运动时保持VR手柄在物体上的抓取点位置不变,是非常困难的,需要长时间保持对VR手柄与三维物体的视觉观察。并且,VR手柄旋转运动的不规则轨迹也会对三维场景中物体旋转动作产生干扰,使操作者控制三维物体绕轴旋转时,感觉到困难和怪异。
发明内容
为了解决上述问题,本发明公开了一种操作三维场景中物体旋转的方法、系统、装置及介质。
本发明解决其技术问题采取的技术方案如下:
第一方面,本发明提供一种操作三维场景中物体旋转的方法,包括以下步骤:
步骤1:获取三维场景中物体的轴向向量和手柄的速度向量/>;
步骤2:计算手柄沿物体旋转平面的运动速度;
步骤3:获取旋转方向缓存队列signBuffer;
步骤4:获取旋转角度缓存队列angularBuffer;
步骤5:计算手柄带动物体旋转的角度并输出。
进一步地,所述步骤1中,在三维场景中所获取的物体的轴向向量也即物体旋转所在平面的法线向量/>;所述手柄的速度向量/>通过VR手柄的软件开发工具包SDK实时获取。
进一步地,所述步骤2中,根据步骤1得到的物体旋转所在平面的法线向量和手柄在三维场景中运动的速度向量/>,计算手柄沿物体旋转平面的运动速度/>:
;
其中,为当前手柄在三维场景中运动的速度向量,/>为物体旋转所在平面的法线向量。
进一步地,所述步骤3具体包括:
步骤3-1:获取手柄旋转方向值:
根据三维向量计算手柄旋转方向值:
;
其中,为物体旋转所在平面的法线向量,/>为当前获得的手柄速度向量,/>为上一次获得的手柄速度向量;
步骤3-2:将获取的手柄旋转方向值与预设的阈值/>作比较,经以下逻辑判断,将值进入旋转方向缓存队列signBuffer:
当旋转方向值时,手柄不转动,此时将值0进入转动方向缓存队列signBuffer,即/>;
当旋转方向值时,根据左手定则,在物体旋转所在平面的法线向量/>指向操作者的情况下,当旋转方向值/>时,手柄逆时针转动,此时将值-1进入旋转方向缓存队列signBuffer;当旋转方向值/>时,手柄顺时针转动,此时将值1进入旋转方向缓存队列signBuffer,即。
进一步地,所述步骤4具体包括:
步骤4-1:计算当前获得的手柄速度向量与上一次获得的手柄速度向量/>的夹角/>:
;
步骤4-2:通过旋转方向缓存队列signBuffer,计算得出当前旋转方向的均值averageSign,从而消除抖动导致旋转方向突变的影响,计算方法为:
;
其中,bufferCapacity为缓存队列长度;
步骤4-3:提取转动角度缓存队列angularBuffer的队列首值,通过符号函数判断其符号值与步骤4-2得到的旋转方向的均值averageSign是否相等:
当时,当前手柄转动方向与上一次获得的转动方向相同,将当前获得手柄转动角度与方向进入转动角度缓存队列angularBuffer,即:
angularBuffer[0]=tempAngle×averageSign;
当时,当前手柄转动方向与上一次获得的转动方向不一致,此时将转动角度缓存队列angularBuffer的值都置为0,即:
;
然后将当前获得手柄转动角度与方向进入转动角度缓存队列angularBuffer,即:
。
进一步地,所述步骤5具体为:
计算转动角度缓存队列angularBuffer所有项的平均值,即
;
其中,为缓存队列长度;/>输出为当前手柄带动物体旋转的角度,当/>时,物体顺时针转动,当/>时,物体逆时针转动。
进一步地,获取旋转角度缓存队列angularBuffer之后,将当前获得的手柄速度向量赋值给上一次获得的手柄速度向量/>,用来进行下一次旋转角度计算,即。
进一步地,在方法开始前,还包括以下初始操作:
设置两个三维向量变量和/>,其中,变量/>用以存储上一次计算获得的手柄速度向量,其初始值为零向量(0,0,0),变量/>用以存储当前计算获得的手柄速度向量。
设置两个长度相同的缓存队列,定义为转动角度缓存队列angularBuffer和转动方向缓存队列signBuffer;转动角度缓存队列angularBuffer缓存手柄转动夹角,用来计算物体转动角度数值,其初始值为0;转动角度缓存队列所有新的缓存数据由队头angularBuffer[0]进入,由队尾angularBuffer[bufferCapacity-1]退出;转动方向缓存队列signBuffer缓存手柄转动方向值,用来判断物体转动方向,其中,1代表正转,-1代表反转,0为不转动,方向缓存队列signBuffer的初始值为0;转动方向缓存队列所有新的缓存数据由队头signBuffer[0]进入,由队尾signBuffer[bufferCapacity-1]退出;
设置一个阈值threhold,用以判断手柄是否执行旋转物体操作,阈值越小,操作判定越灵敏,阈值越大,越能减少操作抖动。
第二方面,本发明提供一种操作三维场景中物体旋转的系统,所述系统包括:
向量获取模块,用以获取三维场景中物体的轴向向量和手柄的速度向量;
计算模块,用以计算手柄沿物体旋转平面的运动速度;
队列获取模块一,用以获取旋转方向缓存队列;
队列获取模块二,用以获取旋转角度缓存队列;
计算输出模块,用以计算手柄带动物体旋转的角度并输出。
所述队列获取模块一,进一步包括:
方向值计算单元,用以根据三维向量计算手柄旋转方向值;
逻辑判断单元一,用以将获取的手柄旋转方向值与预设的阈值作比较,经相关逻辑判断后,将值进入旋转方向缓存队列。
所述队列获取模块二,进一步包括:
夹角计算单元,用以计算当前获得的手柄速度向量与上一次获得的手柄速度向量的夹角;
方向均值计算单元,用以通过旋转方向缓存队列计算得出当前旋转方向的均值;
逻辑判断单元二,用以提取转动角度缓存队列angularBuffer的队列首值,通过符号函数判断其符号值与旋转方向的均值averageSign是否相等。
第三方面,本发明还提供一种操作三维场景中物体旋转的装置,所述装置包括:
存储器,用以存储计算机程序;
处理器,用以执行所述计算机程序时实现如上所述的操作三维场景中物体旋转的方法的步骤。
第四方面,本发明还提供一种计算机可读储存介质,所述计算机可读储存介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的操作三维场景中物体旋转的方法的步骤。
本发明的有益效果如下:
本发明通过对VR手柄或者VR手套等虚拟现实设备提供的速度向量信息进行计算分析,实现三维场景中的物体按照VR设备使用者实际操作进行旋转。本发明还提供了对虚拟现实设备获取数据和计算后物体旋转数据的缓存,通过自由设置计算阈值,来筛除过小的转动值,实现操作灵敏度的调节,方便使用者根据自身感受调整以达到最佳体验效果。
本发明的一种操作三维场景中物体旋转的方法,相较现有技术,不需要VR操作者在三维场景中旋转物体时保持VR手柄与三维物体时刻保持接触,旋转角度非常精确。这种方法既可以实现精细调节物体旋转角度,例如拨动三维场景中的旋钮;又可以在激烈操作时将注意力转移到周围场景中,例如操作三维场景中汽车方向盘驾驶汽车,操作者更集中于路面与周围环境。
附图说明
图1是实施例一中操作三维场景中物体旋转的方法流程图;
图2是实施例一中获取旋转方向缓存队列的逻辑判断图;
图3是实施例一中获取旋转角度缓存队列的逻辑判断图;
图4是实施例二的操作三维场景中物体旋转的系统结构示意图;
图5是实施例三的操作三维场景中物体旋转的装置结构示意图。
具体实施方式
为能清楚说明本发明方案的技术特点,下面将通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
安装好虚拟现实设备,搭建好三维场景。当操作者想要旋转三维场景中物体时,类似现实中旋转物体的方式,移动手柄,系统调用一种通过虚拟现实设备操作三维场景中物体旋转的方法,使场景中的物体根据手柄运动的角度旋转相同角度,例如手柄运动一圈,场景中的物体旋转一周。
首先,在方法开始前,需对方法执行过程中所需的两个三维向量变量、两个缓存队列,以及一个阈值进行初始设置。
设置两个三维向量变量和/>,其中,变量/>用以存储上一次计算获得的手柄速度向量,其初始值为零向量(0,0,0),变量/>用以存储当前计算获得的手柄速度向量。
设置两个长度相同的缓存队列,定义为转动角度缓存队列angularBuffer和转动方向缓存队列signBuffer,两个缓存队列的长度bufferCapacity可以根据操作者操作情况进行调节,本实施例中的缓存队列长度值为5;转动角度缓存队列angularBuffer缓存手柄转动夹角,用来计算物体转动角度数值,其初始值为0;转动角度缓存队列所有新的缓存数据由队头angularBuffer[0]进入,由队尾angularBuffer[bufferCapacity-1]退出。转动方向缓存队列signBuffer缓存手柄转动方向值,用来判断物体转动方向,其中,1代表正转,-1代表反转,0为不转动,方向缓存队列signBuffer的初始值为0;转动方向缓存队列所有新的缓存数据由队头signBuffer[0]进入,由队尾signBuffer[bufferCapacity-1]退出。
设置一个阈值threhold,用以判断手柄是否执行旋转物体操作,阈值越小,操作判定越灵敏,阈值越大,越能减少操作抖动,本实施例根据三维场景将阈值设置为0.001。
一种通过虚拟现实设备操作三维场景中物体旋转的方法,流程如图1所示,具体包括以下步骤:
步骤1:获取三维场景中物体的轴向向量和手柄的速度向量/>。
在三维场景中获取需要转动物体的轴向向量,此向量也即物体旋转所在平面的法线向量/>。通过VR手柄的软件开发工具包SDK实时获取当前手柄在三维场景中运动的速度向量/>。
步骤2:计算手柄沿物体旋转平面的运动速度。
现实中手柄运动由于缺少约束,会产生相对物体旋转平面的法向速度,因此,需根据步骤1得到的物体旋转所在平面的法线向量和手柄在三维场景中的速度向量/>,计算手柄沿物体旋转平面的运动速度/>:
;
其中,为当前VR手柄在三维场景中的速度向量,/>为物体旋转所在平面的法线向量。
步骤3:获取旋转方向缓存队列signBuffer,具体流程如图2所示。
步骤3-1:根据三维向量计算手柄运动的旋转方向值:
;
其中,为物体旋转所在平面的法线向量,/>为当前计算获得的手柄速度向量,为上一次计算获得的手柄速度向量;
步骤3-2:将计算得到的旋转方向值与预设的阈值/>作比较,逻辑判断过程如下:
当旋转方向值时,手柄不转动,此时将值0进入转动方向缓存队列signBuffer,即/>。
当旋转方向值时,根据左手定则,在物体旋转所在平面的法线向量/>指向操作者的情况下,当旋转方向值/>时,手柄逆时针转动,此时将值-1进入旋转方向缓存队列signBuffer;当旋转方向值/>时,手柄顺时针转动,此时将值1进入旋转方向缓存队列signBuffer,即。
步骤4:获取旋转角度缓存队列angularBuffer,如图3所示。
步骤4-1:计算出当前计算获得的手柄速度向量与上一次计算获得的手柄速度向量/>的夹角/>:
;
步骤4-2:通过旋转方向缓存队列signBuffer,计算得出当前旋转方向的均值averageSign,从而消除抖动导致旋转方向突变的影响,计算方法为:
;
其中,bufferCapacity为缓存队列长度。
步骤4-3:提取转动角度缓存队列angularBuffer的队列首值,通过符号函数判断其符号值与步骤4-2得到的旋转方向的均值averageSign是否相等:
当时,当前手柄转动方向与上一次获得的转动方向相同,将当前获得手柄转动角度与方向进入缓存队列angularBuffer,即:
angularBuffer[0]=tempAngle×averageSign。
当时,当前手柄转动方向与上一次获得的转动方向不一致,此时将转动角度缓存队列angularBuffer的值都置为0,即:
;
然后将当前获得手柄转动角度与方向进入缓存队列angularBuffer,即:
。
在此之后,将当前计算获得的手柄速度向量赋值给上一次计算获得的手柄速度向量/>,用来进行下一次旋转角度计算,即/>。
步骤5:计算当前手柄带动物体旋转的角度并输出。
计算转动角度缓存队列angularBuffer所有项的平均值,即
;
其中,为缓存队列长度;/>输出为当前手柄带动物体旋转的角度,当/>时,物体顺时针转动,当/>时,物体逆时针转动。
实施例二
基于功能模块的角度,本实施例提供一种操作三维场景中物体旋转的系统,如图4所示,包括:
向量获取模块,用以获取三维场景中物体的轴向向量和手柄的速度向量;
计算模块,用以计算手柄沿物体旋转平面的运动速度;
队列获取模块一,用以获取旋转方向缓存队列;
队列获取模块二,用以获取旋转角度缓存队列;
计算输出模块,用以计算手柄带动物体旋转的角度并输出。
所述队列获取模块一,进一步包括:
方向值计算单元,用以根据三维向量计算手柄旋转方向值;
逻辑判断单元一,用以将获取的手柄旋转方向值与预设的阈值作比较,经相关逻辑判断后,将值进入旋转方向缓存队列。
所述队列获取模块二,进一步包括:
夹角计算单元,用以计算当前获得的手柄速度向量与上一次获得的手柄速度向量的夹角;
方向均值计算单元,用以通过旋转方向缓存队列计算得出当前旋转方向的均值;
逻辑判断单元二,用以提取转动角度缓存队列angularBuffer的队列首值,通过符号函数判断其符号值与得到的旋转方向的均值averageSign是否相等。
实施例三
基于硬件的角度,本实施例提供一种操作三维场景中物体旋转的装置,其结构如图5所示,包括处理器、存储器和总线,所述存储器存储有计算机程序,当所述计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述计算机程序,以执行如上所述的操作三维场景中物体旋转的方法的步骤。
本实施例提供的一种操作三维场景中物体旋转的装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
具体地,上述存储器和处理器能够为通用的存储器和处理器,这里不做具体限定,当处理器运行存储器存储的计算机程序时,能够执行上述通过虚拟现实设备操作三维场景中物体旋转的方法的步骤。
本领域技术人员可以理解,图5中示出的计算机设备的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
实施例四
本发明实施例还提供了一种计算机可读储存介质,所述计算机可读储存介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的操作三维场景中物体旋转的方法的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (6)
1.一种操作三维场景中物体旋转的方法,其特征在于,包括以下步骤:
步骤1:获取三维场景中物体的轴向向量和手柄的速度向量/>,所述轴向向量/>也即物体旋转所在平面的法线向量/>;所述手柄的速度向量/>通过VR手柄的软件开发工具包SDK实时获取;
步骤2:根据步骤1得到的物体旋转所在平面的法线向量和手柄在三维场景中运动的速度向量/>,计算手柄沿物体旋转平面的运动速度/>:
;
其中,为当前手柄在三维场景中运动的速度向量,/>为物体旋转所在平面的法线向量;
步骤3:获取旋转方向缓存队列signBuffer;具体包括:
步骤3-1:获取手柄旋转方向值:
根据三维向量计算手柄旋转方向值:
;
其中,为物体旋转所在平面的法线向量,/>为当前获得的手柄速度向量,/>为上一次获得的手柄速度向量;
步骤3-2:将获取的手柄旋转方向值与预设的阈值/>作比较,经以下逻辑判断,将值进入旋转方向缓存队列signBuffer:
当旋转方向值时,手柄不转动,此时将值0进入转动方向缓存队列signBuffer,即/>;
当旋转方向值时,根据左手定则,在物体旋转所在平面的法线向量/>指向操作者的情况下,当旋转方向值/>时,手柄逆时针转动,此时将值-1进入旋转方向缓存队列signBuffer;当旋转方向值 />时,手柄顺时针转动,此时将值1进入旋转方向缓存队列signBuffer,即;
步骤4:获取旋转角度缓存队列angularBuffer;具体包括:
步骤4-1:计算当前获得的手柄速度向量与上一次获得的手柄速度向量/>的夹角:
;
步骤4-2:通过旋转方向缓存队列signBuffer,计算得出当前旋转方向的均值averageSign,计算方法为:
;
其中,bufferCapacity为缓存队列长度;
步骤4-3:提取转动角度缓存队列angularBuffer的队列首值,通过符号函数判断其符号值与步骤4-2得到的旋转方向的均值averageSign是否相等:
当时,当前手柄转动方向与上一次获得的转动方向相同,将当前获得手柄转动角度与方向进入转动角度缓存队列angularBuffer,即:
angularBuffer[0]=tempAngle×averageSign;
当时,当前手柄转动方向与上一次获得的转动方向不一致,此时将转动角度缓存队列angularBuffer的值都置为0,即:
;
其中, angularBuffer[i]代表队列中索引i的值;
然后将当前获得手柄转动角度与方向进入转动角度缓存队列angularBuffer,即:
;
步骤5:计算手柄带动物体旋转的角度并输出,具体为:
计算转动角度缓存队列angularBuffer所有项的平均值,即
;
其中,为缓存队列长度;/>输出为当前手柄带动物体旋转的角度,当/>时,物体顺时针转动,当/>时,物体逆时针转动。
2.根据权利要求1所述的一种操作三维场景中物体旋转的方法,其特征在于,
获取旋转角度缓存队列angularBuffer之后,将当前获得的手柄速度向量赋值给上一次获得的手柄速度向量/>,用来进行下一次旋转角度计算,即/>。
3.根据权利要求1所述的一种操作三维场景中物体旋转的方法,其特征在于,在方法开始前,还包括以下初始操作:
设置两个三维向量变量和/>,其中,变量/>用以存储上一次计算获得的手柄速度向量,其初始值为零向量(0,0,0),变量/>用以存储当前计算获得的手柄速度向量;
设置两个长度相同的缓存队列,定义为转动角度缓存队列angularBuffer和转动方向缓存队列signBuffer;转动角度缓存队列angularBuffer缓存手柄转动夹角,用来计算物体转动角度数值,其初始值为0;转动角度缓存队列所有新的缓存数据由队头angularBuffer[0]进入,由队尾angularBuffer[bufferCapacity-1]退出;转动方向缓存队列signBuffer缓存手柄转动方向值,用来判断物体转动方向,其中,1代表正转,-1代表反转,0为不转动,方向缓存队列signBuffer的初始值为0;转动方向缓存队列所有新的缓存数据由队头signBuffer[0]进入,由队尾signBuffer[bufferCapacity-1]退出;
设置一个阈值threhold,用以判断手柄是否执行旋转物体操作。
4.一种操作三维场景中物体旋转的系统,其特征在于,包括:
向量获取模块,用以获取三维场景中物体的轴向向量和手柄的速度向量;
计算模块,用以计算手柄沿物体旋转平面的运动速度;
队列获取模块一,用以获取旋转方向缓存队列;
队列获取模块二,用以获取旋转角度缓存队列;
计算输出模块,计算当前手柄带动物体旋转的角度并输出;
所述队列获取模块一,进一步包括:
方向值计算单元,用以根据三维向量计算手柄运动的旋转方向值;
逻辑判断单元一,用以将计算得到的旋转方向值与预设的阈值作比较,进行相关逻辑判断,将值进入旋转方向缓存队列;
所述队列获取模块二,进一步包括:
夹角计算单元,用以计算当前获得的手柄速度向量与上一次获得的手柄速度向量的夹角;
方向均值计算单元,用以通过旋转方向缓存队列计算得出当前旋转方向的均值;
逻辑判断单元二,用以提取转动角度缓存队列angularBuffer的队列首值,通过符号函数判断其符号值与旋转方向的均值averageSign是否相等。
5.一种操作三维场景中物体旋转的装置,其特征在于,包括:
存储器,用以存储计算机程序;
处理器,用以执行所述计算机程序时实现如权利要求1至3任意一项所述的操作三维场景中物体旋转的方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任意一项所述的一种操作三维场景中物体旋转的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310464417.2A CN116185244B (zh) | 2023-04-27 | 2023-04-27 | 一种操作三维场景中物体旋转的方法、系统、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310464417.2A CN116185244B (zh) | 2023-04-27 | 2023-04-27 | 一种操作三维场景中物体旋转的方法、系统、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116185244A CN116185244A (zh) | 2023-05-30 |
CN116185244B true CN116185244B (zh) | 2023-08-01 |
Family
ID=86434834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310464417.2A Active CN116185244B (zh) | 2023-04-27 | 2023-04-27 | 一种操作三维场景中物体旋转的方法、系统、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185244B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117180752B (zh) * | 2023-11-07 | 2024-01-26 | 北京格如灵科技有限公司 | 控制操控物模型运动的方法、装置、计算机设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425272A (zh) * | 2013-09-02 | 2013-12-04 | 福州大学 | 一种利用智能手机控制电脑三维虚拟物体运动的方法 |
KR101625509B1 (ko) * | 2014-12-30 | 2016-05-30 | 국방과학연구소 | 회전하는 비행 물체의 롤 각도 추정 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07111743B2 (ja) * | 1992-03-04 | 1995-11-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 三次元空間中の物体を回転させるグラフィック表示方法及び装置 |
TWI407992B (zh) * | 2008-10-23 | 2013-09-11 | Univ Nat Cheng Kung | 運動模擬系統 |
CN102724440B (zh) * | 2011-05-11 | 2015-08-26 | 北京美摄网络科技有限公司 | 一种三维场景中实现物体旋转操作的方法 |
CN108319369B (zh) * | 2018-02-01 | 2021-04-27 | 网易(杭州)网络有限公司 | 驾驶交互方法、装置、存储介质及处理器 |
CN111223193B (zh) * | 2019-12-30 | 2023-05-26 | 深圳市瑞立视多媒体科技有限公司 | 物体旋转方法、旋转装置、终端设备及计算机可读存储介质 |
CN111632372A (zh) * | 2020-06-03 | 2020-09-08 | 深圳市瑞立视多媒体科技有限公司 | 虚拟对象的控制方法、装置、设备及存储介质 |
CN112527519A (zh) * | 2020-11-26 | 2021-03-19 | 福州智象信息技术有限公司 | 一种高性能本地缓存方法、系统、设备及介质 |
CN114138120B (zh) * | 2021-12-09 | 2023-02-14 | 北京冰镇山竹科技有限公司 | 一种运用于虚拟现实中的虚拟视角追踪方法及系统 |
-
2023
- 2023-04-27 CN CN202310464417.2A patent/CN116185244B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425272A (zh) * | 2013-09-02 | 2013-12-04 | 福州大学 | 一种利用智能手机控制电脑三维虚拟物体运动的方法 |
KR101625509B1 (ko) * | 2014-12-30 | 2016-05-30 | 국방과학연구소 | 회전하는 비행 물체의 롤 각도 추정 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN116185244A (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8705845B2 (en) | Entertainment device and method of interaction | |
WO2022021686A1 (zh) | 虚拟对象的控制方法及装置、存储介质、电子装置 | |
CN106575444B (zh) | 用户姿势驱动的化身装置和方法 | |
CN116185244B (zh) | 一种操作三维场景中物体旋转的方法、系统、装置及介质 | |
IL299278A (en) | Methods and system for creating and displaying 3D video in a virtual, augmented or mixed reality environment | |
CN107198879B (zh) | 虚拟现实场景中的移动控制方法、装置及终端设备 | |
EP2405419A2 (en) | User input device and method for interaction with graphic images | |
JP7268071B2 (ja) | バーチャルアバターの生成方法及び生成装置 | |
EP2029248A2 (en) | Control of data processing | |
CN108245890B (zh) | 控制虚拟场景中物体运动的方法和装置 | |
US7652670B2 (en) | Polynomial encoding of vertex data for use in computer animation of cloth and other materials | |
CN111062864A (zh) | 动画模型缩放方法及装置、电子设备、存储介质 | |
US8248417B1 (en) | Flattening 3D images | |
CN112237739A (zh) | 游戏角色渲染方法、装置、电子设备及计算机可读介质 | |
CN110879850B (zh) | 抖动参数的获取方法、装置、设备及存储介质 | |
JP2008090498A (ja) | 画像処理方法、画像処理装置 | |
CN114296843A (zh) | 人机接口设备的延迟确定 | |
JP7467780B2 (ja) | 画像処理方法、装置、デバイス及び媒体 | |
JP7177606B2 (ja) | イマーシブコンテンツ項目を消費するときに見る者をリファレンス方向の方へ回転させる方法及び装置 | |
CN110585711A (zh) | 虚拟飞行器的控制方法、装置、终端及存储介质 | |
CN112642149A (zh) | 游戏动画更新方法、装置及计算机可读存储介质 | |
CN108416830B (zh) | 动画显示控制方法、装置、设备及存储介质 | |
US6947041B2 (en) | Image processing method | |
CN111223193B (zh) | 物体旋转方法、旋转装置、终端设备及计算机可读存储介质 | |
JP2003051024A (ja) | 画像生成システム及び情報記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |