CN106780766B - 匹配实现方法及相关装置 - Google Patents
匹配实现方法及相关装置 Download PDFInfo
- Publication number
- CN106780766B CN106780766B CN201611051058.4A CN201611051058A CN106780766B CN 106780766 B CN106780766 B CN 106780766B CN 201611051058 A CN201611051058 A CN 201611051058A CN 106780766 B CN106780766 B CN 106780766B
- Authority
- CN
- China
- Prior art keywords
- virtual
- dummy skeleton
- pendant
- virtual objects
- grid
- 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
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/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2004—Aligning objects, relative positioning of parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2016—Rotation, translation, scaling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2021—Shape modification
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Architecture (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例提供匹配实现方法及相关装置。该方法包括:获取虚拟挂件针对虚拟对象的挂接修正信息;所述虚拟挂件独立于所述虚拟对象;所述挂接修正信息用于适配所述虚拟挂件与虚拟对象;确定所述虚拟对象的形态;根据所述虚拟对象的形态及所述挂接修正信息,调整所述虚拟挂件的形态;将调整形态后的虚拟挂件,装备在所述虚拟对象上。在本发明实施例中,虚拟挂件与虚拟对象是相互独立的,可分别进行设计开发。挂接修正信息,可令虚拟部件与虚拟对象相适配。这样,同一部件可适配不同的虚拟对象。与设计为一个整体的现有方式相比较,其适应性大大提高了。
Description
技术领域
本发明涉及计算机技术领域,具体涉及匹配实现方法及相关装置。
背景技术
目前很多领域或虚拟场景中均涉及到物体或人物的仿真。例如,计算机图形学或计算机动画领域中物体或人物的3D建模。
以人物仿真为例,人物的身体上可能需要挂接挂件,例如手表、飘带、头盔,乃至刀、枪、剑等。在传统仿真过程中,会将人体与上述挂件设计为一个整体,也即将挂件作为人体的一部分,其缺点是适应性差。举例来讲,假定N个人物均需要配备头盔,则需要针对每一个人物建立模型,并且每个模型中人体与头盔是一体的。
发明内容
有鉴于此,本发明实施例提供匹配实现及相关装置,以解决传统仿真方式适应性差的问题。
为实现上述目的,本发明实施例提供如下技术方案:
一种匹配实现方法,应用于终端,所述匹配实现方法包括:
获取虚拟挂件针对虚拟对象的挂接修正信息;所述虚拟挂件独立于所述虚拟对象;所述挂接修正信息用于适配所述虚拟挂件与虚拟对象;
确定所述虚拟对象的形态;
根据所述虚拟对象的形态及所述挂接修正信息,调整所述虚拟挂件的形态;
将调整形态后的虚拟挂件,装备在所述虚拟对象上。
一种匹配实现装置,应用于终端,所述装置包括:
获取单元,用于获取虚拟挂件针对虚拟对象的挂接修正信息;所述虚拟挂件独立于所述虚拟对象;所述挂接修正信息用于适配所述虚拟挂件与虚拟对象;
确定单元,用于确定所述虚拟对象的形态;
调整单元,用于根据所述虚拟对象的形态及所述挂接修正信息,调整所述虚拟挂件的形态;
显示单元,用于将调整形态后的挂件,装备在所述虚拟对象上。
一种终端,包括上述的匹配实现装置。
在本发明实施例中,虚拟挂件与虚拟对象是相互独立的,可分别进行设计开发。挂接修正信息,可令虚拟部件与虚拟对象相适配。这样,同一部件可适配不同的虚拟对象。与设计为一个整体的现有方式相比较,其适应性大大提高了。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的终端的计算机架构示例图;
图2、图3、图5a、5b为本发明实施例提供的匹配实现方法示例性流程图;
图4a和图4b为本发明实施例提供的骨骼影响网格顶点的示例图;
图6a和图6b为本发明实施例提供的骨骼影响挂接点的示例图;
图7为本发明实施例提供的现有骨骼蒙皮流程图;
图8为本发明实施例提供的匹配实现装置的示例性结构图。
具体实施方式
本发明可能使用的技术名词、简写或缩写如下:
3dsMax:一种用来制作3D模型、动画、特效等的电脑软件;
蒙皮:在3dsMax中把模型面数和顶点附着在骨骼上的叫法;
骨骼:在3dsMax中创建的用来控制模型动画的虚拟物体。
本发明提供的匹配实现方法及相关装置(匹配实现装置、终端)可应用于虚拟现实领域、计算机图形学、计算机动画等领域。
例如,可应用于虚拟现实领域中对航天员的仿真。再例如,可应用于计算机动画领域,尤其是游戏场景下的角色装扮等。
上述匹配实现装置可以软件的形式应用于上述终端(诸如台式机、移动终端、ipad、平板电脑等)中,或以硬件(例如具体可为终端的控制器/处理器)的形式作为上述设备的组成部分。
当以软件形式存在时,上述匹配实现装置具体可为一应用程序,例如手机APP、终端应用程序等,也可作为某应用程序或操作系统的组件。
图1示出了上述终端的一种通用计算机系统结构。
上述计算机系统可包括总线、处理器1、存储器2、通信接口3、输入设备4和输出设备5。处理器1、存储器2、通信接口3、输入设备4和输出设备5通过总线相互连接。其中:
总线可包括一通路,在计算机系统各个挂件之间传送信息。
处理器1可以是通用处理器,例如通用中央处理器(CPU)、网络处理器(NetworkProcessor,简称NP)、微处理器等,也可以是特定应用集成电路(application-specificintegrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
处理器1可包括主处理器(CPU),还可包括显卡中的图形处理器(GPU)。
存储器2中保存有执行本发明技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器2可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
输入设备4可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
输出设备5可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
通信接口3可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
处理器1执行存储器2中所存放的程序,以及调用其他设备,可用于实现本发明实施例所提供的匹配实现方法中的各个步骤。
在一个示例中,可由CPU通过执行存储器2中所存放的程序,以及调用其他设备,可用于实现本发明实施例所提供的匹配实现方法中的各个步骤。
在另一个示例中,可由CPU与GPU协调工作,以及调用其他设备,来实现本发明实施例所提供的匹配实现方法中的各个步骤。
下面将基于上面的本发明涉及的共性方面,对本发明实施例进一步详细说明。
图2示出了上述匹配实现方法的一种示例性流程。图2所示的方法应用上述提及的领域或应用场景中,由图1所示的终端中的CPU(或者CPU和GPU)与其他挂件交互完成。
上述示例性流程包括:
201部分:获取虚拟挂件针对虚拟对象(也可称为本体)的挂接修正信息。
可由图1所示终端的处理器1(CPU)获取上述挂接修正信息。
需要说明的是,虚拟挂件是独立于虚拟对象的。
以游戏应用场景为例,虚拟挂件可为玩家选择的Avatar(纸娃娃)挂件,或玩家在游戏过程中获得的Avatar挂件。
虚拟对象则可为游戏角色,当然,在其他应用场景中,虚拟对象也可为物体或人体部分,例如虚拟对象可为仿真场景下人的脸部。
按照挂接方式,上述虚拟挂件可为纯挂点式Avatar挂件或参与骨骼蒙皮计算的Avatar挂件。
所谓挂点式是指虚拟挂件单纯跟随角色而移动旋转。虚拟挂件仅相对于虚拟对象发生位移(偏移)和旋转,并不会发生形变,也即其形态是不变的。
而参与骨骼蒙皮计算的Avatar挂件,会随着角色的骨架的姿态不同,而呈现不同的形态。例如一件参与骨骼蒙皮计算的披风,其形态会随角色由站立变蹲下而发生不同。
在制作纯挂点式部件时,可根据纯挂点式要求对部件进行建模。当然,在制作参与骨骼蒙皮计算的部件时,可根据骨骼蒙皮要求对部件进行建模。
此外,在本发明其他实施例中,还可将诸如Havok Cloth之类的第三方中间件作为独立的部件进行挂接,这些第三方中间件一般是用于做一些辅助计算的。
或者,目标部件也可集成第三方中间件。集成有第三方中间件的部件,也被作为独立的物件制作。
202部分:确定虚拟对象的形态;
可由图1所示终端的处理器1(CPU或GPU)执行202部分。
在一个示例中,虚拟对象的形态可包括相对于参照物的位移(或偏移)、旋转,乃及缩放。
203部分:根据虚拟对象的形态及上述挂接修正信息,调整虚拟挂件的形态;
可由图1所示终端的处理器1(中的CPU)执行203部分。或者,由处理器1中的GPU与GPU协作执行203部分。
在一个示例中,虚拟挂件的形态可包括缩放、相对于参照物(例如虚拟对象的骨架)的位移(或偏移)、旋转等。
挂接修正信息用于适配虚拟挂件与虚拟对象。
需要说明的是,挂接修正信息不仅可支持纯挂点式的avatar挂件与虚拟对象适配,也可支持需要参与角色骨骼蒙皮计算的avatar挂件与虚拟对象适配。
更具体的,挂接修正信息可包括偏移信息、旋转信息和缩放信息。
举例来讲,一柄剑,其剑尖的初始朝向可为向上。
该柄剑相对于角色1的挂接修正信息可决定该柄剑挂在角色1的哪个位置(可通过偏移信息确定),剑尖朝上、朝下还是斜指(可通过旋转信息确定),乃至剑的尺寸也可缩小,以适应偏瘦小的角色,当然,剑的尺寸也可放大,以适应体型偏大的角色(可通过缩放信息确定)。
需要说明的是,对于同一虚拟挂件,不同的虚拟对象可对应不同的挂接修正信息。
仍以剑这一挂件为例,其针对角色1的挂接修正信息可能决定其挂接在角色1的左肩的某一位置上,剑类朝下;而其针对角色2的挂接修正信息可决定其挂接在角色2的右肩的某一位置上,剑尖斜指。
204部分:将调整形态后的虚拟挂件,装备在上述虚拟对象上。
可由图1所示终端的处理器1(中的GPU)控制显示器执行204部分。
更具体的,可先显示虚拟对象的形态,再显示调整形态后的虚拟挂件的形态,其过程就类似于人穿上衣服,这样可呈现虚拟挂件挂接在虚拟对象的视觉效果。
可见,在本发明实施例中,虚拟挂件与虚拟对象是相互独立的,可分别进行设计开发。针对虚拟对象的挂接修正信息,可令虚拟挂件与虚拟对象相适配。这样,同一虚拟挂件可适配不同的虚拟对象。与挂件与人体或物体设计为一个整体的现有方式相比较,其适应性大大提高了。
下面将以计算机动画中的骨骼动画场景为例,对本发明的技术方案进行进一步的介绍。
骨骼动画的实现至少需要虚拟骨架以及与虚拟骨架绑定的网格模型(Mesh)。
虚拟骨架中包括骨骼。以人体为例,虚拟骨架相当于人体中的骨架,而与虚拟骨架绑定的网格模型,相当于人体的皮肤。网格模型决定了人体或物体对外呈现的样子。可以理解的是,网格模型(皮肤)的形态受虚拟骨架姿势的影响。
姿势也可以理解为动作,例如T形姿势是双臂伸平,两腿并紧,是一个动作。
图3示出了应用骨骼动画场景中的匹配实现方法的一种示例性流程,由图1所示的终端中的CPU(或者CPU和GPU)与其他部件交互完成。
该示例性流程包括:
301部分:获取虚拟挂件的模型数据。
可由图1所示终端的处理器1(CPU)执行301部分。模型数据可存放于任意可被处理器1访问的存储介质上,例如内存。
更具体的,虚拟挂件的模型数据至少可包括第一网格模型和第一虚拟骨架。
其中,第一虚拟骨架为上述虚拟挂件对应的虚拟骨架,第一网格模型为上述虚拟挂件对应的可变形网格模型,其形态受上述第一虚拟骨架姿势的影响。
无论是纯挂点式的avatar部件还是参与角色骨骼蒙皮计算的avatar部件,其模型数据均可包含第一网格模型和第一虚拟骨架。
需要说明的是,虚拟挂件的形态可包括第一网格模型的形态,或者说,虚拟挂件的形态可由第一网格模型的形态来表征。因此,后续将会计算第一网格模型的形态。
对于游戏应用场景,虚拟挂件可为头盔、飘带、披风、刀剑配饰等avatar挂件。
302部分:获取上述虚拟对象的模型数据。
可由图1所示终端的处理器1(CPU)执行302部分。模型数据可存放于任意可被处理器1访问的存储介质上,例如内存。
上述虚拟对象的模型数据可包括第二虚拟骨架、第二网格模型以及虚拟挂件针对虚拟对象的挂接修正信息。
其中,第二虚拟骨架为虚拟对象对应的虚拟骨架。需要说明的是,第一虚拟骨架是第二虚拟骨架的一部分。举例来讲,假定虚拟对象是一个人,则虚拟对象的(第二)虚拟骨架是人的整副虚拟骨架。
假定披风挂件对应的(第一)虚拟骨架包括肩骨和后背上的骨骼,而肩骨和后背上的骨骼是属于人整副骨架的一部分的。
第二网格模型为虚拟对象对应的可变形网格模型,其形态受第二虚拟骨架的姿势的影响。需要说明的是,虚拟对象的形态可包括第二网格模型的形态,或者说,虚拟对象的形态可由第二网格模型的形态来表征。因此,后续将会计算第二网格模型的形态。
对于游戏应用场景,虚拟对象可为不同的游戏角色。例如,身披重甲的武将,衣袂飘飘的布衣,奇装异服的异族武士等。虚拟对象的模型数据可存储在角色模型的3dsmax文件(角色制作文件)。
前述提及,虚拟挂件的挂接修正信息会根据虚拟对象的不同而不同,则虚拟挂件针对虚拟对象的挂接修正信息将在虚拟对象的模型中制作,属于虚拟对象的模型数据的一部分。更具体的,挂接修正信息可以额外的节点的方式添加至某角色的3dsmax文件中。
上述额外的节点根据部件分类(比如披风类,腰侧武器类等等)可由不同的max脚本负责创建,美术设计人员可以根据需要创建这些节点的全部或部分(若创建了部分节点,其他未创建的沿用默认值),这些节点将决定虚拟挂件可根据不同角色挂接在不同的位置,有不同的旋转角度及缩放比例。
同时对于第三方中间件,可能会根据角色存在不同的额外数据,例如Havok Cloth的布料碰撞数据,这些额外数据也作为额外的节点保存在角色制作文件中。
303部分:根据当前时间下第二虚拟骨架的姿势,确定当前时间下第二网格模型的形态。
更具体的,第二虚拟骨架的姿势可由第二虚拟骨架所包含的骨骼的状态所表征。则303部分可进一步细化为:
根据当前时间下第二虚拟骨架所包含的骨骼的状态,确定当前时间下第二网格模型的形态。
如何根据第二虚拟骨架的骨骼的状态,确定第二网格模型的形态,将会在后续介绍。
303部分为上述202部分的细化。可由图1所示终端的处理器1(中的CPU)执行303部分。或者,由处理器1中的GPU与GPU协作执行303部分。
304部分:根据上述挂接修正信息及当前时间下第一虚拟骨架的姿势,确定当前时间下第一网格模型的形态。
需要说明的是,由于第一虚拟骨架是第二虚拟骨架的一部分,所以在第二虚拟骨架的姿势确定的情况下,第一虚拟骨架的姿势也随之确定下来。
在确定出第一虚拟骨架的姿势后,可根据上述挂接修正信息及当前时间下第一虚拟骨架的姿势,确定当前时间下第一网格模型的形态。
更具体的,第一虚拟骨架的姿势可由第一虚拟骨架所包含的骨骼的状态所表征。则304部分可进一步细化为:根据上述挂接修正信息及当前时间下上述第一虚拟骨架所包含的骨骼的状态,确定当前时间下上述第一网格模型的形态。
需要说明的是,对于参与蒙皮计算的挂件,可根据挂接修正信息及当前时间下第一虚拟骨架所包含的骨骼的状态,计算得到挂件的位置,朝向(旋转)甚至形状变化;而对于纯挂件式挂件,可根据挂接修正信息计算得到挂件相对于骨骼的偏移和旋转。这些位置(偏移)、朝向(旋转)乃至形状变化,均属于挂件的形态。
如何根据第一虚拟骨架的骨骼的状态,确定第一网格模型的形态,将会在后续介绍。
304部分为上述203部分的细化。可由图1所示终端的处理器1(中的CPU)执行304部分。或者,由处理器1中的GPU与GPU协作执行304部分。
305部分:依次显示当前时间下第二网格模型的形态和第一网格模型的形态。
305部分为上述204部分的细化。可由图1所示终端的处理器1(中的GPU)执行305部分。
在本实施例中,介绍了在骨骼动画中如何根据挂接修正信息来实现虚拟对象与虚拟挂件的适配。该方案在保证显示效果的同时对原有数据的修改需求非常小,还能够兼容诸如HavokCloth等第三方中间件的集成。
下面将进行更详细的介绍。
骨骼动画一般包括虚拟骨架(骨骼层次)、与虚拟骨架绑定的网格模型(Mesh)以及一系列关键帧。
一个关键帧对应于骨架的一个新姿势,两个关键帧之间的骨架姿势可以通过插值得到。这是因为如果单纯播放关键帧可能会出现动作不平滑的问题,解决方法是帧间平滑插值。
在骨骼动画中,不是把Mesh直接放到世界坐标系中,Mesh只是作为皮肤使用的,是依附于骨骼的,真正决定虚拟对象或虚拟挂件在世界坐标系中的位置和朝向的是其虚拟骨骼。
网格模型的形态则由是由网格顶点的位置(坐标)所表征的。
请参见图4a和图4b,图4a和图4b简单得示例性得示出了手臂的网格模型和骨骼模型。假定,网格模型上的某一顶点的位置为V,该顶点的位置受前臂骨骼的位置和朝向的影响。
图4b示出了前臂骨骼旋转了一个角度后,该顶点的位置由V变为了W。
虚拟骨架包括一系列离散的关节,它们通过父子关系联系在一起。
对于骨骼动画,以虚拟对象为例,我们设置虚拟对象的位置和朝向,实际是在设置其根骨骼的位置和朝向,然后根据骨骼层次结构中父子骨骼之间的变换关系计算出各个骨骼的位置和朝向,再根据骨骼对Mesh中顶点的绑定计算出顶点在世界坐标系中的坐标,从而对顶点进行渲染。
为了方便建模,每个关节的方位信息(位置和朝向)是在它的父空间中定义的,每个关节自身也定义了一个子空间。
关节与关节间具有骨骼。一般一副虚拟骨架仅包括一个根骨骼。
以上臂骨骼、前臂骨骼和手指骨骼为例。锁骨是一个关节,它是上臂的原点,同样肘关节则是前臂的原点,腕关节是手指骨骼的原点。关节既决定了骨骼空间的位置,又是骨骼空间的旋转和缩放中心。
用一个4X4矩阵就可以表达一个骨骼,因为4X4矩阵中含有的平移分量决定了骨骼所连接的关节的位置(决定了骨骼的原点位置),旋转和缩放分量决定了骨骼空间的旋转和缩放。
以前臂骨骼为例,其原点位置是位于上臂骨骼空间坐标的某个位置的,对于上臂骨骼来说,其坐标空间某处(即肘关节所在的位置)有一个子空间,那就是前臂骨骼。
当前臂绕肘关节旋转时,实际是前臂坐标空间在旋转,从而其中包含的子空间(手指骨骼坐标空间)也在绕肘关节旋转。子空间会跟随父空间运动,就好比人跟着地球转一样。
和实际生物骨骼不同的是,我们这里的骨骼并不是实质的骨头,所以前臂骨骼旋转时,改变的只是坐标空间的朝向。
我们知道物体在坐标系中可以做平移变换,以及自身的旋转和缩放变换。子骨骼在父骨骼的坐标系中也可以做这些变换来改变自己在父骨骼坐标系中的位置和朝向等。
那么如何表示呢?由于4X4矩阵可以同时表示上述三种变换(平衡、旋转、缩放),所以一般描述子骨骼在其父骨骼坐标系中的变换时会使用一个变化矩阵(TransformMatrix)。通过该变化矩阵确定了该骨骼在父骨骼坐标系中的位置。
由于Transform Matrix(作用是将顶点从骨骼空间变换到上层空间)是基于其父骨骼空间的,只有根骨骼的Transform是基于世界空间的,所以要通过自下而上一层层的Transform变换,得到该骨骼在世界空间上的变换矩阵(也可称全局矩阵)-CombinedTransform Matrix(可用C来表示某骨骼在世界空间上的变换矩阵)。其实现方式是使用行向量右乘矩阵,也即,C=Mbone*Mfather*Mgrandpar*...*Mroot。
即通过骨骼在世界空间上的变换矩阵可从骨骼空间变换到世界空间。那么该矩阵的逆矩阵(偏移矩阵)就可以将世界空间中的坐标变换到某块骨骼的骨骼空间。
在3dsMax中建立网格模型时,网格模型空间和世界空间重合,换句话说,此时实际是以世界空间作为Mesh空间了。
在添加骨骼的时候,也是将骨骼放入世界空间中,并调整骨骼的相对位置使得和mesh相吻合,得到骨架的初始姿势(按惯例网格模型要做成两臂侧平举直立的T姿势,骨骼也要适合这个姿态)。
由于在制作时,骨架与mesh相吻合,则上述偏移矩阵可将网格模型顶点在世界空间中的坐标变换到某块骨骼的骨骼空间。
在动画关键帧中,可指示每一骨骼在该关键帧中相对于父骨骼坐标系的变换矩阵。或者,动画关键帧可记录各关节相对于绑定姿势的旋转,平移,缩放。
基于上述介绍,本发明实施例将以游戏应用场景为例,对匹配实现方法进行介绍。游戏中可能有各种各样不同风格的角色。这些角色体型差异巨大,衣着装饰也各不相同。这些区别对avatar挂件提出了一个问题:如何能够让这些角色在穿戴相同的avatar挂件时能够表现的合理,不会出现无法接受的显示问题。
为解决该问题,请参见图5a或图5b。图5a或图5b示出了匹配实现方法的又一种示例性流程,图5a或图5b所示的方法可应用骨骼动画场景中,由图1所示的终端中的CPU和GPU交互完成。
其可包括:
501部分:CPU加载avatar挂件的模型数据。
更具体的,avatar挂件的模型数据可包括第一网格模型的网络数据(包括顶点数据)、第一虚拟骨架的骨骼信息。
网格模型中的每一网格一般为三角形或其他多边形。
网格数据由顶点数据(顶点表)及索引数据组成,顶点表中的每一顶点除了带有位置、法向量、材质、纹理等信息外,还会指出有哪些骨骼影响了该顶点,影响权重是多少。而通过索引数据,可以确定每个多边形由哪些顶点组成。
骨骼信息包括第一虚拟架中全部骨骼的数量和每一骨骼的具体信息。
502部分与301部分相类似,相关细节请参见301部分的介绍。在此不作赘述。
502部分:CPU获取角色(即虚拟对象)的模型数据。
上述角色的模型数据可包括第二虚拟骨架的骨骼信息、第二网格模型的顶点数据以及虚拟挂件针对虚拟对象的挂接修正信息。
骨骼信息和顶点数据请参见501部分的描述,在此不作赘述。
对于挂接修正信息,其可以额外节点(挂接点)的形式存在。
实际中,一个角色可挂接多个avatar挂件,每个avatar挂件可对应一组挂接点,任一组挂接点包括至少一个挂接点。
当然,上述挂接点是不会显示给玩家的。
一个挂接点会对应(影响)avatar挂件的网格模型中的一部分顶点。
每个挂接点会声明对应哪个avatar挂件,例如,挂接点的名称的前缀可表示该挂接点用于挂接什么avatar挂件。
一个挂接点绑定一根或多根骨骼。挂接点与其相绑定的骨骼之间存在父子关系,挂接点为子节点。类似于骨骼间的父子关系。
在动画中,骨骼会运动,不管骨头怎么运动,挂接点相对骨头的偏移、旋转和缩放是不变的。
例如,请参见图6a和图6b。假定,网格模型上的某一顶点的位置为V,该顶点对应挂接点A。图6b示出了骨骼i旋转了一个角度后,该顶点的位置由V变为了W。则挂接点A的坐标也相应得发生了变化。
在本实施例中,挂接点(挂接修正信息)可包括偏移值、旋转角度和缩放比例。通常以4x4矩阵或者4x3/3x4矩阵保存上述偏移值、旋转角度和缩放比例。
实际上,上述偏移值是挂接点相对于某一或某些骨骼的偏移值。
而由于一个挂接点与第一网格模型上的部分网格顶点相绑定,则上述偏移值也可视为该部分网格顶点相对于第一虚拟骨架中的骨骼的偏移值。
举例来讲,挂接点A与网格顶点0-100相绑定,同时,挂接点A与骨骼1相绑定。则上述偏移值可视为网格顶点0-100相对于骨骼1的偏移值。
同理,上述旋转角度是挂接点相对于第一虚拟骨架中某一或某些骨骼的旋转角度。也可视为第一网格模型的部分网格顶点相对于第一虚拟骨架中的某一或某些骨骼的旋转角度。
上述第一网格模型的缩放比例是是挂接点相对于部件原始尺寸的缩放比例。也可视为第一网格模型的网格顶点相对于部件原始尺寸的缩放比例。
此外,上述挂接点(挂接修正信息)还可包括约束信息。
约束信息作为部件挂载的额外参数,可根据实际应用情况不同保存不同的信息。
比如应用于游戏中角色装备系统时,约束信息可包括幅度约束信息,幅度约束信息可用于保存挂接点的可接受偏移范围,这样玩家在穿戴部件时,可以小幅度调整(可上下左右调整)部件的偏移位置。
再比如对于一个弹性跟随的挂接部件,约束信息可包括弹性约束信息,这些弹性约束信息将帮助计算部件的位置,而不会以刚性方式跟随主体移动。
503部分:CPU计算第二虚拟骨架在下一关键帧(或称为当前帧)对应的变换矩阵集合。
前已述及,在动画关键帧中,可指示每一骨骼在该关键帧中相对于父骨骼坐标系的变换矩阵。或者,动画关键帧可记录各关节相对于绑定姿势(前述提及的T姿势)下各关节状态的旋转,平移,缩放。
则根据动画关键帧中的信息,可计算得到第二虚拟骨架中每一块骨骼对应的在世界空间上的变换矩阵,这些变换矩阵的集合即为上述的变换矩阵集合。
为方便起见,使用matrix[i]来表示当前帧第二虚拟骨架中第i块骨骼对应的在世界空间上或原始模型空间的变换矩阵。第二虚拟骨架所包含的各骨骼的状态可由所有骨骼的变换矩阵的集合(变换矩阵集合)来表征。
504部分:根据挂接修正信息(挂接点)计算得到上述第一虚拟骨架在下一关键帧(当前帧)对应的修正变换矩阵集合。
更具体的,在本部分中,由于第一虚拟骨架是第二虚拟骨架的一部分,则可从第二虚拟骨架在下一关键帧对应的变换矩阵集合中,提取出第一虚拟骨架在下一关键帧对应的变换矩阵集合。
实际上,前已述及,挂接点与绑定的骨骼是父子关系。则挂接点可继承父节点的在世界空间上的变换矩阵,然后再乘以包含挂接点的偏移值、旋转角度和缩放比例的矩阵后,可得到挂接点对应的变换矩阵(或称为修正变换矩阵)。
同时,由于一个挂接点与一个或多个虚拟挂件的网格顶点相绑定。一个虚拟挂件对应一组挂接点,则该组挂接点的修正变换矩阵的集合,就是第一虚拟骨架在下一关键帧(当前帧)对应的修正变换矩阵集合。
为方便起见,使用matrix[j]来表示当前帧第一虚拟骨架的第j块骨骼对应的在世界空间上的变换矩阵。
则可使用matrix[j]′来表示当前帧第一虚拟骨架的第j块骨骼对应的在世界空间上的修正变换矩阵。若matrix[j]relative表示当前帧修正点相对第一虚拟骨架第j块骨骼的变换矩阵,则matrix[j]′=matrix[j]relative*matrix[j]。
505部分:CPU将角色及avatar挂件的渲染相关数据传给GPU。
更具体的,上述渲染相关数据可包括角色及avatar挂件的顶点数据、matrix[i]、matrix[j]′,第一网格模型的顶点纹理数据、第二网格模型的顶点纹理数据。
在实际运行中,可分批次传送上述数据。
例如,可先传送角色的顶点数据、matrix[i]、第二网格模型的顶点纹理数据,再传送avatar挂件的顶点数据、matrix[j]′、第一网格模型的顶点纹理数据。
需要说明的是,每次在准备数据并通知GPU渲染的过程称为一次Draw Call。
一般情况下,渲染一次拥有一个网格并携带一种材质的物体便会使用一次DrawCall。
506部分:根据第二虚拟骨架在上一关键帧和下一关键帧(当前帧)中各自对应的变换矩阵集合,插值得到当前时间下第二虚拟骨架的变换矩阵集合。
如果单纯播放关键帧可能会出现动作不平滑的问题,解决方法是帧间平滑插值:
假设一个动画有10s,每个整数秒处都设有一个关键帧,那么整数秒之间的骨架状态就通过帧间插值获得。
插值的基本思想是:给定一个时间t,找出t处在哪两个关键帧之间,假设为p和q,然后根据p,q记录的关节状态(或骨骼状态)和时间t,计算出骨骼在t时间的状态。
插值方法有很多,如线性插值,hermite(埃尔米特)插值,还有球面插值。
可对平移选择hermite插值,对旋转采用四元数球面插值。
前述提及,matrix[i]表示当前帧第i块骨骼对应的在世界空间上的变换矩阵,matrix[i]中包括平移、旋转、缩放。
为称呼方便,可使用matrix[i]t表示当前时间t第i块骨骼对应的在世界空间上的变换矩阵。
507部分:根据第一虚拟骨架在上一关键帧和下一关键帧(当前帧)中各自对应的修正变换矩阵集合,插值得到当前时间下上述第一虚拟骨架对应的修正变换矩阵集合。
507部分与506部分相类似,在此不作赘述。
为称呼方便,可使用matrix[j]′t表示当前时间骨骼j对应的在世界空间上的变换矩阵。
508部分:根据当前时间下第二虚拟骨架的变换矩阵集合,计算第二网格模型中各网格顶点在当前时间下的坐标值。
对于第二网格模型中的某一网格顶点s,可通过如下方式计算其坐标值:
首先,找到影响顶点s的所有骨骼,可使用bones表示影响顶点s的所有骨骼的个数。
然后计算顶点s在各骨骼独立作用下的新位置。则共有bones个新位置。
最后,将所有新位置按照骨骼对顶点s的权重进行加权求和。注意,所有权重的和应为1。
可使用经典骨骼动画计算公式计算顶点s的坐标值。公式如下:
其中,v′表示顶点s在当前时间t下的位置。vbindpose表示顶点s的初始位置;
weight(p)表示顶点s对于第p根骨骼的权重;
matrix[p]t表示当前时间第p根骨骼对应的在世界空间上的变换矩阵。
表示顶点s相对于第p根骨骼的空间的偏移矩阵,右乘目的是将顶点的变换信息矩阵映射至第p根骨骼的空间下。
509部分:根据上述修正变换矩阵集合,计算第一网格模型中各网格顶点在当前时间下的坐标值。
与508相类似,对于第一网格模型中的某一网格顶点R,可通过如下方式计算其坐标值:
首先,找到影响顶点R的所有骨骼,可使用bones1表示影响顶点R的所有骨骼的个数。
然后计算顶点R在各骨骼独立作用下的新位置。最后,将所有新位置按照骨骼对顶点R的权重进行加权求和。注意,所有权重的和应为1。
可使用经典骨骼动画计算公式计算顶点R的坐标值。公式如下:
其中,w′表示顶点R在当前时间t下的位置。wbindpose表示顶点R的初始位置;
weight(q)表示顶点R对于第q根骨骼的权重;
matrix[q]′t表示当前时间第q根骨骼对应的在世界空间上的修正变换矩阵。
表示顶点R相对于第q根骨骼的空间的偏移矩阵,右乘目的是将顶点的变换信息矩阵映射至第q根骨骼的空间下。
510部分:根据第二网格模型中各网格顶点在当前时间下的坐标值及纹理数据,对第二网格模型中各网格顶点进行渲染。
511部分:根据第一网格模型中各网格顶点在当前时间下的坐标值及纹理数据,对第一网格模型中各网格顶点进行渲染。
此外需要指出的是,在现有方式中,Avatar挂件通常按照运用方式大致分为2类:单纯以挂点方式跟随角色移动旋转;跟随角色骨骼进行蒙皮计算的。
对于第一类avatar挂件,通常将其作为独立物件,在运行时挂接到人物角色特定骨骼下以父子关系进行刚体计算。
由于纯挂点方式的avatar挂件为独立物件,不存在avatar挂件与角色体型的冲突(即胖矮、高瘦)。但由于只能挂接在同一位置,受到原始角色形象设计的约束,角色A可以接受的视觉效果,在角色B身上可能因为原本留空的位置多了一些额外的模型而不适用。
对于第二类avatar挂件,一般的做法是将角色划分为多个部分,然后在运行时根据游戏配置或者玩家选择替换合并到原有角色的基础网格模型上,组合成完整的一个模型参与骨骼蒙皮计算。
这一类的部件由于在运行时需要与其他部件及基本网格模型进行合并,在制作时部件模型的权重,空间位置都相对有一定要求,同时部件纹理也需要在制作时遵循一定规则以保证在运行时纹理的合并可以快速正确的完成。
除此之外,和纯挂点方式相同,参与角色骨骼进行蒙皮计算的avatar部件也无法解决原始模型下额外模型数据对部件造成的遮挡影响。
而本发明实施例中,利用挂接信息,可以指定同样的虚拟挂件根据角色的不同而挂在不同的位置,除了可以解决角色形象对部件的遮挡影响外,也可以达到将部件搭配到最适合该角色形象的这一目的。
图7示出了现有骨骼蒙皮方式。
通过相比可知,采用本方案后,CPU端需要额外计算avatar挂件当前帧的修正变换矩阵集合,再传入GPU交由GPU计算应用,但是相对的,对角色模型数据的预处理(模型合并/纹理合并)则不再需要。
对比可以发现,本方案主要集中在CPU端,对GPU端的改动基本没有,同时在CPU端每帧也只需少量的额外计算即可。
本技术方案在保证了数据制作简单方便的同时,解决了avatar挂件在运用于不同体型,原始形象差异化严重的各种角色上可能产生的视觉效果表现问题。除此之外还具有对Havok Cloth等第三方中间件良好的集成兼容性。对制作各种avatar部件具有极大帮助。让玩家可以藉由该方案实现的功能随意搭配各种风格的角色形象,增加了游戏的趣味性。
图8示出了匹配实现装置的一种可能的结构示意图,包括:
获取单元801,用于获取虚拟挂件针对虚拟对象的挂接修正信息;
其中,虚拟挂件独立于虚拟对象;挂接修正信息用于适配虚拟挂件与虚拟对象。
确定单元802,用于确定上述虚拟对象的形态;
调整单元803,用于根据上述虚拟对象的形态及上述挂接修正信息,调整该虚拟挂件的形态;
显示单元804,用于将调整形态后的挂件,装备在上述虚拟对象上。
其中,获取单元801可用于执行图2所示实施例的201部分,图3所示实施例的301-302部分,以及,图5a和图5b所示实施例的501-502部分。
确定单元802可用于执行图2所示实施例的202部分,图3所示实施例的303部分,以及,图5a和图5b所示实施例的503、505部分(也可由调整单元803执行505部分)、506部分、508部分。
调整单元803可用于执行图2所示实施例的203部分,图3所示实施例的304部分,图5a和图5b所示实施例的504部分、507部分、509部分。
显示单元804可用于执行图2所示实施例的204部分,图3所示实施例的305部分,图5a和图5b所示实施例的510-511部分。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、WD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种匹配实现方法,其特征在于,应用于终端,所述匹配实现方法包括:
获取虚拟挂件针对虚拟对象的挂接修正信息;所述虚拟挂件独立于所述虚拟对象;所述挂接修正信息用于适配所述虚拟挂件与虚拟对象;
确定所述虚拟对象的形态;
根据所述虚拟对象的形态及所述挂接修正信息,调整所述虚拟挂件的形态;
将调整形态后的虚拟挂件,装备在所述虚拟对象上。
2.如权利要求1所述的方法,其特征在于,所述匹配实现方法应用于骨骼动画场景,在确定所述虚拟对象的形态之前,所述匹配实现方法还包括:
获取所述虚拟挂件的模型数据;所述虚拟挂件的模型数据至少包括第一网格模型和第一虚拟骨架;所述第一虚拟骨架为所述虚拟挂件对应的虚拟骨架,所述第一网格模型为所述虚拟挂件对应的可变形网格模型,其形态受所述第一虚拟骨架姿势的影响;
获取所述虚拟对象的模型数据;所述虚拟对象的模型数据至少包括第二虚拟骨架和第二网格模型;所述第二虚拟骨架为所述虚拟对象对应的虚拟骨架;所述第二网格模型为所述虚拟对象对应的可变形网格模型,其形态受所述第二虚拟骨架的姿势的影响;
所述第一虚拟骨架为所述第二虚拟骨架的一部分。
3.如权利要求2所述的方法,其特征在于,
所述虚拟对象的形态包括所述第二网格模型的形态;
所述确定所述虚拟对象的形态包括:根据当前时间下所述第二虚拟骨架的姿势,确定当前时间下所述第二网格模型的形态。
4.如权利要求3所述的方法,其特征在于,
所述虚拟挂件的形态包括所述第一网格模型的形态;
所述根据所述虚拟对象的形态及所述挂接修正信息,调整所述虚拟挂件的形态包括:
根据所述挂接修正信息及当前时间下所述第一虚拟骨架的姿势,确定当前时间下所述第一网格模型的形态;
其中,所述当前时间下所述第一虚拟骨架的姿势由当前时间下所述第二虚拟骨架的姿势来确定。
5.如权利要求4所述的方法,其特征在于,
所述第二虚拟骨架的姿势由所述第二虚拟骨架所包含的骨骼的状态所表征;
所述根据当前时间下所述第二虚拟骨架的姿势,确定当前时间下所述第二网格模型的形态包括:
根据当前时间下所述第二虚拟骨架所包含的骨骼的状态,确定当前时间下所述第二网格模型的形态。
6.如权利要求5所述的方法,其特征在于,
所述第一虚拟骨架的姿势由所述第一虚拟骨架所包含的骨骼的状态所表征;
所述根据所述挂接修正信息及当前时间下所述第一虚拟骨架的姿势,确定当前时间下所述第一网格模型的形态包括:
根据所述挂接修正信息及当前时间下所述第一虚拟骨架所包含的骨骼的状态,确定当前时间下所述第一网格模型的形态。
7.如权利要求6所述的方法,其特征在于,所述虚拟挂件包括挂点式挂件,或者,参与骨骼蒙皮计算的挂件。
8.如权利要求7所述方法,其特征在于,
所述第二网格模型的形态由所述第二网格模型各网格顶点的位置所表征;
所述第二虚拟骨架所包含的骨骼的状态由所述第二虚拟骨架的变换矩阵集合表征。
9.如权利要求8所述的方法,其特征在于,所述根据当前时间下所述第二虚拟骨架所包含的骨骼的状态,确定当前时间下所述第二网格模型的形态包括:
计算所述第二虚拟骨架在下一关键帧对应的变换矩阵集合;
根据所述第二虚拟骨架在上一关键帧和所述下一关键帧中各自对应的变换矩阵集合,插值得到当前时间下所述第二虚拟骨架的变换矩阵集合;
根据当前时间下所述第二虚拟骨架的变换矩阵集合,计算所述第二网格模型中各网格顶点在当前时间下的坐标值。
10.如权利要求9所述的方法,其特征在于,
所述第一虚拟骨架所包含的骨骼的状态由所述第一虚拟骨架的变换矩阵集合表征;
所述第一网格模型的形态由所述第一网格模型各网格顶点的位置所表征。
11.如权利要求10所述的方法,其特征在于,所述挂接修正信息包括:
所述第一网格模型的网格顶点相对于所述第一虚拟骨架中的骨骼的偏移值;
所述第一网格模型的网格顶点相对于所述第一虚拟骨架中的骨骼的旋转角度;
所述第一网格模型的缩放比例。
12.如权利要求11所述的方法,其特征在于,所述根据所述挂接修正信息及当前时间下所述第一虚拟骨架所包含的骨骼的状态,确定当前时间下所述第一网格模型的形态包括:
从所述第二虚拟骨架在下一关键帧对应的变换矩阵集合中,提取所述第一虚拟骨架在下一关键帧对应的变换矩阵集合;
根据所述挂接修正信息及提取的变换矩阵集合,计算得到所述第一虚拟骨架在下一关键帧对应的修正变换矩阵集合;
根据所述第一虚拟骨架在上一关键帧和所述下一关键帧中各自对应的修正变换矩阵集合,插值得到当前时间下所述第一虚拟骨架对应的修正变换矩阵集合;
根据所述修正变换矩阵集合,计算所述第一网格模型中各网格顶点在当前时间下的坐标值。
13.如权利要求12所述的方法,其特征在于,
所述虚拟挂件的模型数据还包括所述第一网格模型各网格顶点的纹理数据;所述虚拟对象的模型数据还包括所述第二网格模型各网格顶点的纹理数据;
所述将调整形态后的挂件,装备在所述虚拟对象上包括:
根据所述第二网格模型中各网格顶点在当前时间下的坐标值及纹理数据,对所述第二网格模型中各网格顶点进行渲染;
根据所述第一网格模型中各网格顶点在当前时间下的坐标值及纹理数据,对所述第一网格模型中各网格顶点进行渲染。
14.一种匹配实现装置,其特征在于,应用于终端,所述装置包括:
获取单元,用于获取虚拟挂件针对虚拟对象的挂接修正信息;所述虚拟挂件独立于所述虚拟对象;所述挂接修正信息用于适配所述虚拟挂件与虚拟对象;
确定单元,用于确定所述虚拟对象的形态;
调整单元,用于根据所述虚拟对象的形态及所述挂接修正信息,调整所述虚拟挂件的形态;
显示单元,用于将调整形态后的挂件,装备在所述虚拟对象上。
15.如权利要求14所述的装置,其特征在于,在确定所述虚拟对象的形态之前,所述获取单元还用于:
获取所述虚拟挂件的模型数据;所述虚拟挂件的模型数据至少包括第一网格模型和第一虚拟骨架;所述第一虚拟骨架为所述虚拟挂件对应的虚拟骨架,所述第一网格模型为所述虚拟挂件对应的可变形网格模型,其形态受所述第一虚拟骨架姿势的影响;
获取所述虚拟对象的模型数据;所述虚拟对象的模型数据至少包括第二虚拟骨架和第二网格模型;所述第二虚拟骨架为虚拟对象对应的虚拟骨架;所述第二网格模型为所述虚拟对象对应的可变形网格模型,其形态受所述第二虚拟骨架的姿势的影响;
所述第一虚拟骨架为所述第二虚拟骨架的一部分。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611051058.4A CN106780766B (zh) | 2016-11-24 | 2016-11-24 | 匹配实现方法及相关装置 |
PCT/CN2017/111500 WO2018095273A1 (zh) | 2016-11-24 | 2017-11-17 | 图像合成方法、装置以及匹配实现方法、装置 |
US16/298,884 US10762721B2 (en) | 2016-11-24 | 2019-03-11 | Image synthesis method, device and matching implementation method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611051058.4A CN106780766B (zh) | 2016-11-24 | 2016-11-24 | 匹配实现方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106780766A CN106780766A (zh) | 2017-05-31 |
CN106780766B true CN106780766B (zh) | 2019-02-05 |
Family
ID=58910594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611051058.4A Active CN106780766B (zh) | 2016-11-24 | 2016-11-24 | 匹配实现方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106780766B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018095273A1 (zh) | 2016-11-24 | 2018-05-31 | 腾讯科技(深圳)有限公司 | 图像合成方法、装置以及匹配实现方法、装置 |
JP2020529691A (ja) * | 2017-07-28 | 2020-10-08 | バオバブ ステュディオズ インコーポレイテッド | リアルタイムの複雑なキャラクタアニメーションおよび相互作用のためのシステムおよび方法 |
CN108295472A (zh) * | 2017-12-28 | 2018-07-20 | 深圳市创梦天地科技股份有限公司 | 一种组合模型的拼接方法及终端 |
CN110580163B (zh) * | 2018-06-07 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 通过模板制作挂件的方法、装置及存储设备 |
CN109481940A (zh) * | 2018-09-21 | 2019-03-19 | 苏州蜗牛数字科技股份有限公司 | 一种运动对象跟随方法 |
CN109865291A (zh) * | 2019-01-25 | 2019-06-11 | 网易(杭州)网络有限公司 | 一种游戏中的动画处理方法及装置 |
CN110298907B (zh) * | 2019-07-04 | 2023-07-25 | 广州西山居网络科技有限公司 | 一种虚拟角色动作控制方法及装置、计算设备及存储介质 |
CN112435314B (zh) * | 2020-11-30 | 2023-02-24 | 上海米哈游天命科技有限公司 | 一种游戏中的防穿模方法、装置、电子设备及存储介质 |
CN112634419B (zh) * | 2020-12-31 | 2022-03-25 | 魔珐(上海)信息科技有限公司 | 一种运动重定向方法、装置、电子设备及存储介质 |
CN113134239B (zh) * | 2021-05-13 | 2024-06-04 | 网易(杭州)网络有限公司 | 渲染方法、装置、电子设备及计算机可读存储介质 |
CN115471595A (zh) * | 2021-06-10 | 2022-12-13 | 北京字跳网络技术有限公司 | 一种虚拟服装渲染方法及装置 |
CN113362435B (zh) * | 2021-06-16 | 2023-08-08 | 网易(杭州)网络有限公司 | 虚拟对象模型的虚拟部件变化方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833459A (zh) * | 2010-04-14 | 2010-09-15 | 四川真视信息技术有限公司 | 基于网页的动态2d骨骼人物实现系统 |
-
2016
- 2016-11-24 CN CN201611051058.4A patent/CN106780766B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833459A (zh) * | 2010-04-14 | 2010-09-15 | 四川真视信息技术有限公司 | 基于网页的动态2d骨骼人物实现系统 |
Non-Patent Citations (2)
Title |
---|
U3D Avatar换装系统;姜雪伟;《https://edu.csdn.net/course/play/466》;20150127;Avatar理论讲解 |
使用骨骼蒙皮动画技术制作人物动画;吴磊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070815(第02期);第二章第2.2.2节 |
Also Published As
Publication number | Publication date |
---|---|
CN106780766A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106780766B (zh) | 匹配实现方法及相关装置 | |
WO2018095273A1 (zh) | 图像合成方法、装置以及匹配实现方法、装置 | |
CN108711180B (zh) | 美妆和/或换脸特效程序文件包的生成及美妆和/或换脸特效生成方法与装置 | |
US10540817B2 (en) | System and method for creating a full head 3D morphable model | |
CN106780681B (zh) | 一种角色动作生成方法和装置 | |
CN113924601A (zh) | 用于使人体的单个图像成动画并应用效果的娱乐性移动应用程序 | |
Gültepe et al. | Real-time virtual fitting with body measurement and motion smoothing | |
CN106204698A (zh) | 为自由组合创作的虚拟形象生成及使用表情的方法和系统 | |
CN110992495B (zh) | 一种虚拟模型的变形方法及装置 | |
CN109035373A (zh) | 三维特效程序文件包的生成及三维特效生成方法与装置 | |
CN108961367A (zh) | 三维虚拟偶像直播中角色形象变形的方法、系统及装置 | |
CN109087369A (zh) | 虚拟对象显示方法、装置、电子装置及存储介质 | |
CN114612643B (zh) | 虚拟对象的形象调整方法、装置、电子设备及存储介质 | |
CN112598773A (zh) | 骨骼蒙皮动画的实现方法及装置 | |
TW202121344A (zh) | 圖像處理方法及裝置、圖像處理設備及儲存媒體 | |
CN111369647B (zh) | 信息处理方法及装置、计算机存储介质、电子设备 | |
CN108986227A (zh) | 粒子特效程序文件包的生成及粒子特效生成方法与装置 | |
CN110427864A (zh) | 一种图像处理方法、装置及电子设备 | |
CN112843704B (zh) | 动画模型处理方法、装置、设备及存储介质 | |
CN106530372A (zh) | 一种帧动画的生成方法 | |
KR101508161B1 (ko) | 디지털 서로게이트를 이용한 가상 피팅 장치 및 방법 | |
US20230298297A1 (en) | Layered clothing that conforms to an underlying body and/or clothing layer | |
CN115690282B (zh) | 虚拟角色的调整方法及装置 | |
WO2023160074A1 (zh) | 一种图像生成方法、装置、电子设备以及存储介质 | |
WO2023220826A1 (en) | Methods for cloth simulation for animation |
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 |