对象渲染方法和装置、介质和计算机设备与流程
未命名
09-29
阅读:78
评论:0
1.本公开涉及虚拟现实技术领域,尤其涉及对象渲染方法和装置、介质和计算机设备。
背景技术:
2.在相关技术中,常常会将一些对象渲染到真实采集的图像中,以使渲染后的图像获得一定的视觉效果。然而,相关技术中的对象渲染方式的渲染效果往往真实度较低。
技术实现要素:
3.第一方面,本公开实施例提供一种对象渲染方法,所述方法包括:获取第一对象的三维模型,所述第一对象包括第一组件和第二组件,所述第一组件与所述第二组件的相对姿态随时间变化;获取对第二对象进行图像采集获得的图像帧;基于所述图像帧对应的时间信息,确定所述第一组件与所述第二组件的相对姿态信息;基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中。
4.第二方面,本公开实施例提供一种对象渲染方法,所述方法包括:获取图像采集装置采集图像帧时的姿态信息,所述图像帧中包括与第一对象具有预设位姿关系的第二对象,所述姿态信息用于表征所述图像采集装置与所述第二对象之间的相对姿态;基于所述姿态信息对预先生成的三维立体贴图中的像素点进行采样;基于采样出的像素点的像素值确定环境光信息;基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上。
5.第三方面,本公开实施例提供一种对象渲染装置,所述装置包括:第一获取模块,用于获取第一对象的三维模型,所述第一对象包括第一组件和第二组件,所述第一组件与所述第二组件的相对姿态随时间变化;第二获取模块,用于获取对第二对象进行图像采集获得的图像帧;第一确定模块,用于基于所述图像帧对应的时间信息,确定所述第一组件与所述第二组件的相对姿态信息;第一渲染模块,用于基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中。
6.第四方面,本公开实施例提供一种对象渲染装置,所述装置包括:第三获取模块,用于获取图像采集装置采集图像帧时的姿态信息,所述图像帧中包括与第一对象具有预设位姿关系的第二对象,所述姿态信息用于表征所述图像采集装置与所述第二对象之间的相对姿态;采样模块,用于基于所述姿态信息对预先生成的三维立体贴图中的像素点进行采样;第二确定模块,用于基于采样出的像素点的像素值确定环境光信息;第二渲染模块,用于基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上。
7.第五方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
8.第六方面,本公开实施例提供一种计算机设备,包括存储器、处理器及存储在存储
器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
9.本公开实施例基于图像帧对应的时间信息确定第一对象包括的第一组件与第二组件的相对姿态信息,并基于该相对姿态信息和第一对象与图像帧中的第二对象的预设位姿关系,将第一对象的三维模型渲染到所述图像帧中,可以渲染出相对姿态随时间变化的第一组件与第二组件,从而提高渲染效果的真实度。
10.本公开实施例将三维立体贴图的每个像素点视为光源,并基于图像采集装置采集图像帧时的姿态信息对三维立体贴图中的像素点进行采样,在渲染过程中可以使用采样得到的像素点的像素值模拟环境光信息,使渲染出的三维模型呈现出更逼真的反射效果,提高了渲染效果的真实度。
11.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
12.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
13.图1a、图1b和图1c分别是本公开实施例的应用场景的示意图。
14.图2是本公开实施例的对象渲染方法的流程图。
15.图3是本公开实施例的手表模型中各个子模型的示意图。
16.图4a、图4b和图4c是秒针模型的不同姿态的示意图。
17.图5是三维模型与目标对象的类别相同时渲染效果的示意图。
18.图6是渲染出的手表模型中指针模型指示的时间的示意图。
19.图7a是为不同的目标对象渲染不同类别的三维模型的示意图。
20.图7b是为不同的目标对象渲染不同属性的三维模型的示意图。
21.图8是锚点和移动点的示意图。
22.图9a和图9b分别是相机姿态与第二子模型的姿态的关系示意图。
23.图10是手腕关键点的示意图。
24.图11a、图11b、图11c和图11d分别是三维立体模型的示意图。
25.图12是纹理图的示意图。
26.图13是立方体的示意图。
27.图14是半球形空间ω的示意图。
28.图15是本公开另一实施例的对象渲染方法的流程图。
29.图16是本公开实施例的对象渲染装置的框图。
30.图17是本公开另一实施例的对象渲染装置的框图。
31.图18是本公开实施例的计算机设备的结构示意图。
具体实施方式
32.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
33.在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
34.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
35.为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
36.在相关技术中,常常会将一些对象渲染到真实采集的图像中,以使渲染后的图像获得一定的视觉效果。例如,参见图1a,在虚拟试戴场景中,对象可以是手表,可以通过图像采集装置(例如手机101上的摄像头,摄像头在图中未示出)采集手腕102的原始图像,在原始图像中渲染出手表的三维模型103,得到渲染后的图像104,从而展现出将手表佩戴在手腕102上的视觉效果。然而,相关技术中的对象渲染方式的渲染效果往往真实度较低。具体体现在以下两个方面:
37.(1)对象上一个或多个组件的姿态,或者不同组件之间的相对姿态可能随着时间动态变化,相关技术中的渲染方式未能展示出姿态的动态变化效果。例如,在上述虚拟试戴场景中,在对象是手表的情况下,手表包括但不限于指针和表盘两个组件,且指针会随着时间在表盘上转动,在不同的时刻,指针在表盘上所指向的角度(即指针与表盘之间的相对姿态)是不同的。然而,相关技术中的渲染方式渲染出的手表的指针的指向往往是固定不变的。
38.(2)真实场景中的物体展现出的视觉效果往往会受到环境信息的影响,例如,物体在不同的环境中呈现出的反光效果可能不同。然而,相关技术中的对象渲染方式渲染出的对象呈现出的反光效果与真实环境中的反光效果往往差异较大,导致渲染效果的真实度较低。
39.基于此,本公开实施例提供一种对象渲染方法,以提高渲染效果的真实度。本领域技术人员可以理解,上述虚拟试戴场景仅为一种示例性说明,并非用于限制本公开。除了虚拟试戴场景以外,本公开还可以用于其他应用场景,并且,在其他应用场景中也能够实现提高渲染效果的真实度的效果。例如,在图1b所示的实施例中,对象为时钟105,该时钟105可以用于渲染到预先获取的卡通动物的图像106中,得到卡通动物时钟特效。又例如,在图1c所示的实施例中,对象为人物107,人物107可以用于渲染到预先获取的荷叶的图像108中,得到人物在荷叶上翩翩起舞的特效。除了以上列举的几种应用场景之外,本公开实施例的方案还可以应用于其他的应用场景,此处不再一一列举。
40.参见图2,本公开实施例的渲染方法包括:
41.步骤201:获取第一对象的三维模型,第一对象包括第一组件和第二组件,第一组件与第二组件的相对姿态随时间变化;
42.步骤202:获取对第二对象进行图像采集获得的图像帧;
43.步骤203:基于图像帧对应的时间信息,确定第一组件与第二组件的相对姿态信息;
44.步骤204:基于相对姿态信息,以及第一对象与第二对象的预设位姿关系,将三维模型渲染到图像帧中。
45.本公开实施例可以应用于手机、平板电脑等包括图像采集装置以及图像处理装置的终端设备,这些终端设备可以在图像采集装置采集图像帧之后,通过其上的图像处理装置对采集的图像帧进行渲染处理;也可以应用于不包括图像采集装置但包括图像处理装置的设备,例如,服务器,服务器可以获取图像采集装置采集的图像帧,并对该图像帧进行渲染处理。
46.在步骤201中,第一对象可以是任意类别的对象,包括但不限于时钟、手表、人物、动物、交通工具、运动器械等。第一对象的三维模型可以包括第一组件和第二组件,第一组件和第二组件为第一对象上不同的部分。例如,在第一对象为图1a所示的实施例中的手表的情况下,第一组件和第二组件可以分别为指针和表盘。又例如,在第一对象为图1c所示的人物的情况下,第一组件和第二组件可以分别为人物的躯干和四肢。第一组件的数量和/或第二组件的数量可以大于或等于1,例如,参见图3,在第一对象为手表且第一组件和第二组件分别为指针和表盘的情况下,指针301的数量可以为3,包括秒针3011、分针3012和时针3013;而手表模型中的表盘302的数量为1。
47.在一些实施例中,第一组件的一端固定在第二组件上,且第一组件的另一端相对于第一组件与第二组件之间的固定点,在第二组件上转动。第一组件与第二组件的相对姿态可以基于第一组件在第二组件上所指向的方向来表征。参见图3和图4a至图4c,以第一对象为手表且第一组件和第二组件分别为指针和表盘为例,假设秒针3011指向表盘302的“12点钟”方向时,秒针3011与表盘302的相对姿态为0度,如图4a所示,则在秒针3011指向图4b所示的方向(即表盘302中的“3点钟”方向)时,秒针3011与表盘302的相对姿态为90
°
;在秒针3011指向图4c所示的方向(即表盘302中的“6点钟”方向)时,秒针3011与表盘302的相对姿态为180
°
。
48.不同类别的第一对象上第一组件和第二组件的相对姿态的变化方式可以相同,也可以不同。在一种姿态变化方式中,第一组件和第二组件的相对姿态可以随机变化。在另一种姿态变化方式中,第一组件和第二组件的相对姿态可以以恒定的姿态变化率随时间变化。在后一种方式中,例如,图1a所示的时钟中的秒针以每秒顺时针旋转6
°
的姿态变化率随着时间相对于表盘变化。在再一种姿态变化方式中,第一组件和第二组件的相对姿态与时间信息相对应。例如,时间信息为t1时,相对姿态为α1,时间信息为t2时,相对姿态为α2,以此类推。除了以上列举的情况之外,第一组件和第二组件的相对姿态还可以以其他的方式随时间变化,具体的变化方式此处不再一一列举。
49.在步骤202中,可以获取包括第二对象的一帧或多帧图像帧。其中,每帧图像帧可以是图像采集装置实时采集的图像帧,也可以是预先采集并存储的图像帧。在图像帧的数
量大于1的情况下,多帧图像帧既可以是连续的图像帧,也可以是不连续的图像帧。多帧图像帧中包括的第二对象可以是各种类别的对象,例如,人物、动物、交通工具、运动器械等,或者上述类别的对象中的某个区域,例如,人物类别的对象的手腕或脖颈、交通工具类别(如车辆)的对象的车身区域等。
50.第二对象的类别与第一对象的类别可以相同,也可以不同。在第二对象的类别与第一对象的类别相同的一个例子中,第一对象和第二对象可以均为人物,通过渲染,可以在包括真实人物的视频帧中渲染出另一个人物的三维模型。如图5所示,女孩501为图像帧中的真实人物,婴儿502为人物的三维模型,通过将婴儿502的三维模型渲染到图像帧中,可以展现出女孩501怀抱婴儿502的特效。在第二对象的类别与第一对象的类别不同的一个例子中,第二对象可以是人物的手腕,第一对象可以是手表,通过渲染,可以在包括手腕的图像中,将手表的三维模型渲染到手腕上,实现虚拟试戴效果,如图1a所示。
51.不同的图像帧对应不同的时间信息,该时间信息与真实的网络时间既可以相同,也可以不同。在时间信息与真实的网络时间相同的情况下,可以直接基于图像帧的时间戳确定图像帧对应的时间信息。在时间信息与真实的网络时间不同的情况下,可以基于图像帧对应的初始时间信息(例如,采集图像帧的时间)与预设的时间偏移量确定图像帧对应的时间信息。例如,假设图像帧对应的初始时间信息为8:00:00,时间偏移量为30分钟,则可以确定图像帧对应的时间信息为8:30:00。在图像帧数量大于1的情况下,可以随机确定其中一帧图像帧(称为参考帧)对应的时间信息,并基于其他图像帧与参考帧之间的时间间隔,确定其他图像帧对应的时间信息。
52.参见图6,假设第一对象为手表,并假设图像帧包括图像帧a、图像帧b和图像帧c,且将图像帧a作为参考帧,并假设图像帧a与图像帧b之间的时间间隔以及图像帧b与图像帧c之间的时间间隔均为10秒,且图像帧a对应的时间信息为3:00:10,即手表在图像帧a中的显示时间为3:00:10。则将图像帧a与图像帧b之间的时间间隔叠加到图像帧a对应的时间信息上,即可得到手表在图像帧b中的显示时间,即3:00:20。同理,可以得到手表在图像帧c中的显示时间,即3:00:30。而图像帧a、图像帧b和图像帧c对应的网络时间分别为12:00:00、12:00:01和12:00:02,可以看出,手表在图像帧中的显示时间与图像帧对应的网络时间是不同的。
53.在步骤203中,可以将步骤202确定出的时间信息作为确定第一组件与第二组件的相对姿态信息的依据。在第一组件与第二组件的相对姿态随机变化的实施例中,可以从相对姿态信息的搜索空间中随机选择一个相对姿态信息,例如,相对姿态信息表示为角度,搜索空间中的角度的取值范围为0
°
到360
°
之间,则可以从上述搜索空间中随机选择0
°
到360
°
之间的角度作为第一组件与第二组件之间的相对姿态信息。
54.在第一组件与第二组件的相对姿态以恒定的姿态变化率随时间变化的实施例中,可以基于姿态变化率以及图像帧对应的时间信息,确定第一组件与第二组件的相对姿态信息。例如,在图1a所示的手表中,秒针与表盘之间的相对姿态以每秒顺时针旋转6
°
的姿态变化率随时间变化,假设图像帧的数量大于1,可以指定秒针与表盘之间的相对姿态在第一帧图像帧中的角度参数为α,假设相邻图像帧之间的时间间隔为
△
t,角度变化率为β,则第i(i为大于1的整数)帧图像帧中秒针与表盘之间的相对姿态可表示为夹角呈α+i*β*
△
t。
55.在第一组件与第二组件的相对姿态与时间信息相对应的实施例中,可以预先建立
第一组件与第二组件的相对姿态和时间信息的对应关系,并从对应关系中查找与图像帧对应的时间信息对应的相对姿态。例如,假设表示相对姿态的夹角α1与时间信息t1对应,表示相对姿态的夹角α2与时间信息t2对应,则在图像帧对应的时间信息为t1的情况下,可以确定第一组件与第二组件的相对姿态表示为夹角α1。
56.在步骤204中,可以将第一对象的三维模型渲染到图像帧中的第二对象上。以第一对象是手表,且第二对象是手腕为例,可以将手表的三维模型渲染到手腕上,从而实现虚拟试戴效果。例如,可以在顶点着色器中基于步骤203获取的相对姿态信息,对手表的指针进行顶点变换,使指针的顶点指向表盘中对应的时刻。
57.在一些实施例中,图像帧中可以包括多个第二对象,可以分别为不同的第二对象渲染不同类别的第一对象的三维模型。例如,为第二对象渲染的第一对象的类别可以与第二对象的类别相关。在图像帧中的至少两个第二对象为不同类别的对象的情况下,可以基于每个第二对象的类别为所述每个第二对象渲染对应类别的第一对象的三维模型。参见图7a,假设图像帧中包括手腕和脖颈两个类别的第二对象,则可以为手腕渲染手表类别的第一对象的模型,为脖颈渲染领带类别的第一对象的模型。可选地,可以对图像帧中的各个第二对象进行识别,得到图像帧中各个第二对象的类别,并基于每个第二对象的类别以及预先建立的第二对象的类别与第一对象的类别之间的对应关系,确定为每个第二对象渲染的第一对象的类别,并基于确定出的第一对象的类别,将该第一对象的三维模型渲染到对应类别的第二对象上。
58.又例如,可以分别为不同的第二对象渲染具有不同属性的同一类别的第一对象的三维模型。仍以第一对象是手表为例,假设图像帧中包括两个手腕,可以分别为这两个手腕渲染不同属性的手表对应的手表模型,所述属性包括但不限于颜色、尺寸、材质等中的至少一者。如图7b所示,为图像帧中左侧的手腕渲染的手表中的表盘的颜色为白色,为图像帧中右侧的手腕渲染的手表中表盘的颜色为灰色,这样,方便用户对不同颜色的手表的试戴效果进行对比。
59.在一些实施例中,三维模型包括表征第一组件的第一子模型和表征第二组件的第二子模型。可以按照相对姿态信息,将第一子模型和第二子模型组合,形成与时间信息对应的三维模型;基于第一对象和第二对象的预设位姿关系,将与时间信息对应的三维模型渲染至图像帧中。
60.或者,可以按照第一对象和所述第二对象的预设位姿关系,将第二子模型渲染到图像帧中,获得已渲染第二组件的图像帧,并基于相对姿态信息将第一子模型渲染至已渲染第二组件的图像帧中。
61.仍以第一组件和第二组件分别是指针和表盘为例,则第一子模型和第二子模型分别为指针模型和表盘模型,可以先将表盘模型渲染到图像帧中,得到已渲染表盘的图像帧,再将指针模型渲染到已渲染表盘的图像帧中。渲染指针模型时,可以按照前述实施例中的方式确定指针与表盘的相对姿态信息,从而可以在虚拟试戴场景中展示出手表指针随时间移动的效果。
62.在一些实施例中,所述第一子模型上包括锚点和移动点,锚点锚定至第二子模型的预设点。如图8所示,以第一子模型和第二子模型分别是指针模型和表盘模型为例,锚点可以是指针模型上靠近表盘模型中心点的端点801,移动点可以是指针模型上远离表盘模
型中心点的端点802或者是指针模型上的其他点。在确定锚点和移动点之后,可以获取预设点在已渲染第二组件的图像帧中的渲染点的第一像素位置;基于相对姿态信息确定在锚点渲染至第一像素位置的情况下,移动点渲染至的第二像素位置;基于第一像素位置和第二像素位置将第一子模型渲染至已渲染第二组件的图像帧中。例如,可以基于第一像素位置和第二像素位置对指针模型上的其他顶点进行插值,即可确定指针模型上其他顶点的像素位置。然后,可以基于指针模型上各个顶点的位置将指针模型渲染到表盘模型上。
63.在一些实施例中,可以基于相对姿态信息,第一对象与所述第二对象的预设位姿关系,以及第二对象相对于图像采集装置(以相机为例)的姿态,将三维模型渲染到图像帧中。
64.例如,在第一对象为手表,且第二对象为手腕的情况下,假设手腕的姿态和相机的姿态分别如图9a所示(手腕与相机均朝向水平方向),则渲染出的手表满足:表盘模型中的数字“12”朝向图像帧中的竖直方向;假设手腕的姿态和相机的姿态分别如图9b所示(手腕朝向水平方向,相机朝向竖直方向),则渲染出的手表满足:表盘模型中的数字“12”朝向图像帧中的水平方向。
65.在一些实施例中,可以基于第二对象的参考模型中的多个三维关键点在三维空间中的三维位置以及图像帧中第二对象的多个二维关键点的像素位置,确定采集图像帧的图像采集装置的姿态信息,多个三维关键点与多个二维关键点一一对应;基于图像采集装置的姿态信息将参考模型渲染到图像帧中,得到已渲染第二对象的图像帧;基于相对姿态信息,以及第一对象与第二对象的预设位姿关系,将三维模型渲染到已渲染第二对象的图像帧上。
66.其中,第二对象的参考模型可以是第二对象的三维模型。以第二对象是手腕为例,在一些实施例中,可以将手腕的标准三维模型(简称为手腕标准模型)作为参考模型。其中,手腕标准模型可以是基于预设坐标系(例如,世界坐标系)原点位置的一个标准圆柱体,用来模拟手腕形状。
67.参见图10,可以将手腕上靠近小指的边缘点p1、手腕上靠近大拇指的边缘点p2、p1与p2在手背一侧的中点p3以及p1与p2在手心一侧的中点p4确定为所述多个三维关键点。当然,这只是一种选取三维关键点的方式,在其他例子中,也可以选取其他的三维关键点,此处不再一一列举。
68.在获取到手腕标准模型上的三维关键点p1、p2、p3、p4以及图像帧中分别对应于三维关键点p1、p2、p3、p4的二维关键点q1、q2、q3、q4之后,可以基于上述三维关键点的三维位置、上述二维关键点的像素位置,以及图像采集装置(例如,相机)采集图像帧时的内参(包括焦距、光轴位置、畸变等),并采用solvepnp算法估计出图像采集装置的姿态信息{r|t}。其中,r表示相机的朝向信息,可以理解为相机绕世界坐标系的三个坐标轴中每个坐标轴的旋转角度;t表示相机的位置信息,可以理解为相机沿世界坐标系的三个坐标轴中每个坐标轴移动的距离。基于所述姿态信息{r|t},可以将手表模型上的三维点的坐标从世界坐标系转换到相机坐标系下,再通过透视变换和是视窗变换(viewport变换),即可使手表模型正确匹配跟踪图像帧中的手腕。
69.应当说明的是,上述姿态信息表征的是相机与手腕之间的相对姿态,可以假设手腕的姿态以及手腕标准模型的姿态始终是固定的,并以此来确定图像采集装置的姿态信
息。
70.在一些实施例中,第二对象位于图像帧的边缘时,可能因为缺失部分信息而导致的检测不准确的情况。此外,第二对象位于图像帧的边缘时,在渲染三维模型时容易出现三维模型一直闪烁,或者图像帧中存在一块边缘区域无法渲染出三维模型的情况。为了解决上述问题,可以仅在第二对象位于图像帧的中心区域内时,才将三维模型渲染到图像帧中。如果第二对象位于图像帧的边缘,则不渲染三维模型。这里的中心区域是指非边缘区域,在实践中可根据需要定义中心区域和/或边缘区域的范围。
71.在一些实施例中,为了进一步提高渲染真实度,在渲染三维模型时,还可以获取图像帧对应的渲染信息;基于相对姿态信息,第一对象与第二对象的预设位姿关系,以及图像帧对应的渲染信息,将三维模型渲染到图像帧中。
72.所述渲染信息可以包括但不限于以下至少一者:三维模型的属性信息、环境光信息和阴影信息。三维模型的属性信息可以包括三维模型的颜色、尺寸、形状、透明度、粗糙度、金属度等中的至少一者。在三维模型包括第一子模型和第二子模型的情况下,可以分别确定第一子模型和第二子模型的属性信息。环境光信息用于表征环境光的光照强度。阴影信息用于表征三维模型上各个顶点被阴影遮挡的情况。通过获取各种渲染信息,可以采用基于物理的渲染(physically based rendering,pbr)技术,通过更符合物理学规律的方式对三维模型进行渲染,可以使三维模型的材质更加有真实质感。
73.以渲染信息包括三维模型的颜色、形状、环境光信息和阴影信息为例,其中,三维模型的颜色可以基于三维模型的漫反射贴图(diffuse map)确定,三维模型的形状可以基于三维模型的法线贴图(normal map)确定,阴影信息可以基于环境光遮蔽贴图(ao map)确定。下面介绍一种确定环境光信息的具体方式。
74.在一些实施例中,可以获取预先生成的三维立体贴图;基于采集图像帧的图像采集装置的姿态信息,对三维立体贴图中的像素点进行采样;基于采样出的像素点的像素值,确定图像帧对应的环境光信息。
75.在一些实施例中,可以基于预先获取的一张或多张纹理图生成三维立体贴图。为了获得更精细的渲染效果,所述纹理图可以采用高动态范围(high dynamic range,hdr)贴图。其中,三维立体贴图可以包括但不限于长方体贴图(如图11a所示)、球面贴图(如图11b所示)、半球面贴图(如图11c所示)等,三维立体贴图既可以封闭的三维图形,也可以是不封闭的三维图形。图11d示出了由三张不同的纹理图以一定的角度拼接成不封闭的三维立体贴图的一种情况,当然,除了图中所示的情况之外,还可以采用其他数量的纹理图,以其他的角度和方式拼接成三维立体贴图。并且,除了前文所述的三维立体贴图之外,本公开实施例还可以采用纹理图生成其他类型的三维立体贴图,此处不再赘述。
76.在一些实施例中,可以获取预先确定的三维图形,所述三维图形包括多个面;每张纹理图预先标注有标识信息,所述标识信息用于确定所述纹理图与所述三维图形对应的面;基于所述标识信息将每张纹理图分别渲染到所述三维图形的各个面上,得到所述三维立体贴图。
77.为了便于理解,下面以三维图形是立方体,通过纹理图生成立方体贴图(cubemap)为例进行说明。立方体贴图是一种特殊的长方体贴图,立方体贴图的六个面均为正方形,这六个面围成一个立方体。可以将六张纹理图打包成一个素材包,并分别标记这六张纹理图
与立方体的六个面的对应关系。图12示出了纹理图及其标识信息。六张纹理图依次标记有“前(front)”、“后(back)”、“左(left)”、“右(right)”、“上(top)”、“下(bottom)”。在图13所示的立方体中,abcd围成的面和efgh围成的面分别对应标识信息为“上”的纹理图和标识信息为“下”的纹理图,cdhg围成的面和abfe围成的面分别对应标识信息为“前”的纹理图和标识信息为“后”的纹理图,caeg围成的面和dbfh围成的面分别对应标识信息为“左”的纹理图和标识信息为“右”的纹理图。根据上述对应关系将纹理图贴于立方体上对应的面,可以生成立方体贴图。上述实施例示出了立方体贴图中各个面对应的纹理图均不相同的情况,在实际应用中,立方体贴图中的至少两个面对应的纹理图也可以相同。除了采用上述方式生成立方体贴图之外,也可以将纹理图贴于其他图形上,形成其他类型的三维立体贴图,此处不再赘述。
78.在生成三维立体贴图之后,可以基于图像采集装置的姿态信息对所述三维立体贴图中的像素点进行采样。例如,可以基于图像采集装置的姿态信息计算方向向量v(如图13所示),再基于方向向量v对三维立体贴图进行采样。可以将向量v与三维立体贴图的交点确定为采样得到的像素点(称为目标像素点),基于目标像素点的像素值确定图像帧对应的环境光信息。或者,也可以获取三维立体贴图上处于目标像素点的邻域范围(图13中的深灰色区域所示)内的其他像素点(称为目标像素点的邻域像素点),基于目标像素点的像素值以及目标像素点的邻域像素点的像素值共同确定图像帧对应的环境光信息。
79.在确定环境光信息之后,可以基于预先生成的反射模型和所述环境光信息确定三维模型上待渲染的各个顶点的反射率;基于相对姿态信息,第一对象与第二对象的预设位姿关系,以及各个顶点在图像帧中的反射率,将待渲染的各个顶点渲染到图像帧中。
80.在一些实施例中,反射模型可以基于辐照度函数和双向反射分布函数(bidirectional reflectance distribution function,brdf)确定,brdf的作用是基于三维模型的材质属性对入射辐射率进行缩放或者加权。将基于brdf进行加权后的辐照度函数对环境光信息积分,即可得到所述反射模型。反射模型的具体可表示为以下形式:
[0081][0082]
其中,lo表示从ωo方向观察,环境光的光线投射到三维模型上的点p后反射出来的辐照度,n表示点p的平面法线方向,n和ωi均为单位向量,n
·
ωi表示入射光线ωi与点p的平面法线方向n的夹角的余弦值。光线与平面法线方向n的夹角越小,辐照度越高;光线与平面法线方向n的夹角越大,辐照度越低。积分的是含义是计算以点p为球心的半球形空间ω内所有方向入射的光线对点p的辐照度的总和。点p的平面法线方向n以及点p对应的半球形空间ω如图14所示。除了图中所示的半球形空间ω之外,积分空间也可以是其他形状(例如,1/4球形)的空间。
[0083]
本公开实施例通过生成三维立体贴图,将三维立体贴图的每个像素点视为光源,在渲染过程中可以使用像素点的像素值模拟环境光信息,使渲染出的三维模型呈现出更逼真的反射效果。通过采用本公开实施例,可以渲染出具有真实材质的质感,且姿态可以变化的三维模型。
[0084]
参见图15,本公开实施例还提供一种渲染方法,所述方法包括:
[0085]
步骤1501:获取图像采集装置采集图像帧时的姿态信息,所述图像帧中包括与第
一对象具有预设位姿关系的第二对象,所述姿态信息用于表征所述图像采集装置与所述第二对象之间的相对姿态;
[0086]
步骤1502:基于所述姿态信息对预先生成的三维立体贴图中的像素点进行采样;
[0087]
步骤1503:基于采样出的像素点的像素值确定环境光信息;
[0088]
步骤1504:基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上。
[0089]
在一些实施例中,所述基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上,包括:基于预先生成的反射模型和所述环境光信息确定所述三维模型上待渲染的各个顶点的反射率;基于所述待渲染的各个顶点的反射率、所述姿态信息,以及所述预设位姿关系,将所述待渲染的各个顶点渲染到所述图像帧上。
[0090]
本公开实施例中的图像可以是前一方法实施例中的图像帧。本公开实施例的具体细节详见前一方法实施例,此处不再赘述。
[0091]
本公开涉及增强现实领域,通过获取现实环境中的目标对象的图像信息,进而借助各类视觉相关算法实现对目标对象的相关特征、状态及属性进行检测或识别处理,从而得到与具体应用匹配的虚拟与现实相结合的ar效果。示例性的,目标对象可涉及与人体相关的脸部、肢体、手势、动作等,或者与物体相关的标识物、标志物,或者与场馆或场所相关的沙盘、展示区域或展示物品等。视觉相关算法可涉及视觉定位、slam、三维重建、图像注册、背景分割、对象的关键点提取及跟踪、对象的位姿或深度检测等。具体应用不仅可以涉及跟真实场景或物品相关的导览、导航、讲解、重建、虚拟效果叠加展示等交互场景,还可以涉及与人相关的特效处理,比如妆容美化、肢体美化、特效展示、虚拟模型展示等交互场景。可通过卷积神经网络,实现对目标对象的相关特征、状态及属性进行检测或识别处理。上述卷积神经网络是基于深度学习框架进行模型训练而得到的网络模型。
[0092]
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
[0093]
参见图16,本公开实施例提供一种渲染装置,所述装置包括:
[0094]
第一获取模块1601,用于获取第一对象的三维模型,所述第一对象包括第一组件和第二组件,所述第一组件与所述第二组件的相对姿态随时间变化;
[0095]
第二获取模块1602,用于获取对第二对象进行图像采集获得的图像帧;
[0096]
第一确定模块1603,用于基于所述图像帧对应的时间信息,确定所述第一组件与所述第二组件的相对姿态信息;
[0097]
第一渲染模块1604,用于基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中。
[0098]
参见图17,本公开实施例提供一种渲染装置,所述装置包括:
[0099]
第三获取模块1701,用于获取图像采集装置采集图像帧时的姿态信息,所述图像帧中包括与第一对象具有预设位姿关系的第二对象,所述姿态信息用于表征所述图像采集装置与所述第二对象之间的相对姿态;
[0100]
采样模块1702,用于基于所述姿态信息对预先生成的三维立体贴图中的像素点进
行采样;
[0101]
第二确定模块1703,用于基于采样出的像素点的像素值确定环境光信息;
[0102]
第二渲染模块1704,用于基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上。
[0103]
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0104]
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述任一实施例所述的方法。
[0105]
图18示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1801、存储器1802、输入/输出接口1803、通信接口1804和总线1805。其中处理器1801、存储器1802、输入/输出接口1803和通信接口1804通过总线1805实现彼此之间在设备内部的通信连接。
[0106]
处理器1801可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。处理器1801还可以包括显卡,所述显卡可以是nvidia titan x显卡或者1080ti显卡等。
[0107]
存储器1802可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1802可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1802中,并由处理器1801来调用执行。
[0108]
输入/输出接口1803用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0109]
通信接口1804用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
[0110]
总线1805包括一通路,在设备的各个组件(例如处理器1801、存储器1802、输入/输出接口1803和通信接口1804)之间传输信息。
[0111]
需要说明的是,尽管上述设备仅示出了处理器1801、存储器1802、输入/输出接口1803、通信接口1804以及总线1805,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0112]
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。
[0113]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0114]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
[0115]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、图像采集装置电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0116]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0117]
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
技术特征:
1.一种对象渲染方法,其特征在于,所述方法包括:获取第一对象的三维模型,所述第一对象包括第一组件和第二组件,所述第一组件与所述第二组件的相对姿态随时间变化;获取对第二对象进行图像采集获得的图像帧;基于所述图像帧对应的时间信息,确定所述第一组件与所述第二组件的相对姿态信息;基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中。2.根据权利要求1所述的方法,其特征在于,所述三维模型包括表征所述第一组件的第一子模型和表征所述第二组件的第二子模型;所述基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中,包括:按照所述第一对象和所述第二对象的预设位姿关系,将所述第二子模型渲染到所述图像帧中,获得已渲染第二组件的图像帧,并基于所述相对姿态信息将所述第一子模型渲染至所述已渲染第二组件的图像帧中;或者按照所述相对姿态信息,将所述第一子模型和所述第二子模型组合,形成与所述时间信息对应的三维模型;基于所述第一对象和所述第二对象的预设位姿关系,将所述与所述时间信息对应的三维模型渲染至所述图像帧中。3.根据权利要求2所述的方法,其特征在于,所述第一子模型包括锚点和移动点,所述锚点锚定至所述第二子模型的预设点;所述基于所述相对姿态信息将所述第一子模型渲染至所述已渲染第二组件的图像帧中,包括:获取所述预设点在已渲染第二组件的图像帧中的渲染点的第一像素位置;基于所述相对姿态信息确定在所述锚点渲染至所述第一像素位置的情况下,所述移动点渲染至的第二像素位置;基于所述第一像素位置和所述第二像素位置将所述第一子模型渲染至所述已渲染第二组件的图像帧中。4.根据权利要求1至3任一项所述的方法,其特征在于,所述基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中,包括:基于所述第二对象的参考模型中的多个三维关键点在三维空间中的三维位置以及所述图像帧中所述第二对象的多个二维关键点的像素位置,确定采集所述图像帧的图像采集装置的姿态信息,所述多个三维关键点与所述多个二维关键点一一对应;基于所述图像采集装置的姿态信息将所述参考模型渲染到所述图像帧中,得到已渲染第二对象的图像帧;基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述已渲染第二对象的图像帧上。5.根据权利要求1至4任一项所述的方法,其特征在于,所述将所述三维模型渲染到所述图像帧中,包括:若所述第二对象位于所述图像帧的中心区域,将所述三维模型渲染到所述图像帧中。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中,包括:获取所述图像帧对应的渲染信息,所述渲染信息包括以下至少一者:所述三维模型的属性信息、环境光信息和阴影信息;基于所述相对姿态信息,所述第一对象与所述第二对象的预设位姿关系,以及所述图像帧对应的渲染信息,将所述三维模型渲染到所述图像帧中。7.根据权利要求6所述的方法,其特征在于,所述获取所述图像帧对应的渲染信息,包括:获取预先生成的三维立体贴图;基于所述采集所述图像帧的图像采集装置的姿态信息,对所述三维立体贴图中的像素点进行采样;基于采样出的像素点的像素值,确定所述图像帧对应的环境光信息。8.根据权利要求7所述的方法,其特征在于,所述基于所述相对姿态信息,所述第一对象与所述第二对象的预设位姿关系,以及所述图像帧对应的渲染信息,将所述三维模型渲染到所述图像帧中,包括:基于预先生成的反射模型和所述环境光信息确定所述三维模型上待渲染的各个顶点的反射率;基于所述相对姿态信息,所述第一对象与所述第二对象的预设位姿关系,以及所述各个顶点在所述图像帧中的反射率,将所述待渲染的各个顶点渲染到所述图像帧中。9.一种对象渲染方法,其特征在于,所述方法包括:获取图像采集装置采集图像帧时的姿态信息,所述图像帧中包括与第一对象具有预设位姿关系的第二对象,所述姿态信息用于表征所述图像采集装置与所述第二对象之间的相对姿态;基于所述姿态信息对预先生成的三维立体贴图中的像素点进行采样;基于采样出的像素点的像素值确定环境光信息;基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上。10.根据权利要求9所述的方法,其特征在于,所述基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上,包括:基于预先生成的反射模型和所述环境光信息确定所述三维模型上待渲染的各个顶点的反射率;基于所述待渲染的各个顶点的反射率、所述姿态信息,以及所述预设位姿关系,将所述待渲染的各个顶点渲染到所述图像帧上。11.一种对象渲染装置,其特征在于,所述装置包括:第一获取模块,用于获取第一对象的三维模型,所述第一对象包括第一组件和第二组件,所述第一组件与所述第二组件的相对姿态随时间变化;第二获取模块,用于获取对第二对象进行图像采集获得的图像帧;第一确定模块,用于基于所述图像帧对应的时间信息,确定所述第一组件与所述第二
组件的相对姿态信息;第一渲染模块,用于基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中。12.一种对象渲染装置,其特征在于,所述装置包括:第三获取模块,用于获取图像采集装置采集图像帧时的姿态信息,所述图像帧中包括与第一对象具有预设位姿关系的第二对象,所述姿态信息用于表征所述图像采集装置与所述第二对象之间的相对姿态;采样模块,用于基于所述姿态信息对预先生成的三维立体贴图中的像素点进行采样;第二确定模块,用于基于采样出的像素点的像素值确定环境光信息;第二渲染模块,用于基于所述环境光信息、所述姿态信息,以及所述预设位姿关系,将所述第一对象的三维模型渲染到所述图像帧上。13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至10任意一项所述的方法。14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至10任意一项所述的方法。
技术总结
本公开实施例提供一种对象渲染方法和装置、介质和计算机设备,所述方法包括:获取第一对象的三维模型,所述第一对象包括第一组件和第二组件,所述第一组件与所述第二组件的相对姿态随时间变化;获取对第二对象进行图像采集获得的图像帧;基于所述图像帧对应的时间信息,确定所述第一组件与所述第二组件的相对姿态信息;基于所述相对姿态信息,以及所述第一对象与所述第二对象的预设位姿关系,将所述三维模型渲染到所述图像帧中。维模型渲染到所述图像帧中。维模型渲染到所述图像帧中。
技术研发人员:孙飞 何野 杨瑞健 赵代平
受保护的技术使用者:北京大甜绵白糖科技有限公司
技术研发日:2023.06.25
技术公布日:2023/9/25
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/