CN115131530A - 虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置 - Google Patents
虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置 Download PDFInfo
- Publication number
- CN115131530A CN115131530A CN202210784226.XA CN202210784226A CN115131530A CN 115131530 A CN115131530 A CN 115131530A CN 202210784226 A CN202210784226 A CN 202210784226A CN 115131530 A CN115131530 A CN 115131530A
- Authority
- CN
- China
- Prior art keywords
- virtual
- information
- role
- character
- change
- 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.)
- Pending
Links
- 230000001360 synchronised effect Effects 0.000 title claims description 18
- 238000007500 overflow downdraw method Methods 0.000 title claims description 4
- 238000000034 method Methods 0.000 claims abstract description 30
- 230000033001 locomotion Effects 0.000 claims abstract description 29
- 230000008859 change Effects 0.000 claims description 113
- 238000006073 displacement reaction Methods 0.000 claims description 83
- 238000004088 simulation Methods 0.000 claims description 52
- 230000011218 segmentation Effects 0.000 claims description 13
- 239000013598 vector Substances 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000004927 fusion Effects 0.000 claims description 9
- 206010034719 Personality change Diseases 0.000 claims description 5
- 238000012937 correction Methods 0.000 claims description 2
- 230000009466 transformation Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 7
- 238000009877 rendering Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 238000007654 immersion Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- 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/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20212—Image combination
- G06T2207/20221—Image fusion; Image merging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置,在虚拟引擎中引入了Character类,利用定位信息和控制器控制信息同时控制Character类,利用定位信息不断地修正模拟位移的位移结果,得到反映真实情况的目标位置,实现了虚拟角色和虚拟空间的实时融合。且用户通过控制器移动或者自身移动来实现虚拟角色移动的操作可同时进行,以提高了功能的扩展性,且本方案完全遵循虚拟引擎内生逻辑,降低开发者的额外学习成本。
Description
技术领域
本发明涉及虚拟引擎领域,特别涉及一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置。
背景技术
裸眼全沉浸式混合现实产品,指的是用户在无需佩戴任何辅助设备的前提下在真实物理空间内感受到全沉浸虚拟画面的产品。为了实现以上效果,往往需要配置投影设备在真实的物理空间呈现真实尺度、真实比例的全沉浸虚拟空间。然而用户需求已不仅满足于平面展示的虚拟空间的虚拟画面内容,更希望能够在虚拟空间中实现实时的画面交互,这就需要通过背后强大的虚拟引擎实现。
虚拟引擎实质就是以底层编程语言为基础的一种通用开发平合,它包括各种交互硬件接口、图形数据的管理和绘制模块、功能设计模块、消息响应机制、网络接口等功能,可支持各类控制器输入驱动玩家角色,但控制器输入的信息是用于控制虚拟空间,无法和用户真实的定位信息进行联动,导致目前的虚拟空间不具备和玩家互动的特性,缺乏Character类的灵活性。具体的来说,目前的裸眼全沉浸式混合现实产品无法满足用户顺畅地和虚拟空间的虚拟画面内容互动的效果,比如上楼梯和跳跃等操作,也就说,虚拟角色和虚拟空间无法实现实时的同步融合。
发明内容
本发明的目的在于提供一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置,使得不同来源的控制信息同时控制Character类,且不同控制信息对虚拟画面内容的控制可单独进行,以在不影响虚拟画面内容的画面内容的同时实现了用户和虚拟画面内容互动的实效性。
为了实现以上目的,本技术方案提供了一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,包括:
虚拟引擎内获取来自不同驱动来源的驱动信息,其中所述驱动信息包括定位信息以及控制器控制信息的至少一种,且所述驱动信息均以驱动速度和驱动方向表示;
创建Character类并在Character类中创建room Component组件,其中所述roomComponent组件基于所述定位信息获取用户在真实物理空间内的真实空间位置信息,基于当前tick事件的所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度,其中虚拟角色为在虚拟空间所在坐标系的用户;
Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息,对当前tick事件进行模拟位移得到目标位置;
将所述目标位置强制同步给客户端。
第二方面,本方案提供了一种虚拟引擎上的虚拟角色和虚拟空间的同步融合装置,包括:
驱动信息获取单元,用于虚拟引擎内获取来自不同驱动来源的驱动信息,其中所述驱动信息包括定位信息以及控制器控制信息的至少一种,且所述驱动信息均以驱动速度和驱动方向表示;
定位信息数据单元,用于创建Character类并在Character类中创建roomComponent组件,其中所述room Component组件基于所述定位信息获取用户在真实物理空间内的真实空间位置信息,基于当前tick事件的所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度,其中虚拟角色为在虚拟空间所在坐标系的用户;
模拟位移单元,用于在Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息,对当前tick事件进行模拟位移得到目标位置;
同步单元,用于将所述目标位置强制同步给客户端。
相比现有技术,本技术方案具有以下的有益效果:
本方案在虚拟引擎中引入了Character类,利用定位信息和控制器控制信息同时控制Character类,利用定位信息不断地修正模拟位移的位移结果,得到反映真实情况的目标位置,实现了虚拟角色和虚拟空间的实时融合。且用户通过控制器移动或者自身移动来实现虚拟角色移动的操作可同时进行,以提高了功能的扩展性,且本方案完全遵循虚拟引擎内生逻辑,降低开发者的额外学习成本。
附图说明
图1是根据本申请实施例的一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法的流程图;
图2是根据本申请一种实施例的虚拟空间的示意图;
图3是根据本申请实施例的虚拟引擎上的虚拟角色和虚拟空间的同步融合装置的结构框图;
图4是根据本申请实施例的电子装置的硬件结构示意图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员应理解的是,在本发明的揭露中,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系是基于附图所示的方位或位置关系,其仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此上述术语不能理解为对本发明的限制。
可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。
实施例一
本方案提供了一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置,在虚拟引擎上实现对应玩家角色的虚拟角色和虚拟空间的同步融合,以实现用户和虚拟空间的互动,基于控制器控制信息以及定位信息控制Character类,且不影响单独控制器的控制逻辑。
具体的,如图1所示,本方案提供的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,包括以下步骤:
虚拟引擎内获取来自不同驱动来源的驱动信息,其中所述驱动信息包括定位信息以及控制器控制信息的至少一种,且所述驱动信息均以驱动速度和驱动方向表示;
创建Character类并在Character类中创建room Component组件,其中所述roomComponent组件基于所述定位信息获取用户在真实物理空间内的真实空间位置信息,基于当前tick事件的所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度,其中虚拟角色为在虚拟空间所在坐标系的用户;
Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息,对当前tick事件进行模拟位移得到目标位置;
将所述目标位置强制同步给客户端。
本方案提供的虚拟空间的示意图如图2所示,至少一投影设备置于真实的物理空间内,通过投影设备向真实物理空间投射虚拟画面内容形成虚拟空间,用户置身于真实物理空间内感受虚拟空间带来的裸眼现实感。本方案的定位信息用于获取用户在真实物理空间内的真实空间位置信息,控制器控制信息用于获取控制虚拟空间内的虚拟画面内容的控制信息。
如前所示,根据驱动来源的不同,驱动信息可区分控制器控制信息和定位信息,其中控制器控制信息是来自于控制设备的控制信息,比如可来自于控制器手柄、控制器虚拟摇杆以及控制器键鼠的控制信息。控制器控制信息是用于控制虚拟空间的虚拟画面内容,比如移动手柄来调整虚拟画面内容的移动,一般而言,控制器控制信息通过描述速度和方向来描述位移。
定位信息来自于定位***捕捉的用户相对于物理空间的真实空间位置信息,定位***为一套独立的传感器和处理器组成的捕获用户空间位置坐标的***。定位信息是用于反映用户相对于真实物理空间的真实空间位置信息,虚拟空间搭建在真实的物理空间上,一般而言,定位信息通过描述位置信息来描述位移。
为了顺应虚拟引擎原生的控制逻辑,需要将驱动信息同质化处理成均以驱动速度和驱动方向表示。由上可知,控制器控制信息已经是由驱动速度和驱动方向来描述位移,故本方案重点同质定位信息以利用驱动速度和驱动方向来描述位移。这样可以最大化利用虚拟引擎自带的驱动和交互逻辑。
本方案的Room Component组件是基于虚拟引擎的Component类制作的,其被安插在Character Actor下。Room Component组件用于描述真实物理空间的孪生在虚拟空间中的相对位置,本方案创建的room Component组件主动跟踪虚拟角色的虚拟空间位置,且被所述定位信息独立驱动以被确保虚拟空间和用户的相对位置始终准确。
Movement Component是虚拟引擎的Character类中预置好的一个Component类,专门负责处理角色的移动,它是用“速度”来描述角色的位置变化的,支持“加速度”、“力”等可以用来推算“速度”的输入。Movement Component处理“速度”输入的逻辑是:每个tick根据从上一个tick到这一个tick之间的所有速度/力的输入的总和,推算出这一小段时间变化里需要产生的总位移,并执行服务器端-客户端的同步平滑模拟来实现这一小段位移。
也就是说,对于Movement Component来说,位移的“终点”是灵活可变的,“速度”才是不变的准则,而在实际使用需求来说,“终点”必须是固定的,因为人在实际的真实物理空间中已经走到那个地方了,“速度”才是灵活可变的。故本方案对Movement Component进行了适应性的改变,以使其可以和Room Component协同工作。
值得一提的是,为了保证同步融合渲染的效果,本方案的Movement Component已有的workflow上增加了额外的检验机制,以确保1)除非服务器端认定此次移动的终点为非法位置,否则确保每次模拟的终点落在定位信息输入的位置;2)模拟过程中,RoomComponent同步调整虚拟空间的位置变化,确保真实物理空间的虚拟孪生在虚拟世界中的位置变化是平滑稳定的。
具体的,在“基于所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度”步骤中,
在当前tick事件开始时,基于最新的真实空间位置信息和上一次tick事件的真实空间位置信息计算得到真实空间位置变化量;
基于真实物理空间相对于虚拟空间的旋转信息,转换所述真实空间位置变换量得到角色位置变化信息,其中所述角色位置变化信息是位于虚拟空间所处的坐标系下的;
获取当前tick事件的耗时,计算所述角色位置变化信息和所述耗时的比值得到角色变化初始速度。
在计算当前tick事件的耗时时,获取前几次tick事件的间隔推算当前tick事件的间隔。因为每个tick的耗时不是固定值,而是跟渲染线程的耗时有关。虚幻引擎的负责渲染游戏画面的渲染线程和负责模拟游戏世界中每个时刻发生的事件的Gameplay线程存在比较松散的关联性,渲染线程所输出的画面至多落后Gameplay线程1~2帧,当渲染单帧的耗时很高时,Gameplay线程也会慢下来等待。所以单个tick的耗时同时受到模拟事件的计算量、和渲染的计算量两个因素的影响。场景中的粒子特效、后期特效等会造成渲染耗时突然增加/减少,给Gameplay这边的耗时带来更多不确定性,故本方案通过前几次tick事件以获得一个更合理的耗时预估值。
MovementComponent组件获取当前tick事件的所有输入的控制器控制信息,所述控制器控制信息以速度、力、加速度的形式被获取,以得到用于模拟位移的位移速度,所述位移速度被同步给服务器端。
值得说明的是,虚拟引擎所在的服务器端和虚拟空间所在的客户端的运行情况、模拟依据不同,导致服务器端和客户端模拟位移得到最终位置是不同的,一般而言是以服务器端的最终终点为权威。
之所以本方案需要在服务器端和客户端同时模拟位移,是考虑到不能保证同步动作是每个tick事件都会发生的、也不能保证这个tick事件的同步会在将来的哪一个时刻发生。引擎网络通信模块在通信质量不好时,会对通信数据进行组合打包优化等操作,导致同步事件可能延迟或被舍弃(如果延迟时间过长)。为了确保这种情况下客户端依然有尽可能流畅的过程体验,UE引擎采取的策略是在两端同时模拟并校对最终结果。这样做也有利于减少网络通信的数据量,减少客户端的操作响应延迟。
另外,需要说明的是,模拟位移过程涉及到很多不同层面的模拟,除了来自驱动信息以外还有来自游戏机制以及环境互动导致的位移变化(例如“前进过程中掉下悬崖”,就受到重力加速度的模拟影响;“前进过程中被炸弹轰飞”,受到游戏内“炸弹”Actor施加的力和重力加速度的模拟影响),模拟位移的过程会对所有的信息进行叠加处理。
在“Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息作为模拟信息,对当前tick事件进行模拟位移得到目标位置”步骤中,自带位移信息来自于内容机制以及环境互动导致的位移变化。
值得一提的是,针对当前tick事件会进行多次渲染。也就是说,当前tick事件可以被细分为很小的固定时长间隔,在每段固定时长间隔内均执行分段模拟,这样可以确保模拟真实的视觉感。示例说明,假设空间中放了一个薄片状的碰撞体,若有物体以很快的速度扫过了碰撞体,多分段的渲染模拟可以最大程度地确保这个碰撞体的“碰撞”事件被正确地触发,而不会造成物体前一个tick在碰撞体左侧、后一个tick直接跑到碰撞体右侧,而没有发生碰撞的情况。
而本方案通过在多段模拟中根据Room Component输出的角色位置变化信息和角色变化初始速度和模拟位移之间的计算结果,不断地修正Room Component输入到MovementComponent中的输入速度。
对应的,在“Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息作为模拟信息,对当前tick事件进行模拟位移得到目标位置”步骤中,对当前tick事件进行多段分段模拟,利用前一段分段模拟得到的位置变化向量抵消所述角色位置变化信息得到有效位移量,基于当前tick事件剩余的位移量和当前tick事件的剩余耗时修正角色变化初始速度得到角色变化速度,将所述有效位移量替代所述角色位置变化信息,将所述角色变化速度替代所述角色变化初始速度代入下一段分段模拟中重复运算,得到目标位置。
本方案在每段分段模拟是都结合所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息进行模拟,得到对应当前分段模拟的位置变化向量。虽然不同tick事件的分段模拟的次数不同,但是针对每次分段模拟的计算过程是相同的:
都是从本次分段模拟产生的位置变化向量中找到同角色位置变化信息同向的向量,从角色位置变化信息中减去同向向量得到有效位移量,该有效位移量作为下一次分段模拟的输入信息。
具体的,在“利用前一段分段模拟得到的位置变化向量抵消所述角色位置变化信息得到有效位移量”步骤中,从所述位置变化向量中分离出同所述角色位置变化信息同向的抵消位移量,将角色位置变化信息减去所述抵消位移量得到有效位移量。示例如下:
每次分段模拟得到的位置变化向量Ln,与角色位置变化信息ΔPi进行对比:
从Ln中分离出与ΔPi同向的向量l,视为Room Component的抵消位移量,其余作为Room Component的有效位移量:ΔPi减去l,带入下一次运算:ΔPi+1=ΔPi–l。
在“基于当前tick事件剩余的位移量和当前tick事件的剩余耗时修正角色变化初始速度得到角色变化速度”步骤中,计算当前tick事件剩余的位移量和当前tick事件的剩余耗时的商值得到角色变化速度。
具体的计算方式为:
求取每次分段模拟得到的位移量的计算公式如下:
ln=vn*tn,
其中vn对应的是分段模拟的速度,tn对应的是分段模拟的耗时。
本方案的当前tick事件的总位移量为驱动信息对应的位移量总和,具体的,求取当前tick事件的总位移量L的计算公式如下:
当前tick事件的总位移量L=定位信息对应的移动量+控制器控制信息对应的移动量。
基于当前tick事件的总位移量L和每次分段模拟得到的位移量计算当前tick事件剩余的位移量,计算公式如下:
当前tick事件剩余的位移量=Ln=L–(l1+l2+l3+…+ln-1);
其中L是当前tick事件的总位移量,ln-1是在当前tick事件前的每次分段模拟的位移量。
最后基于当前tick事件剩余的位移量和当前tick事件的剩余耗时Tremain计算每次分段模拟的角色变化速度,具体的计算公式如下;
则每次分段模拟的角色变化速度=当前tick事件剩余的位移量Ln/当前tick事件的剩余耗时Tremain。
另外,经过多次分段模拟后的角色位置变化信息被抵消至0时,则代表角色位置变化信息的抵消全部完成,则在剩余的分段模拟中所有产生的额外位移都将作为角色位置变化信息的有效位移量被执行。此处的额外位移指的是当用户位置和空间位置之间的抵消完全后,后续产生的移动。
比如在一次模拟中用户向前走了0.5米,同时用推动摇杆的方式使得虚拟画面内容向同样的方向移动,那么room component通过以上的计算方式会记录需要抵消的向前移动量为0.5米。而只要抵消移动量达到了预期值(0.5米),room后续的移动就都是跟随角色一起移动了。
而若当前tick事件结束后的角色位置变化信息还未被抵消至0,意味着这次Tick的模拟实际并没有到达想要的位置,则留存当前tick事件结束后的剩余角色位置变化信息,并对剩余角色位置变化信息打上tick序号标签。
在“将所述目标位置强制同步给客户端”步骤中,本方案修改了强制同步的功能,使得服务器端在将目标位置强制同步给客户端时带上剩余角色位置变化信息。对应的,在“将所述目标位置强制同步给客户端”步骤中,当当前tick事件结束后的角色位置变化信息还未被抵消至0,获取此时的剩余角色位置变化信息,并将所述剩余角色位置变化信息添加到所述目标位置上并同步给客户端。
也就是说,获取tick序号标签对应的剩余角色位置变化信息,将剩余角色位置变化信息加上目标位置得到客户端目标位置,提高客户端的信息权威等级并将客户端目标位置再同步给服务器端,随后恢复客户端的信息权威等级。这样做的目的是:在角色进行高速移动时,减少由于服务器强制同步带来的瞬移回退效果,以维护玩家的游戏体验。
通过以上说明的技术手段,本方案实现了虚拟角色和虚拟空间驱动的完全同步,以增强用户在虚拟空间内同虚拟画面内容交互的连续性和真实性,减少了场景抖动和交互延时等负面影响。
除此之外,为了提高多用户联网场景的交互体验,本方案提供的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法还通过面向分离技术实现玩家面向可被准确观察,且玩家自身观察世界不受面向影响。
示例性的,在一个多用户联网场景中,用户A和用户B在各自的空间位置进行游玩并共享同一虚拟画面内容,并在虚拟画面内容中可以互相看到对方的虚拟角色。比如用户B在打怪,用户B需要移动的“前”方向是由用户B本人相对于用户B所在虚拟空间的旋转决定,而用户A看到的用户B的虚拟角色是面向怪物,而这样效果的达成就需要通过面向分离技术来实现。
不同于以往的佩戴式虚拟现实场景,本方案是在裸眼全沉浸式混合现实产品中实现虚拟画面内容的展示,这就意味着用户是通过自身的转向来获取不同的观察角度,且需要基于用户的观察角度来控制虚拟画面内容的展示效果。为了在本方案提供的裸眼全沉浸式混合现实产品中实现面向分离,本方案提供的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法进一步包括以下步骤:
获取旋转数据,其中所述旋转数据包括房间朝向旋转数据、控制器朝向旋转数据以及演出朝向旋转数据;
将所述旋转数据及对应的绑定关系存放在PlayerState中;
改动任一所述旋转数据得到改动旋转数据并触发旋转事件;
组件接收到所述旋转事件后从所述PlayerState中的绑定关系获取计算方法,并调取所述改动旋转数据和其他旋转数据计算旋转角度并执行。
本方案的旋转数据根据客体不同被区分为房间朝向旋转数据、控制器朝向旋转数据以及演出朝向旋转数据,其中房间朝向旋转数据关注虚拟空间所在的真实物理空间相对于虚拟空间的旋转角度,通常这个旋转角度不会在游戏中实时变化,而是通过配置文件来调整,在一些特殊场景下,旋转角度会绑定在角色actor上。其中控制器朝向旋转数据关注用户本人相对于虚拟空间的旋转角度,该旋转角度可以绑定在角色Actor上,也可以绑定在角色模型上,由于roomcomponent从属于Actor下,当选择该角度绑定在Actor这一层时,roomcomponent会在角度变化时进行相应的反向旋转+位移,以确保房间和虚拟世界的相对角度、位置在旋转过程中不发生变化。其中演出朝向旋转数据关注虚拟角色在虚拟世界上的旋转角度,通常需要配合游戏演出,所以与玩家本人的面向常有不一致的情况,通常这个旋转角度绑定在角色模型这一层。
如控制器朝向旋转数据的旋转也同时绑定在角色模型层,则进行以下处理:当没有演出需求时,对角色模型的旋转角度进行同步,确保控制端与观察者端的模型状态一致;有演出需求时,则断开同步,观察者端的虚拟角色自行控制旋转角度以符合叙事需要。同时,负责驱动角色动作的状态机(从属于角色模型)需要通过控制端与观察者端的模型角度差,换算动作事件所对应的动画状态。
在“将所述旋转数据及对应的绑定关系存放在PlayerState中”步骤中,所述旋转数据的绑定关系以枚举类的形式存在PlayerState中。
另外为了和三类旋转数据进行匹配,本方案设有三个分别和旋转数据种类一致的主动接口,以分别对房间朝向旋转数据、控制器朝向旋转数据以及演出朝向旋转数据进行改动,当任一所述旋转数据被改动后都会触发旋转事件,旋转事件被相关组件接收,其中相关组件可以是Character Actor、Character Mesh、Room Component。
接收到旋转事件的组件根据当前PlayerState的绑定关系,找到自身计算旋转的对应方法,再按需调用PlayerState中旋转数据进行旋转角度的计算,以实现多个虚拟角色在虚拟空间内的面向分离。
实施例二
基于相同的构思,参考图3,本申请还提出了一种虚拟引擎上的虚拟角色和虚拟空间的同步融合装置,包括:
驱动信息获取单元,用于虚拟引擎内获取来自不同驱动来源的驱动信息,其中所述驱动信息包括定位信息以及控制器控制信息的至少一种,且所述驱动信息均以驱动速度和驱动方向表示;
定位信息数据单元,用于创建Character类并在Character类中创建roomComponent组件,其中所述room Component组件基于所述定位信息获取用户在真实物理空间内的真实空间位置信息,基于当前tick事件的所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度,其中虚拟角色为在虚拟空间所在坐标系的用户;
模拟位移单元,用于在Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息,对当前tick事件进行模拟位移得到目标位置;
同步单元,用于将所述目标位置强制同步给客户端。
关于实施例二中与实施例一相同的技术内容不再重复累赘说明。
实施例三
本实施例还提供了一种电子装置,参考图4,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项虚拟引擎上的虚拟角色和虚拟空间的同步融合方法实施例中的步骤。
具体地,上述处理器402可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(HardDiskDrive,简称为HDD)、软盘驱动器、固态驱动器(SolidStateDrive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(Non-Volatile)存储器。在特定实施例中,存储器404包括只读存储器(Read-OnlyMemory,简称为ROM)和随机存取存储器(RandomAccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-OnlyMemory,简称为PROM)、可擦除PROM(ErasableProgrammableRead-OnlyMemory,简称为EPROM)、电可擦除PROM(ElectricallyErasableProgrammableRead-OnlyMemory,简称为EEPROM)、电可改写ROM(ElectricallyAlterableRead-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(StaticRandom-AccessMemory,简称为SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器404(FastPageModeDynamicRandomAccessMemory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDateOutDynamicRandomAccessMemory,简称为EDODRAM)、同步动态随机存取内存(SynchronousDynamicRandom-AccessMemory,简称SDRAM)等。
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法。
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是各种来源的驱动信息,比如定位信息以及控制器控制信息等,输出的信息可以是目标位置等。
可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
虚拟引擎内获取来自不同驱动来源的驱动信息,其中所述驱动信息包括定位信息以及控制器控制信息的至少一种,且所述驱动信息均以驱动速度和驱动方向表示;
创建Character类并在Character类中创建room Component组件,其中所述roomComponent组件基于所述定位信息获取用户在真实物理空间内的真实空间位置信息,基于当前tick事件的所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度,其中虚拟角色为在虚拟空间所在坐标系的用户;
Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息,对当前tick事件进行模拟位移得到目标位置;
将所述目标位置强制同步给客户端。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、***、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如DVD及其数据变体、CD等光学介质上。物理介质是非瞬态介质。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,包括以下步骤:
虚拟引擎内获取来自不同驱动来源的驱动信息,其中所述驱动信息包括定位信息以及控制器控制信息的至少一种,且所述驱动信息均以驱动速度和驱动方向表示;
创建Character类并在Character类中创建room Component组件,其中所述roomComponent组件基于所述定位信息获取用户在真实物理空间内的真实空间位置信息,基于当前tick事件的所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度,其中虚拟角色为在虚拟空间所在坐标系的用户;
Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息,对当前tick事件进行模拟位移得到目标位置;
将所述目标位置强制同步给客户端。
2.根据权利要求1所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,在当前tick事件开始时,基于最新的真实空间位置信息和上一次tick事件的真实空间位置信息计算得到真实空间位置变化量;基于真实物理空间相对于虚拟空间的旋转信息,转换所述真实空间位置变换量得到角色位置变化信息,其中所述角色位置变化信息是位于虚拟空间所处的坐标系下的;获取当前tick事件的耗时,计算所述角色位置变化信息和所述耗时的比值得到角色变化初始速度。
3.根据权利要求2所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,在计算当前tick事件的耗时时,获取前几次tick事件的间隔推算当前tick事件的间隔。
4.根据权利要求1所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,对当前tick事件进行多段分段模拟,利用前一段分段模拟得到的位置变化向量抵消所述角色位置变化信息得到有效位移量,基于当前tick事件剩余的位移量和当前tick事件的剩余耗时修正角色变化初始速度得到角色变化速度,将所述有效位移替代所述角色位置变化信息,将所述角色变化速度替代所述角色变化初始速度代入下一段分段模拟中重复运算,得到目标位置。
5.根据权利要求4所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,在“利用前一段分段模拟得到的位置变化向量抵消所述角色位置变化信息得到有效位移量”步骤中,从所述位置变化向量中分离出同所述角色位置变化信息同向的抵消位移量,将角色位置变化信息减去所述抵消位移量得到有效位移量。
6.根据权利要求4所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,在“基于当前tick事件剩余的位移量和当前tick事件的剩余耗时修正角色变化初始速度得到角色变化速度”步骤中,计算当前tick事件剩余的位移量和当前tick事件的剩余耗时的商值得到角色变化速度。
7.根据权利要求1所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,经过多次分段模拟后的角色位置变化信息被抵消至0时,在剩余的分段模拟中所有产生的额外位移都将作为角色位置变化信息的有效位移量被执行。
8.根据权利要求1所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,在“将所述目标位置强制同步给客户端”步骤中,当当前tick事件结束后的角色位置变化信息还未被抵消至0,获取此时的剩余角色位置变化信息,并将所述剩余角色位置变化信息添加到所述目标位置上并同步给客户端。
9.根据权利要求1所述的虚拟引擎上的虚拟角色和虚拟空间的同步融合方法,其特征在于,包括步骤:
获取旋转数据,其中所述旋转数据包括房间朝向旋转数据、控制器朝向旋转数据以及演出朝向旋转数据;
将所述旋转数据及对应的绑定关系存放在PlayerState中;
改动任一所述旋转数据得到改动旋转数据并触发旋转事件;
组件接收到所述旋转事件后从所述PlayerState中的绑定关系获取计算方法,并调取所述改动旋转数据和其他旋转数据计算旋转角度并执行。
10.一种虚拟引擎上的虚拟角色和虚拟空间的同步融合装置,其特征在于,包括:
驱动信息获取单元,用于虚拟引擎内获取来自不同驱动来源的驱动信息,其中所述驱动信息包括定位信息以及控制器控制信息的至少一种,且所述驱动信息均以驱动速度和驱动方向表示;
定位信息数据单元,用于创建Character类并在Character类中创建room Component组件,其中所述room Component组件基于所述定位信息获取用户在真实物理空间内的真实空间位置信息,基于当前tick事件的所述真实空间位置信息的变化情况计算虚拟角色的角色位置变化信息和角色变化初始速度,其中虚拟角色为在虚拟空间所在坐标系的用户;
模拟位移单元,用于在Character类的Movement Component组件获取当前tick事件的所述角色位置变化信息、所述角色变化初始速度、所有所述控制器控制信息和自带位移信息,对当前tick事件进行模拟位移得到目标位置;
同步单元,用于将所述目标位置强制同步给客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210784226.XA CN115131530A (zh) | 2022-07-05 | 2022-07-05 | 虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210784226.XA CN115131530A (zh) | 2022-07-05 | 2022-07-05 | 虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115131530A true CN115131530A (zh) | 2022-09-30 |
Family
ID=83382762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210784226.XA Pending CN115131530A (zh) | 2022-07-05 | 2022-07-05 | 虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115131530A (zh) |
-
2022
- 2022-07-05 CN CN202210784226.XA patent/CN115131530A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9050538B2 (en) | Collision detection and motion simulation in game virtual space | |
EP3531248A1 (en) | Virtual sensor in a virtual environment | |
US20110119332A1 (en) | Movement animation method and apparatus | |
US20230334744A1 (en) | Method and apparatus for generating walk animation of virtual role, device and storage medium | |
US8909506B2 (en) | Program, information storage medium, information processing system, and information processing method for controlling a movement of an object placed in a virtual space | |
CN110689604A (zh) | 个性化脸部模型显示方法、装置、设备及存储介质 | |
JP7436707B2 (ja) | 仮想シーンにおける情報処理方法、装置、機器、媒体及びコンピュータプログラム | |
US20210192821A1 (en) | Animation control method and apparatus, storage medium, and electronic device | |
CN113209618B (zh) | 虚拟角色的控制方法、装置、设备及介质 | |
CN110570500B (zh) | 角色绘制方法、装置、设备及计算机可读存储介质 | |
CN112669194B (zh) | 虚拟场景中的动画处理方法、装置、设备及存储介质 | |
CN112206515A (zh) | 游戏物体状态切换方法、装置、设备及存储介质 | |
CN115470244A (zh) | 基于电子地图的交互方法、装置、计算机设备和存储介质 | |
CN115131530A (zh) | 虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置 | |
US11478707B2 (en) | Gap jumping simulation of stretchable character in computer game | |
CN115937371B (zh) | 人物模型的生成方法和*** | |
US20180098185A1 (en) | Smart hardware operation method and apparatus | |
CN110237533A (zh) | 一种基于龙骨动画的网游角色移动控制方法及装置 | |
CN117389338B (zh) | 无人机的多视角交互方法、装置及存储介质 | |
CN112999657B (zh) | 虚拟角色的幻影显示方法、装置、设备及介质 | |
CN114047998B (zh) | 对象更新方法及装置 | |
CN111078031B (zh) | 一种虚拟人物的位置确定方法、装置、设备及存储介质 | |
JPH10507860A (ja) | 動画制御装置 | |
CN110193194B (zh) | 游戏中的相机抖动模拟方法、装置及存储介质 | |
JP5784985B2 (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 |