CN116485953A - 数据处理方法、装置、设备和可读存储介质 - Google Patents
数据处理方法、装置、设备和可读存储介质 Download PDFInfo
- Publication number
- CN116485953A CN116485953A CN202310073644.2A CN202310073644A CN116485953A CN 116485953 A CN116485953 A CN 116485953A CN 202310073644 A CN202310073644 A CN 202310073644A CN 116485953 A CN116485953 A CN 116485953A
- Authority
- CN
- China
- Prior art keywords
- joint
- limb
- data
- posture
- finger
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 210000001145 finger joint Anatomy 0.000 claims abstract description 494
- 239000011159 matrix material Substances 0.000 claims abstract description 286
- 238000012545 processing Methods 0.000 claims abstract description 53
- 210000003414 extremity Anatomy 0.000 claims description 336
- 239000013598 vector Substances 0.000 claims description 92
- 210000002310 elbow joint Anatomy 0.000 claims description 82
- 210000000323 shoulder joint Anatomy 0.000 claims description 80
- 210000003857 wrist joint Anatomy 0.000 claims description 71
- 238000000034 method Methods 0.000 claims description 61
- 210000000245 forearm Anatomy 0.000 claims description 45
- 238000004364 calculation method Methods 0.000 claims description 43
- 230000009471 action Effects 0.000 claims description 38
- 230000033001 locomotion Effects 0.000 claims description 23
- 230000015654 memory Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 8
- 210000000988 bone and bone Anatomy 0.000 abstract description 38
- 230000036544 posture Effects 0.000 description 357
- 210000000707 wrist Anatomy 0.000 description 54
- 230000008569 process Effects 0.000 description 20
- 210000001503 joint Anatomy 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000015572 biosynthetic process Effects 0.000 description 7
- 238000009877 rendering Methods 0.000 description 7
- 238000003786 synthesis reaction Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000037237 body shape Effects 0.000 description 3
- 210000004247 hand Anatomy 0.000 description 3
- 238000003384 imaging method Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 210000003557 bones of lower extremity Anatomy 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 210000000784 arm bone Anatomy 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 210000002411 hand bone Anatomy 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001360 synchronised effect 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
-
- 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/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/20—Movements or behaviour, e.g. gesture recognition
- G06V40/28—Recognition of hand or arm movements, e.g. recognition of deaf sign language
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Health & Medical Sciences (AREA)
- Psychiatry (AREA)
- Social Psychology (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请公开了一种数据处理方法、装置、设备和可读存储介质。通过获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据;根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据;将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;根据手部姿态数据,控制虚拟对象的手部姿态。以此,可在避免佩戴过多的姿态感测仪对骨骼关节的束缚的同时,精确捕捉骨骼关节的姿态数据。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种数据处理方法、装置、设备和可读存储介质。
背景技术
随着影像技术的发展,将真实人体的姿态动作录制成影像作品已较为常见。为了丰富视觉效果,可以通过数字化外形的虚拟对象角色来刻画人体的姿态动作,以通过虚拟对象角色来展示真实人体的动作姿态,提高视觉效果。
在相关技术中,通过真实人体佩戴的姿态感测仪(如动作捕捉手套或贴光感标记)来感测人体手部的动作姿态,从而根据感测到的动作姿态数据刻画虚拟对象角色的动作姿态,得到虚拟对象的骨骼动画的视频。
在对现有技术的研究和实践过程中,本申请的发明人发现相关技术在感测骨骼关节的动作姿态时,需要佩戴过多的姿态感测仪,这容易对骨骼关节的姿态动作造成束缚,影响用户的动作姿态的准确性,同时也影响了构建虚拟对象的动作姿态的准确性,降低了用户的体验。
发明内容
本申请实施例提供一种数据处理方法、装置、设备和可读存储介质,可精确捕捉骨骼关节的姿态数据,从而准确构建虚拟对象的骨骼动画,且减少姿态感测仪对骨骼关节的束缚,提高用户的体验感。
本申请实施例提供一种数据处理方法,包括:
获取目标对象的肢体定位数据,并按照所述肢体定位数据的指示位置采集所述目标对象的手掌图像;
确定所述手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据所述手指关节姿态矩阵构建手掌骨骼姿态数据;
根据所述肢体定位数据确定每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据所述肢体关节姿态矩阵构建肢体骨骼姿态数据;
将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据;
根据所述手部姿态数据,控制虚拟对象的手部姿态。
相应的,本申请实施例提供一种数据处理装置,包括:
采集单元,用于采集目标对象的肢体定位数据,并按照所述肢体定位数据的指示位置采集所述目标对象的手掌图像;
确定单元,用于确定所述手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据所述手指关节姿态矩阵构建手掌骨骼姿态数据;
计算单元,用于根据所述肢体定位数据确定每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据所述肢体关节姿态矩阵构建肢体骨骼姿态数据;
合并单元,用于将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据;
控制单元,用于根据所述手部姿态数据,控制虚拟对象的手部姿态。
在一些实施方式中,所述肢体定位数据至少包括小臂肢体定位数据,所述采集单元,还用于:
根据所述小臂肢体定位数据,确定所述目标对象的手掌在世界坐标系中的偏移向量;
确定所述偏移向量中的水平方向分量;
根据所述水平方向分量的指示位置,控制摄像组件采集所述目标对象的手掌图像。
在一些实施方式中,所述采集单元,还用于:
控制所述摄像组件移动至所述水平方向分量的指示位置;
通过移动后的摄像组件采集得到所述目标对象的手掌图像。
在一些实施方式中,所述确定单元,还用于:
从所述手掌图像中读取多个手指关节点的关节布局参数;
根据所述关节布局参数确定每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
在一些实施方式中,所述确定单元,还用于:
根据所述关节布局参数确定每个手指关节点在手掌坐标系下的手指关节坐标,以及确定每个手指关节点的手指关节层级;
根据所述手指关节层级和手指关节坐标,计算每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
在一些实施方式中,所述肢体关节姿态矩阵至少包括肩部关节姿态矩阵和肘部关节姿态矩阵,所述计算单元,还用于:
根据所述肢体定位数据确定在世界坐标系下的背部坐标、肘部关节坐标和腕部关节坐标;
根据所述背部坐标确定所述目标对象的躯干倾斜度;
根据预设躯干长度和所述躯干倾斜度确定所述肩部关节点在所述世界坐标系下的肩部关节坐标;
根据所述腕部关节坐标、肘部关节坐标和肩部关节坐标进行反向动力学计算,得到所述肘部关节点相对于所述肩部关节点的肘部关节姿态矩阵,以及所述肩部关节点的肩部关节姿态矩阵。
在一些实施方式中,所述肢体骨骼姿态数据至少包括肘部关节姿态矩阵和肩部关节姿态矩阵,所述合并单元,还用于:
根据肢体骨骼层级关系对所述肘部关节姿态矩阵和肩部关节姿态矩阵进行矩阵级乘计算,得到所述肘部关节点在世界坐标系下的肘部姿态矩阵;
确定所述手掌图像中手腕关节点在世界坐标系下的目标姿态矩阵;
根据所述目标姿态矩阵与所述肘部姿态矩阵的逆矩阵之间的乘积,确定所述手腕关节点相对于所述肘部关节点的腕部关节姿态矩阵;
基于所述腕部关节姿态矩阵,对所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据。
在一些实施方式中,所述手部姿态数据为所述目标对象演奏乐器时手部的演奏动作数据,所述控制单元,用于:
按照所述演奏动作数据控制虚拟对象的手部姿态进行演奏乐器,并生成乐器演奏画面帧;
将所述乐器演奏画面帧依序推送至直播端进行直播展示。
在一些实施方式中,所述控制单元,还用于:
将每帧手部姿态数据转换为三维模型数组,并存储每个三维模型数组;
根据存储的每个三维模型数组,生成所述手部姿态数据对应的骨骼动画文件;
对所述骨骼动画文件进行演示,以控制显示界面所显示的虚拟对象的手部姿态。
相应的,本申请还提供一种数据处理方法,应用于系统,所述系统包括摄像组件和定位设备,包括:
通过所述定位设备获取目标对象的肢体定位数据;
按照所述肢体定位数据的指示位置控制所述摄像组件移动,并采集所述目标对象的手掌图像;
确定所述手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据所述手指关节姿态矩阵生成手掌骨骼姿态数据;
根据所述肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据所述肢体关节姿态矩阵生成肢体骨骼姿态数据;
将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据;
根据所述手部姿态数据,控制虚拟对象的手部姿态。
相应的,本申请还提供一种数据处理装置,应用于系统,所述系统包括摄像组件和定位设备,包括:
采集单元,用于通过所述定位设备获取目标对象的肢体定位数据,按照所述肢体定位数据的指示位置控制所述摄像组件移动,并采集所述目标对象的手掌图像;
确定单元,用于确定所述手掌图像中每个手指关节点相对于相邻手指关节点的手指关节姿态矩阵,并根据所述手指关节姿态矩阵生成手掌骨骼姿态数据;
计算单元,用于根据所述肢体定位数据计算每个肢体关节点相对于相邻肢体关节点的肢体关节姿态矩阵,并根据所述肢体关节姿态矩阵生成肢体骨骼姿态数据;
合并单元,用于将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据;
控制单元,用于根据所述手部姿态数据,控制虚拟对象的手部姿态。
在一些实施方式中,所述系统还包括滑动组件,所述摄像组件固定在所述滑动组件上,所述肢体定位数据包括小臂肢体定位数据,所述采集单元,还用于:
控制所述滑动组件移动至所述小臂肢体定位数据相应的指示位置;
通过固定在所述滑动组件上的摄像组件采集所述目标对象的手掌图像。
此外,本申请实施例还提供一种计算机设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序实现本申请实施例提供的任一种数据处理方法中的步骤。
此外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种数据处理方法中的步骤。
此外,本申请实施例还提供一种计算机程序产品,包括计算机指令,所述计算机指被执行时实现本申请实施例所提供的任一种数据处理方法中的步骤。
本申请实施例可以获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据;根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据;将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;根据手部姿态数据,控制虚拟对象的手部姿态。由此可得,本方案可先根据目标对象的肢体定位数据来协助采集目标对象的手掌图像,然后,识别出手掌图像中每个手指关节点相对于相邻手指关节点的位置关系的手指关节姿态,以获取手掌骨骼姿态数据,同时,根据肢体定位数据确定每个肢体关节点相对于相邻肢体关节点的位置关系的肢体关节姿态,以获取肢体骨骼姿态数据,最后,将手掌骨骼姿态数据与肢体骨骼姿态数据合并得到完整的手部姿态数据,并控制虚拟对象的手部姿态动作;以此,通过肢体定位数据协助图像采集的方式来采集目标对象的手掌信息,实现精确捕捉骨骼关节的姿态数据,以准确构建虚拟对象的骨骼动画,且有效避免佩戴过多的姿态感测仪对骨骼关节的束缚,提高用户体验感。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的数据处理系统的场景示意图;
图2是本申请实施例提供的数据处理方法的步骤流程示意图;
图3是本申请实施例提供的手掌骨骼关节的结构示意图;
图4是本申请实施例提供的数据处理方法的另一步骤流程示意图;
图5是本申请实施例提供的数据处理系统的架构示意图;
图6是本申请实施例提供的数据处理方法的场景示意图;
图7是本申请实施例提供的数据处理系统的手部姿态追寻和骨骼姿态构建方法的流程图;
图8是本申请实施例提供的数据处理装置的结构示意图;
图9是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种数据处理方法、装置、设备和可读存储介质。具体地,本申请实施例将从数据处理装置的角度进行描述,该数据处理装置具体可以集成在计算机设备中,该计算机设备可以是服务器,也可以是用户终端等设备。其中,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。其中,用户终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能家电、车载终端、智能语音交互设备、飞行器等,但并不局限于此。
需要说明的是,在说明书、权利要求书和上述附图所描述的一些流程中,包含了按照特定顺序出现的多个步骤,但应该清楚了解,这些步骤可以不按照其在本文中出现的顺序来执行或并行执行,步骤序号仅仅是用于区分开各个不同的步骤,序号本身不代表任何的执行顺序。此外,本文中的“第一”、“第二”或者“目标”等描述,是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
需要说明的是,在本申请的具体实施方式中,涉及到用户信息、用户使用记录、用户状况等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本申请实施例提供的数据处理方法可应用于各种场数据处理的场景,这些场景不限于通过云服务、人工智能或结合等方式实现,具体通过如下实施例进行说明:
其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
其中,计算机视觉技术(Computer Vision,CV)计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、追寻和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
参见图1,为本申请实施例提供的数据处理系统的场景示意图。该数据处理系统的场景可应用于根据识别的人体姿态生成骨骼动画的应用场景,例如,通过对人体姿态进行实时追寻,并采集手掌图像,并通过深度学习(如人工智能中的神经网络)来识别图像中的手指关节点的位置或位置关系,并将识别到的位置信息转换为手掌骨骼姿态数据,以及根据肢体定位数据确定肢体骨骼姿态数据,并将合成得到的手部姿态数据应用于直播画面、影视动画视频、动画文件或“元宇宙”等场景中的虚拟对象的手部骨骼姿态动作的控制。其中,该数据处理系统可包括终端或服务器。
例如,该服务器或终端上的应用程序,可获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据;根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据;将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;根据手部姿态数据,控制虚拟对象的手部姿态。
其中,数据处理过程可以包括:获取肢体定位数据、采集手掌图像、确定手掌中手指关节姿态、确定肢体关节姿态、合并手掌姿态和肢体肢体、展示手部姿态等步骤。
为了便于理解,以下将以示例对数据处理系统进行介绍,具体如下:
示例性的,以钢琴乐器演奏场合为例,在演奏场合空间中预先布局多个方位的红外发射基站,并以钢琴键盘中心作为原点构建世界坐标系,基于该世界坐标系下对多个方位的红外发射基站进行标定,并预先确定钢琴座椅中心位置的座椅中心坐标;此外,在演奏人员的背部、肘部、小臂末端佩戴上红外定位器。进而,通过红外感测方式获取各个红外定位器的位置信息,并根据小臂末端的位置信息控制滑动组件搭载摄像组件进行移动,以实时根据手腕关节的位置对手掌位置进行追寻,并通过摄像组件采集手掌图像;从而,从手掌图像中识别出手指关节姿态,以及根据各个红外定位器的位置信息识别出手臂姿态,并将手指关节姿态和手臂关节姿态进行动画数据合成,得到骨骼动画数据。最后,通过游戏引擎对骨骼动画数据进行渲染,并将渲染得到的钢琴演奏画面帧推送到直播端进行直播展示;或者,将每一帧骨骼动画数据以三维数组(如fbx格式的数组)进行存储,在钢琴演奏完毕后,将存储的数组集合保存至本地文件,得到骨骼动画文件,以便制作成影视动画,或者用于其他用途。
在本申请实施例中,将从数据处理装置的角度进行描述,以该数据处理装置具体可以集成在计算机设备如服务器或终端中。参见图2,图2为本申请实施例提供的一种数据处理方法的步骤流程示意图,服务器或终端上的处理器执行数据处理方法对应的程序指令时,具体流程如下:
101、获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像。
在本申请实施例中,为了在采集用户的动作姿态时避免大量的姿态感测器件对用户造成束缚,通过确定用户的手部的肢体定位数据,并结合图像采集方式,采集肢体定位数据的指示位置处的手掌图像,以便从手掌图像中识别出手掌中各个手指关节姿态,以及根据肢体定位数据确定手部肢体关节姿态,从而得到用户的手部动作姿态。
其中,该肢体定位数据可以是目标对象的肢体的位置信息,其不限于包括目标对象的肘部、腕部、背部的定位信息,以表示目标对象肘部、腕部和背部在空间中的位置,其具体可以通过肢体部位在世界坐标系中的坐标来表示。
为了获取目标对象的一个或多个部位的肢体定位数据,可以通过定位设备来感测获取,如通过红外感测、距离感测、位置感测等方式来采集目标对象的肢体部位在空间中的位置信息,从而空间中的位置信息分别确定肢体定位数据,使得计算机设备获取到目标对象一个或多个部位的肢体定位数据。示例性的,以红外感测方式为例,用户可事先在身体的相关部位佩戴红外定位器,如在背部、手肘部、腕部(或小臂靠近腕部)等部位处分别佩戴红外定位器,通过红外线发射器或红外发射基站发出红外射线,并根据用户佩戴的红外定位器的响应情况,确定用户背部、手肘部、腕部的肢体定位数据。
其中,该手掌图像可以是包含目标对象的手掌信息的图像,该手掌图像中不限于包含每根手指的姿态动作信息,可以理解的是,每根手指的姿态动作由不同关节层级的多个手指关节点的姿态构成,而每个手指关节点的姿态由其本身相对于相邻的手指关节点或手掌中某一位置点的布局位置关系决定。例如,按照从手掌到手指末端,依序将食指关节分为第一手指关节点、第二手指关节点和第三手指关节点,第一手指关节点的姿态可由相对于手掌心部位而言的布局位置决定,第二手指关节点的姿态可由相对于第一手指关节点的布局位置决定,第三手指关节点的姿态可由相对于第二手指关节点的布局位置决定,以上仅为示例,具体不作限定。
为了后续能够获取目标对象的手掌骨骼的姿态,可通过采集目标对象的手掌部位的图像信息,以便后续从手掌图像中识别出各个手指关节的姿态数据,从而确定目标对象实时的手掌部位的动作姿态。其中,在采集目标对象的手掌部位的手掌图像时,可以结合目标对象的肢体位置来采集手掌图像,如根据肢体定位数据的指示位置来确定目标对象的腕部或手掌的位置,从而对手掌部位进行图像采集,确保图像采集过程的有效性和精确度,提高手掌姿态信息的采集效率。
需要说明的是,该肢体定位数据可以包括小臂肢体定位数据,该小臂肢体定位数据的指示位置可以是手掌在空间中的三维位置,也可以是手掌在空间中的垂直方向上的位置,还可以是手掌在空间中水平方向上的位置,此处不做限定。
在一些实施方式中,通过目标对象实时的小臂的定位信息来精确控制摄像组件,以进行手掌部位的信息采集。例如,以肢体定位数据至少包括小臂肢体定位数据为例,步骤101中的“按照肢体定位数据的指示位置采集目标对象的手掌图像”,可以包括:
(101.1)根据小臂肢体定位数据,确定目标对象的手掌在世界坐标系中的偏移向量;
(101.2)确定偏移向量中的水平方向分量;
(101.3)根据水平方向分量的指示位置,控制摄像组件采集目标对象的手掌图像。
其中,该小臂肢体定位数据可以是目标对象的小臂部位的定位信息,其反映了目标对象的小臂部位(如手腕或临近手腕部位)在空间中的位置。
其中,该世界坐标系可以是目标对象所在空间中的几何位置的参照体系,该世界坐标系的原点可以空间中的某一位置进行设定。例如,世界坐标系以左右手掌在空间中的中点位置作为原点的坐标系,具体的,根据目标对象的左右两个手掌或腕部在空间中的常置位置点(或位置区间)来设定世界坐标系的原点,此外,还可将左右两个手掌在空间中的常置水平位置的中点作为原点建立世界坐标系。
其中,该偏移向量可以是手掌相对于世界坐标系原点位置的空间位置偏移量,具体可根据世界坐标系的原点坐标与腕部(或手掌)在世界坐标系中实时的腕部坐标来构建偏移向量;此外,还可根据腕部在在世界坐标系中的当前时刻的目标腕部坐标和上一时刻的腕部坐标来构建偏移向量;以上仅为示例,此处不做限定。
需要说明的是,偏移向量不限于包括水平方向和垂直方向上的分量,该水平方向分量具体是指目标对象的腕部或手掌在姿态信息采集过程中的水平方向上的移动量,也可以理解为在水平方向上的变量,其可反映目标对象的腕部或手掌在水平方向上相对于世界坐标系原点的偏移量。
具体的,为了追寻目标对象的腕部或手掌的位置,并进行手掌图像信息的采集,可先根据小臂肢体定位数据来确定目标对象的腕部或手掌在世界坐标系中的偏移向量,以了解目标对象的手掌或腕部在空间中的位置信息;进而,根据偏移向量确定手掌或腕部在空间中水平方向上分量,以确定目标对象的手掌或腕部在水平方向上横移的实时位置信息,并按照水平方向分量指示的位置来控制摄像组件在执行图像采集/拍摄时的方向或位置,从而,实现控制摄像组件按照水平方向分量所指示的位置来采集的手掌图像。以此,可确保图像采集过程的有效性和精确度,提高手掌姿态信息的采集效率。
在一些实施方式中,摄像组件可在水平面上围绕一个或多个方向来回横移,可通过手部或腕部在水平方向上偏移量来控制摄像组件移动,以使得摄像组件对目标对象的手掌或腕部进行追寻,以便准确且有效地拍摄/采集目标对象的手掌图像信息。例如,步骤(101.3)可以包括:
(101.3.1)控制摄像组件移动至水平方向分量的指示位置;
(101.3.2)通过移动后的摄像组件采集得到目标对象的手掌图像。
具体的,按照目标对象的小臂(腕部)在世界坐标系中水平方向上实时的移动分量来控制摄像组件移动,使得摄像组件移动至水平方向分量上的指示位置,此时,移动后的摄像组件可以位于目标对象的手掌和腕部的垂直方向上方区域;进而,通过摄像组件对目标对象的手掌进行垂直方向上的拍摄/采集,以拍摄出平面的手掌图像信息。以此,实现控制摄像组件对目标对象的手掌或腕部进行追寻和采集,以便准确且有效地拍摄/采集目标对象的手掌图像信息。
此外,在控制摄像组件移动时,该移动的方式可以是转向的方式,其可以理解为“摇头”,例如,通过控制摄像组件的镜像面朝向目标对象的手掌部位,实现对目标对象的手掌部位进行追寻,以对手掌部位进行图像信息采集,提高图像信息采集的准确性和有效性。
通过以上方式,可感测目标对象的肢体在空间中的位置,从而根据肢体的位置来对目标对象的手掌进行追寻,并进通过图像采集的方式对目标对象的手掌信息进行图像采集,以便后续根据采集的图像来识别和分析各个手指关节的姿态,以此,无需通过佩戴大量的姿态感测器件,使得目标对象的手指关节不受到束缚,确保目标对象的手掌姿态的伸展,提高姿态信息采集的精确性,提高用户的体验。
102、确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据。
在本申请实施例,在得到目标对象的手掌图像后,即可从采集的手掌图像中识别手掌各个部位的信息,如识别出手掌中各个手指关节点的位置以及手指关节点之间位置关系,并按照位置关系来构建各个手指关节点的关节姿态,该姿态可以通过向量矩阵的方式来进行表示;进而,通过结合每个手指关节点的姿态矩阵来生成整个手掌骨骼姿态数据。
其中,手指关节姿态矩阵可以是表示相应手指关节点相对于前一手指关节点的姿态的向量矩阵,其可以理解为每个手指关节点在骨骼层级关系中的关节姿态矩阵,属于每个手指关节点在局部旋转姿态数据。具体的,该手指关节姿态矩阵可以包含多个基向量,每个基向量分别表示手指关节点在相应方向上的姿态偏移,比如,手指关节姿态矩阵包括在前后方向上偏移的基向量、在上下方向上偏移的基向量、在左右方向上偏移的基向量,从而,联合这三个基向量来构建姿态矩阵,以表示相应手指关节点的关节姿态。
在一些实施方式中,可以根据手掌图像中手指关节点之间的位置关系来构建的每个手指关节点的姿态矩阵,以表示每个手指关节点的姿态。具体的,步骤102中的“确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵”,可以包括:
(102.1)从手掌图像中读取多个手指关节点的关节布局参数;
(102.2)根据关节布局参数确定每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
其中,该关节布局参数可以是手指关节点在手掌中的位置参数以及与相邻手指关节点之间的位置关系的布局参数,通过该关节布局参数可以反映手掌中各个食指关节点的布局位置和布局关系,从而可表示相应的手指关节点在骨骼层级中的位置和层级关系。
其中,该关节的位置可以通过几何坐标系方式进行表示,例如,以手掌区域中任意位置点作为坐标系原点,构建手掌坐标系,并以坐标来表示每个手指关节点的位置,以上仅为示例,不作为具体实施的限定。
其中,骨骼层级是指骨骼层级结构,表示了多个骨骼之间的连接结构,该骨骼层级不仅可以表示相邻骨骼肢干之间的连接关系,还可以表示骨骼关节的结构位置和层级关系。为了便于理解,以下对骨骼层级进行介绍:比如,以手部肢体的骨骼层级为例,手臂骨骼两端的关节分别与肩膀部位关节和小臂的肘部关节连接,组成手部肢体的骨骼层级连接结构,其可以理解为骨骼链;又如,以手掌中食指为例,以食指根部(与手掌心部位连接的部位)向末端方向,依序包括第一手指骨骼、第二手指骨骼和第三手指骨骼,且食指包含三个手指关节点,依序为与手掌心部位(食指根部)连接的第一手指关节点、与第一手指关节点连接的第二手指关节点、与第二手指关节点连接的第三手指关节点,食指骨骼和食指关节依序连接组成食指骨骼链,以表示食指的骨骼层级。
具体的,在得到手掌图像后,可以从手掌图像中读取手指关节点的关节布局参数,以按照关节布局参数来确定每个手指关节点相对于其他手指手指关节点之间的位置关系,如确定手指关节点在食指骨骼层级中的位置和位置布局关系;进而,根据位置和位置布局关系来计算每个手指关节点的手指关节姿态矩阵。例如,以食指为例,从手掌图像中确定食指上的每个食指关节点的关节布局参数,以便得到手指关节点的位置以及相对于食指中其他相邻的食指关节点之间的位置关系,从而,计算每个食指关节点的手指关节姿态矩阵。
在一些实施方式中,可以根据手掌图像中手指关节点的位置,以及手指关节点与相邻手指关节点之间的位置关系来构建的每个手指关节点的姿态矩阵,以表示每个手指关节点的姿态。具体的,步骤(102.2)可以包括:
(102.2.1)根据关节布局参数确定每个手指关节点在手掌坐标系下的手指关节坐标,以及确定每个手指关节点的手指关节层级;
(102.2.2)根据手指关节层级和手指关节坐标,计算每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
其中,手指关节层级可以表示相应的手指关节点在之间的排序关系,每一关节层级表示一个手指关节点,比如,自手指根部至手指末端,依序包括与手掌心部位连接的第一手指关点,其视为第一手指关节层级,依序类推,包括第二手指关节层级和第三手指关节层级。
为了获取每个手指关节点的手指关节姿态矩阵,可以通过相邻关节点的坐标来计算每个手指关节点的手指关节姿态矩阵。具体的,从每个手掌图像中获取到每个手指关节点的关节布局参数后,以手掌中的某一位置作为坐标原点构建手掌空间坐标系,并按照关节布局参数确定各个手指关节点在该手掌空间坐标系中的三维坐标,得到手指关节坐标;此外,还可根据关节布局参数来确定各个手指骨骼的骨骼层级结构,以根据手指骨骼的骨骼层级结构来获取手指关节层级,即得到每个手指关节点的关节层级关系。进而,基于手指关节层级和每个手指关节坐标,计算每个手指关节点相对于相邻的手指关节点而言的手指关节姿态矩阵,即计算得到每个手指关节点在手指(或手掌)骨骼层级或关节层级中的手指关节姿态矩阵。
可以理解的是,按照手指根部(与手掌部位连接部位)到手指末端,手指关节点依序包括第一手指关节点、第二手指关节点和第三手指关节点,其中,第一手指关节点处于相应手指的根部,第一手指关节点与手掌部位相连;以手指关节层级而论,第一手指关节层级为的手指关节点为第一手指关节点,第二手指关节层级的手指关节点为第二手指关节点,第三手指关节层级的手指关节点为第三手指关节点。为了便于理解,以下将对同一手指中的各个手指关节点的关节姿态矩阵的计算过程进行描述。
(1)第一手指关节点的手指关节姿态矩阵计算过程:
步骤(102.2.2)可以包括:当根据手指关节层级确定手指关节点为与手掌直接相连的第一手指关节点时,将第一手指关节点对应的手指关节坐标确定为第一手指关节坐标;确定与第一手指关节点相邻的目标手指关节点,并确定目标手指关节点的目标关节坐标;按照三维向量单位化方式将根据第一手指关节坐标与目标关节坐标构建得到对应方向的方向姿态基向量;根据不同方向上的多个方向姿态基向量构建第一手指关节的手指关节姿态矩阵。
例如,以食指中的第一手指关节点为例,则与第一手指关节点相邻的关节点包括食指中的第二手指关节层级的目标手指关节点,以及中指的第一手指关节层级的目标手指关节点。此时,根据食指中的第二手指关节层级的目标手指关节点与第一手指关节点的坐标,构建第一手指关节点向前方向上的前向姿态基向量;根据中指的第一手指关节层级的目标手指关节点与第一手指关节点的坐标,构建第一手指关节点向上方向的上向姿态基向量;此外,根据前向姿态基向量和上向姿态基向量之间乘积,构建第一手指关节点向右方向上的右向姿态基向量,至此,食指的第一手指关节点在前、上、右这三个方向上的姿态基向量计算完毕,需要说明的是,在构建每个方向的姿态基向量时,按照三维向量单位化方式进行构建。进而,将以上三个基向量组成第一手指关节点的手指关节姿态矩阵。
示例性的,结合图3所示,为手掌中每个手指关节点的层级关系图,其包含了每个手指关节点的位置和布局关系,该位置和关节布局关系可以是从手掌图像中识别、提取或转换得到。以食指为例,计算食指中第一手指关节点的手指关节姿态矩阵,则该食指的第一手指关节点为5号点,第二手指关节点为6号点,中指的第一手指关节层级的手指关节点为9号点,则在计算食指中第一手指关节点(5号点)的关节姿态矩阵时,按照三维向量单位化先分别计算向前、向上和向右的方向姿态基向量,如下:
食指的第一手指关节点(5号点)向前的方向姿态基向量:
vindex1_front=normalize(P6-P5)
食指的第一手指关节点(5号点)向上的上向姿态基向量:
vindex1_up=normalize(P9-P5)
食指的第一手指关节点(5号点)向右的右向姿态基向量:
vindex1_right=normalize(vindex1_front×vindex1_up)
进而,将以上三个方向上的姿态基向量组成第一手指关节点的手指关节姿态矩阵Rlocal_index1=(vindex1_front,vindex1_up,vindex1_right),需要说明的是,该手指关节姿态矩阵为食指的第一手指关节点在手掌空间坐标系下的空间旋转姿态,其属于食指的第一手指关节点在局部坐标系下的旋转姿态矩阵。
(2)第二手指关节点的手指关节姿态矩阵计算过程:
步骤(102.2.2)包括:当根据手指关节层级确定手指关节点为第二手指关节点时,获取第二手指关节点的第二手指关节坐标,并获取与第二手指关节点相邻的第一手指关节点的第一手指关节坐标,以及与第二手指关节点相邻的第三手指关节点的第三手指关节坐标;根据第二手指关节坐标与第一手指关节坐标构建第一手指骨骼向量,以及根据第三手指关节坐标与第二手指关节坐标构建第二手指骨骼向量;确定第二手指骨骼向量与第一手指骨骼向量之间的骨骼向量角度,并根据第二手指骨骼向量、第一手指骨骼向量以及第一手指关节点的右向姿态基向量之间的乘积确定骨骼向量角度的角度方向系数;将骨骼向量角度与角度方向系数的乘积进行欧拉变换,得到第二手指关节点的手指关节姿态矩阵。
示例性的,以食指的第二手指关节点为例,参见图3所示,获取第二手指关节点(6号点)的空间坐标,即第二手指关节坐标P6,以及获取相邻的第一手指关节点(5号点)的空间坐标,即第一手指关节坐标P5,并获取相邻的第三手指关节点(7号点)的空间坐标,即第三手指关节坐标P7,以上坐标都是关节点在手掌空间坐标系中的空间坐标;则在计算食指中第二手指关节点(6号点)的关节姿态矩阵时,按照三维向量单位化先计算第二手指骨骼向量与第一手指骨骼向量之间的骨骼向量角度a,具体如下:
a=acos(normalize(P7-P6)-normalize(P6-P5))
该a表示第二手指关节点相对于第一手指关节点的夹角,即角度大小。
其中,该a夹角是具有正负的,其可以理解为角度方向系数,计算如下:
s=sign(normalize(P7-P6)×normalize(P6-P5)×vindex1_right)
需要说明的是,第二手指关节点的空间旋转姿态是相对于第一手指关节点而言的,在计算第二手指关节点的手指关节姿态矩阵时,可计算第二手指关节点在第一手指关节点的局部坐标系下的空间旋转姿态,其中,该以第一手指关节点指向第二手指关节点的方向为局部坐标系的x轴,则第二手指关节点是绕y轴旋转的,通过欧拉变换Euler计算得到的第二手指关节点的手指关节姿态矩阵Rlocal_index2如下:
Rlocal_index2=Euler(0,s·a,0)
(3)关于第三手指关节点的手指关节姿态矩阵计算,需要获取手指末端的坐标,其计算过程与第二关节点的计算方式相同。例如,以食指为例,参见图3,需要获取手指末端坐标P8,第三手指关节点的空间坐标P7,第二手指关节点的空间坐标P6。进而,计算第三手指关节点的手指关节姿态矩阵过程如下:
第二手指关节点相对于第一手指关节点的夹角a为:
a=acos(normalize(P8-P7)-normalize(P7-P6))
该夹角a是具有正负的,其可以理解为角度方向系数,计算如下:
s=sign(normalize(P8-P7)×normalize(P7-P6)×vindex1_right)
通过欧拉变换Euler计算得到的第二手指关节点的手指关节姿态矩阵Rlocal_index3如下:
Rlocal_index3=Euler(0,s·a,0)
至此,食指的第一手指关节点、第二手指关节点和第三手指关节点的手指关节姿态矩阵计算完毕。需要说明的是,其它手指中每个手指关节层级的手指关节点的姿态矩阵参考食指中相应关节层级下手指关节姿态矩阵的计算方式,此处不作赘述。
在本申请实施例中,在计算出手掌中每个手指关节点相对于相邻的手指关节点的姿态矩阵后,得到每个手指关节点的空间旋转姿态;进一步的,可联合每个手指关节点的手指关节姿态矩阵,构建对应的手掌的手掌骨骼姿态数据,以便后续控制虚拟对象的手掌部分的关节姿态。
其中,该手掌骨骼姿态数据可以是包含整个手掌中各个关节点的旋转姿态的数据,如包括每个手指中各个手指关节点的局部旋转姿态数据。
通过以上方式,可从采集的手掌图像中识别手掌各个手指关节点的信息,以按照识别到的信息来确定每个手指关节点的空间旋转姿态,从而,结合每个手指关节点的空间旋转姿态来生成整个手掌骨骼姿态数据。
103、根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据。
在本申请实施例中,为了计算目标对象整个手部的姿态,在计算完手掌部位的各个手指关节点的旋转姿态后,还需要计算手部肢体的各个关节点的旋转姿态。具体的,可以根据肢体定位数据来确定手部肢体中每个肢体关节点在空间中的位置信息,以按照肢体关节点的位置信息来计算每个肢体关节点相对于相邻肢体关节点的旋转姿态,得到每个肢体关节点的肢体关节姿态矩阵,进而,可根据肢体关节姿态矩阵来生成手部肢体的骨骼姿态数据,以便后续将肢体骨骼姿态数据与手掌骨骼姿态数据合成得到目标对象的手部骨骼动画。
其中,肢体关节姿态矩阵可以是表示相应肢体关节点相对于前一肢体关节点的空间旋转姿态的向量矩阵,其可以理解为每个肢体关节点在肢体骨骼层级关系中的关节旋转姿态数据。
具体的,在目标对象的背部、手部肢体的肘部和腕部上佩戴定位器后,可分别获取目标对象的背部、肘部关节点和腕部关节在世界坐标系下的坐标,从而,联合每个肢体关节点的坐标来计算每个肢体关节点相对于相邻肢体关节点之间位置关系的肢体关节姿态矩阵,得到每个肢体关节点的空间旋转姿态,进而,结合多个肢体关节姿态矩阵来构建目标对象的手部肢体的肢体骨骼姿态数据。
在一些实施方式中,可以先计算出肩部在世界坐标系中的坐标,然后根据肩部坐标、肘部坐标、腕部坐标来计算肩部和肘部在空间中的选择姿态。具体的,肢体关节姿态矩阵至少包括肩部关节姿态矩阵和肘部关节姿态矩阵,步骤103中的“根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵”,可以包括:
(103.1)根据肢体定位数据确定在世界坐标系下的背部坐标、肘部关节坐标和腕部关节坐标;
(103.2)根据背部坐标确定目标对象的躯干倾斜度;
(103.3)根据预设躯干长度和躯干倾斜度确定肩部关节点在世界坐标系下的肩部关节坐标;
(103.4)根据腕部关节坐标、肘部关节坐标和肩部关节坐标进行反向动力学计算,得到肘部关节点相对于肩部关节点的肘部关节姿态矩阵,以及肩部关节点的肩部关节姿态矩阵。
其中,该躯干倾斜度可以是目标对象的背部躯干的倾斜度,如目标对象在站立或坐着时的背部躯干相对于垂直方向的倾斜度。
为了最大化减少定位传感器件对目标对象肢体的阻碍和束缚,可仅在目标对象的背部、肘部关节和腕部关节处佩戴定位器,从而,通过定位器来确定得到目标对象的背部、肘部关节和腕部关节在世界坐标系下的空间坐标,而肩部关节坐标可以通过计算方式来得到。具体的,先根据背部坐标相对于预设参照物坐标来计算目标对象背部躯干的倾斜度,如,假设目标对象处于坐立姿态,该预设参照物坐标可以是预先设定的座椅中心点坐标,根据背部坐标与座椅中心点坐标来计算目标对象的背部躯干的倾斜度,从而,根据目标对象的躯干长度和躯干倾斜度的乘积来结合常量,以计算得到目标对象的肩部关节在世界坐标系中的肩部关节坐标。
示例性的,以目标对象处于坐立姿态为例,假设目标对象保持标准坐姿,则根据背部的红外定位器的坐标,判断目标对象躯干的倾斜程度,该躯干倾斜程度可以通过座椅中心点坐标Pchair和背部坐标Pback来计算得到,躯干倾斜程度按照三维向量单位化或标准化的方式可表示为:normalize(Pback-Pchair);而目标对象的躯干长度L可以预先确定,并预先设定肩部相对于背部定位器位置的计算常量offset,从而,即可根据以上参数来计算肩部关节在世界坐标系下的肩部坐标:
Pshoulder=normalize(Pback-Pchair)·L+offset)
需要说明的是,关于该计算常量offset,其可以理解为肩部关节相对于背部的定位器的偏移量,具体可以根据目标对象的体型进行设置,此外,还可根据虚拟人的模型体格进行设置,此处不做限定。
进一步的,在得到肩部关节坐标后,通过反向动力学(Inverse kinematics,IK),将肩部关节坐标、肘部关节坐标和腕部关节坐标进行反向方向动力学计算,以分别得到肩部关节点的肩部关节姿态矩阵,以及肘部关节点的肘部关节姿态矩阵,从而,根据该肩部关节姿态矩阵和肘部关节姿态矩阵来构建手部肢体的姿态数据。
通过以上方式,可根据肢体定位数据来确定手部肢体中每个肢体关节点在空间中的位置信息,并对肢体关节点的位置进行反向动力学计算,得到每个肢体关节点相对于相邻肢体关节点的肢体关节姿态矩阵,从而联合每个肢体关节点的肢体关节姿态矩阵来生成手部肢体的骨骼姿态数据,以便后续将肢体骨骼姿态数据与手掌骨骼姿态数据合成得到手部姿态数据。
104、将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据。
在本申请实施例中,在得到目标对象的手掌骨骼姿态数据和肢体骨骼姿态数据后,可将手掌骨骼姿态数据与肢体骨骼姿态数据之间进行合成,使得手掌姿态应用在手部肢体上,构建出目标对象的完整手部肢体的骨骼姿态数据,即手部姿态数据。
需要说明的是,该肩部关节姿态矩阵和肘部关节姿态矩阵分别表示肩部关节点和肘部关节点在空间中的局部坐标系下的旋转姿态,例如,肘部关节姿态矩阵表示肩部关节点的局部坐标系下的旋转姿态,以及肩部关节姿态矩阵表示肩部关节点相对于躯干部位的旋转姿态;同理,手掌中各个手指关节点的手指关节姿态矩阵表示相对于相邻的手指关节点下的姿态。因此,在将手掌骨骼姿态数据与肢体骨骼姿态数据进行合成时,通过计算出小臂肢体与手掌之间的手腕关节点的旋转姿态,以确定手腕关节点在肘部关节点的局部坐标系下的腕部关节姿态矩阵,从而完成手掌骨骼姿态数据与肢体骨骼姿态数据之间的合成,得到完整、连贯的手部姿态数据。
在一些实施方式中,通过计算手腕关节点的腕部关节姿态矩阵,以对肢体骨骼姿态数据与手掌骨骼姿态数据之间进行合并。具体的,肢体骨骼姿态数据至少包括肘部关节姿态矩阵和肩部关节姿态矩阵,步骤104可以包括:
(104.1)根据肢体骨骼层级关系对肘部关节姿态矩阵和肩部关节姿态矩阵进行矩阵级乘计算,得到肘部关节点在世界坐标系下的肘部姿态矩阵;
(104.2)确定手掌图像中手腕关节点在世界坐标系下的目标姿态矩阵;
(104.3)根据目标姿态矩阵与肘部姿态矩阵的逆矩阵之间的乘积,确定手腕关节点相对于肘部关节点的腕部关节姿态矩阵;
(104.4)基于腕部关节姿态矩阵,对肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据。
具体的,在计算手腕关节点在肘部关节的局部坐标系下的旋转姿态时,需要先计算出肘部关节点在世界空间坐标系下的肘部姿态矩阵,以及计算出手腕关节点在世界空间坐标系下的目标姿态矩阵,即手腕姿态矩阵,从而,将处于世界坐标系下的目标姿态矩阵与处于世界坐标系下的肘部姿态矩阵的逆矩阵进行相乘,得到手腕关节点在肘部关节点的局部坐标系下的腕部关节姿态矩阵;进而,在得到该腕部关节姿态矩阵后,即可对腕部关节姿态矩阵、肢体骨骼姿态数据和手掌骨骼姿态数据进行合成,完成肢体骨骼姿态数据与手掌骨骼姿态数据之间的合并,得到合成后的手部姿态数据。
需要说明的是,在计算肘部关节点在世界空间坐标系下的肘部姿态矩阵时,按照肢体骨骼层级关系可以确定小臂骨骼的父骨骼进行矩阵层级计算,由于小臂骨骼的父骨骼关节点仅包括肩部关节点,则将肩部关节点的局部坐标系下的肩部关节姿态矩阵与肘部关节点的局部坐标系下的肘部关节姿态矩阵之间进行矩阵级乘计算,即可得到肘部关节点在世界空间坐标系下的肘部姿态矩阵,可表示为Rworld_forearm。进而,手腕关节点相对于小臂关节(肘部关节点)的局部坐标系下的腕部关节姿态矩阵可表示为
其中,在计算手腕关节点在世界空间坐标系中的目标姿态矩阵时,首先,可以针对手掌图像来构建图像空间坐标系,该图像空间坐标系也可以理解为二维图像坐标系,其横轴和纵轴与世界空间坐标系中的横轴和纵轴方向相同;然后,确定在图像空间坐标系下的同一手指中的第一手指关节点的第一手指关节坐标,以及第二手指关节点的第二手指关节坐标,根据第一手指关节坐标和第二手指关节坐标来构建图像空间下的目标向量(P6-P5);最后,确定世界空间坐标系中与目标向量同一方向的目标坐标轴,并根据目标向量与目标坐标轴的夹角确定手腕关节点在世界空间坐标系中的目标姿态矩阵Rworld_palm,即得到手腕关节点在世界坐标系中的手腕姿态矩阵,以便用于手腕关节点在肘部关节点的局部坐标系下的腕部关节姿态矩阵的计算。
通过以上方式,可计算出手掌与小臂之间的手腕关节点的腕部关节姿态矩阵,并对腕部关节姿态矩阵、肢体骨骼姿态数据和手掌骨骼姿态数据进行合成,完成肢体骨骼姿态数据与手掌骨骼姿态数据之间的合成,以便后续将按照该完整的手部肢体的骨骼姿态数据来控制虚拟对象的手部骨骼姿态动作。
105、根据手部姿态数据,控制虚拟对象的手部姿态。
在本申请实施例中,在得到目标对象的手部姿态数据后,可按照该手部姿态数据来控制相应虚拟对象的手部姿态动作。以此,实现对人体的手部姿态动作的追寻和采集,并根据识别和分析到的手部姿态来控制虚拟对象的手部动作,以便应用于虚拟对象的姿态动作直播、骨骼动画文件构建等场景中。
其中,该虚拟对象可以是具有数字化外形的虚拟人物角色,其通过依赖显示设备存在,即通过显示界面的显示播放展示虚拟对象,该虚拟对象不限于包括游戏角色、虚拟偶像人物、虚拟主播角色等。
在一些实施方式中,可以对目标对象演奏乐器的动作进行追寻和采集,并根据识别和分析的手部姿态数据来控制构建的虚拟对象的手部动作,以进行直播展示。具体的,在乐器演奏直播场景中,手部姿态数据为目标对象演奏乐器时手部的演奏动作数据,步骤105可以包括:按照演奏动作数据控制虚拟对象的手部姿态进行演奏乐器,并生成乐器演奏画面帧;将乐器演奏画面帧依序推送至直播端进行直播展示。
示例性的,在直播领域中,主播用户正在演奏钢琴,可以在得到目标对象演奏钢琴时的手部的演奏动作数据后,根据该演奏动作数据来控制预先构建的虚拟对象,如控制预先构建的虚拟主播用户(钢琴家角色)的虚拟手部姿态动作,以对虚拟的钢琴进行弹奏,同时,通过游戏引擎对虚拟对象演奏乐器的画面进行渲染,以依序渲染生成乐器演奏画面帧,最后,将每一乐器演奏画面帧依序推送至直播端进行直播展示,以使得用户可以观看虚拟对象演奏乐器的画面。
此外,还可根据每个乐器演奏画面帧的时序关系,制作成乐器演奏视频。
在一些实施方式中,可以将手部姿态数据存储为三维立体格式的骨骼动画文件,以便在显示界面中对该骨骼动画文件进行演示。具体的,步骤105可以包括:将每帧手部姿态数据转换为三维模型数组,并存储每个三维模型数组;根据存储的每个三维模型数组,生成手部姿态数据对应的骨骼动画文件;对骨骼动画文件进行演示,以控制显示界面所显示的虚拟对象的手部姿态。
示例性的,在将手部姿态数据存储为动画文件时,是指将手部姿态数据存储为3D格式的数据数组,比如,将手部姿态数据存储为FilmBoX格式的数组,以对手部资源动作进行建模,并储存为骨骼动画文件;进而,可通过相关的文件应用程序打开该骨骼动画文件,并进行骨骼动画演示,以控制演示界面中虚拟对象的手部姿态动作。需要说明的是,在将手部姿态数据存储为动画文件后,后续还可用于的其他应用,此处不做限定。
通过以上方式,实现对人体的手部姿态动作的追寻和采集,并根据采集的图像数据来识别和分析到的手部姿态,从而控制虚拟对象的手部动作,以便应用于虚拟对象的姿态动作直播、骨骼动画文件构建等场景中。
由上可知,本申请实施例可以获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据;根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据;将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;根据手部姿态数据,控制虚拟对象的手部姿态。由此可得,本方案可先根据目标对象的肢体定位数据来协助采集目标对象的手掌图像,然后,识别出手掌图像中每个手指关节点相对于相邻手指关节点的位置关系的手指关节姿态,以获取手掌骨骼姿态数据,同时,根据肢体定位数据确定每个肢体关节点相对于相邻肢体关节点的位置关系的肢体关节姿态,以获取肢体骨骼姿态数据,最后,将手掌骨骼姿态数据与肢体骨骼姿态数据合并得到完整的手部姿态数据,并控制虚拟对象的手部姿态动作;以此,通过肢体定位数据协助图像采集的方式来采集目标对象的手掌信息,实现精确捕捉骨骼关节的姿态数据,以准确构建虚拟对象的骨骼动画,且有效避免佩戴过多的姿态感测仪对骨骼关节的束缚,提高用户体验感。
根据上面实施例所描述的方法,以下将举例作进一步详细说明。
本申请实施例以数据处理为例,对本申请实施例提供的数据处理方法作进一步叙述。
图3是本申请实施例提供的手掌骨骼关节的结构示意图;图4是本申请实施例提供的数据处理方法的另一步骤流程示意图;图5是本申请实施例提供的数据处理系统的架构示意图;图6是本申请实施例提供的数据处理方法的场景示意图;图7是本申请实施例提供的数据处理系统的手部姿态追寻和骨骼姿态构建方法的流程图。为了便于理解,本申请实施例结合图3-7进行描述。
在本申请实施例中,将从数据处理装置的角度进行描述,该数据处理装置具体可以集成在计算机设备如终端或服务器中。当终端或服务器上的处理器执行数据处理方法对应的程序指令时,该数据处理方法的具体流程如下:
需要说明的是,本申请实施例从数据处理系统侧对数据处理方法进行描述,数据处理系统至少包括计算机设备、定位设备以及摄像组件。
201、计算机设备通过定位设备获取目标对象的肢体定位数据。
其中,该定位设备可以是基于光学的定位设备,该定位设备可以是具备的全身姿态捕捉能力的动作捕捉设备或VR定位设备。例如,以红外感测方式捕捉姿态动作为例,该定位设备可以是红外感测组件,其包括红外发射器(或红外发射基站)和红外定位器的组合。
具体的,计算机设备可以控制定位设备对目标对象进行肢体定位数据采集,或定位设备本身可以自发地对目标对象的肢体进行定位并采集肢体定位数据,此处不作限定。可以理解的是,定位设备在采集到目标对象的肢体定位数据后,将该采集的肢体定位数据发送给计算机设备,使得计算机设备获得目标对象的肢体定位数据。
示例性的,以红外感测组件作为定位设备为例,目标对象可在事先在身体的相关部位佩戴红外定位器,其中,为了最大化减少定位传感器件对目标对象肢体的阻碍和束缚,可在背部、手肘部、腕部(或小臂靠近腕部)等部位处分别佩戴红外定位器,通过红外线发射器或红外发射基站发出红外射线,并根据用户佩戴的红外定位的响应情况,从而获得用户背部、手肘部、腕部的肢体定位数据。
其中,该肢体定位数据可以是目标对象的肢体的位置信息,其不限于包括目标对象的肘部、腕部、背部的定位信息,以表示目标对象肘部、腕部和背部在空间中的位置,其具体可以通过肢体部位在世界坐标系中的坐标来表示。
202、计算机设备按照肢体定位数据的指示位置控制摄像组件移动,并采集目标对象的手掌图像。
需要说明的是,该肢体定位数据可以包括小臂肢体定位数据,该小臂肢体定位数据的指示位置可以是手掌在空间中的三维位置,也可以是手掌在空间中的垂直方向上的位置,还可以是手掌在空间中水平方向上的位置,此处不做限定。
在本申请实施例中,在采集目标对象的手掌部位的手掌图像时,可以结合目标对象的肢体位置来采集手掌图像,如根据肢体定位数据的指示位置来确定目标对象的腕部或手掌的位置,从而对手掌部位进行图像采集。具体的,为了追寻目标对象的腕部或手掌的位置,并进行手掌图像信息的采集,可先根据小臂肢体定位数据来确定目标对象的腕部或手掌在世界坐标系中的偏移向量,以了解目标对象的手掌或腕部在空间中的位置信息;进而,根据偏移向量确定手掌或腕部在空间中水平方向上分量,以确定目标对象的手掌或腕部在水平方向上横移的实时位置信息,并按照水平方向分量指示的位置来控制摄像组件在执行图像采集/拍摄时的方向或位置,从而,实现控制摄像组件按照水平方向分量所指示的位置来采集的手掌图像。以此,确保图像采集过程的有效性和精确度,提高手掌姿态信息的采集效率。
在一些实施方式中,该数据处理系统还可包括滑动组件,该摄像组件固定在滑动组件上,通过控制滑动组件移动,以搭载摄像组件在水平方向上的移动,并通过移动到目标位置的摄像组件采集目标对象的手掌图像。具体的,步骤202可以包括:计算机设备控制滑动组件移动至小臂肢体定位数据相应的指示位置;通过固定在滑动组件上的摄像组件采集目标对象的手掌图像。
示例性的,该滑动组件与计算机设备连接,计算机设备在根据小臂肢体定位数据确定目标对象的小臂末端(手腕部位)在空间中水平方向分量后,可以根据水平分量控制滑动组件移动,以搭载摄像组件在水平面上移动,并在滑动组件移动到水平方向分量的指示位置后,计算机设备控制移动到指示位置的摄像组件采集目标对象的手掌图像。
203、计算机设备确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据。
其中,该手掌图像可以是包含目标对象的手掌信息的图像,该手掌图像中不限于包含每根手指的姿态动作信息,可以理解的是,每根手指的姿态动作由不同关节层级的多个手指关节点的姿态构成,而每个手指关节点的姿态由其本身相对于相邻的手指关节点或手掌中某一位置点的布局位置关系决定。
本申请实施例在得到手掌图像后,可以通过深度学习的方式从手掌图像中计算每个手指关节的姿态。例如,从手掌图像中读取多个手指关节点的关节布局参数,并根据关节布局参数确定每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。具体的,从每个手掌图像中获取到每个手指关节点的关节布局参数后,以手掌中的某一位置作为坐标原点构建手掌空间坐标系,并按照关节布局参数确定各个手指关节点在该手掌空间坐标系中的三维坐标,得到手指关节坐标;此外,还可根据关节布局参数来确定各个手指关节点的骨骼层级结构,以获取手指关节层级,即得到每个手指关节点的关节层级关系。进而,基于手指关节层级和每个手指关节坐标,计算每个手指关节点相对于相邻的手指关节点而言的手指关节姿态矩阵,即计算得到每个手指关节点在手指(或手掌)骨骼层级或关节层级中的手指关节姿态矩阵。
需要说明的是,按照手指根部(与手掌部位连接部位)到手指末端,依序将食指关节分为第一手指关节点、第二手指关节点和第三手指关节点,第一手指关节点的姿态可由相对于手掌心部位而言的布局位置决定,第二手指关节点的姿态可由相对于第一手指关节点的布局位置决定,第三手指关节点的姿态可由相对于第二手指关节点的布局位置决定。其中,以手指关节层级而论,第一手指关节层级为的手指关节点为第一手指关节点,第二手指关节层级的手指关节点为第二手指关节点,第三手指关节层级的手指关节点为第三手指关节点。为了便于理解,结合图3,对同一手指中的各个手指关节点的关节姿态矩阵的计算过程进行描述。
(1)第一手指关节点的手指关节姿态矩阵计算过程:
例如,以食指中的第一手指关节点为例,则与第一手指关节点相邻的关节点包括食指中的第二手指关节层级的目标手指关节点,以及中指的第一手指关节层级的目标手指关节点。此时,根据食指中的第二手指关节层级的目标手指关节点与第一手指关节点的坐标,构建第一手指关节点向前方向上的前向姿态基向量;根据中指的第一手指关节层级的目标手指关节点与第一手指关节点的坐标,构建第一手指关节点向上方向的上向姿态基向量;此外,根据前向姿态基向量和上向姿态基向量之间乘积,构建第一手指关节点向右方向上的右向姿态基向量,至此,食指的第一手指关节点在前、上、右这三个方向上的姿态基向量计算完毕,需要说明的是,在构建每个方向的姿态基向量时,按照三维向量单位化方式进行构建。进而,将以上三个基向量组成第一手指关节点的手指关节姿态矩阵。
示例性的,结合图3所示,为手掌中每个手指关节点的层级关系图,其包含了每个手指关节点的位置和布局关系,该位置和关节布局关系可以是从手掌图像中识别、提取或转换得到。以食指为例,计算食指中第一手指关节点的手指关节姿态矩阵,则该食指的第一手指关节点为5号点,第二手指关节点为6号点,中指的第一手指关节层级的手指关节点为9号点,则在计算食指中第一手指关节点(5号点)的关节姿态矩阵时,按照三维向量单位化先分别计算向前、向上和向右的方向姿态基向量,如下:
食指的第一手指关节点(5号点)向前的方向姿态基向量:
vindex1_front=normalize(P6-P5)
食指的第一手指关节点(5号点)向上的方向姿态基向量:
vindex1_up=normalize(P9-P5)
食指的第一手指关节点(5号点)向右的方向姿态基向量:
vindex1_right=normalize(vindex1_front×vindex1_up)
进而,将以上三个方向上的姿态基向量组成第一手指关节点的手指关节姿态矩阵Rlocal_index1=(vindex1_front,vindex1_up,vindex1_right)。
(2)第二手指关节点的手指关节姿态矩阵计算过程:
示例性的,以食指的第二手指关节点为例,参见图3所示,获取第二手指关节点(6号点)的空间坐标,即第二手指关节坐标P6,以及获取相邻的第一手指关节点(5号点)的空间坐标,即第一手指关节坐标P5,并获取相邻的第三手指关节点(7号点)的空间坐标,即第三手指关节坐标P7,以上坐标都是关节点在手掌空间坐标系中的空间坐标;则在计算食指中第二手指关节点(6号点)的关节姿态矩阵时,按照三维向量单位化先计算第二手指骨骼向量与第一手指骨骼向量之间的骨骼向量角度a,具体如下:
a=acos(normalize(P7-P6)-normalize(P6-P5))
该a表示第二手指关节点相对于第一手指关节点的夹角,即角度大小。
其中,该a夹角是具有正负的,其可以理解为角度方向系数,计算如下:
s=sign(normalize(P7-P6)×normalize(P6-P5)×vindex1_right)
需要说明的是,第二手指关节点的空间旋转姿态是相对于第一手指关节点而言的,在计算第二手指关节点的手指关节姿态矩阵时,可计算第二手指关节点在第一手指关节点的局部坐标系下的空间旋转姿态,其中,该以第一手指关节点指向第二手指关节点的方向为局部坐标系的x轴,则第二手指关节点是绕y轴旋转的,通过欧拉变换Euler计算得到的第二手指关节点的手指关节姿态矩阵Rlocal_index2如下:Rlocal_index2=Euler(0,s·a,0)。
(3)关于第三手指关节点的手指关节姿态矩阵计算,需要获取手指末端的坐标,其计算过程与第二关节点的计算方式相同。例如,以食指为例,参见图3,需要获取手指末端坐标P8,第三手指关节点的空间坐标P7,第二手指关节点的空间坐标P6。进而,计算第三手指关节点的手指关节姿态矩阵过程如下:
第二手指关节点相对于第一手指关节点的夹角a为:
a=acos(normalize(P8-P7)-normalize(P7-P6))
该夹角a是具有正负的,其可以理解为角度方向系数,计算如下:
s=sign(normalize(P8-P7)×normalize(P7-P6)×vindex1_right)
通过欧拉变换Euler计算得到的第二手指关节点的手指关节姿态矩阵Rlocal_index3如下:
Rlocal_index3=Euler(0,s·a,0)
至此,食指的第一手指关节点、第二手指关节点和第三手指关节点的手指关节姿态矩阵计算完毕。需要说明的是,其它手指中每个手指关节层级的手指关节点的姿态矩阵参考食指中相应关节层级下手指关节姿态矩阵的计算方式,此处不作赘述。
进一步的,在计算出手掌中每个手指关节点相对于相邻的手指关节点的姿态矩阵后,可联合每个手指关节点的手指关节姿态矩阵,构建对应的手掌的手掌骨骼姿态数据,以便后续控制虚拟对象的手掌部分的关节姿态。
204、计算机设备根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据。
具体的,可以根据肢体定位数据来确定手部肢体中每个肢体关节点在空间中的位置信息,以按照肢体关节点的位置信息来计算每个肢体关节点相对于相邻肢体关节点的旋转姿态,得到每个肢体关节点的肢体关节姿态矩阵,进而,可根据肢体关节姿态矩阵来生成手部肢体的骨骼姿态数据。
(1)获取肢体位置信息,具体可以是获取肩部关节、肘部关节、腕部关节在空间中的位置信息。
具体的,通过红外定位器来确定得到目标对象的背部、肘部关节和腕部关节在世界坐标系下的空间坐标,得到背部坐标、肘部关节坐标和腕部关节坐标。
进而,而肩部关节坐标可以通过计算方式来得到,该计算过程具体如下:
先根据背部坐标相对于预设参照物坐标来计算目标对象背部躯干的倾斜度,如,假设目标对象处于坐立姿态,还可获取预先设定的座椅中心点坐标,根据背部坐标与座椅中心点坐标来计算目标对象的背部躯干的倾斜度,从而,确定目标对象的躯干长度和躯干倾斜度之间的乘积,并结合常量来计算得到目标对象的肩部关节在世界坐标系中的肩部关节坐标。
示例性的,以目标对象处于坐立姿态为例,假设目标对象保持标准坐姿,则根据背部的红外定位器的坐标,判断目标对象躯干的倾斜程度,该躯干倾斜程度可以通过座椅中心点坐标Pchair和背部坐标Pback来计算得到,躯干倾斜程度按照三维向量单位化或标准化的方式可表示为:normalize(Pback-Pchair);而目标对象的躯干长度L可以预先确定,并预先设定肩部相对于背部定位器位置的计算常量offset,从而,即可根据以上参数来计算肩部关节在世界坐标系下的肩部坐标:
Pshoulder=normalize(Pback-Pchair)·L+offset)
需要说明的是,关于该计算常量offset,其可以理解为肩部关节相对于背部的定位器的偏移量,具体可以根据目标对象的体型进行设置,此外,还可根据虚拟人的模型体格进行设置,此处不做限定。
(2)通过反向动力学(Inverse kinematics,IK),将肩部关节坐标、肘部关节坐标和腕部关节坐标进行反向方向动力学计算,以分别得到肩部关节点的肩部关节姿态矩阵Rlocal_arm,以及肘部关节点的肘部关节姿态矩阵Rlocal_forearm,从而,根据该肩部关节姿态矩阵和肘部关节姿态矩阵来构建手部肢体的姿态数据。
205、计算机设备将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据。
在本申请实施例中,在得到目标对象的手掌骨骼姿态数据和肢体骨骼姿态数据后,可将手掌骨骼姿态数据与肢体骨骼姿态数据之间进行合成,使得手掌姿态应用在手部肢体上,构建出目标对象的完整手部肢体的骨骼姿态数据,以便后续将按照该完整的手部肢体的骨骼姿态数据来控制虚拟对象的手部骨骼姿态动作。
需要说明的是,该肩部关节姿态矩阵和肘部关节姿态矩阵分别表示肩部关节点和肘部关节点在空间中的局部坐标系下的旋转姿态,例如,肘部关节姿态矩阵表示肩部关节点的局部坐标系下的旋转姿态,以及肩部关节姿态矩阵表示肩部关节点相对于躯干部位的旋转姿态;同理,手掌中各个手指关节点的手指关节姿态矩阵表示相对于相邻的手指关节点下的姿态。因此,在将手掌骨骼姿态数据与肢体骨骼姿态数据进行合成时,通过计算出小臂肢体与手掌之间的手腕关节点的旋转姿态,以确定手腕关节点在肘部关节点的局部坐标系下的腕部关节姿态矩阵,从而完成手掌骨骼姿态数据与肢体骨骼姿态数据之间的合成,得到完整、连贯的手部姿态数据。关于该手掌骨骼姿态数据与肢体骨骼姿态数据之间的合成过程具体如下:
首先,计算出手腕关节点在世界空间坐标系中的目标姿态矩阵。具体的,针对手掌图像来构建图像空间坐标系,该图像空间坐标系也可以理解为二维图像坐标系,其横轴和纵轴与世界空间坐标系中的横轴和纵轴方向相同;然后,确定在图像空间坐标系下的同一手指中的第一手指关节点的第一手指关节坐标,以及第二手指关节点的第二手指关节坐标,根据第一手指关节坐标和第二手指关节坐标来构建图像空间下的目标向量(P6-P5);最后,确定世界空间坐标系中与目标向量同一方向的目标坐标轴,并根据目标向量与目标坐标轴的夹角确定手腕关节点在世界空间坐标系中的目标姿态矩阵Rworld_palm,即得到手腕关节点在世界坐标系中的旋转姿态。
然后,计算肘部关节点在世界空间坐标系下的肘部姿态矩阵。具体的,按照肢体骨骼层级关系可以确定小臂骨骼的父骨骼进行矩阵层级计算,由于小臂骨骼的父骨骼关节点仅包括肩部关节点,则将肩部关节点的局部坐标系下的肩部关节姿态矩阵与肘部关节点的局部坐标系下的肘部关节姿态矩阵之间进行矩阵级乘计算,即可得到肘部关节点在世界空间坐标系下的肘部姿态矩阵,可表示为Rworld_forearm=Rlocal_forearm·Rlocal_arm。
最后,将在世界坐标系下的手腕姿态矩阵与处于世界坐标系下的肘部姿态矩阵的逆矩阵进行相乘,得到手腕关节点在肘部关节点的局部坐标系下的腕部关节姿态矩阵。其中,该手腕关节点相对于肘部关节点的局部坐标系下的腕部关节姿态矩阵可表示为进而,对腕部关节姿态矩阵、肢体骨骼姿态数据和手掌骨骼姿态数据进行合成,完成肢体骨骼姿态数据与手掌骨骼姿态数据之间的合并,得到合成的手部姿态数据。
206、计算机设备根据手部姿态数据,控制虚拟对象的手部姿态。
其中,该虚拟对象可以是具有数字化外形的虚拟人物角色,其通过依赖显示设备存在,即通过显示界面的显示播放展示虚拟对象,该虚拟对象不限于包括游戏角色、虚拟偶像人物、虚拟主播角色等。
在本申请实施例中,在得到目标对象的手部姿态数据后,可按照该手部姿态数据来控制相应虚拟对象的手部姿态动作,以便对虚心对象的手部姿态动作进行展示。
其中,计算机设备在根据手部姿态数据控制虚拟对象的手部姿态时,可应用于直播领域,具体的,计算机设备按照手部姿态数据控制虚拟对象的手部姿态,并生成包含虚拟对象的手部姿态的目标画面帧,将每一目标画面帧依序推送至直播端进行直播展示。例如,以乐器演奏场景为例,则手部姿态数据为目标对象演奏乐器时手部的演奏动作数据,具体可按照演奏动作数据控制虚拟对象的手部姿态进行演奏乐器,并生成乐器演奏画面帧;将乐器演奏画面帧依序推送至直播端进行直播展示。
其中,计算机设备在根据手部姿态数据控制虚拟对象的手部姿态时,可应用于骨骼动画文件的制作场景,具体的,将每帧手部姿态数据转换为三维模型数组,并存储每个三维模型数组;根据存储的每个三维模型数组,生成手部姿态数据对应的骨骼动画文件;对骨骼动画文件进行演示,以控制显示界面所显示的虚拟对象的手部姿态。
通过以上方式,实现对人体的手部姿态动作的追寻和采集,并根据采集的图像数据来识别和分析到的手部姿态,从而控制虚拟对象的手部动作,以便应用于虚拟对象的姿态动作直播、骨骼动画文件构建等场景中。
为了便于对本申请实施例的理解,将以具体的应用场景实例对本申请实施例进行描述。具体的,通过执行以上步骤201-206,以及结合图3-图7,对该应用场景实例进行描述。其中,以该数据处理系统在数据处理过程中的应用场景为例,其可适用于直播、影视动画视频、动画文件或“元宇宙”等场景。该数据处理场景实例的描述具体如下:
一、关于数据处理系统的架构
该数据处理系统在架构上可包括:定位设备、滑动组件、摄像组件、计算机设备。结合图5和图6所示,对数据处理系统架构中各个设备进行描述,具体如下:
其中,该定位设备可以是在相关地点场景中安装基于光学的定位设备,如红外定位设备或红外感测组件,该定位设备可以具备全身姿态捕捉能力。以红外定位设备为例,其可包括安装在相关地点场景空间中的红外发射基站,以及佩戴在目标对象的背部、肘部、小臂末端(手腕部位)的红外定位器,如图6所示。需要说明的是,红外发射基站在发射出红外射线后,可以根据用户佩戴的红外定位器的响应情况,确定用户背部、手肘部、腕部的肢体定位数据。
其中,该滑动组件可以是电控直线导轨上的滑动组件,具体的,电控直线导轨具备高速、低延迟特性,可以快速根据输入信号,调节导轨上滑动组件的位置,使得滑动组件对目标对象的手腕和手掌的位置进行追寻,以尽可能保持在同一垂直方向上。该电控导轨的最高移动速度大于2m/s,启停加速度大于40m/s2,可以实现对手腕和手掌的位置的快速追寻。
其中,该摄像组件为高帧率摄像头,其固定安装在相应的滑动组件上,如图6所示,电控直线导轨上包含两个滑动组件,分别对目标对象的左右手腕的位置进行追寻,则每个滑动组件上可分别固定安装一个高帧率摄像头。该高帧率摄像头可以是120帧/秒的帧率的彩色摄像头,分辨率可以是720*480,此处不作限定。
其中,该计算机设备属于数据处理系统中的主控计算机,即主机,用于运行运行软件应用程序,该软件应用程序从定位设备中获取手腕的空间坐标,将其转换为相应的控制信号,发送给电控直线导轨,以控制电控直线导轨上的滑动组件移动,从而,控制滑动组件搭载的摄像组件采集目标对象的手掌图像。同时,该软件应用程序根据拍摄到的手部画面,计算手部姿态,生成手臂和手部的骨骼姿态。
二、为了便于对数据处理系统架构的理解,以下将以数据处理流程对数据处理系统架构中的各器件和设备进行描述。具体的,结合图6和图7,以用户演奏乐器(如演奏钢琴)的数据处理流程为例,该数据处理流程具体描述如下:
(1)计算机设备获取定位器的位置。具体的,在通过红外定位设备进行定位数据采集之前,需要对红外发射基站进行位置标定,标定时使用的坐标系统以键盘中心点作原点,以乐器键盘的水平方向作为水平方向坐标轴,将该坐标系作为本空间场景中的世界坐标系,并对红外发射基站在世界坐标系下的位置进行标定;进而,通过红外发射基站发出红外线,以实时读取所有红外定位器的在世界坐标系的空间坐标。
(2)计算机设备控制电控导轨移动。具体的,获得小臂上的定位器位置相对键盘中心点的偏移向量,并计算得到的偏移向量的水平分量;进而,将计算的水平分量发送给电控直线导轨,电控直线导轨驱动滑动组件迅速移动至手腕的正上方,以使得摄像组件采集目标对象的手掌图像。
(3)计算机设备获取手掌图像。具体的,摄像组件在采集目标对象的手掌图像后,计算机设备所运行的目标应用程序可获取到手掌图像帧。
(4)计算机设备通过深度学习来计算手掌中每个手指关节的姿态。具体的,将手掌图像帧数据作为输入参数,调用基于深度学习的手部姿态识别库MediaPipe进行手势识别,得到每个手的各个手指关节相对于手掌中心(坐标系)的空间坐标以及图像空间坐标系的坐标。需要说明的是,摄像机的旋转姿态和键盘的旋转姿态相同,使得图像空间坐标系的横轴和纵轴与世界坐标系方向相同。
进而,根据识别到的每个手指关节点的坐标,计算每个手指关节点的旋转姿态。具体结合图3所示,以食指上每个手指关节点的姿态计算为例,每个手指关节点的旋转姿态计算如下:
(4.1)关于食指上的第一手指关节的姿态计算:
其中,食指的第一手指关节点(5号点)向前的方向姿态基向量:
vindex1_front=normalize(P6-P5)
其中,食指的第一手指关节点(5号点)向上的方向姿态基向量:
vindex1_up=normalize(P9-P5)
其中,食指的第一手指关节点(5号点)向右的方向姿态基向量:
vindex1_right=normalize(vindex1_front×vindex1_up)
进而,将以上三个方向上的姿态基向量组成第一手指关节点的手指关节姿态矩阵Rlocal_index1=(vindex1_front,vindex1_up,vindex1_right),该手指关节姿态矩阵为食指的第一手指关节点在手掌空间坐标系下的空间旋转姿态。
(4.2)关于食指上的第二手指关节的姿态计算:
首先,计算食指第二手指关节相对于第一手指关节的角度a为:
a=acos(normalize(P7-P6)-normalize(P6-P5))
然后,计算a夹角的正负,其可以理解为角度方向系数s为:
s=sign(normalize(P7-P6)×normalize(P6-P5)×vindex1_right)
最后,通过欧拉变换Euler计算计算第二手指关节点在第一手指关节点的局部坐标系下的空间旋转姿态,得到的第二手指关节点的手指关节姿态矩阵Rlocal_index2=Euler(0,s·a,0)。
(4.3)关于第三手指关节点的手指关节姿态矩阵计算,需要获取手指末端的坐标,其计算过程与第二关节点的计算方式相同,此处不作赘述。
进而,按照(4.1)-(4.3),分别计算出每个手指中各个手指关节层级下的手指关节点的局部旋转姿态。
(5)利用反向动力学(Inverse kinematics,IK)计算手臂肢体姿态。
(5.1)根据背部的红外定位器的坐标(背部坐标)判断目标对象的躯干的倾斜程度,根据躯干的倾斜程度和虚拟对象的躯干长度计算虚拟对象的肩关节的世界坐标,即肩部关节坐标,如下:
Pshoulder=normalize(Pback-Pchair)·L+offset)
其中,Pshoulder为背部的红外定位器的坐标,Pchair为目标对象坐立的座椅的座椅中心坐标,L为躯干长度,offset为常量。需要说明的是,该常量表示肩关节相对背部传感器的偏移量,可根据虚拟人的体型进行设置。
(5.2)对肩部关节坐标、肘部关节坐标、手腕关节坐标进行反向动力学计算,得到肩部关节点以及肘部关节点在局部坐标系下的旋转姿态,即肩部关节姿态矩阵和肘部关节姿态矩阵。
(6)将手臂肢体姿态与手掌中手指关节姿态进行骨骼动画合成。
(6.1)针对手掌图像来构建图像空间坐标系,该图像空间坐标系也可以理解为二维图像坐标系,构建图像空间下的目标向量(P6-P5),确定世界空间坐标系中与目标向量同一方向的目标坐标轴,并根据目标向量与目标坐标轴的夹角确定手腕关节点(图3中的0号关节点)在世界空间坐标系中的目标姿态矩阵Rworld_palm。
(6.2)基于手部肢体的骨骼层级关系,将肩部关节点的局部坐标系下的肩部关节姿态矩阵与肘部关节点的局部坐标系下的肘部关节姿态矩阵之间进行矩阵级乘计算,得到肘部关节点在世界空间坐标系下的肘部姿态矩阵Rworld_forearm。
(6.3)手腕关节点相对于小臂关节(肘部关节点)的局部坐标系下的腕部关节姿态矩阵可表示为
至此,手指和手臂上所有关节的局部坐标系的空间旋转姿态全部计算完成,此时,可对腕部关节姿态矩阵、肢体骨骼姿态数据和手掌骨骼姿态数据进行合成,完成肢体骨骼姿态数据与手掌骨骼姿态数据之间的合并,得到合成后的手部姿态数据,其可以理解为手部骨骼动画数据或手部骨骼姿态数据。
(7)输出姿态数据。具体的,将全部骨骼姿态数据作为输出,以应用于相应的业务场景中。例如,对于应用于实时直播的应用场合,可以通过游戏引擎渲染骨骼动画,并将渲染生成的视频帧推送至直播平台端进行直播展示;又如,对于应用于影视动画的应用场合,将每一帧的骨骼动画姿态数据以数组方式存储,并在存储所有骨骼动画数据帧后,保存至本地文件,得到骨骼动画文件,以在演示该骨骼动画文件时驱动虚拟对象的手部姿态动作。
通过执行以上流程(1)-(7),可以实现以下应用场景示例:
示例1,结合图6所示,以钢琴乐器演奏场合为例,在演奏场合空间中预先布局多个方位的红外发射基站,并以钢琴键盘中心作为原点构建世界坐标系,基于该世界坐标系下对多个方位的红外发射基站进行标定,并预先确定钢琴座椅中心位置的座椅中心坐标;此外,在演奏人员的背部、肘部、小臂末端佩戴上红外定位器。进而,通过红外感测方式获取各个红外定位器的位置信息,并根据小臂末端的位置信息控制滑动组件搭载摄像组件进行移动,以实时根据手腕关节的位置对手掌位置进行追寻,并通过摄像组件采集手掌图像;从而,从手掌图像中识别出手指关节姿态,以及根据各个红外定位器的位置信息识别出手臂姿态,并将手指关节姿态和手臂关节姿态进行动画数据合成,得到骨骼动画数据。最后,通过游戏引擎对骨骼动画数据进行渲染,并将渲染得到的钢琴演奏画面帧推送到直播端进行直播展示;或者,将每一帧骨骼动画数据以三维数组(如fbx格式的数组)进行存储,在钢琴演奏完毕后,将存储的数组集合保存至本地文件,得到骨骼动画文件,以便制作成影视动画,或者用于其他用途。以此,演奏者无需借助惯性动捕手套,或者在手指上贴标记点,演奏者只需在手腕上佩戴定位器,再进行演奏,系统即可生成完整的键盘乐器演奏动画。
示例性2,以用户通过计算机进行办公的场合为例,在办公场所空间中预先布局多个方位的红外发射基站,并以电脑键盘中心作为原点构建世界坐标系,基于该世界坐标系下对多个方位的红外发射基站进行标定,并预先确定办公座椅中心位置的座椅中心坐标;此外,在办公人员的背部、肘部、小臂末端佩戴上红外定位器。进而,通过红外感测方式获取各个红外定位器的位置信息,并根据小臂末端的位置信息控制滑动组件搭载摄像组件进行移动,以实时根据手腕关节的位置对手掌位置进行追寻,并通过摄像组件采集手掌图像;从而,从手掌图像中识别出手指关节姿态,以及根据各个红外定位器的位置信息识别出手臂姿态,并将手指关节姿态和手臂关节姿态进行动画数据合成,得到骨骼动画数据。最后,通过游戏引擎对骨骼动画数据进行渲染,并将渲染得到的点击电脑键盘的骨骼姿态画面帧推送到直播端进行直播展示;或者,将每一帧骨骼动画数据以三维数组(如fbx格式的数组)进行存储,在电脑办公完毕后,将存储的数组集合保存至本地文件,得到骨骼动画文件,以便制作成影视动画,或者用于其他用途。
通过以上应用场景实例,可实现如下效果:在获取目标对象的手部姿态动作时,无需借助姿态感测手套或者在手指上贴标记点,目标对象只需在手腕上佩戴定位器,再进行相应场合下手部动作姿态,系统即可生成完整的骨骼姿态动画。
由以上可知,本申请实施例可先根据目标对象的肢体定位数据来协助采集目标对象的手掌图像,然后,识别出手掌图像中每个手指关节点相对于相邻手指关节点的位置关系的手指关节姿态,以获取手掌骨骼姿态数据,同时,根据肢体定位数据确定每个肢体关节点相对于相邻肢体关节点的肢体关节姿态,以获取肢体骨骼姿态数据,最后,将手掌骨骼姿态数据与肢体骨骼姿态数据合并得到完整的手部姿态数据,并控制虚拟对象的手部姿态动作;以此,通过肢体定位数据协助图像采集的方式来采集目标对象的手掌信息,实现精确捕捉骨骼关节的姿态数据,以准确构建虚拟对象的骨骼动画,且有效避免佩戴过多的姿态感测仪对骨骼关节的束缚,提高用户体验感。
为了更好地实施以上方法,本申请实施例还提供一种数据处理装置。例如,如图8所示,该数据处理装置800可以包括采集单元801、确定单元802、计算单元803、合并单元804和控制单元805。
采集单元801,用于获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;
确定单元802,用于确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵构建手掌骨骼姿态数据;
计算单元803,用于根据肢体定位数据确定每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵构建肢体骨骼姿态数据;
合并单元804,用于将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;
控制单元805,用于根据手部姿态数据,控制虚拟对象的手部姿态。
在一些实施方式中,肢体定位数据至少包括小臂肢体定位数据,采集单元801,还用于:根据小臂肢体定位数据,确定目标对象的手掌在世界坐标系中的偏移向量;确定偏移向量中的水平方向分量;根据水平方向分量的指示位置,控制摄像组件采集目标对象的手掌图像。
在一些实施方式中,采集单元801,还用于:控制摄像组件移动至水平方向分量的指示位置;通过移动后的摄像组件采集得到目标对象的手掌图像。
在一些实施方式中,确定单元802,还用于:从手掌图像中读取多个手指关节点的关节布局参数;根据关节布局参数确定每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
在一些实施方式中,确定单元802,还用于:根据关节布局参数确定每个手指关节点在手掌坐标系下的手指关节坐标,以及确定每个手指关节点的手指关节层级;根据手指关节层级和手指关节坐标,计算每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
在一些实施方式中,肢体关节姿态矩阵至少包括肩部关节姿态矩阵和肘部关节姿态矩阵,计算单元803,还用于:根据肢体定位数据确定在世界坐标系下的背部坐标、肘部关节坐标和腕部关节坐标;根据背部坐标确定目标对象的躯干倾斜度;根据预设躯干长度和躯干倾斜度确定肩部关节点在世界坐标系下的肩部关节坐标;根据腕部关节坐标、肘部关节坐标和肩部关节坐标进行反向动力学计算,得到肘部关节点相对于肩部关节点的肘部关节姿态矩阵,以及肩部关节点的肩部关节姿态矩阵。
在一些实施方式中,肢体骨骼姿态数据至少包括肘部关节姿态矩阵和肩部关节姿态矩阵,合并单元804,还用于:根据肢体骨骼层级关系对肘部关节姿态矩阵和肩部关节姿态矩阵进行矩阵级乘计算,得到肘部关节点在世界坐标系下的肘部姿态矩阵;确定手掌图像中手腕关节点在世界坐标系下的目标姿态矩阵;根据目标姿态矩阵与肘部姿态矩阵的逆矩阵之间的乘积,确定手腕关节点相对于肘部关节点的腕部关节姿态矩阵;基于腕部关节姿态矩阵,对肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据。
在一些实施方式中,手部姿态数据为目标对象演奏乐器时手部的演奏动作数据,控制单元805,还用于:按照演奏动作数据控制虚拟对象的手部姿态进行演奏乐器,并生成乐器演奏画面帧;将乐器演奏画面帧依序推送至直播端进行直播展示。
在一些实施方式中,控制单元805,还用于:将每帧手部姿态数据转换为三维模型数组,并存储每个三维模型数组;根据存储的每个三维模型数组,生成手部姿态数据对应的骨骼动画文件;对骨骼动画文件进行演示,以控制显示界面所显示的虚拟对象的手部姿态。
由以上可知,本申请实施例可获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据;根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据;将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;根据手部姿态数据,控制虚拟对象的手部姿态。
本申请实施例还提供一种计算机设备,如图9所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器901、一个或一个以上计算机可读存储介质的存储器902、电源903和识别单元904等部件。本领域技术人员可以理解,图9中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器901是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行计算机设备的各种功能和处理数据。可选的,处理器901可包括一个或多个处理核心;优选的,处理器901可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。
存储器902可用于存储软件程序以及模块,处理器901通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器901对存储器902的访问。
计算机设备还包括给各个部件供电的电源903,优选的,电源903可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源903还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括识别单元904,该识别单元904可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本申请实施例中,计算机设备中的处理器901会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器901来运行存储在存储器902中的应用程序,从而实现各种功能,如下:
获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据;根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据;将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;根据手部姿态数据,控制虚拟对象的手部姿态。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由此可得,本方案可先根据目标对象的肢体定位数据来协助采集目标对象的手掌图像,然后,识别出手掌图像中每个手指关节点相对于相邻手指关节点的位置关系的手指关节姿态,以获取手掌骨骼姿态数据,同时,根据肢体定位数据确定每个肢体关节点相对于相邻肢体关节点的肢体关节姿态,以获取肢体骨骼姿态数据,最后,将手掌骨骼姿态数据与肢体骨骼姿态数据合并得到完整的手部姿态数据,并控制虚拟对象的手部姿态动作;以此,通过肢体定位数据协助图像采集的方式来采集目标对象的手掌信息,实现精确捕捉骨骼关节的姿态数据,以准确构建虚拟对象的骨骼动画,且有效避免佩戴过多的姿态感测仪对骨骼关节的束缚,提高用户体验感。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种数据处理方法中的步骤。例如,该指令可以执行如下步骤:
获取目标对象的肢体定位数据,并按照肢体定位数据的指示位置采集目标对象的手掌图像;确定手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据手指关节姿态矩阵生成手掌骨骼姿态数据;根据肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据肢体关节姿态矩阵生成肢体骨骼姿态数据;将肢体骨骼姿态数据与手掌骨骼姿态数据进行合并,得到手部姿态数据;根据手部姿态数据,控制虚拟对象的手部姿态。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种数据处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种数据处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的各种可选实现方式中提供的方法。
以上对本申请实施例所提供的一种数据处理方法、装置、设备和可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种数据处理方法,其特征在于,包括:
获取目标对象的肢体定位数据,并按照所述肢体定位数据的指示位置采集所述目标对象的手掌图像;
确定所述手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据所述手指关节姿态矩阵生成手掌骨骼姿态数据;
根据所述肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据所述肢体关节姿态矩阵生成肢体骨骼姿态数据;
将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据;
根据所述手部姿态数据,控制虚拟对象的手部姿态。
2.根据权利要求1所述的方法,其特征在于,所述肢体定位数据至少包括小臂肢体定位数据,所述按照所述肢体定位数据的指示位置采集所述目标对象的手掌图像,包括:
根据所述小臂肢体定位数据,确定所述目标对象的手掌在世界坐标系中的偏移向量;
确定所述偏移向量中的水平方向分量;
根据所述水平方向分量的指示位置,控制摄像组件采集所述目标对象的手掌图像。
3.根据权利要求2所述的方法,其特征在于,所述根据所述水平方向分量的指示位置,控制摄像组件采集所述目标对象的手掌图像,包括:
控制所述摄像组件移动至所述水平方向分量的指示位置;
通过移动后的摄像组件采集得到所述目标对象的手掌图像。
4.根据权利要求1所述的方法,其特征在于,所述确定所述手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,包括:
从所述手掌图像中读取多个手指关节点的关节布局参数;
根据所述关节布局参数确定每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
5.根据权利要求4所述的方法,其特征在于,所述根据所述关节布局参数确定每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,包括:
根据所述关节布局参数确定每个手指关节点在手掌坐标系下的手指关节坐标,以及确定每个手指关节点的手指关节层级;
根据所述手指关节层级和手指关节坐标,计算每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵。
6.根据权利要求1所述的方法,其特征在于,所述肢体关节姿态矩阵至少包括肩部关节姿态矩阵和肘部关节姿态矩阵,所述根据所述肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,包括:
根据所述肢体定位数据确定在世界坐标系下的背部坐标、肘部关节坐标和腕部关节坐标;
根据所述背部坐标确定所述目标对象的躯干倾斜度;
根据预设躯干长度和所述躯干倾斜度确定所述肩部关节点在所述世界坐标系下的肩部关节坐标;
根据所述腕部关节坐标、肘部关节坐标和肩部关节坐标进行反向动力学计算,得到所述肘部关节点相对于所述肩部关节点的肘部关节姿态矩阵,以及所述肩部关节点的肩部关节姿态矩阵。
7.根据权利要求1所述的方法,其特征在于,所述肢体骨骼姿态数据至少包括肘部关节姿态矩阵和肩部关节姿态矩阵,所述将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据,包括:
根据肢体骨骼层级关系对所述肘部关节姿态矩阵和肩部关节姿态矩阵进行矩阵级乘计算,得到所述肘部关节点在世界坐标系下的肘部姿态矩阵;
确定所述手掌图像中手腕关节点在世界坐标系下的目标姿态矩阵;
根据所述目标姿态矩阵与所述肘部姿态矩阵的逆矩阵之间的乘积,确定所述手腕关节点相对于所述肘部关节点的腕部关节姿态矩阵;
基于所述腕部关节姿态矩阵,对所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据。
8.根据权利要求1所述的方法,其特征在于,所述手部姿态数据为所述目标对象演奏乐器时手部的演奏动作数据,所述根据所述手部姿态数据,控制虚拟对象的手部姿态,包括:
按照所述演奏动作数据控制虚拟对象的手部姿态进行演奏乐器,并生成乐器演奏画面帧;
将所述乐器演奏画面帧依序推送至直播端进行直播展示。
9.根据权利要求1所述的方法,其特征在于,所述根据所述手部姿态数据,控制虚拟对象的手部姿态,包括:
将每帧手部姿态数据转换为三维模型数组,并存储每个三维模型数组;
根据存储的每个三维模型数组,生成所述手部姿态数据对应的骨骼动画文件;
对所述骨骼动画文件进行演示,以控制显示界面所显示的虚拟对象的手部姿态。
10.一种数据处理方法,其特征在于,应用于系统,所述系统包括摄像组件和定位设备,所述方法包括:
通过所述定位设备获取目标对象的肢体定位数据;
按照所述肢体定位数据的指示位置控制所述摄像组件移动,并采集所述目标对象的手掌图像;
确定所述手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据所述手指关节姿态矩阵生成手掌骨骼姿态数据;
根据所述肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据所述肢体关节姿态矩阵生成肢体骨骼姿态数据;
将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据;
根据所述手部姿态数据,控制虚拟对象的手部姿态。
11.根据权利要求10所述的方法,其特征在于,所述系统还包括滑动组件,所述摄像组件固定在所述滑动组件上,所述肢体定位数据包括小臂肢体定位数据,所述按照所述肢体定位数据的指示位置控制所述摄像组件移动,并采集所述目标对象的手掌图像,包括:
控制所述滑动组件移动至所述小臂肢体定位数据相应的指示位置;
通过固定在所述滑动组件上的摄像组件采集所述目标对象的手掌图像。
12.一种数据处理装置,其特征在于,包括:
采集单元,用于采集目标对象的肢体定位数据,并按照所述肢体定位数据的指示位置采集所述目标对象的手掌图像;
确定单元,用于确定所述手掌图像中每个手指关节点相对于相邻手指关节点之间的位置关系构成的手指关节姿态矩阵,并根据所述手指关节姿态矩阵生成手掌骨骼姿态数据;
计算单元,用于根据所述肢体定位数据计算每个肢体关节点相对于相邻肢体关节点之间的位置关系构成的肢体关节姿态矩阵,并根据所述肢体关节姿态矩阵生成肢体骨骼姿态数据;
合并单元,用于将所述肢体骨骼姿态数据与所述手掌骨骼姿态数据进行合并,得到手部姿态数据;
控制单元,用于根据所述手部姿态数据,控制虚拟对象的手部姿态。
13.一种计算机设备,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,实现权利要求1至9或10-11任一项所述的数据处理方法中的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至9或10-11任一项所述的数据处理方法中的步骤。
15.一种计算机程序产品,包括计算机指令,所述计算机指被执行时实现权利要求1至9或10-11任一项所述的数据处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310073644.2A CN116485953A (zh) | 2023-01-13 | 2023-01-13 | 数据处理方法、装置、设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310073644.2A CN116485953A (zh) | 2023-01-13 | 2023-01-13 | 数据处理方法、装置、设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116485953A true CN116485953A (zh) | 2023-07-25 |
Family
ID=87218401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310073644.2A Pending CN116485953A (zh) | 2023-01-13 | 2023-01-13 | 数据处理方法、装置、设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116485953A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117788775A (zh) * | 2024-02-28 | 2024-03-29 | 广州趣丸网络科技有限公司 | 一种数字人手掌骨骼姿态校正方法、装置、设备及介质 |
-
2023
- 2023-01-13 CN CN202310073644.2A patent/CN116485953A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117788775A (zh) * | 2024-02-28 | 2024-03-29 | 广州趣丸网络科技有限公司 | 一种数字人手掌骨骼姿态校正方法、装置、设备及介质 |
CN117788775B (zh) * | 2024-02-28 | 2024-05-07 | 广州趣丸网络科技有限公司 | 一种数字人手掌骨骼姿态校正方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109636831B (zh) | 一种估计三维人体姿态及手部信息的方法 | |
Xia et al. | A survey on human performance capture and animation | |
Gavrila et al. | 3-D model-based tracking of humans in action: a multi-view approach | |
CN102622774B (zh) | 起居室电影创建 | |
CN113706699B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN108509026B (zh) | 基于增强交互方式的远程维修支持系统及方法 | |
CN102317977A (zh) | 用于姿势识别的方法和系统 | |
Zhang et al. | GPU-accelerated real-time tracking of full-body motion with multi-layer search | |
GB2589843A (en) | Real-time system for generating 4D spatio-temporal model of a real-world environment | |
Tong et al. | Research on skeleton animation motion data based on Kinect | |
CN112037310A (zh) | 基于神经网络的游戏人物动作识别生成方法 | |
Reimat et al. | Cwipc-sxr: Point cloud dynamic human dataset for social xr | |
Huang et al. | A review of 3D human body pose estimation and mesh recovery | |
Liang et al. | Hybridcap: Inertia-aid monocular capture of challenging human motions | |
CN116485953A (zh) | 数据处理方法、装置、设备和可读存储介质 | |
Ohkawa et al. | Efficient annotation and learning for 3d hand pose estimation: A survey | |
CN117711066A (zh) | 一种三维人体姿态估计方法、装置、设备及介质 | |
Liu et al. | Skeleton tracking based on Kinect camera and the application in virtual reality system | |
CN115442519B (zh) | 视频处理方法、装置及计算机可读存储介质 | |
Kanis et al. | Improvements in 3D hand pose estimation using synthetic data | |
Xu | Single-view and multi-view methods in marker-less 3d human motion capture | |
Zeng et al. | Motion capture and reconstruction based on depth information using Kinect | |
Lyu et al. | [Retracted] Badminton Path Tracking Algorithm Based on Computer Vision and Ball Speed Analysis | |
Wang et al. | Research and implementation of the sports analysis system based on 3D image technology | |
Peng | Research on dance teaching based on motion capture system |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40090184 Country of ref document: HK |