CN116958338A - 对象姿态的调整方法、装置、设备、介质及产品 - Google Patents
对象姿态的调整方法、装置、设备、介质及产品 Download PDFInfo
- Publication number
- CN116958338A CN116958338A CN202310390096.6A CN202310390096A CN116958338A CN 116958338 A CN116958338 A CN 116958338A CN 202310390096 A CN202310390096 A CN 202310390096A CN 116958338 A CN116958338 A CN 116958338A
- Authority
- CN
- China
- Prior art keywords
- data
- prop
- position data
- virtual
- virtual object
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000003993 interaction Effects 0.000 claims abstract description 236
- 230000002452 interceptive effect Effects 0.000 claims abstract description 57
- 238000001514 detection method Methods 0.000 claims description 17
- 210000001145 finger joint Anatomy 0.000 claims description 17
- 230000010354 integration Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 230000005012 migration Effects 0.000 claims description 4
- 238000013508 migration Methods 0.000 claims description 4
- 230000006978 adaptation Effects 0.000 abstract description 12
- 210000000988 bone and bone Anatomy 0.000 description 29
- 238000010586 diagram Methods 0.000 description 23
- 210000004247 hand Anatomy 0.000 description 15
- 210000001503 joint Anatomy 0.000 description 14
- 210000000707 wrist Anatomy 0.000 description 12
- 230000009471 action Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 210000002683 foot Anatomy 0.000 description 7
- 230000033001 locomotion Effects 0.000 description 7
- 230000002441 reversible effect Effects 0.000 description 7
- 210000000323 shoulder joint Anatomy 0.000 description 7
- 210000003049 pelvic bone Anatomy 0.000 description 6
- 210000002310 elbow joint Anatomy 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 210000000629 knee joint Anatomy 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 210000001624 hip Anatomy 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 210000001015 abdomen Anatomy 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 210000000544 articulatio talocruralis Anatomy 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000037237 body shape Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000009133 cooperative interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 210000004197 pelvis Anatomy 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/577—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
- A63F2300/643—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car by determining the impact between objects, e.g. collision detection
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
- A63F2300/6607—Methods for processing data by generating or executing the game program for rendering three dimensional images for animating game characters, e.g. skeleton kinematics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种对象姿态的调整方法、装置、设备、介质及产品,涉及虚拟世界技术领域。该方法包括:获取第一虚拟对象的第一关节数据;获取虚拟道具与第一虚拟对象交互时的第一道具位置数据;获取第一虚拟对象的第一交互部位与虚拟道具交互时的第一部位位置数据,以及第二虚拟对象的第二交互部位与虚拟道具交互时的第二部位位置数据;确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,并基于第一位置关系和第二位置关系之间的差异,对第一关节数据进行调整,得到第一虚拟对象与虚拟道具交互的姿态数据,提高交互姿态的适配度,进而提升动画美观度。
Description
技术领域
本申请涉及动画生成领域,特别涉及一种对象姿态的调整方法、装置、设备、介质及产品。
背景技术
三维制作方法目前广泛应用于各种领域,如游戏领域、视频领域等。其中,针对游戏领域中,创作虚拟对象的姿态动画是其三维制作的重要组成部分。由于虚拟对象的姿态动画的制作过程非常繁琐,需要耗费大量人力。因此,常通过动画重定向的方法提高动画创作效率。其中,动画重定向是指将已创建的虚拟对象对应的姿态动画迁移至新创作的虚拟对象,从而自动生成目标虚拟对象对应的姿态动画。
在相关技术中,待处理的第一虚拟对象使用虚拟道具对应的第一关节数据可通过第二虚拟对象使用虚拟道具时对应的第二关节数据直接赋值得到,从而自动生成第一虚拟对象和虚拟道具交互时对应的姿态数据。
然而在相关技术中,由于不同虚拟对象之间存在体型差异,通过关节数据赋值直接获取第一虚拟对象对应的姿态数据会存在不适配第一虚拟对象实际与虚拟道具进行交互的情况,降低了虚拟对象姿态调整的准确度,影响虚拟对象的姿态动画的显示效果。
发明内容
本申请实施例提供了一种对象姿态的调整方法、装置、设备、介质及产品,提高了虚拟对象姿态调整的准确度。所述技术方案如下。
根据本申请的一方面,提供了一种对象姿态的调整方法,所述方法包括:
获取第一虚拟对象的第一关节数据,其中,所述第一关节数据是基于所述第一虚拟对象和所述第二虚拟对象之间的骨骼位置对应关系从所述第二虚拟对象对应的第二关节数据迁移得到的;
获取虚拟道具与所述第一虚拟对象交互时的第一道具位置数据,所述第一道具位置数据是基于所述虚拟道具与所述第二虚拟对象交互时的第二道具位置数据调整得到的;
获取所述第一虚拟对象的第一交互部位与所述虚拟道具交互时的第一部位位置数据,以及所述第二虚拟对象的第二交互部位与所述虚拟道具交互时的第二部位位置数据;
确定所述第一部位位置数据和所述第一道具位置数据之间的第一位置关系,以及所述第二部位位置数据和所述第二道具位置数据之间的第二位置关系,并基于所述第一位置关系和所述第二位置关系之间的差异,对所述第一关节数据进行调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
根据本申请的另一方面,提供了一种对象姿态的调整装置,所述装置包括:
获取模块,用于获取第一虚拟对象的第一关节数据,其中,所述第一关节数据是基于所述第一虚拟对象和所述第二虚拟对象之间的骨骼位置对应关系从所述第二虚拟对象对应的第二关节数据迁移得到的;
所述获取模块,还用于获取虚拟道具与所述第一虚拟对象交互时的第一道具位置数据,所述第一道具位置数据是基于所述虚拟道具与所述第二虚拟对象交互时的第二道具位置数据调整得到的;
所述获取模块,还用于获取所述第一虚拟对象的第一交互部位与所述虚拟道具交互时的第一部位位置数据,以及所述第二虚拟对象的第二交互部位与所述虚拟道具交互时的第二部位位置数据;
确定模块,用于确定所述第一部位位置数据和所述第一道具位置数据之间的第一位置关系,以及所述第二部位位置数据和所述第二道具位置数据之间的第二位置关系;
调整模块,用于基于所述第一位置关系和所述第二位置关系之间的差异,对所述第一关节数据进行调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
根据本申请的另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本申请实施例中任一所述对象姿态的调整方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述本申请实施例中任一所述的对象姿态的调整方法。
根据本申请的另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的对象姿态的调整方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
在通过第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系得到第一虚拟对象的第一关节数据后,通过对虚拟道具与第二虚拟对象交互时的第二道具位置数据调整得到虚拟道具与第一虚拟道具交互的第一道具位置数据,以及获取第一虚拟对象的第一交互部位和虚拟道具交互时的第一部位位置数据,第二虚拟对象的第二交互部位和虚拟道具交互时的第二部位位置数据,从而确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,最终基于第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,从得到第一虚拟对象和虚拟道具交互的姿态数据。也即,在获取第一虚拟对象的第一关节数据后,首先对虚拟道具进行位置调整,其次将第一虚拟对象与虚拟道具交互时的第一交互部位的第一部位位置数据和第二部位位置数据进行对齐,从而对第一关节数据进行微调,最终得到适配第一虚拟对象和虚拟道具交互时的姿态数据,能够使得虚拟对象体型不同的情况下对交互位置的关节数据进行微调从而提高交互姿态的适配度,进而提升动画美观度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的实施环境示意图;
图2是本申请一个示例性实施例提供的对象姿态的调整方法流程图;
图3是本申请另一个示例性实施例提供的对象姿态的调整方法流程图;
图4是本申请一个示例性实施例提供的第一交互部位示意图;
图5是本申请另一个示例性实施例提供的反向动力学实现示意图;
图6是本申请另一个示例性实施例提供的凸包建模结果示意图;
图7是本申请另一个示例性实施例提供的对象姿态的调整方法流程图;
图8是本申请另一个示例性实施例提供的对象姿态的调整方法流程图;
图9是本申请一个示例性实施例提供的对象姿态的调整装置结构图;
图10是本申请另一个示例性实施例提供的对象姿态的调整装置结构图;
图11是本申请一个示例性实施例提供的终端结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一参数也可以被称为第二参数,类似地,第二参数也可以被称为第一参数。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本申请实施环境进行介绍。图1给出了本申请一个示例性实施例提供的实施环境示意图。该实施环境中包括:终端110、服务器120和通信网络130,其中,终端110和服务器120通过通信网络130连接。
终端110中安装和运行有目标应用程序111,其中,目标应用程序111是支持三维模型创作的应用程序。在终端110运行目标应用程序111的过程中,当前已生成第二虚拟对象对应的第二关节数据以及对第一虚拟对象的三维模型创作完毕的情况下,向服务器120发送姿态数据获取请求,用于请求获取第一虚拟对象与虚拟道具交互时对应的姿态数据,其中,姿态数据获取请求中包括第二关节数据和第一虚拟对象的三维模型。
服务器120接收到姿态数据获取请求后,根据第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系从第二关节数据迁移得到第一虚拟对象的第一关节数据;获取虚拟道具和第二虚拟对象交互时的第二道具位置数据,根据第二道具位置数据对虚拟道具调整后得到虚拟道具和第一虚拟对象交互时的第一道具位置数据;获取第一虚拟对象的第一交互部位与虚拟道具交互时的第一部位位置数据以及第二虚拟对象的第二交互部位和虚拟道具交互时的第二部位位置数据;确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及确定第二部位位置数据和第二道具位置数据之间的第二位置关系,根据第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,从而得到第一虚拟对象和虚拟道具交互时的姿态数据,将姿态数据反馈至终端110。
终端110用于根据接收到姿态数据显示第一虚拟对象与虚拟道具交互时的交互动画。
上述终端110可以是可选的,终端可以是台式计算机、膝上型便携计算机、手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层4)播放、智能电视、智能车载等多种形式的终端设备,本申请实施例对此不加以限定。
服务器120包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。可选地,服务器120承担主要计算工作,终端110承担次要计算工作;或者,服务器120承担次要计算工作,终端110承担主要计算工作;或者,服务器120和终端110之间采用分布式计算架构进行协同计算。
值得注意的是,上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
在一些实施例中,上述服务器还可以实现为区块链系统中的节点。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。
结合上述简介,对本申请提供的对象姿态的调整方法进行说明,该方法可以由服务器或者终端执行,也可以由服务器和终端共同执行,本申请实施例中,以该方法由服务器执行为例进行说明,如图2所示,该方法包括如下步骤。
步骤210,获取第一虚拟对象的第一关节数据。
其中,第一关节数据是基于第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系从第二虚拟对象对应的第二关节数据迁移得到的。
示意性的,关节数据实现为虚拟对象对应的三维角色模型中骨骼在虚拟对象对应的对象坐标系下的坐标位置。也即,当前情况下,虚拟对象通过调整骨骼对应的不同坐标位置,从而调整对应的骨骼位置,实现不同的动作变化。
示意性的,关节数据也可以实现为虚拟对象对应的三维角色模型中关节点的旋转值,其中,关节点用于连接相邻两个部位对应的骨骼,从而通过设定关节点对应的不同旋转值实现骨骼的转动,进而生成不同的动作。例如:针对虚拟对象的手臂,包括肩膀、大臂和小臂,大臂对应的骨骼和小臂骨骼通过肘关节点进行连接,当肘关节点设定180度时,可实现虚拟对象伸直手臂的动作,当肘关节点设定90度时,可实现虚拟对象保持大臂平行水平面的情况下举起小臂呈90度状态,而肩膀对应的骨骼和大臂对应的骨骼通过肩关节进行连接,针对肩关节来说,首先确定虚拟对象处于站立状态,双手放于躯干两侧时,肩关节对应的关节旋转值为0,其次,确定大臂相对于肩关节的姿态摆动朝向,例如:针对左臂可向前摆动(举手动作),或者左臂可向左侧摆动(张开手臂动作),确定完摆动方向后确定旋转值,也即,针对既需要确定姿态摆动朝向,又需要旋转值的关节点,其对应的关节数据包括姿态摆动朝向以及旋转值,例如:左臂肩关节向左侧旋转90度,表示左臂向左侧张开。也即,当前情况下,虚拟对象通过设定关节点对应的不同旋转值(或者姿态摆动朝向以及旋转值),从而调整对应骨骼的位置,实现不同的动作。
在蒙皮动画中,骨骼(skeleton)是由刚性的“骨头(bone)”所建构而成的。这些刚性的部件(即骨骼,在某些场景中也称为“关节”)并不会渲染显示,始终都是隐藏起来的。称为皮肤(skin)的圆滑三角形网格会绑定于骨骼上,其顶点会跟随关节(joint)的移动。蒙皮上每个顶点可按权重绑定至一个或多个骨骼,因此当骨骼的位置发生变化时,蒙皮可以自然地拉伸。组成虚拟对象的骨骼的模型,即为上述骨骼模型(其中,骨骼模型与虚拟对象的对象模型不同,对象模型是指对骨骼模型进行蒙皮处理得到的模型)。在本申请实施例中,每个角色参数可以对应蒙皮上的一个或者多个顶点,该角色参数对应的一个或者多个顶点绑定的骨骼,即为该角色参数对应的骨骼部分。其中,相邻骨骼部分由关节点进行连接,从而通过调整关节点对应的关节数据来调整虚拟对象的姿态。
可选地,第一虚拟对象的第一关节数据是指第一虚拟对象对应的三维角色模型中所有关节点分别对应的关节数据;或者,第一虚拟对象的第一关节数据是指第一虚拟对象对应的三维角色模型中部分关节分别对应的关节数据,例如:第一关节数据是指第一虚拟对象与虚拟道具交互时对应的关节点的关节数据。
在一些实施例中,第二虚拟对象对应的第二关节数据是提前设置好的,因此,通过确定第一虚拟对象中骨骼位置对应的第二虚拟对象中骨骼位置,将第二虚拟对象骨骼之间的第二关节数据赋值到第一虚拟对象相应的骨骼之间的关节点上,从而得到第一虚拟对象对应的第一关节数据,例如:第二虚拟对象的右膝关节对应的第二关节数据为90度,则将90度赋值到第一虚拟对象的右膝关节,从而得到第一虚拟对象的右膝关节对应的第一关节数据为90度。
可选地,第二虚拟对象的第二关节数据是指第二虚拟对象对应的三维角色模型中所有关节点分别对应的关节数据;或者,第二虚拟对象的第二关节数据是指第二虚拟对象对应的三维角色模型中部分关节点分别对应的关节数据,例如:第二关节数据是指第二虚拟对象与虚拟道具交互时对应的关节点的关节数据。
可选地,第一关节数据是指第一虚拟对象针对一个动作状态下对应的关节数据,也即,一个关节点对应一个第一关节数据;或者,第一关节数据是指第一虚拟对象针对不同动作状态下对应的关节数据,也即,一个关节点对应至少一个第一关节数据。
步骤220,获取虚拟道具与第一虚拟对象交互时的第一道具位置数据。
其中,第一道具位置数据是基于虚拟道具与第二虚拟对象交互时的第二道具位置数据调整得到的。
示意性的,虚拟道具是指与第一虚拟对象/第二虚拟对象交互的指定道具。也即,与第二虚拟对象交互的虚拟道具,和与第一虚拟对象交互的虚拟道具是相同的虚拟道具。
可选地,虚拟道具与第一虚拟对象交互的交互类型包括第一虚拟对象触碰虚拟道具、第一虚拟对象使用虚拟道具(例如:第一虚拟对象双手持枪)、虚拟道具位于第一虚拟对象的指定位置处(例如:虚拟道具位于第一虚拟对象的脚边)等类型中至少一种。
可选地,虚拟道具与第一虚拟对象交互的交互类型和虚拟道具与第二虚拟对象交互的交互类型相同或者不同。
可选地,第一道具位置数据的数据类型包括如下几种类型中至少一种:
1.第一道具位置数据是指虚拟道具在指定坐标系下的坐标位置,例如:以第一虚拟对象建立对象坐标系,第一道具位置数据是指虚拟道具在对象坐标系中的三维坐标点;
2.第一道具位置数据是相对于第一虚拟对象的相对位置,例如:虚拟道具的第一道具位置数据位于第一虚拟对象的右手手心中。
值得注意的是,上述关于第一道具位置数据的数据类型仅为示意性的举例,本申请实施例对此不加以限定。
示意性的,第二道具位置数据是预先配置好的位置数据,也就是说,预先设定第二虚拟对象和虚拟道具交互时,生成第二虚拟对象对应的第二关节数据以及虚拟道具的第二道具位置数据。
可选地,第一道具位置数据的获取方式包括如下几种方式中至少一种:
1.获取第一虚拟对象的第一躯干高度,以及获取第二虚拟对象的第二躯干高度,通过将第一躯干高度和第二躯干高度之间的躯干高度比值对第二道具位置数据进行调整,得到第一道具位置数据,也即,将虚拟道具适配第一虚拟对象和第二虚拟对象的体型差,其中,躯干高度可实现为虚拟对象的身高高度,也可以实现虚拟对象的上半身高度;
2.获取虚拟道具和第二虚拟对象之间分别在水平方向和垂直方向上的相对位置,对第二道具位置数据进行调整,得到第一道具位置数据;
3.通过获取虚拟道具上的道具顶点位置数据,和第一虚拟对象的对象顶点位置数据生成虚拟道具的三维凸包模型,以及第一虚拟对象的三维凸包模型,将虚拟道具和第一虚拟对象分别对应的三维凸包模型进行碰撞检测,根据碰撞检测结果对第二道具位置数据调整后得到第一道具位置数据,其中,道具顶点位置数据是指虚拟道具表面上对应的顶点坐标位置,对象顶点位置是指第一虚拟对象对应三维角色模型表面上的顶点,例如:脊柱顶点、脖子顶点、头部顶点、肩膀顶点。
值得注意的是,上述关于第一道具位置数据的获取方式仅为示意性的举例,本申请实施例对此不作限定。
可选地,上述步骤210和步骤220可作为并列步骤,也即,步骤210和步骤220中各参数结果可同时获取;或者,步骤210和步骤220是存在执行先后顺序步骤。
步骤230,获取第一虚拟对象的第一交互部位与虚拟道具交互时的第一部位位置数据,以及第二虚拟对象的第二交互部位与虚拟道具交互时的第二部位位置数据。
示意性的,第一交互部位是指第一虚拟对象与虚拟道具交互时对应的指定部位,例如:当第一虚拟对象举起虚拟枪械的时候,第一交互部位为手部,又例如:当第一虚拟对象踢足球时,第一交互部位为脚部。
可选地,第一交互部位是与虚拟道具存在接触的部位,例如:第一虚拟对象握枪过程中,第一虚拟对象的手部与虚拟枪械有接触,所处第一交互部位为手部;或者,第一交互部位是指第一虚拟对象与虚拟道具交互时移动的部位,例如:第一虚拟对象与虚拟道具不交互时出于站立状态,双手放于躯干两侧,当第一虚拟对象双手举起虚拟枪械并准备射击时,第一虚拟对象的双臂和手部从躯干两侧移动至胸前与肩膀持平,因此,第一交互部位为双臂和手部。
示意性的,第二交互部位是指第二虚拟对象与虚拟道具交互时对应的指定部位,例如:当第二虚拟对象举起虚拟枪械的时候,第二交互部位为手部,又例如:当第二虚拟对象踢足球时,第二交互部位为脚部。
可选地,第二交互部位是与虚拟道具存在接触的部位,例如:第二虚拟对象握枪过程中,第二虚拟对象的手部与虚拟枪械有接触,所处第二交互部位为手部;或者,第二交互部位是指第二虚拟对象与虚拟道具交互时移动的部位,例如:第二虚拟对象与虚拟道具不交互时出于站立状态,双手放于躯干两侧,当第二虚拟对象双手举起虚拟枪械并准备射击时,第二虚拟对象的双臂和手部从躯干两侧移动至胸前与肩膀持平,因此,第二交互部位为双臂和手部。
可选地,第一交互部位和第二交互部位属于同一处的交互部位,例如:第一交互部位为第一虚拟对象的右手,第二交互部位为第二虚拟对象的右手;或者,第一交互部位和第二交互部位属于不同处的交互部位,例如:第一交互部位为第一虚拟对象的右手,第二交互部位为第二虚拟对象的左手。
在一些实施例中,第一部位位置数据是指第一虚拟对象和虚拟道具交互时第一交互部位在指定坐标系下的三维坐标位置,其中,指定坐标系可实现为第一虚拟对象对应的对象坐标系。
在一些实施例中,第二部位位置数据是指第二虚拟对象和虚拟道具交互时第二交互部位在指定坐标系下的三维坐标位置,其中,指定坐标系可实现为第二虚拟对象对应的对象坐标系。
示意性的,由于第一虚拟对象和第二虚拟对象属于不同类型的虚拟对象,因此第一交互部位的第一部位位置数据和第二交互部位的第二部位位置数据不同。
在一些实施例中,以第一虚拟对象的躯干中心为原点建立第一虚拟对象对应的对象坐标系,从而获取第一虚拟对象和虚拟道具交互时第一交互部位在对象坐标系下的第一部位位置数据,其中,对象坐标系实现为三维空间坐标系。
在一些实施例中,以第二虚拟对象的躯干中心为原点建立第二虚拟对象对应的对象坐标系,从而获取第二虚拟对象和虚拟道具交互时第二交互部位在对象坐标系下的第二部位位置数据,其中,对象坐标系实现为三维空间坐标系。
步骤240,确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,并基于第一位置关系和第二位置关系之间的差异,对第一关节数据进行调整,得到第一虚拟对象与虚拟道具交互的姿态数据。
示意性的,第一位置关系是指第一部位位置数据和第一道具位置数据在第一虚拟对象对应的三维空间坐标系中的向量距离。例如:第一部位位置数据为(x1,y1,z1),第一道具位置数据为(x2,y2,z2),则第一位置关系为(x1-x2,y1-y2,z1-z2)。也即,第一位置关系用于表示第一虚拟对象对应的第一交互部位和虚拟道具之间的相对位置。
示意性的,第二位置关系是指第二部位位置数据和第二道具位置数据在第二虚拟对象对应的三维空间坐标系中的向量距离。也即,第二位置关系用于表示第二虚拟对象对应的第二交互部位和虚拟道具之间的相对位置。
在一些实施例中,第一虚拟对象和虚拟道具交互的姿态数据是指最终调整后得到的第一虚拟对象对应的三维角色模型中关节点对应的关节点数据。
在一些实施例中,通过第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,是为了将第一虚拟对象的第一交互部位和虚拟道具的相对位置对齐第二虚拟对象的第二交互部位和虚拟道具的相对位置,从而通过获取对齐后的第一部位位置数据调整第一关节数据实现调整第一交互部位的位置。例如:通过第一位置关系和第二位置关系之间的差异对第一部位位置数据进行调整,得到第一交互部位对应的第一部位调整数据,根据第一部位调整数据对第一关节数据进行调整,从而得到第一虚拟对象和虚拟道具交互的姿态数据。
可选地,通过第一位置关系和第二位置关系之间差异所调整的第一关节数据是指第一虚拟对象对应的三维角色模型中所有关节点分别对应的第一关节数据;或者,通过第一位置关系和第二位置关系之间差异所调整的第一关节数据是指第一虚拟对象对应的三维角色模型中与第一交互部位具有交互关联关系的关节点对应的第一关节数据,例如:当第一交互部位实现为脚时,与脚具有交互关联关系的关节点为踝关节和膝关节。
综上所述,本申请实施例提供的对象姿态的调整方法,在通过第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系得到第一虚拟对象的第一关节数据后,通过对虚拟道具与第二虚拟对象交互时的第二道具位置数据调整得到虚拟道具与第一虚拟道具交互的第一道具位置数据,以及获取第一虚拟对象的第一交互部位和虚拟道具交互时的第一部位位置数据,第二虚拟对象的第二交互部位和虚拟道具交互时的第二部位位置数据,从而确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,最终基于第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,从得到第一虚拟对象和虚拟道具交互的姿态数据。也即,在获取第一虚拟对象的第一关节数据后,首先对虚拟道具进行位置调整,其次将第一虚拟对象与虚拟道具交互时的第一交互部位的第一部位位置数据和第二部位位置数据进行对齐,从而对第一关节数据进行微调,最终得到适配第一虚拟对象和虚拟道具交互时的姿态数据,能够使得虚拟对象体型不同的情况下对交互位置的关节数据进行微调从而提高交互姿态的适配度,进而提升动画美观度。
在一些实施例中,首先通过第一位置关系和第二位置关系之间的差异对第一部位位置数据进行调整,再对第一关节数据进行调整,示意性的,请参考图3,其示出了本申请一个示例性实施例提供的对象的姿态调整方法流程图,也即,步骤230中还包括步骤231至步骤233,步骤240中包括步骤241至步骤244,步骤240之后还包括步骤251至步骤253,如图3所示,该方法包括如下步骤。
步骤231,确定第一虚拟对象与虚拟道具交互时的第一交互部位。
示意性的,首先确定第一虚拟对象和虚拟道具对应的交互类型,通过交互类型确定第一交互部位。
在一个示例中,当第一虚拟对象和虚拟道具对应的交互类型为第一虚拟对象和虚拟道具有接触,则将第一虚拟对象的各部位中与虚拟道具存在接触的部位作为第一交互部位。
在另一个示例中,当第一虚拟对象和虚拟道具对应的交互类型为虚拟道具处于第一虚拟对象的指定位置范围内,则首先获取虚拟道具相对于第一虚拟对象的相对位置关系,根据相对位置关系确定第一交互部位。例如:当第一虚拟对象的脚边放置有足球,则第一虚拟对象脚部作为第一交互部位。
可选地,第一交互部位是设计人员根据第一虚拟对象和虚拟道具交互状态下人工选择的部位;或者,在第二虚拟对象和虚拟道具进行交互时对应的第二交互部位是提前设计好的情况下,将第一虚拟对象部位中与第二交互部位位置对应的部位作为第一交互部位,例如:在第二虚拟对象和虚拟道具进行交互时对应的第二交互部位是肚子,则第一交互部位也是肚子。
可选地,第一交互部位是针对单个视角下第一虚拟对象和虚拟道具交互时的部位;或者,第一交互部位是针对不同视角下第一虚拟对象和虚拟道具交互时的部位。
示意性的,请参考图4,其示出了本申请一个示例性实施例提供的第一交互部位示意图,如图4所示,当前显示三个不同视角方向下针对第一虚拟对象和虚拟同一交互动作对应的交互示意图,分别为交互示意图410、交互示意图420和交互示意图430。其中,交互示意图410、交互示意图420和交互示意图430均为同一交互动作。从交互示意图410、交互示意图420和交互示意图430能够看出,当前第一虚拟对象显示持枪动作,因此,第一虚拟对象的手部(包括左右411和右手412)为第一交互部位。
步骤232,确定第一交互部位对应多个部位关节。
示意性的,部位关节是指在第一交互部位中与虚拟道具存在接触点的关节点。
如图4所示,在交互示意图430中显示有第一虚拟对象的手部,在第一虚拟对象处于持枪动作的情况下,第一虚拟对象的手部为第一交互部位,在手部中,第一虚拟对象左手411托住虚拟枪械的枪体部位,因此,左手411所有手指关节为第一交互部位对应的多个部位关节。
如图4所示,在交互示意图420中显示有第一虚拟对象的手部,在第一虚拟对象处于持枪动作的情况下,第一虚拟对象的手部为第一交互部位,在手部中,第一虚拟对象的右手412扣动虚拟枪械的扳机,因此,右手412食指根部关节为第一交互部位对应的部位关节。
如图4所示,在交互示意图410中显示有虚拟枪械处于未可视化状态下。第一虚拟对象的左手411和右手412对应持枪动作下的摆放姿态。
本实施例中,将第一虚拟对象左手所有手指关节以及右手食指根部关节作为多个部位关节。
步骤233,将多个部位关节分别对应的关节位置数据对应的平均值结果作为第一交互部位对应的第一部位位置数据。
本实施例中,针对右手食指根部关节来说,在第一虚拟对象对应的对象坐标系下,根据当前第一虚拟对象和虚拟道具对应的交互动作将右手食指根部关节在对象坐标下的关节位置数据(即三维空间坐标)作为右手部位对应的第一部位位置数据。右手食指根部关节在对象坐标下的关节位置数据也称为右手关键点位置。
本实施例中,针对左手所有手指关节来说,在第一虚拟对象对应的对象坐标系下,根据当前第一虚拟对象和虚拟道具对应的交互动作将左右所有手指关节分别在对象坐标系下的关节位置数据(即三维空间坐标)对应的平均值结果作为左手部位对应的第一部位位置数据。也即,第一虚拟对象左手对应的第一部位位置数据是所有手指关节对应的几何中心的三维空间坐标。左手所有手指关节对应的关节位置数据也称为左手关键点位置。
本实施例中,第一交互部位对应的第一部位位置数据中包括左手的手腕位置和右手的手腕位置,左手关键点位置和右手关键点位置。
本实施例中,第二交互部位对应的第二部位位置数据中包括左手和右手的手腕位置,左手关键点位置和右手关键点位置。
步骤241,获取第一部位位置数据和第一道具位置数据之间的向量距离作为第一位置关系,以及获取第二部位位置数据和第二道具位置数据之间的向量距离作为第二位置关系。
示意性的,第一位置关系是指第一部位位置数据和第一道具位置数据在第一虚拟对象对应的对象坐标系(三维空间坐标系)中的向量距离。例如:第一部位位置数据为(x1,y1,z1),第一道具位置数据为(x2,y2,z2),则第一位置关系为(x1-x2,y1-y2,z1-z2)。也即,第一位置关系用于表示第一虚拟对象对应的第一交互部位和虚拟道具之间的相对位置。
示意性的,第二位置关系是指第二部位位置数据和第二道具位置数据在第二虚拟对象对应的对象坐标系(三维空间坐标系)中的向量距离。也即,第二位置关系用于表示第二虚拟对象对应的第二交互部位和虚拟道具之间的相对位置。
步骤242,基于第一位置关系和第二位置关系之间的差异对第一部位位置数据进行调整,得到第一交互部位对应的第一部位调整数据。
示意性的,当获取第一位置关系和第二位置关系后,通过第一位置关系和第二位置关系将第一虚拟对象和虚拟道具对应的第一关键点位置与第二虚拟对象和虚拟道具对应的第二关键点位置进行对齐,从而得到对齐后的第一部位位置数据作为第一部位调整数据,具体对齐方法可参考如下公式一。
公式一:
其中,表示第一部位调整数据,即调整后第一虚拟对象的手部位置(特指手腕位置),表示第一部位位置数据(通过步骤210迁移后得到的左手手腕位置以及右手手腕位置),表示第一道具位置数据(通过步骤220调整后的枪械位置),表示第二道具位置数据(步骤210中根据第二虚拟对象得到的枪械位置),表示第二部位位置数据(第二虚拟对象对应的左手关键点位置和右手关键点位置),表示第一部位位置数据(第一虚拟对象对应的左手关键点位置和右手关键点位置)。
步骤243,基于第一部位调整数据对第一关节数据进行关节角度调整,得到第一虚拟对象与虚拟道具交互的姿态数据。
示意性的,关节角度调整是指在确定第一交互部位对应的第一部位调整数据后,根据第一部位调整数据对第一虚拟对象的第一交互部位执行反向动力学,调整第一交互部位对应的第一关节数据对应的关节旋转值,使得第一交互部位能够移动至第一部位调整数据对应的坐标点上。
在一些实施例中,确定与第一交互部位具有交互关联关系的至少一个交互关节,交互关节是指第一交互部位调整在位置时存在角度调节需求的关节;基于第一部位调整数据对至少一个交互关节对应的第一关节数据进行关节角度调整,得到第一虚拟对象与虚拟道具交互的姿态数据。
本实施例中,交互关节是指当调整第一交互部位时,需要联动调整的,与第一交互部位连接的其他骨骼。例如:当调整手部时,交互关节为手部所对应的小臂、大臂以及肩膀。
本实施例中,采用反向动力学算法,首先确定与手部具有交互关联关系的交互关节分别为肩膀、大臂、小臂,肩膀与大臂之间为肩关节点,大臂与小臂之间为肘关节点,将第一虚拟对象的三维角色模型建模为刚体,采用物理模拟调整肩关节点和肘关节点分别对应的关节点旋转值,使得手部移动至第一部位调整数据对应的坐标点,生成第一虚拟对象与虚拟枪械交互的姿态数据。
步骤244,当第一虚拟对象的第一交互部位与虚拟道具的交互未符合交互条件的情况下,将第一部位位置数据和第一部位调整数据进行加权整合,得到第一交互部位对应的第二部位位置调整数据。
本实施例中,针对枪械动画中,会存在虚拟对象和虚拟道具的交互性较低的情况,例如,第一虚拟对象只用右手握枪扣动扳机进行射击,则第一虚拟对象与虚拟枪械的第一交互部位仅为右手手部。
因此,交互条件包括第一虚拟对象和虚拟道具交互时的第一交互部位的数量未达到预先设定的第一数量阈值、第一虚拟对象和虚拟道具交互时的交互关键点位置数量未达到预先设定的第二数量阈值等条件类型中至少一种。
在一些实施例中,基于第二部位位置数据和第二道具位置数据获取权重参数;基于权重参数将第一部位位置数据和第一部位调整数据进行加权整合,得到第一交互部位对应的第二部位调整数据。
本实施例中,当第一虚拟对象的第一交互部位与虚拟道具的交互未符合交互条件的情况下,通过根据枪械位置、左手关键点位置和右手关键点位置确定权重参数,从而根据权重参数将第一调整位置数据(调整后第一虚拟对象的手腕位置)和第一部位位置数据(未调整的第一虚拟对象的手腕位置)进行加权整合,从而得到第一虚拟对象最终的手腕位置(包括左手手腕和右手手腕)作为第二部位调整数据,具体计算方式请参考公式二。
公式二:
其中,表示第二部位调整数据,r为参数,默认值为40(也可以根据实际需求进行调整,也可以实现为一个范围)。
示意性的,请参考图5,其示出了本申请一个示例性实施例提供的反向动力学实现示意图,如图5所示,当前显示虚拟对象对应的三维角色模型500,三维角色模型中包括关节点511和与关节点511连接的骨骼512和骨骼513,通过调整关节点511的旋转值从而实现骨骼512和骨骼513的位置改变,实现动作变化。其中,与关节点511不存在关节交互关系的其他骨骼将不受影响。
在一些实施例中,基于第二部位调整数据对至少一个交互关节对应的第一关节数据进行关节角度调整,得到第一虚拟对象与虚拟道具交互的姿态数据。
本实施例中,当最终获取第二部位调整数据时,通过上述反向动力学方法对第一关节数据进行关节角度调整,从而得到最终第一虚拟对象与虚拟道具交互时对应的姿态数据。
在一些实施例中,当调整完第一虚拟对象对应的手部位置(手腕位置)后,还需要进一步对第一对象的手指位置进行精确调整,也即,第一交互部位中包括第一交互指关节,第二交互部位中包括第二交互指关节。
示意性的,指关节是指交互部位实现为手部的情况下,手部对应的手指关节。
步骤251,获取第一交互指关节与虚拟道具交互时的第一指关节位置数据,以及第二交互指关节与虚拟道具交互时的第二指关节位置数据。
本实施例中,通过获取第一虚拟对象对应的手指末端(手指指尖)对应的位置数据作为第一指关节位置数据,并且,通过获取第二虚拟对象对应的手指末端(手指指尖)对应的位置数据作为第二指关节位置数据。
本实施例中,手指末端实现为虚拟对象(包括第一虚拟对象和第二虚拟对象)每根手指对应手指指尖;或者,手指末端实现为虚拟对象与虚拟枪械接触的指定手指的手指指尖。
步骤252,确定第二指关节位置数据和第二部位位置数据之间的第三位置关系。
示意性的,将第二指关节位置数据和第二部位位置数据之间的向量距离确定为第三位置关系。
步骤253,基于第三位置关系和第一部位位置数据对第一交互指关节对应的第一关节数据进行调整,得到第一交互指关节对应的指关节姿态数据。
示意性的,根据第三位置关系和第一部位位置数据对第一交互指关节对应的第二指关节位置数据进行调整,得到第一指关节调整数据。具体请参考公式三。
公式三:
其中,为第一虚拟对象的第一指关节调整数据,为第二虚拟对象的左手关键点数据和右手关键点数据,表示第一虚拟对象的左手关键点数据和右手关键点数据,为第二虚拟对象的第二指关节调整数据。
本实施例中,通过第一指关节调整数据对第一交互指关节的第一关节数据进行关节角度调整,得到第一交互指关节对应的指关节姿态数据。
本实施例中,在获取第一虚拟对象对应的第一指关节调整数据后,将第一指关节数据与第一部位位置数据进行加权整合,得到最终第一虚拟对象对应的目标指关节调整数据,根据目标指关节调整数据采用反向动力学对整个手部中每个手指关节对应的第一关节数据进行关节角度调整,从而得到第一虚拟对象整个手部对应的指关节姿态数据,其中,指关节姿态数据只是整个手部与虚拟枪械交互时每个手指对应的姿态数据。
综上所述,本申请实施例提供的对象姿态的调整方法,在通过第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系得到第一虚拟对象的第一关节数据后,通过对虚拟道具与第二虚拟对象交互时的第二道具位置数据调整得到虚拟道具与第一虚拟道具交互是的第一道具位置数据,以及获取第一虚拟对象的第一交互部位和虚拟道具交互时的第一部位位置数据,第二虚拟对象的第二交互部位和虚拟道具交互时的第二部位位置数据,从而确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,最终基于第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,从得到第一虚拟对象和虚拟道具交互的姿态数据。也即,在获取第一虚拟对象的第一关节数据后,首先对虚拟道具进行位置调整,其次将第一虚拟对象与虚拟道具交互时的第一交互部位的第一部位位置数据和第二部位位置数据进行对齐,从而对第一关节数据进行微调,最终得到适配第一虚拟对象和虚拟道具交互时的姿态数据,能够使得虚拟对象体型不同的情况下对交互位置的关节数据进行微调从而提高交互姿态的适配度,进而提升动画美观度。
本实施例中,首先分别获取第一位置关系和第二位置关系,再通过第一位置关系和第二位置关系之间的差异对第一部位位置数据进行调整,从而得到第一部位调整数据,能够使得通过第二虚拟对象的第二交互部位和虚拟道具之间的相对位置与第一虚拟对象的第一交互部位和虚拟道具之间进行对齐,从而调整第一交互部位的位置数据,提高了姿态调整的准确度,提升了虚拟对象和虚拟道具之间交互的适配度。
本实施例中,在获取第一部位调整数据后,通过反向动力学方式对第一交互部位存在交互关联关系的交互关节进行关节角度调整,能够使得最终第一交互部位处于第一部位调整数据对应的位置处,并且与第一交互部位具有交互关联关系的关节也随之调整,提升了虚拟对象和虚拟道具之间交互的适配度。
本实施例中,当第一虚拟对象和虚拟道具交互性较低的情况下,将第一部位位置数据和第一部位调整数据进行姿态混合迁移,从而得到第二部位调整数据,最终,根据第二部位调整数据调整的第一关节数据,能够提高本方案的应用场景类型,进而提高组态调整方法的全面性。
本实施例中,通过第二部位位置数据和第二道具位置数据确定权重参数后再将第一部位位置数据和第一部位调整数据进行加权整合的方式能够使权重参数更适配加权整合过程。
本实施例中,进一步通过对第一交互指关节对应的第一指关节位置数据进行调整,能够更加精确地使第一虚拟对象完全适配虚拟道具的交互过程,提高姿态调整的准确度,提升了虚拟对象和虚拟道具之间交互的适配度。
本实施例中,通过第一交互部位确定多个部位关节,从而将多个部位关节对应的关节位置数据的平均值作为第一部位位置数据,能够使得第一部位位置数据兼顾多个部位关节对应的位置数据,提高了第一部位位置数据的准确度。
在一些实施例中,第一道具位置数据是根据躯干高度比值以及第二虚拟对象在不同方向和虚拟道具的相对位置数据对第二道具位置数据进行调整后得到第一道具位置数据,示意性的,请参考图6,其示出了本申请一个示例性实施例提供的对象姿态的调整方法流程图,也即步骤220中包括步骤221至步骤225,如图6所示,该方法包括如下步骤。
步骤221,获取第一虚拟对象对应的第一躯干高度,以及获取第二虚拟对象对应的第二躯干高度。
示意性的,躯干高度是指虚拟对象指定躯干部位的高度值。其中,躯干部位包括虚拟对象的整个躯干,此时躯干高度为虚拟对象对应的身高;或者,躯干部位包括虚拟对象的上半身,此时躯干高度为虚拟对象的上半身高度。
可选地,第一躯干高度和第二躯干高度对应同一躯干部位的高度值;或者,第一躯干高度和第二躯干高度对应不同躯干部位的高度值。
本实施例中,以第一躯干高度为第一虚拟对象的上半身高度,第二躯干高度为第二虚拟对象的上半身高度为例进行说明。
步骤222,确定第一躯干高度和第二躯干高度之间的躯干高度比值。
示意性的,将第一躯干高度和第二躯干高度的比值结果作为躯干高度比值,躯干高度比值用于确定第一虚拟对象和第二虚拟对象之间的体型差异,示意性的,请参考公式四。
公式四:
其中,R表示躯干高度比值,表示第一躯干高度,表示第二躯干高度。
步骤223,获取第二虚拟对象在第一方向上与虚拟道具的第一相对位置数据。
示意性的,第一方向为坐标轴上指定方向,如:x轴或者y轴。
示意性的,第一相位位置数据是指第二虚拟对象在第一方向上和虚拟道具之间的相对位置关系。
在一些实施例中,获取第二虚拟对象对应的躯干中部位置数据;基于第二道具位置数据、躯干中部位置数据和第二部位位置数据之间的位置关系得到第一相对位置数据。
本实施例中,为了保证虚拟枪械能够在虚拟对象的肩膀方向上进行调整,将第二虚拟对象对应的盆骨位置数据作为躯干中部位置数据,将第二虚拟对象的右手位置数据作为第二部位位置数据,从而通过第二道具位置数据、盆骨位置数据和右手位置数据之间的位置关系得到第一相对位置数据,具体请参考公式五。
公式五:
其中,Prj1表示第一相对位置数据,Pg表示第二道具位置数据,Prh表示右手位置数据,Phips表示盆骨位置数据。
步骤224,基于第一相对位置数据获取第二虚拟对象在第二方向上与虚拟道具的第二相对位置数据。
其中,第一方向和第二方向不同。
示意性的,第二方向为坐标轴上指定方向,如:x轴或者y轴。
本实施例中,以第一方向为x轴,第二方向为y轴为例进行说明。
在一些实施例中,确定第二道具位置数据和躯干中部位置数据之间的第四位置关系;基于第四位置关系和第一相对位置数据之间的差异得到第二相对位置数据。
本实施例中,通过第二道具位置数据和第二虚拟对象的盆骨位置数据之间的相对位置关系作为第四位置关系,基于第四位置关系和第一相对位置数据之间的差异得到第二相对位置数据,具体请请参考公式六。
公式六:Prj2=Pg-Phips)-Prj1
其中,Prj2表示第一相对位置数据,Prj1表示第一相对位置数据,Pg表示第二道具位置数据,Phips表示盆骨位置数据。
步骤225,基于躯干高度比值、第一相对位置数据和第二相对位置数据对第二道具位置数据进行调整,得到第一道具位置数据。
本实施例中,通过盆骨位置数据、第一相对位置数据和第二相对位置数据对第二道具位置数据进行调整,从而得到第一道具位置数据,具体请参考公式七。
公式七:
其中,表示第一道具位置数据。
在一些实施例中,获取虚拟道具对应的道具顶点位置数据;基于道具顶点位置数据生成虚拟道具对应的第一三维凸包模型;获取第一虚拟对象对应的对象顶点位置数据;基于对象顶点位置数据生成第一虚拟对象对应的第二三维凸包模型;对第一三维凸包模型和第二三维凸包模型进行碰撞检测,得到第一三维凸包模型和第二三维凸包模型对应的碰撞检测结果;根据碰撞检测结果对第一道具位置数据进行调整,得到虚拟道具的摆放位置数据。
本实施例中,在得到第一道具位置数据后,还存在对虚拟道具和第一虚拟对象进行凸包建模后对第一道具位置数据再次进行调整的情况,凸包建模分为枪械以及角色躯干两部分。
针对虚拟枪械,选取虚拟枪械对应的三维枪械模型除枪口附近的所有顶点对应的三维空间坐标作为道具顶点位置数据,用于生成第一三维凸包模型。其中,顶点根据虚拟枪械对应的蒙皮动画对应顶点获得。在另一个可实现的情况下,也可以选择虚拟道具所有的蒙皮顶点作为道具顶点位置数据。
针对第一虚拟对象,选取第一虚拟对象对应的三维角色模型对应的关节为对象顶点(包括盆骨、脊柱、脖子、头、肩膀),也考虑三维角色模型上的任一顶点,若其中对象顶点对应的蒙皮权重高于0.5(该权重在建制作模型时就已确定,之后不会更改),即将其选取为对象顶点,将对象顶点对应的三维空间坐标确定为对象顶点位置数据用于建模第二三维凸包模型。
选取了虚拟枪械和第一虚拟对象分别对应的顶点后,凸包建模过程以及碰撞检测方法采用指定碰撞检测库(Flexible Collision Library,FCL)实现,向指定碰撞检测库输入道具顶点数据和对象顶点数据,输出第一三维凸包模型和第二三维凸包模型之间的碰撞深度及碰撞法向。其中,碰撞深度是指第一三维凸包模型和第二三维凸包模型之间存在碰撞的距离,碰撞法向是指第一三维凸包模型和第二三维凸包模型之间存在碰撞的法线方向。
如图7所示,展示了一个举枪动作的凸包建模结果,当前显示凸包建模结果700,凸包建模结果700中包括虚拟枪械对应的第一三维凸包模型710以及第一虚拟对象对应的第二三维凸包模型720。
在得到两个凸包间的碰撞深度和碰撞法向后,将虚拟枪械沿碰撞法向平移碰撞深度对应的距离,即可得到最终的虚拟枪械位置作为第一道具位置数据。该位置适应了第一虚拟对象的躯干比例,同时避免了虚拟枪械和躯干的碰撞。
综上所述,本申请实施例提供的对象姿态的调整方法,在通过第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系得到第一虚拟对象的第一关节数据后,通过对虚拟道具与第二虚拟对象交互时的第二道具位置数据调整得到虚拟道具与第一虚拟道具交互是的第一道具位置数据,以及获取第一虚拟对象的第一交互部位和虚拟道具交互时的第一部位位置数据,第二虚拟对象的第二交互部位和虚拟道具交互时的第二部位位置数据,从而确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,最终基于第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,从得到第一虚拟对象和虚拟道具交互的姿态数据。也即,在获取第一虚拟对象的第一关节数据后,首先对虚拟道具进行位置调整,其次将第一虚拟对象与虚拟道具交互时的第一交互部位的第一部位位置数据和第二部位位置数据进行对齐,从而对第一关节数据进行微调,最终得到适配第一虚拟对象和虚拟道具交互时的姿态数据,能够使得虚拟对象体型不同的情况下对交互位置的关节数据进行微调从而提高交互姿态的适配度,进而提升动画美观度。
本实施例中,通过确定不同虚拟对象的躯干高度比值,在确定第二虚拟对象在不同方向上和虚拟道具之间的相对位置关系,通过躯干高度比值和不同方向上的相对位置关系对第二道具位置数据进行调整,从而得到第一道具位置数据,能够使得第一道具位置数据适配第一对象的体型,提升虚拟对象和虚拟交互时姿态的适配度。
本实施例中,通过选取顶点的方式对虚拟道具和第一虚拟对象进行凸包建模以及碰撞检测,能够使得第一虚拟对象和虚拟道具交互时不出现穿模现象,提升虚拟对象和虚拟交互时姿态的适配度。
在一些实施例中,示意性的,请参考图8,其示出了本申请一个示例性实施例提供的对象姿态的调整方法流程图,以该方法应用于对枪械动画重定向场景进行说明,如图8所示,当前包括如下步骤。
步骤810,虚拟对象姿态迁移。
首先获取第二虚拟对象枪械动画以及第一虚拟对象模型,其中,第二虚拟对象枪械动画是指第二虚拟对象使用虚拟枪械对应的动画序列,包括第二虚拟对象使用虚拟枪械时的第二关节数据,以及虚拟枪械对应的第二道具位置数据。
第一虚拟对象模型是预先设定好的三维角色模型。
将第二虚拟对象的第二关节数据迁移至第一虚拟对象身上,得到第一虚拟对象对应的第一关节数据。具体实现为将第二虚拟对象对应的骨骼各关节点的旋转值直接赋值至第一虚拟对象的相应关节点。经过此步骤可初步获得迁移至第一虚拟对象的枪械动画,但此结果存在虚拟对象的躯干与虚拟枪械穿模、手部交互不精确等问题,后续步骤将在此基础上解决上述问题。
步骤820,枪械位置调整。
首先将调整虚拟枪械位置以适应第一虚拟对象的躯干比例,同时以凸包建模第一虚拟对象的三维凸包模型以及虚拟枪械的三维凸包模型,从而获得枪械与角色躯干无碰撞的动画。本申请提到的道具位置数据指的是虚拟枪械根骨骼的位置数据,一般位于枪尾位置。
具体分为以下过程:
1)初调枪械位置;
首先获取第一虚拟对象和第二虚拟对象的躯干高度比值,在获取不同方向上第二道具位置数据和第二部位位置数据之间的相对位置关系,通过躯干高度比值和相对位置关系对第二道具位置数据进行调整,得到初调后的第一道具位置数据。
2)凸包建模及碰撞计算;
通过获取虚拟枪械的道具顶点位置数据生成第一三维凸包模型,通过获取第一虚拟对象的对象顶点位置生成第二三维凸包模型。
3)枪械位置确定。
将第一三维凸包模型和第二三维模型凸包模型进行碰撞检测,从而根据碰撞检测得到的碰撞深度和碰撞法向对初调后的第一道具位置数据进行调整,得到最终的第一道具位置数据。
步骤830,手部位置调整。
基于最终的第一道具位置数据,进一步调整第一虚拟对象的手部位置,实现虚拟对象与枪体的精确交互。
具体地,可分为如下三个过程:
1)提取交互关键点;
根据第二虚拟对象和虚拟枪械交互的第二交互部位得到第一虚拟对象与虚拟枪械交互的第一交互部位。
确定和第一交互部位具有交互关联关系的交互关节,将交互关节对应的第一部位位置数据作为关键点数据。
2)计算目标角色的手部位置;
通过上述公式一和公式二计算得到第一交互部位对应的第一部位调整数据。
3)执行反向动力学,使目标角色手部抵达目标位置。
通过反向动力学根据第一部位调整数据对第一关节数据进行调整,得到手部姿态数据。
步骤840,手指位置调整。
本步骤将基于步骤830的手部位置,进一步调整手指的姿态,输出更精细的枪械动画,实现如手指紧贴枪体、手指与枪无穿模等效果。
根据上述公式三对应的内容得到第一交互指关节对应的第一部位调整数据,从而对第一交互指关节的第一关节数据进行调整,得到第一交互指关节对应的指关节姿态数据。
综上所述,本申请实施例提供的对象姿态的调整方法,在通过第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系得到第一虚拟对象的第一关节数据后,通过对虚拟道具与第二虚拟对象交互时的第二道具位置数据调整得到虚拟道具与第一虚拟道具交互的第一道具位置数据,以及获取第一虚拟对象的第一交互部位和虚拟道具交互时的第一部位位置数据,第二虚拟对象的第二交互部位和虚拟道具交互时的第二部位位置数据,从而确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,最终基于第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,从得到第一虚拟对象和虚拟道具交互的姿态数据。也即,在获取第一虚拟对象的第一关节数据后,首先对虚拟道具进行位置调整,其次将第一虚拟对象与虚拟道具交互时的第一交互部位的第一部位位置数据和第二部位位置数据进行对齐,从而对第一关节数据进行微调,最终得到适配第一虚拟对象和虚拟道具交互时的姿态数据,能够使得虚拟对象体型不同的情况下对交互位置的关节数据进行微调从而提高交互姿态的适配度,进而提升动画美观度。
本方案带来的技术效果主要为以下几个方面:
1.提出了基于凸包建模枪体以调整枪械位置的方案,解决枪械动画重定向中角色躯干与枪械穿模的问题。
2.提出的基于关键点对齐以调整手部位置及手指姿态的方案可实现不同体型角色与枪械间的精确交互,避免现有方案出现的枪械脱手等效果问题。
3.本方案提出的枪械动画重定向方案无需依赖人工修复动画,可完全消除相应动画制作流程的人工成本。
4.本方案提出的方案适用于枪械动画重定向,理论上也可应用于手持任意物体的动画重定向。
图9是本申请一个示例性实施例提供的对象姿态的调整装置的结构框图,如图9所示,该装置包括如下部分:
获取模块910,用于获取第一虚拟对象的第一关节数据,其中,所述第一关节数据是基于所述第一虚拟对象和所述第二虚拟对象之间的骨骼位置对应关系从所述第二虚拟对象对应的第二关节数据迁移得到的;
所述获取模块910,还用于获取虚拟道具与所述第一虚拟对象交互时的第一道具位置数据,所述第一道具位置数据是基于所述虚拟道具与所述第二虚拟对象交互时的第二道具位置数据调整得到的;
所述获取模块910,还用于获取所述第一虚拟对象的第一交互部位与所述虚拟道具交互时的第一部位位置数据,以及所述第二虚拟对象的第二交互部位与所述虚拟道具交互时的第二部位位置数据;
确定模块920,用于确定所述第一部位位置数据和所述第一道具位置数据之间的第一位置关系,以及所述第二部位位置数据和所述第二道具位置数据之间的第二位置关系;
调整模块930,用于基于所述第一位置关系和所述第二位置关系之间的差异,对所述第一关节数据进行调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
在一些实施例中,如图10所示,所述调整模块930,包括:
获取单元931,用于获取所述第一部位位置数据和所述第一道具位置数据之间的向量距离作为所述第一位置关系,以及获取所述第二部位位置数据和所述第二道具位置数据之间的向量距离作为所述第二位置关系;
调整单元932,用于基于所述第一位置关系和所述第二位置关系之间的差异对所述第一部位位置数据进行调整,得到所述第一交互部位对应的第一部位调整数据;
所述调整单元932,还用于基于所述第一部位调整数据对所述第一关节数据进行关节角度调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
在一些实施例中,所述调整单元932,还用于确定与所述第一交互部位具有交互关联关系的至少一个交互关节,所述交互关节是指所述第一交互部位调整在位置时存在角度调节需求的关节;基于所述第一部位调整数据对所述至少一个交互关节对应的第一关节数据进行关节角度调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
在一些实施例中,所述调整模块930,还包括:
整合单元933,用于在所述第一虚拟对象的第一交互部位与所述虚拟道具的交互未符合交互条件的情况下,将所述第一部位位置数据和所述第一部位调整数据进行加权整合,得到所述第一交互部位对应的第二部位调整数据;基于所述第二部位调整数据对所述至少一个交互关节对应的第一关节数据进行关节角度调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
在一些实施例中,所述整合单元933,还用于基于所述第二部位位置数据和所述第二道具位置数据获取权重参数;基于所述权重参数将所述第一部位位置数据和所述第一部位调整数据进行加权整合,得到所述第一交互部位对应的第二部位调整数据。
在一些实施例中,所述第一交互部位中包括第一交互指关节,所述第二交互部位中包括第二交互指关节;
所述获取模块910,还用于获取所述第一交互指关节与所述虚拟道具交互时的第一指关节位置数据,以及所述第二交互指关节与所述虚拟道具交互时的第二指关节位置数据;
所述确定模块920,还用于确定所述第二指关节位置数据和所述第二部位位置数据之间的第三位置关系;
所述调整模块930,还用于基于所述第三位置关系和所述第一部位位置数据对所述第一交互指关节对应的第一关节数据进行调整,得到所述第一交互指关节对应的指关节姿态数据。
在一些实施例中,所述获取模块910,还用于获取所述第一虚拟对象对应的第一躯干高度,以及获取所述第二虚拟对象对应的第二躯干高度;确定所述第一躯干高度和所述第二躯干高度之间的躯干高度比值;获取所述第二虚拟对象在第一方向上与所述虚拟道具的第一相对位置数据;基于所述第一相对位置数据获取所述第二虚拟对象在第二方向上与所述虚拟道具的第二相对位置数据,所述第一方向和所述第二方向不同;基于所述躯干高度比值、所述第一相对位置数据和所述第二相对位置数据对所述第二道具位置数据进行调整,得到所述第一道具位置数据。
在一些实施例中,所述获取模块910,还用于获取所述第二虚拟对象对应的躯干中部位置数据;基于所述第二道具位置数据、所述躯干中部位置数据和所述第二部位位置数据之间的位置关系得到所述第一相对位置数据;确定所述第二道具位置数据和所述躯干中部位置数据之间的第四位置关系;基于所述第四位置关系和所述第一相对位置数据之间的差异得到所述第二相对位置数据。
在一些实施例中,所述调整模块930,还用于基于所述道具顶点位置数据生成所述虚拟道具对应的第一三维凸包模型;获取所述第一虚拟对象对应的对象顶点位置数据;基于所述对象顶点位置数据生成所述第一虚拟对象对应的第二三维凸包模型;对所述第一三维凸包模型和所述第二三维凸包模型进行碰撞检测,得到所述第一三维凸包模型和所述第二三维凸包模型对应的碰撞检测结果;根据所述碰撞检测结果对所述第一道具位置数据进行调整,得到所述虚拟道具的摆放位置数据。
在一些实施例中,所述获取模块910,还用于确定所述第一虚拟对象与所述虚拟道具交互时的所述第一交互部位;确定所述第一交互部位对应多个部位关节;将所述多个部位关节分别对应的关节位置数据对应的平均值结果作为所述第一交互部位对应的所述第一部位位置数据。
综上所述,本申请实施例提供的对象姿态的调整装置,在通过第一虚拟对象和第二虚拟对象之间的骨骼位置对应关系得到第一虚拟对象的第一关节数据后,通过对虚拟道具与第二虚拟对象交互时的第二道具位置数据调整得到虚拟道具与第一虚拟道具交互的第一道具位置数据,以及获取第一虚拟对象的第一交互部位和虚拟道具交互时的第一部位位置数据,第二虚拟对象的第二交互部位和虚拟道具交互时的第二部位位置数据,从而确定第一部位位置数据和第一道具位置数据之间的第一位置关系,以及第二部位位置数据和第二道具位置数据之间的第二位置关系,最终基于第一位置关系和第二位置关系之间的差异对第一关节数据进行调整,从得到第一虚拟对象和虚拟道具交互的姿态数据。也即,在获取第一虚拟对象的第一关节数据后,首先对虚拟道具进行位置调整,其次将第一虚拟对象与虚拟道具交互时的第一交互部位的第一部位位置数据和第二部位位置数据进行对齐,从而对第一关节数据进行微调,最终得到适配第一虚拟对象和虚拟道具交互时的姿态数据,能够使得虚拟对象体型不同的情况下对交互位置的关节数据进行微调从而提高交互姿态的适配度,进而提升动画美观度。
需要说明的是:上述实施例提供的对象姿态的调整装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的对象姿态的调整装置与对象姿态的调整方法实施例属于同一构思,其具体实现过程详见方法实施例,此处不再赘述。
图11示出了本申请一个示例性实施例提供的终端1100的结构框图。该终端1100可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的基于虚拟对局的控制方法。
在一些实施例中,终端1100还包括其他组件,本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述实施例中任一所述的对象姿态的调整方法。
可选的,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种对象姿态的调整方法,其特征在于,所述方法包括:
获取第一虚拟对象的第一关节数据,其中,所述第一关节数据是基于所述第一虚拟对象和所述第二虚拟对象之间的骨骼位置对应关系从所述第二虚拟对象对应的第二关节数据迁移得到的;
获取虚拟道具与所述第一虚拟对象交互时的第一道具位置数据,所述第一道具位置数据是基于所述虚拟道具与所述第二虚拟对象交互时的第二道具位置数据调整得到的;
获取所述第一虚拟对象的第一交互部位与所述虚拟道具交互时的第一部位位置数据,以及所述第二虚拟对象的第二交互部位与所述虚拟道具交互时的第二部位位置数据;
确定所述第一部位位置数据和所述第一道具位置数据之间的第一位置关系,以及所述第二部位位置数据和所述第二道具位置数据之间的第二位置关系,并基于所述第一位置关系和所述第二位置关系之间的差异,对所述第一关节数据进行调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一部位位置数据和所述第一道具位置数据之间的第一位置关系,以及所述第二部位位置数据和所述第二道具位置数据之间的第二位置关系,并基于所述第一位置关系和所述第二位置关系之间的差异,对所述第一关节数据进行调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据,包括:
获取所述第一部位位置数据和所述第一道具位置数据之间的向量距离作为所述第一位置关系,以及获取所述第二部位位置数据和所述第二道具位置数据之间的向量距离作为所述第二位置关系;
基于所述第一位置关系和所述第二位置关系之间的差异对所述第一部位位置数据进行调整,得到所述第一交互部位对应的第一部位调整数据;
基于所述第一部位调整数据对所述第一关节数据进行关节角度调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一部位调整数据对所述第一关节数据进行关节角度调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据,包括:
确定与所述第一交互部位具有交互关联关系的至少一个交互关节,所述交互关节是指所述第一交互部位调整在位置时存在角度调节需求的关节;
基于所述第一部位调整数据对所述至少一个交互关节对应的第一关节数据进行关节角度调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
4.根据权利要求2所述的方法,其特征在于,所述基于所述第一位置关系和所述第二位置关系之间的差异对所述第一部位位置数据进行调整,得到所述第一交互部位对应的第一部位调整数据之后,还包括:
在所述第一虚拟对象的第一交互部位与所述虚拟道具的交互未符合交互条件的情况下,将所述第一部位位置数据和所述第一部位调整数据进行加权整合,得到所述第一交互部位对应的第二部位调整数据;
基于所述第二部位调整数据对所述至少一个交互关节对应的第一关节数据进行关节角度调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
5.根据权利要求4所述的方法,其特征在于,所述将所述第一部位位置数据和所述第一部位调整数据进行加权整合,得到所述第一交互部位对应的第二部位调整数据,包括:
基于所述第二部位位置数据和所述第二道具位置数据获取权重参数;
基于所述权重参数将所述第一部位位置数据和所述第一部位调整数据进行加权整合,得到所述第一交互部位对应的第二部位调整数据。
6.根据权利要求1至5任一所述的方法,其特征在于,所述第一交互部位中包括第一交互指关节,所述第二交互部位中包括第二交互指关节;
所述确定所述第一部位位置数据和所述第一道具位置数据之间的第一位置关系,以及所述第二部位位置数据和所述第二道具位置数据之间的第二位置关系之后,还包括:
获取所述第一交互指关节与所述虚拟道具交互时的第一指关节位置数据,以及所述第二交互指关节与所述虚拟道具交互时的第二指关节位置数据;
确定所述第二指关节位置数据和所述第二部位位置数据之间的第三位置关系;
基于所述第三位置关系和所述第一部位位置数据对所述第一交互指关节对应的第一关节数据进行调整,得到所述第一交互指关节对应的指关节姿态数据。
7.根据权利要求1至5任一所述的方法,其特征在于,所述获取虚拟道具与所述第一虚拟对象交互时的第一道具位置数据,包括:
获取所述第一虚拟对象对应的第一躯干高度,以及获取所述第二虚拟对象对应的第二躯干高度;
确定所述第一躯干高度和所述第二躯干高度之间的躯干高度比值;
获取所述第二虚拟对象在第一方向上与所述虚拟道具的第一相对位置数据;
基于所述第一相对位置数据获取所述第二虚拟对象在第二方向上与所述虚拟道具的第二相对位置数据,所述第一方向和所述第二方向不同;
基于所述躯干高度比值、所述第一相对位置数据和所述第二相对位置数据对所述第二道具位置数据进行调整,得到所述第一道具位置数据。
8.根据权利要求7所述的方法,其特征在于,所述获取所述第二虚拟对象在第一方向上与所述虚拟道具的第一相对位置数据,包括:
获取所述第二虚拟对象对应的躯干中部位置数据;
基于所述第二道具位置数据、所述躯干中部位置数据和所述第二部位位置数据之间的位置关系得到所述第一相对位置数据;
所述基于所述第一相对位置数获取所述第二虚拟对象在第二方向上与所述虚拟道具的第二相对位置数据,包括:
确定所述第二道具位置数据和所述躯干中部位置数据之间的第四位置关系;
基于所述第四位置关系和所述第一相对位置数据之间的差异得到所述第二相对位置数据。
9.根据权利要求7所述的方法,其特征在于,所述基于所述躯干高度比值、所述第一相对位置数据和所述第二相对位置数据对所述第二道具位置数据进行调整,得到所述第一道具位置数据之后,还包括:
获取所述虚拟道具对应的道具顶点位置数据;
基于所述道具顶点位置数据生成所述虚拟道具对应的第一三维凸包模型;
获取所述第一虚拟对象对应的对象顶点位置数据;
基于所述对象顶点位置数据生成所述第一虚拟对象对应的第二三维凸包模型;
对所述第一三维凸包模型和所述第二三维凸包模型进行碰撞检测,得到所述第一三维凸包模型和所述第二三维凸包模型对应的碰撞检测结果;
根据所述碰撞检测结果对所述第一道具位置数据进行调整,得到所述虚拟道具的摆放位置数据。
10.根据权利要求1至5任一所述的方法,其特征在于,所述获取所述第一虚拟对象的第一交互部位与所述虚拟道具交互时的第一部位位置数据,包括:
确定所述第一虚拟对象与所述虚拟道具交互时的所述第一交互部位;
确定所述第一交互部位对应多个部位关节;
将所述多个部位关节分别对应的关节位置数据对应的平均值结果作为所述第一交互部位对应的所述第一部位位置数据。
11.一种对象姿态的调整装置,其特征在于,所述装置包括:
获取模块,用于获取第一虚拟对象的第一关节数据,其中,所述第一关节数据是基于所述第一虚拟对象和所述第二虚拟对象之间的骨骼位置对应关系从所述第二虚拟对象对应的第二关节数据迁移得到的;
所述获取模块,还用于获取虚拟道具与所述第一虚拟对象交互时的第一道具位置数据,所述第一道具位置数据是基于所述虚拟道具与所述第二虚拟对象交互时的第二道具位置数据调整得到的;
所述获取模块,还用于获取所述第一虚拟对象的第一交互部位与所述虚拟道具交互时的第一部位位置数据,以及所述第二虚拟对象的第二交互部位与所述虚拟道具交互时的第二部位位置数据;
确定模块,用于确定所述第一部位位置数据和所述第一道具位置数据之间的第一位置关系,以及所述第二部位位置数据和所述第二道具位置数据之间的第二位置关系;
调整模块,用于基于所述第一位置关系和所述第二位置关系之间的差异,对所述第一关节数据进行调整,得到所述第一虚拟对象与所述虚拟道具交互的姿态数据。
12.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如权利要求1至10任一所述的对象姿态的调整方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至10任一所述的对象姿态的调整方法。
14.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10任一所述的对象姿态的调整方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310390096.6A CN116958338A (zh) | 2023-04-03 | 2023-04-03 | 对象姿态的调整方法、装置、设备、介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310390096.6A CN116958338A (zh) | 2023-04-03 | 2023-04-03 | 对象姿态的调整方法、装置、设备、介质及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116958338A true CN116958338A (zh) | 2023-10-27 |
Family
ID=88445077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310390096.6A Pending CN116958338A (zh) | 2023-04-03 | 2023-04-03 | 对象姿态的调整方法、装置、设备、介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116958338A (zh) |
-
2023
- 2023-04-03 CN CN202310390096.6A patent/CN116958338A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110889890B (zh) | 图像处理方法及装置、处理器、电子设备及存储介质 | |
CN108389247A (zh) | 用于生成真实的带绑定三维模型动画的装置和方法 | |
CN113012282A (zh) | 三维人体重建方法、装置、设备及存储介质 | |
CN109144252B (zh) | 对象确定方法、装置、设备和存储介质 | |
US20230405452A1 (en) | Method for controlling game display, non-transitory computer-readable storage medium and electronic device | |
US20240169670A1 (en) | Three-dimensional mesh generator based on two-dimensional image | |
CN112843704A (zh) | 动画模型处理方法、装置、设备及存储介质 | |
US9652879B2 (en) | Animation of a virtual object | |
CN115082607A (zh) | 虚拟角色头发渲染方法、装置、电子设备和存储介质 | |
CN112206519B (zh) | 实现游戏场景环境变化的方法、装置、存储介质及计算机设备 | |
Liu et al. | Skeleton tracking based on Kinect camera and the application in virtual reality system | |
CN115775300B (zh) | 人体模型的重建方法、人体重建模型的训练方法及装置 | |
CN116958344A (zh) | 虚拟形象的动画生成方法、装置、计算机设备及存储介质 | |
CN116452704A (zh) | 镜头光晕特效的生成方法、装置、存储介质及电子装置 | |
CN115526967A (zh) | 虚拟模型的动画生成方法、装置、计算机设备及存储介质 | |
CN116958338A (zh) | 对象姿态的调整方法、装置、设备、介质及产品 | |
CN115578542A (zh) | 三维模型的处理方法、装置、设备及计算机可读存储介质 | |
CN112435316B (zh) | 一种游戏中的防穿模方法、装置、电子设备及存储介质 | |
CN108986228A (zh) | 用于虚拟现实中界面显示的方法及装置 | |
CN114373040A (zh) | 一种三维模型重建方法和采集终端 | |
CN117557699B (zh) | 动画数据生成方法、装置、计算机设备和存储介质 | |
Zhu et al. | Integrated Co-Designing Using Building Information Modeling and Mixed Reality with Erased Backgrounds for Stock Renovation | |
US20240127539A1 (en) | Mechanical weight index maps for mesh rigging | |
CN116012497B (zh) | 动画重定向方法、装置、设备及介质 | |
Zhang et al. | Tele-immersive interaction with intelligent virtual agents based on real-time 3D modeling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40100922 Country of ref document: HK |