用于3d环境中的实时光线跟踪的系统和方法
技术领域
1.本公开整体涉及增强现实(ar)应用。至少一个实施方案涉及虚拟对象在视频中的放置,诸如,3d环境的实况视频输入。
背景技术:2.根据传统,光线跟踪是一种用于高质量非实时图形渲染任务(诸如制作动画电影,或者制作更忠实地对不同材料中光的行为进行建模的2d图像)的技术。作为示例,光线跟踪特别适合于将照明效果引入渲染图像中。可以为场景定义将光投射到场景中的对象上的光源。一些对象可能遮挡其他对象,使其无法受到光源的照射,从而导致场景中的阴影。使用光线跟踪技术进行渲染允许实现准确渲染光源的效果,因为光线跟踪适于对场景中光的行为进行建模。
3.光线跟踪渲染技术通常在计算上代价相当高并且实施起来会占用大量内存空间,特别是在希望实时地执行渲染的情况下。此外,对于非平面、有光泽或有折射的对象,基于获得的此类光线跟踪对象的颜色信息,可能将重大误差引入场景中。因此,光线跟踪技术难以在例如移动电话、平板电脑、用于显示的ar眼镜和用于捕获视频的嵌入式摄像机的设备上实施。鉴于以上内容设计了本文的实施方案。
技术实现要素:4.本公开涉及一种用于渲染视频的3d场景(例如实况视频输入)的方法。该方法可以考虑在诸如移动电话、平板电脑、用于显示的ar眼镜和用于捕获视频的嵌入式摄像机的设备上实施。
5.根据本公开的第一方面,提供一种用于渲染视频的3d场景的方法,包括:
6.识别视频的3d场景中的一个或多个对象的参数集;
7.基于针对所述视频的3d场景中的所述一个或多个对象中的每个对象的所识别的参数集,对所述一个或多个对象进行分组;
8.基于对象类型,确定所述3d场景中的所述一个或多个对象的每个分组的中间结构的空间边界;
9.确定所述3d场景中的所述一个或多个对象的每个分组的中间结构的空间边界的每个平面的照明贡献;以及
10.基于所述3d场景中的所述一个或多个对象的每个分组的中间结构的确定的空间边界以及确定的空间边界的每个平面的照明贡献,来渲染所述视频的所述3d场景。
11.所提出的解决方案的一般原理涉及诸如对象的反射、折射和遮蔽之类的照明效果,这些照明效果被合并到所渲染的图像中。通过考虑真实对象材料参数,诸如表面粗糙度和折射率(对于有折射的对象,诸如眼镜),获得虚拟对象在真实对象上的高质量反射。此外,考虑了用真实照明一致地照明虚拟对象,以及将对应的阴影投射在真实对象上。
12.在一个实施方案中,通过以下方式确定照明贡献:针对发光对象确定所述空间边
界的每个平面的可见度;以及针对非发光对象确定所述空间边界的每个平面的颜色信息。
13.在一个实施方案中,对3d场景的渲染还包括确定摄像机的所述中间结构的颜色信息。
14.在一个实施方案中,所述一个或多个对象包括真实对象和虚拟对象中的至少一者。
15.在一个实施方案中,该参数集包括视频的3d场景中的对象平面性、对象折射率和对象重要性中的至少一者。
16.在一个实施方案中,确定所述视频的3d场景中的所述一个或多个对象中的每个对象的区域。所确定的区域限定所述一个或多个对象中的每个对象的包围形状。
17.在一个实施方案中,对象类型是灯、摄像机或其他对象中的一者。
18.在一个实施方案中,其他对象是平面对象和非平面对象中的一者。
19.在一个实施方案中,中间结构的空间边界被细分。
20.在一个实施方案中,灯的中间结构的空间边界是一个平面或一组平面。
21.在一个实施方案中,摄像机的中间结构的空间边界是对应于z-near的平面。
22.在一个实施方案中,平面对象的中间结构的空间边界是对应于平面对象的平面。
23.在一个实施方案中,非平面对象的中间结构的空间边界是包围所确定的区域的一组平面。
24.在一个实施方案中,通过使用摄像机光线、反射光线、折射光线和阴影光线中的至少一者进行光线跟踪来执行渲染。
25.根据本公开的第二方面,提供一种用于渲染视频的3d场景的系统,该系统包括:
26.渲染设备;以及
27.至少一个处理器,所述至少一个处理器被配置为:
28.识别所述视频的所述3d场景中的一个或多个对象的参数集;
29.基于针对所述视频的所述3d场景中的所述一个或多个对象中的每个对象的所识别的参数集,对所述一个或多个对象进行分组;
30.基于对象类型,确定所述3d场景中的所述一个或多个对象的每个分组的中间结构的空间边界;
31.确定所述3d场景中的所述一个或多个对象的每个分组的中间结构的所述空间边界的每个平面的照明贡献;以及
32.基于所述3d场景中的所述一个或多个对象的每个分组的所述中间结构的所述确定的空间边界以及所述确定的所述空间边界的每个平面的照明贡献,来渲染所述视频的所述3d场景。
33.在一个实施方案中,通过以下方式确定照明贡献:
34.针对发光对象确定所述空间边界的每个平面的可见度;以及针对非发光对象确定所述空间边界的每个平面的颜色信息。
35.在一个实施方案中,通过确定摄像机的中间结构的颜色信息来渲染3d场景。
36.在一个实施方案中,所述一个或多个对象包括真实对象和虚拟对象中的至少一者。
37.在一个实施方案中,该参数集包括视频的3d场景中的对象平面性、对象折射率和
对象重要性中的至少一者。
38.在一个实施方案中,确定视频的所述3d场景中的所述一个或多个对象中的每个对象的区域。所确定的区域限定所述一个或多个对象中的每个对象的包围形状。
39.在一个实施方案中,对象类型是灯、摄像机或其他对象中的一者。
40.在一个实施方案中,其他对象是平面对象和非平面对象中的一者。
41.在一个实施方案中,中间结构的空间边界被细分。
42.在一个实施方案中,灯的中间结构的空间边界是一个平面或一组平面。
43.在一个实施方案中,摄像机的中间结构的空间边界是对应于z-near的平面。
44.在一个实施方案中,平面对象的中间结构的空间边界是对应于平面对象的平面。
45.在一个实施方案中,非平面对象的中间结构的空间边界是对应于所确定的区域的一组平面。
46.在一个实施方案中,通过使用摄像机光线、反射光线、折射光线和阴影光线中的至少一者进行光线跟踪来渲染场景。
47.根据本公开的第三方面,提供一种用于渲染视频的3d场景的方法,包括:
48.识别视频的3d场景中的一个或多个对象的参数集;
49.基于所述识别的参数集确定所述3d场景中的所述一个或多个对象的中间结构;
50.基于对应的替代对象,确定每个对象的所述中间结构的颜色贡献;
51.以及
52.基于所述中间结构的所述确定的颜色贡献,提供对所述视频的所述3d场景的渲染。
53.所提出的这种解决方案的一般原理涉及在视频的3d场景中渲染有反射/有光泽和/或有折射的对象。通过考虑材料参数,诸如表面粗糙度和金属表面,实现一般对象的高质量反射。此外,通过考虑材料折射率,实现图元形状或过程对象的高质量折射。
54.在一个实施方案中,该参数集包括对象形状的复杂度、关于有反射/有折射的对象的对象位置和/或距离以及环境重要性值中的至少一者。
55.在一个实施方案中,环境重要性值与来自3d场景中的对象的颜色贡献有关。
56.在一个实施方案中,所述对象包括真实对象和虚拟对象中的至少一者。
57.在一个实施方案中,来自3d场景中的对象的颜色贡献由反射光线承载。
58.在一个实施方案中,来自3d场景中的对象的颜色贡献由反射光线和折射光线承载。
59.在一个实施方案中,3d场景中的所选择对象是源对象,并且其中3d场景中的未选择对象是目标对象。
60.在一个实施方案中,源对象的对应替代对象具有图元形状。
61.在一个实施方案中,由虚拟摄像机投影参数确定基于对应替代对象的颜色贡献。
62.在一个实施方案中,虚拟摄像机投影参数包括近平面距离、远平面距离和视场(fov)角度中的至少一者。
63.根据本公开的第四方面,提供一种用于渲染视频的3d场景的设备,该设备包括:
64.至少一个处理器,所述至少一个处理器被配置为:
65.识别视频的3d场景中的一个或多个对象的参数集;
66.基于所述识别的参数集确定所述3d场景中的所述一个或多个对象的中间结构;
67.基于对应的替代对象,确定每个对象的所述中间结构的颜色贡献;以及
68.基于所述中间结构的所述确定的颜色贡献,提供对所述视频的所述3d场景的渲染。
69.在一个实施方案中,该参数集包括对象形状的复杂度、关于有反射/有折射的对象的对象位置和/或距离以及环境重要性值中的至少一者。
70.在一个实施方案中,环境重要性值与来自3d场景中的对象的颜色贡献有关。
71.在一个实施方案中,所述对象包括真实对象和虚拟对象中的至少一者。
72.在一个实施方案中,来自3d场景中的对象的颜色贡献由反射光线承载。
73.在一个实施方案中,来自3d场景中的对象的颜色贡献由反射光线和折射光线承载。
74.在一个实施方案中,3d场景中的所选择对象是源对象,并且其中3d场景中的未选择对象是目标对象。
75.在一个实施方案中,源对象的对应替代对象具有图元形状。
76.在一个实施方案中,由虚拟摄像机投影参数确定基于对应替代对象的颜色贡献。
77.在一个实施方案中,虚拟摄像机投影参数包括近平面距离、远平面距离和视场(fov)角度中的至少一者。
78.由本公开的要素实现的一些过程可以是计算机实现的过程。因此,此类要素可以采取完全硬件实施方案、完全软件实施方案(包括固件、常驻软件、微代码等)或者将软件方面和硬件方面结合的实施方案的形式,这些实施方案在本文中可以统称为“电路”、“模块”或系统。此外,此类元件可以采取计算机程序产品的形式,该计算机程序产品实现于具有体现在媒体中的计算机可用程序代码的任何有形表达介质中。
79.由于本公开的要素可以用软件来实现,因此本公开可以实施为用于在任何合适的载体介质上提供给可编程装置的计算机可读代码。有形载体介质可以包括存储介质,诸如软盘、cd-rom、硬盘驱动器、磁带设备或固态存储设备等。瞬态载体介质可以包括信号,诸如电信号、光信号、声信号、磁信号或电磁信号,例如微波或rf信号。
附图说明
80.实施方案的其他特征和优点根据以下通过指示性和非穷举性示例的方式给出的描述以及附图应当显而易见,在附图中:
81.图1展示根据本公开的一个实施方案的用于渲染视频的3d场景的示例性系统;
82.图2a是所提出的用于在真实世界3d环境中渲染ar(增强现实)或mr(混合现实)应用的虚拟对象的方法的一个具体实施方案的流程图;
83.图2b是所提出的用于在真实世界3d环境中渲染ar(增强现实)或mr(混合现实)应用的虚拟对象的图2a所展示方法的另一个实施方案的流程图;
84.图2c是所提出的用于在真实世界3d环境中渲染ar(增强现实)或mr(混合现实)应用的虚拟对象的图2b所展示方法的另一个实施方案的流程图;
85.图3是示出虚拟摄像机的位置以及捕获典型ar场景的真实摄像机的位置的图示;
86.图4是对象重要性权重为0的相关共享对象组的图示;
87.图5是对象重要性权重为1的对象的图示;
88.图6是对象重要性权重为2的对象的图示;
89.图7是定位在面积灯的表面上以支持对视频的3d场景中的对象的软遮蔽的虚拟摄像机的图示;
90.图8是对图3的灯的中场结构的可见度进行测定的图示;
91.图9是对当前对象的中场结构的颜色信息进行测定的流程图;
92.图10是针对图3所示的真实镜平面,根据图9的示例性流程图对中场结构的颜色信息进行测定的图示;
93.图11是针对图3所示的真实有光泽平面,根据图9的示例性流程图对中场结构的颜色信息进行测定的图示;
94.图12是针对图3所示的虚拟金属小人,根据图9的示例性流程图对中场结构的颜色信息进行测定的图示;
95.图13是使用一个虚拟摄像机为有折射的对象生成图像的流程图;
96.图14是针对图3所示的鱼缸,根据图13的示例性流程图对中场结构的颜色信息进行测定的图示;
97.图15是用于获得没有折射的对象的颜色信息的流程图;
98.图16是针对图3所示的有光泽平面,根据图15的流程图获得没有折射的对象的颜色信息的图示;
99.图17是用于获得有折射的对象的颜色信息的流程图;
100.图18是针对图3所示的鱼缸,根据图17的流程图获得有折射的对象的颜色信息的图示;
101.图19是用于检索阴影信息的流程图;
102.图20是针对图3的鱼缸,根据图19的流程图检索阴影信息的图示;
103.图21是所提出的用于在真实世界3d环境中渲染ar(增强现实)或mr(混合现实)应用的虚拟对象的方法的另一个具体实施方案的流程图;
104.图22是示出虚拟摄像机的位置以及捕获典型ar场景的真实摄像机的位置的图示;
105.图23是用于确定3d场景中的所选择对象连同对应(代表)对象的中间结构的空间边界的流程图;
106.图24是示出用于生成中间结构图像的源对象和目标对象连同虚拟摄像机布置的图示;
107.图25是示出针对摄像机透视投影测定虚拟摄像机近平面距离的图示;
108.图26是示出针对摄像机透视投影测定虚拟摄像机视场(fov)角度的图示;
109.图27是图22所示汽车的中间(中场)图像生成的图示,假设每个目标对象的n值为1;
110.图28是用于检索有反射/有光泽的对象和有折射的对象的颜色信息的流程图;
111.图29是示出示例性折射盒几何结构的若干出射光线的图示;
112.图30是可用于实现出射光线计算的示例性对应替代(代表)对象的图示;
113.图31是目标代表对象交点的深度与读取几何结构深度之间的比较的图示;并且
114.图32是描绘图22所示汽车的有光泽表面的颜色信息检索的图示。
具体实施方式
115.图1展示根据本公开的一个实施方案的用于渲染视频的3d场景的示例性装置。图1展示其中可以实现示例性实施方案的各个方面的示例性系统100的框图。系统100可以实施为包括下述各种部件的设备,并且被配置为执行对应的过程。此类设备的示例包括但不限于:移动设备、智能电话、平板计算机、用于显示的增强现实眼镜,以及用于捕获视频的嵌入式摄像机。系统100可以通信地耦接到其他类似系统,并且经由通信信道耦接到显示器。
116.系统100的各种实施方案包括至少一个处理器110,其被配置为执行加载于其中的指令,以便实现如下文所论述的各种过程。处理器110可以包括嵌入式存储器、输入输出接口,以及本领域已知的各种其他电路系统。系统100可以还包括至少一个存储器120(例如,易失性存储器设备、非易失性存储器设备)。系统100可以另外包括存储设备140,该存储设备可以包括非易失性存储器,包括但不限于eeprom、rom、prom、ram、dram、sram、闪存、磁盘驱动器和/或光盘驱动器。作为非限制性示例,存储设备140可以包括内部存储设备、附接存储设备和/或网络可访问的存储设备。
117.要加载到一个或多个处理器110上以执行下文所述的各种过程的程序代码可以存储在存储设备140中,随后加载到存储器120上以供处理器110执行。根据示例性实施方案,处理器110、存储器120和存储设备140中的一者或多者可以在执行下文所论述的过程期间存储各种项目中的一者或多者,包括但不限于环境图像、所捕获的输入图像、纹理图、无纹理图、投影阴影图、3d场景几何结构、视点的3d姿势、照明参数、变量、运算和运算逻辑。
118.系统100可以还包括通信接口150,该通信接口使得能够经由通信信道与其他设备通信。通信接口150可以包括但不限于被配置为从通信信道发射和接收数据的收发器。通信接口150可以包括但不限于调制解调器或网卡,并且通信信道150可以在有线和/或无线介质内实现。系统150的各种部件可以使用各种合适的连接来连接或通信地耦接在一起(未示出),这些连接包括但不限于内部总线、导线和印刷电路板。
119.系统100还包括耦接到处理器用于捕获视频图像的视频捕获装置160,诸如摄像机。
120.系统100还包括耦接到处理器用于渲染3d场景的视频渲染装置170,诸如投影仪或屏幕。
121.这些示例性实施方案可以通过由处理器110实现的计算机软件、或者通过硬件、或者通过硬件和软件的组合来执行。作为非限制性示例,这些示例性实施方案可以由一个或多个集成电路实现。存储器120可以是适合于技术环境的任何类型,并且作为非限制性示例,可以使用任何适当的数据存储技术来实现,诸如光学存储器设备、磁存储器设备、基于半导体的存储器设备、固定存储器和可移动存储器。处理器110可以是适合于技术环境的任何类型,并且作为非限制性示例,可以涵盖微处理器、通用计算机、专用计算机和基于多核架构的处理器中的一者或多者。
122.本文描述的实施方式可以在例如方法或过程、装置、软件程序、数据流或信号中实现。即使仅在单一形式的实施方式的语境中论述(例如,仅作为方法论述),所论述特征的实施方式也能够以其他形式(例如,装置或程序)实现。设备可在例如适当的硬件、软件和固件中实现。方法可在例如一般是指处理设备的装置(诸如,例如处理器)中实施,该装置包括例如计算机、微处理器、集成电路或可编程逻辑设备。处理器还包括通信设备,诸如计算机、蜂
窝电话、便携式/个人数字助理(“pda”)、平板电脑、头戴式设备,以及有利于虚拟现实应用的其他设备。
123.本公开适用于增强现实(ar)应用,其中使用透视设备(诸如,移动电话、平板电脑、用于显示的ar眼镜和用于捕获视频的嵌入式摄像机)将虚拟对象插入真实环境的实况视频输入中(与真实环境的实况视频输入合成在一起)。
124.目标是观看这种混合视频输入的观看者不能区分真实对象和虚拟对象。此类应用需要将3d虚拟对象集成到2d视频图像中,且实时地一致渲染光交互作用。虚拟对象插入真实世界视频中应当在现实中最可能实现,因为只需要考虑技术的以下几个方面:虚拟对象的位置、虚拟对象的取向(动态准确度,就像当用户移动摄像机时,对象在真实3d空间中被钩住/锚定住一样)、照明条件(不同光源的反射/折射,取决于虚拟对象的虚拟材料特性)。
125.与混合在一起(合成)的真实世界和虚拟世界交互以渲染混合的看似真实的视频输入(具有在实时条件下逐帧插入2d实况视频输入中的合成3d对象的混合现实)也非常重要。作为非限制性示例,此类交互可以包括例如光交互(全局照明,利用真实光和虚拟光)和物理交互(对象(真实和虚拟两者)之间的交互)。
126.所请求的计算机处理的速度也非常重要。摄像机在真实世界场景中采集单个帧与对应的“增强”帧(具有3d对象)在显示设备上显示之间的延迟时间应当接近0ms,使得观看者(也是使用摄像机的人)拥有沉浸式体验。
127.图2a是所提出的用于在真实世界3d环境中放置ar(增强现实)或mr(混合现实)应用的虚拟对象的方法的一个具体实施方案的流程图。在该具体实施方案中,此方法包括五个连续步骤210至步骤240。
128.在以下描述的一种示例性实施方式中,此方法由渲染设备170(例如,智能电话、平板电脑或头戴式显示器)来执行。在一种替代性的示例性实施方式中,此方法由渲染设备170外部的处理器110来执行。在后一种情况下,来自处理器110的结果被提供给渲染设备170。
129.图3中示出了典型ar场景的图示。图3所示的场景由包括真实对象和虚拟对象的有形对象组成。作为真实对象的一些示例性有形对象包括:有反射的平面对象(镜子)310、有光泽的平面对象(地板平面)330、有折射的对象(鱼缸)360、点状灯320。作为虚拟对象的一个示例性有形对象包括虚拟金属小人370。
130.可以将附加的虚拟对象(未示出)添加到场景中,以增添真实感并支持渲染。此类虚拟对象的示例可以包括不可见的虚拟镜子(具有相同尺寸和位置的真实镜子对象的代表)、不可见的虚拟灯(真实灯的代表),以及不可见的有光泽平面(具有相同尺寸和位置的真实的有光泽平面的代表)。
131.以下分节描述了图2a所提出的用于在真实世界3d环境中放置ar(增强现实)或mr(混合现实)应用的虚拟对象的方法的一个具体实施方案。该具体实施方案为ar场景的每个对象提供了显示多种渲染方面的高质量渲染。
132.在步骤210中,识别3d场景的一个或多个对象的参数集。该步骤是3d场景中的非灯和非摄像机的对象所需要的,以ar场景的先备知识为基础。该场景中的每个对象基于参数集被识别为ar环境中的真实对象或虚拟对象。
133.该参数集可以包括例如:对象平面性(无论对象是平面的还是非平面的)、对象折
射率(可以使用整数值,对于没有折射的对象为0,或者对于有折射的对象为1),以及与对象对3d场景的重要性有关的对象权重值。从0至n的整数值可以用于对象权重值。对象权重值越高,对象的渲染就会越好。
134.对象权重值对应于将用于这种对象的中间(中场)结构的数量。例如,对象权重为0可以指示该对象与其他对象共用其中场结构。对象重要性权重可以基于以下标准来确定:ar设备350的位置和取向,以及该设备到对象和对象周围对象的距离。
135.在大多数情况下,对象重要性权重等于1。然而,可以根据对象对场景渲染的重要性及其周围对象的影响来设置其他权重值,以优化渲染质量与性能(例如,存储器成本、帧速率)之间的折衷。
136.参见图3,3d场景对象的该参数集如下:
[0137]-折射率为0且重要性权重为1的平面对象:镜子310和地板平面330;
[0138]-折射率为1且重要性权重为1的非平面对象:鱼缸360;
[0139]-折射率为0且重要性权重为2的非平面对象:虚拟金属小人370。
[0140]-步骤220将重要性权重为0的所有对象分组在一起。
[0141]
参见图3,所有组都包含具有非零重要性权重的单个对象。
[0142]
对于一个具体实施方案,如图2a中的步骤230所示,为所述视频的3d场景的每个非灯对象和每个非摄像机对象确定区域。该区域限定3d场景中的非灯和非摄像机的对象中的每一者的形状。一种称为轴对齐包围盒(aabb)的技术可以用于限定该区域。aabb是有利的,因为只需要比较坐标,允许快速排除相隔很远的坐标。
[0143]
给定点集(s)的aabb通常是其最小面积,该最小面积受到此盒的平行于坐标(笛卡尔)轴的多条边的约束。该最小面积是n个间隔的笛卡尔积,其中每个间隔由s中的点的对应坐标的最小值和最大值定义。
[0144]
在步骤230处,确定场景中的一个或多个对象的中间结构的空间边界。
[0145]
中场图像的示例性数学定义为:
[0146]
对于一组几何结构,
[0147]
其中gi指示具有笛卡尔坐标系中的相关联位置x、y、z的几何结构,可以由一组中场图像表示,其中θ和ψ表示图像的旋转角度,并且p是图像的位置。n应当远小于n,以使该表示有效。
[0148]
中间结构(中场结构)的空间边界以对象类型(例如,灯、摄像机、其他对象)为基础,并且以基于上文关于步骤210和步骤220所论述的对象重要性权重参数的分组为基础。
[0149]
对于灯对象,附接到灯的中场(中间)结构的空间边界是一个平面或一组平面。
[0150]
对于摄像机对象,附接到摄像机的中场(中间)结构的空间边界是一个平面。
[0151]
对于非灯和非摄像机的对象:
[0152]-对于平面对象-附接到平面对象的中场(中间)结构的空间边界限于对应于对象平面的单个平面。
[0153]-对于非平面对象-附接到非平面对象的中场(中间)结构的空间边界是一组正交平面。在未划分的情况下,有6个正交平面。
[0154]
如图4所展示,对于对象重要性权重为0的对象410的相关共享组,这6个平面对应
于包围盒(所确定的区域)420。
[0155]
如图5所展示,对于对象重要性权重为1的对象510,这6个平面对应于包围盒(所确定的区域)520。
[0156]
如图6所展示,当对象610的对象重要性权重为2时,该对象被划分为均匀等距的网格单元615。网格单元的数目(n)等于重要性权重值。在图6所示的该示例中,对象重要性权重为2,因此网格具有两个均匀等距的单元615。每个网格单元615有一个中场(中间)结构620。
[0157]
在一个示例性实施方案中,如图2a中的步骤235所示,在确定场景中的每个对象的中间结构的空间边界之后,可以使用虚拟摄像机来生成一组图像,以激活中场结构,例如附接到灯的中场结构。在该步骤中,确定中间结构的空间边界的每个平面的照明贡献。该步骤对于在场景中投射阴影的灯是有利的。
[0158]
对于附接到灯的中场结构,将虚拟摄像机710放置在灯的位置处。可以将附加的虚拟摄像机放置在中场结构720的同一平面上,以支持软遮蔽,如图7所展示。每个虚拟摄像机710的所生成图像的数量取决于灯的类型,更准确地说,取决于灯的孔径角。通常,可以通过使用单个图像来管理小于160度的孔径角。
[0159]
例如,每个虚拟摄像机生成以下数量的图像:
[0160]-可以为聚光灯生成1个图像,以覆盖光斑孔径;
[0161]-可以为面积灯生成4个图像,以覆盖半球体;
[0162]-可以为点状灯生成6个图像,以覆盖整个空间。
[0163]
对于每个所生成的图像,设置虚拟摄像机视锥体以覆盖空间的所需部分。
[0164]
对于灯对象,所生成图像的每个像素的内容是对应于可见度的深度信息的单个浮动值。例如,深度信息可以对应于沿着与该像素对应的方向在灯的位置与相交对象的位置之间的距离。
[0165]
图8中展示了确定图3的灯320的中场结构的可见度的方式。由于灯810是点状灯,所以整个空间可以被中场结构覆盖。因此,生成了6张图像830,这些图像组成立方体映射820。
[0166]
参见图2a,在步骤240处,基于3d场景中的一个或多个对象中的每个对象的中间(中场)结构的确定的空间边界来渲染该场景。3d场景的渲染由摄像机使用光线跟踪来执行。中场结构被用作加速结构,替代传统的空间划分加速结构(例如,包围体层次结构(bvh))。在该示例性实施方案中,进行光线跟踪的几何结构等同于对它们的对应中场图像光线类型进行光线跟踪。常用于光线跟踪的可用光线类型为:
[0167]-摄像机光线:从摄像机发出的初始光线。
[0168]-次生光线:(随后的光线)当与材料相互作用(例如,反射、折射)时生成。
[0169]-阴影光线:用于检测光源与几何结构之间的遮蔽的特殊光线。
[0170]
光线组的示例性数学定义为:
[0171][0172]
其中对于该组中的光线(),p为该组中的光线的起点或终点,光线的数量对应于表示相交几何结构组的图像的数量。θ、ψ为光线的旋转角度,并且w为表示该组中的光线的分散度的波瓣大小的近似值。
[0173]
在光线是摄像机光线的情况下,波瓣(w)越大,该光线组就越模糊/抗锯齿效果越好。在光线是次生光线(反射/折射)的情况下,波瓣(w)越大,该光线组就越生硬;而在光线是阴影光线的情况下,波瓣(w)越大,该光线组就越柔和。最小波瓣尺寸等于0分散度。对于这种情况,则一条光线足以对域(摄像机光线、反射光线、折射光线、阴影光线)进行采样,因此对于中场图像,n=1。
[0174]
对于摄像机原始光线,通过激活附接到摄像机的中场结构来完成摄像机原始光线的渲染。所生成的图像对应于由摄像机观察的场景的光栅化图像。每个图像像素的内容是含有存储最接近命中对象的颜色信息(例如,红色、绿色和蓝色颜色值)的3个浮点分量的向量。
[0175]
对于次生光线,对来自当前摄像机的每个可见对象执行渲染。用于确定该可见度的一个示例性实施方案是检查对象包围盒是否与摄像机视锥体相交(即,使用例如视锥体剔除技术)。最初,激活附接到对象的中场结构。然后,通过对所生成的图像的适当查找来检索颜色信息。
[0176]
在图9所示的流程图900中展示了对当前对象的中场结构进行激活。
[0177]
在步骤905和步骤910处,检查摄像机是否面向中场结构平面。如果否,则前进至步骤920。
[0178]
在步骤915处,如果摄像机面向中场结构平面,则取关于此平面的摄像机镜像位置。
[0179]
在步骤915之后,如果对象有折射(步骤920),则取关于此平面的摄像机镜像位置(步骤925)并前进至步骤930。如果对象没有折射(步骤920),则前进至步骤930。
[0180]
在步骤930处,如果对象发生全反射,则计算虚拟摄像机裁剪区域(步骤935)。在步骤935之后,生成从虚拟摄像机观察的场景的图像(步骤940)。
[0181]
在步骤930处,如果对象未发生全反射,则在主摄像机周围生成多个虚拟摄像机(步骤945)。如果对象没有折射(步骤950),则对于每个虚拟摄像机(步骤955),生成从虚拟摄像机观察的场景的图像(步骤960)。
[0182]
在步骤950处,如果对象有折射,则对于每个虚拟摄像机(步骤965),使用深度和id信息生成从虚拟摄像机观察的场景的一组图像(步骤970)。
[0183]
在图10、图11和图12中分别示出根据图9的示例性流程图对图3的镜平面310、有光泽平面330和虚拟金属小人370的中场结构的颜色信息进行确定。
[0184]
参见图10,图3的镜平面310被示为反射表面1030。图10所示的图示遵循图9所描绘的流程图中所示的步骤905、步骤910、步骤915、步骤920、930、步骤935和步骤940。摄像机1020的正向方向和镜平面的法向向量用于确定该平面是否面向摄像机(步骤910)。此后,由于对象310具有反射表面,因此计算成像摄像机1010的裁剪区域,然后使用该裁剪区域中的反射光线生成从成像摄像机1010观察的场景的图像(步骤940)。
[0185]
参见图11,图3的有光泽平面330被示为表面1110。图11所示的图示遵循图9所描绘的流程图中所示的步骤905、步骤910、步骤915、步骤920、步骤930、步骤945、步骤950、步骤955和步骤960。摄像机1120的正向方向和镜平面的法向向量用于确定该平面是否面向摄像机(步骤910)。图11所示的正是这种情况,所以确定主摄像机镜像位置(步骤915)。此后,由于有光泽表面330未发生全反射(步骤930),则在主虚拟摄像机1130周围生成多个虚拟摄像
机1135、1140(步骤945)。然后,对于每个虚拟摄像机1130、1135、1140(步骤955),生成从虚拟摄像机1130、1135、1140观察的场景的图像(步骤960)。
[0186]
参见图12,图3的虚拟小人370的网格单元被示为1210。图12所示的图示遵循图9所描绘的流程图中所示的步骤905、步骤910、步骤920、步骤930、步骤935和步骤940。摄像机1220的正向方向和每个中场平面的法向向量用于确定该平面是否面向摄像机(步骤910)。平面1和平面2正是这种情况。所以,针对平面1和平面2确定主摄像机镜像位置(步骤915)。此后,通过假设虚拟金属小人370发生全反射(步骤930),根据入射摄像机视锥体和对应空间边界平面的尺寸来计算虚拟摄像机裁剪区域(步骤935)。然后,对于每个虚拟摄像机1230、1240,生成图像(步骤940)。每个图像像素的内容是含有存储最接近命中对象的颜色信息(例如,红色、绿色和蓝色颜色值)的三个浮点分量的向量。
[0187]
在图13所示的流程图1300中展示了生成有折射的对象的一个虚拟摄像机的图像的过程(图9的步骤970)。
[0188]
在步骤1305和步骤1310处,将摄像机znear设置为与对象包围盒的交点,并且执行剔除=背面。
[0189]
在步骤1315处,渲染对象的深度并且对对象id进行成像。
[0190]
在步骤1315之后,对颜色对象进行渲染(步骤1320),如果发现对象id(步骤1325),则前进至步骤1335。如果未发现对象id(步骤1325),则前进至步骤1330(结束)。
[0191]
在步骤1335处,针对对象id计算zmin。在步骤1335之后,如果znear≠zmin(步骤1345),则设置znear=zmin。
[0192]
在步骤1335之后,如果zmin=znear,则前进至步骤1360。在步骤1360处,如果对正面和背面执行了对象剔除,则前进至步骤1365并设置zmax=zmin,然后前进至步骤1350。在步骤1360处,如果没有对正面和背面执行对象剔除,则前进至步骤1350。
[0193]
在步骤1350处,如果剔除=背面为“否”,则设置剔除=背面(步骤1355)。在步骤1350处,如果剔除=背面为“是”,则设置剔除=正面(步骤1370)。在步骤1370和1355之后,前进至步骤1315,基于对象深度和对象id对对象成像。
[0194]
图14中示出了根据图13的示例性流程图对图3的鱼缸360的中场结构进行激活。
[0195]
参见图14,图3的鱼缸310被示为对象1420。摄像机1410的位置用于确定成像摄像机1435的摄像机镜像位置。由于鱼缸是有折射的对象,所以再次获得摄像机1435的镜像(图9的步骤925),以便使用摄像机1410来生成图像。此后,由于对象310具有折射表面,因此使用虚拟摄像机观察和平面位置1440、1445、1425来执行正面和背面剔除。此后,使用深度和id信息生成有折射的对象。
[0196]
所生成的图像对应于由虚拟摄像机观察的场景的光栅化图像。每个图像像素的内容是含有存储最接近命中对象的颜色信息(例如,红色、绿色和蓝色颜色值)的3个浮点分量的向量。每个中场结构的所生成图像的数量取决于:
[0197]-对象材料类型:
[0198]
对于全反射材料,每个平面生成单个图像(图10和图12),
[0199]
对于有光泽的材料(图11)或有折射的材料(图14),每个平面生成几个图像。
[0200]
虚拟摄像机的视锥体被设置为支持大部分出射光线方向,因此取决于对象材料的光泽度或折射率。典型的约120
°
的孔径角覆盖大多数情况。
[0201]
针对全反射对象优化虚拟摄像机视锥体,因为可以根据入射视锥体和对应空间边界平面的尺寸来计算裁剪平面(图10和图12)。对于有光泽和/或有折射的对象,就每个边界平面而言,可以在主摄像机周围放置几个虚拟摄像机,以减小出射光线的误差(图11)。通常,两个或三个附加的虚拟摄像机就足以显著地减小误差。对于有折射的对象,可以生成包含深度和对象唯一标识符信息的附加图像。如图13的流程图中所述,需要这些图像来找到从其生成彩色图像的对象介质界面的位置。
[0202]
一旦确定所有的中场结构,就获得了每条入射光线的颜色信息。对于没有折射的对象,根据图15的流程图1500获得颜色信息。
[0203]
在步骤1505和1510处,对于每条入射光线,计算中场边界上的命中点。
[0204]
在步骤1515处,确定主虚拟摄像机的位置。
[0205]
在步骤1515之后,将命中点投影在主虚拟摄像机屏幕空间中(步骤1520),并且读取颜色信息(步骤1525)。
[0206]
在步骤1530处,如果对象发生全反射,则将最终颜色设置为读取颜色信息(步骤1535)。
[0207]
在步骤1530处,如果对象未发生全反射,则对于反射波瓣内的每条所生成的光线(步骤1540),确定一个或多个虚拟摄像机以最小化光线误差(步骤1545)。
[0208]
在步骤1545之后,将命中点投影在所选择的虚拟摄像机屏幕空间中(步骤1550),并且读取颜色信息(步骤1555)。在步骤1555之后,通过混合所有的颜色贡献来设置最终颜色(步骤1560)。
[0209]
图16中示出了图15的流程图用于有光泽表面的图示。来自摄像机1610的入射光线用于计算命中点1615(步骤1510)并且确定主虚拟摄像机1625的位置。此后,在主虚拟摄像机1625和附加的虚拟摄像机1620、1630周围生成颜色信息1635、1640(步骤1525)。
[0210]
对于有折射的对象,根据图17的流程图1700获得颜色信息。
[0211]
在步骤1705和步骤1710处,对于每条入射光线,计算中场边界上的命中点。
[0212]
在步骤1715处,确定主虚拟摄像机的位置。
[0213]
在步骤1715之后,从主虚拟摄像机获得第一深度和对象id(步骤1720),并且确定虚拟摄像机屏幕空间(u,v)坐标(步骤1725)。
[0214]
在步骤1730处,如果存在对象id的深度信息,则使用该深度信息计算当前界面上的命中点(步骤1735),使用斯涅尔定律确定折射角(步骤1740)并且确定步骤1740的折射角所对应的虚拟摄像机(步骤1745)。
[0215]
在步骤1745之后,为该摄像机拍摄后续的深度和对象id图像,并且重复步骤1710至1725。
[0216]
在步骤1725之后,如果没有该对象id的深度信息(步骤1730),则在对应的图像上读取颜色信息(步骤1755)。
[0217]
图18中展示了将图17的流程图用于鱼缸的图示。来自摄像机1810的入射光线用于计算命中点1815(步骤1710)并且确定主虚拟摄像机1810的位置。此后,在主虚拟摄像机1810和附加的虚拟摄像机1820周围生成颜色信息1830、1835(步骤1755)。
[0218]
对于阴影光线,一旦检索到颜色信息,就检查摄像机原始光线与对象之间的交点是否被照亮。对于3d场景的每个灯,朝向灯几何结构生成阴影光线。对于每条阴影光线,阴
影信息的检索遵循图19所示的流程图。
[0219]
在步骤1910和步骤1920处,对于每条阴影光线,确定灯虚拟摄像机。
[0220]
在步骤1920之后,将命中点投影在虚拟摄像机屏幕空间中(步骤1930)。
[0221]
在步骤1940处,读取深度信息。在步骤1950处,如果深度《距离为“是”,则阴影信息为真(步骤1970)。在步骤1950处,如果深度《距离为“否”,则阴影信息为假(步骤1960)。
[0222]
图20中展示了将图19的流程图用于鱼缸2010的图示。来自命中点2015的阴影光线(步骤1910)确定灯虚拟摄像机2005。此后,读取深度信息并生成阴影信息2040。
[0223]
图2b和图2c是用于在真实世界3d环境中渲染ar(增强现实)或mr(混合现实)应用的虚拟对象的图2a所展示方法的另外的实施方案的流程图205、207。
[0224]
参见图2b,在步骤210中,识别3d场景的一个或多个对象的参数集,然后分组(步骤220)。在步骤230处,确定场景中的一个或多个对象的中间结构的空间边界。
[0225]
在图2b的步骤235a和步骤235b中,在确定场景中的每个对象的中间结构的空间边界之后,分别确定发光对象的空间边界的每个平面的可见度,以及非发光对象的空间边界的每个平面的颜色信息。颜色信息可以包括例如辐照度、辐射率、照度、亮度和强度。在步骤240处,基于3d场景中的每个对象的中间(中场)结构的确定的空间边界/可见度和颜色信息来渲染该场景。
[0226]
参见图2c,在步骤210中,识别3d场景的一个或多个对象的参数集,然后分组(步骤220)。在步骤230处,确定场景中的一个或多个对象的中间结构的空间边界。
[0227]
在图2c的步骤235a和步骤235b中,在确定场景中的每个对象的中间结构的空间边界之后,分别确定发光对象的空间边界的每个平面的可见度,以及非发光对象的空间边界的每个平面的颜色信息。在步骤240a处,基于来自摄像机的中间(中场)结构的确定的颜色来渲染3d场景。
[0228]
图21是所提出的用于在真实世界3d环境中放置ar(增强现实)或mr(混合现实)应用的虚拟对象的方法的另一个具体实施方案的流程图2100。在该具体实施方案中,此方法包括四个连续步骤2110至步骤2140。
[0229]
在以下描述的一种示例性实施方式中,此方法也由渲染设备170(例如,智能电话、平板电脑或头戴式显示器)来执行。在一种替代性的示例性实施方式中,此方法由渲染设备170外部的处理器110来执行。在后一种情况下,来自处理器110的结果被提供给渲染设备170。
[0230]
图22中示出了典型ar场景的图示。图22所示的场景由包括真实对象和虚拟对象的有形对象组成。作为真实对象的示例性有形对象包括具有透明部分(玻璃)的折射面板2210。作为虚拟对象的一些示例性有形对象包括具有金属/有光泽的非平面表面的汽车2220、鸟2230和树2240。
[0231]
可以将附加的虚拟对象(未示出)添加到场景中,以增添真实感并支持渲染。具有与折射面板2210相同的尺寸和位置的表示真实透明面板的不可见的虚拟折射面板是非限制性示例。
[0232]
以下分节描述了图21所提出的用于在真实世界3d环境中放置ar(增强现实)或mr(混合现实)应用的虚拟对象的方法2100的一个具体实施方案。该具体实施方案为ar场景的每个对象提供了显示多种渲染方面的高质量渲染。
[0233]
在步骤2110中,识别视频的3d场景的对象的参数集。该步骤是3d场景中的非灯和非摄像机的对象所需要的,以ar场景的先备知识为基础。该场景中的每个对象基于参数集被识别为ar环境中的真实对象或虚拟对象。
[0234]
该参数集可以包括例如环境重要性值,以及基于视频场景中的有反射/有折射的对象的数量的n个整数值的阵列。
[0235]
环境重要性与来自3d场景的环境的对象颜色贡献相关。从0至2的整数值可以用于环境重要性值。环境重要性值为0指示来自环境的颜色贡献为零或可忽略不计。环境重要性值为1指示来自环境的颜色贡献由反射光线承载。环境重要性值为2指示来自环境的颜色贡献由反射光线和折射光线承载。识别适当的对象环境重要性值是简单的。
[0236]
n个整数值的阵列的大小对应于场景中的有反射/有折射的对象(例如,具有不同于0的环境重要性的对象)的数量。整数值n越高,相关的有反射/有折射的对象的所选择对象的渲染就会越好。整数值n对应于将为相关的有反射/有折射的对象的所选择对象生成的中间(中场)图像的数量。
[0237]
n个整数值的阵列是基于所选择对象形状的复杂度以及关于相关的有反射/有折射的对象的对象位置和距离来设置的。如果这些参数改变,则可以改变n个整数值。n个整数值的阵列用于优化渲染质量与性能(存储器成本、帧速率)之间的折衷。
[0238]
参见图22,3d场景对象的该参数集如下所述:图22所描绘的场景具有两个有反射/有折射的对象:汽车2220和折射(玻璃)面板2210。因此,n个整数值的阵列的大小等于2。该阵列的第一元素对应于汽车2220的阵列值。该阵列的第二元素对应于折射(玻璃)面板2210的阵列值。
[0239]
汽车2220的环境重要性值为1,因为存在来自反射光线的颜色贡献。汽车2220的n个整数值的阵列为[-1,1]。该阵列的第一元素被设置为-1,因为汽车无法向其自身贡献颜色。将该元素设置为-1使得该值不相关。该阵列的第二元素指示将生成单个中间(中场)图像,用于收集从汽车2220到折射(玻璃)面板2210的光线。
[0240]
鸟2230的环境重要性值为0,因为没有来自环境的颜色贡献。鸟2230的n个整数值的阵列为[2,1]。该阵列的第一元素指示将使用两(2)个中间(中场)图像来收集从鸟到有反射/有光泽的汽车2220的光线。该阵列的第二元素指示将生成单个中间(中场)图像,用于收集从鸟2230到折射(玻璃)面板2210的光线。
[0241]
折射(玻璃)面板2210的环境重要性值为2,因为存在来自反射光线和折射光线两者的颜色贡献。折射(玻璃)面板2210的n个整数值的阵列为[1,-1]。该阵列的第一元素指示将生成单个中间(中场)图像,用于收集从折射(玻璃)面板2210到汽车2220的光线。该阵列的第二元素被设置为-1,因为折射(玻璃)面板2210无法对其自身贡献颜色。将该阵列元素设置为-1使得该值不相关。
[0242]
树2240的环境重要性值为0,因为没有来自环境的颜色贡献。树2240的n个整数值的阵列为[2,3]。该阵列的第一元素指示将使用两(2)个中间(中场)图像来收集从树2240到有反射/有光泽的汽车2220的光线。该阵列的第二元素指示将生成三(3)个中间(中场)图像,用于收集从树2240到折射(玻璃)面板2210的光线。
[0243]
参见图21的步骤2120,对于一个具体实施方案,基于来自步骤2110的所识别的参数集确定3d场景中的所选择对象的中间结构,连同每个所选择对象的对应替代(代表)对
象。步骤2120适用于环境重要性值非零的对象。此类对象将具有来自环境(例如,周围的场景对象)的颜色贡献。下面将参照图23的流程图进一步论述该步骤。
[0244]
在一个示例性实施方案中,使用对应替代(代表)对象来表示所选择对象。对应的(代表)对象应当优选地具有图元形状,诸如包围盒结构。图元形状限定3d场景中的非灯对象和非摄像机对象的区域。
[0245]
一种称为轴对齐包围盒(aabb)的技术可以用于限定图元形状。aabb是有利的,因为只需要比较坐标,允许快速排除相隔很远的坐标。
[0246]
给定点集(s)的aabb通常是其最小面积,该最小面积受到此盒的平行于坐标(笛卡尔)轴的多条边的约束。该最小面积是n个间隔的笛卡尔积,其中每个间隔由s中的点的对应坐标的最小值和最大值定义。
[0247]
为其确定中间结构的所选择对象是源对象。该源对象具有一个源代表(对应的替代)对象。对于所选择对象,周围的场景对象为目标对象。每个目标对象还具有一个目标代表(对应的替代)对象。
[0248]
在步骤2130处,基于对应的替代(代表)对象来确定每个所选择对象的中间结构的颜色贡献。
[0249]
参见图21的步骤2140,基于场景中所选择的一个或多个对象中的每个对象的中间(中场)结构来渲染3d场景。3d场景的渲染由摄像机2250(图22)使用光线跟踪来执行。这些中间(中场)结构被用作加速结构,替代传统的空间划分加速结构(例如,包围体层次结构(bvh))。在该示例性实施方案中,进行光线跟踪的几何结构等同于对它们的对应中场图像光线类型进行光线跟踪。下面将参照图28的流程图进一步论述步骤2130和步骤2140。
[0250]
常用于光线跟踪的可用光线类型为:
[0251]-摄像机光线:从摄像机发出的初始光线。
[0252]-次生光线:(随后的光线)当与材料相互作用(例如,反射、折射)时生成。
[0253]
光线组的示例性数学定义为:
[0254][0255]
其中对于该组中的光线(),p为该组中的光线的起点或终点,光线的数量对应于表示相交几何结构组的图像的数量。θ、ψ为光线的旋转角度,并且w为表示该组中的光线的分散度的波瓣大小的近似值。
[0256]
在光线是摄像机光线的情况下,波瓣(w)越大,该光线组就越模糊/抗锯齿效果越好。在光线是次生光线(反射/折射)的情况下,波瓣(w)越大,该光线组就越生硬;而在光线是阴影光线的情况下,波瓣(w)越大,该光线组就越柔和。最小波瓣尺寸等于0分散度。对于这种情况,则一条光线足以对域(摄像机光线、反射光线、折射光线、阴影光线)进行采样,因此对于中场图像,n=1。
[0257]
对于摄像机原始光线,通过激活附接到摄像机的中场结构来完成摄像机原始光线的渲染。所生成的图像对应于由摄像机观察的场景的光栅化图像。每个图像像素的内容是含有存储最接近命中对象的颜色信息(例如,红色、绿色和蓝色颜色值)的3个浮点分量的向量。
[0258]
对于次生光线,对来自当前摄像机的每个可见对象执行渲染。用于确定该可见度的一个示例性实施方案是检查对象包围盒是否与摄像机视锥体相交(即,使用例如视锥体
剔除技术)。最初,激活附接到对象的中场结构。然后,通过对所生成的图像的适当查找来检索颜色信息。
[0259]
再次参见图21的步骤2130,根据图23所描绘的流程图生成中间结构(中场)图像。
[0260]
在步骤2305处,选择3d场景中具有非零环境重要性值的每个对象作为源对象。在步骤2310中识别源对象周围的对象(被称为目标对象)。在步骤2315处,检索目标代表(对应的替代)对象。
[0261]
参见图24,步骤2305的示例性源对象2420被识别为汽车(先前在图22中示出)。源对象2420具有一个源代表(对应的替代)对象2425,该源代表对象具有盒(3d)形状。源对象2420的周围的场景对象是被识别为目标对象2440的树。目标对象2440具有一个目标代表(对应的替代)对象2445,该目标代表对象也具有盒(3d)形状。
[0262]
再次参见图23,在步骤2320处更新虚拟摄像机的数量。在步骤2325处,虚拟摄像机的数量基于将用于收集从目标对象到源对象(从树到汽车)的光线的中间(中场)图像的数量,并且是整数。此后,在步骤2330处,将虚拟摄像机放置在场景中,以最大限度增加对从目标对象到源对象的光线的捕获。
[0263]
如果对于目标对象仅生成一个中间(中场)图像(n=1),则可以将虚拟摄像机放置在源代表(对应的替代)对象的中心处。在图24中,沿着源代表(对应的替代)对象2425的每一侧放置用于汽车的两个虚拟摄像机2450。两个虚拟摄像机2450用于生成树(目标对象)和汽车(源对象)的中间(中场)图像。
[0264]
在图23的步骤2335处,计算虚拟摄像机2450的取向。参见图24,通过将虚拟摄像机2450朝向其自身的目标代表对象2445的中心点(未示出)定向并且通过设置适当的投影参数以生成中间(中场)图像,来单独地渲染每个目标对象2440。
[0265]
在图23中,在步骤2340处计算虚拟摄像机2450的投影参数。投影参数包括近平面距离、远平面距离和视场(fov)角度。
[0266]
参见图25,通过向虚拟摄像机正向方向投影源代表(对应的替代)对象2425并且通过取到虚拟摄像机的最大距离值来确定近平面距离2510。为简单起见,在该示例中,为目标对象假定单个虚拟摄像机位置2550(n=1),并将其放置在源代表对象的中心处。
[0267]
远平面距离可以是用户定义的,或者被设定为主摄像机的远平面距离。在一个示例性实施方案中,远平面距离被设定为与附接到ar设备的虚拟摄像机的距离。
[0268]
参见图26,通过识别(目标代表边界
–
虚拟摄像机位置)线2630与虚拟摄像机近平面2620的交点并且通过取包括所有这些交点的角度来确定视场(fov)角度2610。
[0269]
视场(fov)=2*arctan(dmax/near)
[0270]
在图23的步骤2345处,确定包含颜色和深度这两种信息的目标对象的中间(中场)图像。在一个示例性实施方案中,该信息被存储在包含以下四(4)个分量的向量中:红色、绿色和蓝色的颜色信息,以及深度信息的值。
[0271]
在图27所展示的一个示例性实施方案中,将确定图22中所描绘的场景的汽车对象的颜色信息。对于图27,对于所有的目标对象,假设n值为1,使得虚拟摄像机2750被放置在源代表(对应的替代)对象2705的中心处。根据图28所示的流程图确定颜色信息。
[0272]
在步骤2805处,对于具有非零环境重要性值的每个对象,在步骤2810处确定这种对象是否有折射。步骤2810很重要,因为在计算从不同对象出射的光线时,需要区分有反
射/有光泽的对象与有折射的对象。
[0273]
对于有反射/有光泽的对象,在步骤2815处,对双向散射分布函数(bsdf)波瓣进行采样,以得到出射光线的测定结果。获得每条光线的起始位置、方向和相对能量(功率)信息。
[0274]
对于有折射的对象,在步骤2820处,对双向散射分布函数(bsdf)波瓣进行采样,以得到每个空气/材料界面的出射光线测定结果。对于有折射的对象,出射光线测定结果很复杂,因为每条入射光线均生成多条出射光线。出射光线取决于入射光线方向、有折射的对象的几何结构,以及这种对象的折射率。
[0275]
图29中示出了折射盒几何结构2910的若干条出射光线的示例性图示。图29中所示的盒几何结构是全解析图元形状,使得可以完全解析对象以计算交点并且确定任何光线在该点处的法向向量。其他合适的图元形状包括例如球体、圆柱体或过程对象。对于此类图元形状,可以执行出射光线的即时精确计算。
[0276]
在图29中,ar设备2915提供两(2)条原始光线2920、2925。对于原始光线2920,存在四(4)条出射光线2930、2935、2940、2945。对于原始光线2925,存在三(3)条出射光线2950、2955、2960。
[0277]
图30是未解析的对象几何结构3005的图示。对于这种情况,使用对应替代(代表)对象几何结构3010来计算交点并且确定任何光线在该点处的法向向量。在一个示例性实施方案中,对应替代(代表)对象几何结构可以与源/目标对象的对应替代(代表)对象相同。对于该对应替代(代表)对象几何结构,可以执行出射光线的即时精确计算。
[0278]
在图30中,ar设备3015提供一(1)条原始光线3020。对于原始光线3020,存在两(2)条出射光线3030、3035。光线3030是精确的出射光线,而光线3035是近似的出射光线。没有足够的信息来计算精确的出射光线3030,因为这是理论上的出射光线,所以使用近似的出射光线3035。即时计算在近似的出射光线3035的出射光线方向上引入了关于颜色贡献检索的一些误差,但此类误差很难被察觉。
[0279]
此外,对于一个示例性实施方案,可以引入用户定义的nbofbounces参数。nbofbounces参数限制了在计算出射光线时考虑的空气/材料界面的数量。例如,nbofbounces=1仅对应于第一空气/材料界面(例如,存在吸收的有反射的对象)的反射光线。nbofbounce=2对应于第一空气/材料界面的反射光线和第二材料/空气界面的透射光线。
[0280]
参见图28的步骤2825和步骤2830,对从步骤2815和步骤2820计算的每条出射光线进行光线跟踪,直到对应替代(代表)目标对象。此后,如图28的步骤2835至步骤2850所述确定颜色信息。将参照图31更详细地论述步骤2835至步骤2850。
[0281]
在图28的步骤2830处,对出射光线进行光线跟踪,直到目标代表对象。当对目标代表对象进行光线跟踪以确定最近的交点时,可以任选地使用目标代表对象的细化版本。细化版本更加紧凑,这增加了相交测试的准确性。
[0282]
参见图31,来自ar设备3105的原始光线3110(图28的步骤2840)从源对象(汽车)3115反射。根据图28的步骤2865,出射光线3120背离目标代表对象(鸟)3130,因此仅获得背景颜色信息。出射光线3125被朝向目标代表对象3130反射,并且具有交点3140。
[0283]
在图28的步骤2845处,确定该交点是否有效。确定交点有效的标准是:
[0284]-交点在用于渲染当前目标对象的虚拟摄像机的视锥体内部
[0285]-目标几何结构在目标代表对象内部被命中(例如,读取深度值不等于虚拟摄像机的远平面距离)
[0286]-目标代表对象交点的深度低于读取几何结构深度,以避免幻影视觉伪像。
[0287]
参见图31,反射的出射光线3125在交点3140处命中目标代表对象,并且可以读取有效的目标几何结构深度。然而,反射的出射光线3125不与目标几何结构(鸟)相交。此外,由于目标代表对象交点3140的深度高于读取几何结构深度3135,所以交点3125不是有效交点。
[0288]
在图28的步骤2850处,对于有效的那些交点,取得颜色贡献。在步骤2855处,按照光线能量累计所有颜色贡献。累计所有虚拟摄像机对命中目标对象的颜色贡献需要计算混合权重。累计颜色贡献的一个示例使用由s.lagarde在“image-based lighting approaches and parallax-corrected cubemap”(siggraph 2012,los angeles,ca,usa,2012年8月)中提出的局部立方体贴图混合权重计算方法。
[0289]
图32是描绘图22所示汽车的有光泽表面的颜色信息检索的图示。在图32中,来自ar设备3205的两(2)条原始光线3215、3210(图28的步骤2840)从源对象(汽车)3220反射。根据图28的步骤2865,出射光线3225背离目标代表对象(鸟)3230,因此仅获得背景颜色信息。出射光线3235被朝向目标(鸟)代表对象3230反射,并且具有交点3240,该交点是有效的交点。
[0290]
反射的出射光线3245、3247在提供与面板代表对象3270和树代表对象3275的有效相交的交点3250、3255、3260处命中目标代表对象,因此可以读取玻璃面板和树的颜色信息。然而,光线3265是局部表面处的法向向量,并且不与目标几何结构(树和玻璃面板)相交。
[0291]
尽管上文已参考具体实施方案描述了本实施方案,但本公开不限于具体实施方案,并且落入权利要求的范围内的修改对于本领域技术人员将是显而易见的。
[0292]
在参考前述例示性实施方案时,本领域技术人员会想到许多进一步的修改和变化,这些例示性实施方案仅作为示例给出并且不旨在限制本发明的范围,其仅由所附权利要求确定。具体地讲,在适当的情况下,来自不同实施方案的不同特征可以互换。
技术特征:1.一种方法,包括:识别视频的3d场景中的一个或多个对象的参数集;基于所识别的参数集对所述一个或多个对象进行分组;基于对象类型,确定所述3d场景中的所述一个或多个对象的每个分组的中间结构的空间边界;确定所述3d场景中的所述一个或多个对象的每个分组的所述中间结构的所述空间边界的每个平面的照明贡献;以及基于所述3d场景中的所述一个或多个对象的每个分组的所述中间结构的所述确定的空间边界以及所述确定的所述空间边界的每个平面的照明贡献,提供对所述视频的所述3d场景的渲染。2.根据权利要求1所述的方法,其中确定所述照明贡献包括以下项中的至少一项:针对发光对象确定所述空间边界的每个平面的可见度;以及针对非发光对象确定所述空间边界的每个平面的颜色信息。3.根据权利要求1或2所述的方法,还包括:确定摄像机的所述中间结构的颜色信息。4.根据权利要求1至3中任一项所述的方法,其中所述一个或多个对象包括真实对象和虚拟对象中的至少一者。5.根据权利要求1至4中任一项所述的方法,其中所述参数集包括所述视频的所述3d场景中的对象平面性、对象折射率和对象重要性中的至少一者。6.根据权利要求1至5中任一项所述的方法,还包括确定所述视频的所述3d场景中的所述一个或多个对象中的每个对象的区域,其中所述确定的区域限定所述一个或多个对象中的每个对象的形状。7.根据权利要求1至6中任一项所述的方法,其中所述对象类型是灯、摄像机或其他对象中的一者。8.根据权利要求7所述的方法,其中所述其他对象是平面对象和非平面对象中的一者。9.根据权利要求1至7中任一项所述的方法,其中所述中间结构的所述空间边界被细分。10.根据权利要求7所述的方法,其中所述灯的所述中间结构的所述空间边界是一个平面或一组平面。11.根据权利要求7所述的方法,其中所述摄像机的所述中间结构的所述空间边界是对应于z-near的平面。12.根据权利要求8所述的方法,其中所述平面对象的所述中间结构的所述空间边界是对应于所述平面对象的平面。13.根据权利要求8所述的方法,其中所述非平面对象的所述中间结构的所述空间边界是包围所述确定的区域的一组平面。14.一种用于渲染视频的3d场景的设备,包括:至少一个处理器,所述至少一个处理器被配置为:识别所述视频的所述3d场景中的一个或多个对象的参数集;基于所识别的参数集对所述一个或多个对象进行分组;
基于对象类型,确定所述3d场景中的所述一个或多个对象的每个分组的中间结构的空间边界;确定所述3d场景中的所述一个或多个对象的每个分组的中间结构的所述空间边界的每个平面的照明贡献;以及基于所述3d场景中的所述一个或多个对象的每个分组的所述中间结构的所述确定的空间边界以及所述确定的所述空间边界的每个平面的照明贡献,提供对所述视频的所述3d场景的渲染。15.根据权利要求14所述的设备,其中所述处理器被配置为通过确定以下项中的至少一项来确定所述照明贡献:针对发光对象确定所述空间边界的每个平面的可见度;以及针对非发光对象确定所述空间边界的每个平面的颜色信息。16.根据权利要求15所述的设备,其中所述处理器被配置为从摄像机确定所述中间结构的颜色信息。17.根据权利要求14至16中任一项所述的设备,其中所述一个或多个对象包括真实对象和虚拟对象中的至少一者。18.根据权利要求14至17中任一项所述的设备,其中所述参数集包括所述视频的所述3d场景中的对象平面性、对象折射率和对象重要性中的至少一者。19.根据权利要求14至18中任一项所述的设备,其中所述处理器被配置为确定所述视频的所述3d场景中的所述一个或多个对象中的每个对象的区域,其中所述确定的区域限定所述一个或多个对象中的每个对象的形状。20.根据权利要求14至19中任一项所述的设备,其中所述对象类型是灯、摄像机或其他对象中的一者。21.根据权利要求20所述的设备,其中所述其他对象是平面对象和非平面对象中的一者。22.根据权利要求14至20中任一项所述的设备,其中所述中间结构的所述空间边界被细分。23.根据权利要求20所述的设备,其中所述灯的所述中间结构的所述空间边界是一个平面或一组平面。24.根据权利要求20所述的设备,其中所述摄像机的所述中间结构的所述空间边界是对应于z-near的平面。25.根据权利要求21所述的设备,其中所述平面对象的所述中间结构的所述空间边界是对应于所述平面对象的平面。26.根据权利要求21所述的设备,其中所述非平面对象的所述中间结构的所述空间边界是对应于所述确定的区域的一组平面。27.一种设备,所述设备包括根据权利要求14至26中任一项所述的设备,以及渲染设备。28.根据权利要求27所述的设备,所述设备被配置为通过使用摄像机光线、反射光线、折射光线和阴影光线中的至少一者进行光线跟踪来渲染所述3d场景。29.根据权利要求1至13中任一项所述的方法,还包括基于所述3d场景中的所述一个或
多个对象的每个分组的所述中间结构的所述确定的空间边界以及所述确定的所述空间边界的每个平面的照明贡献,来渲染所述视频的所述3d场景。30.根据权利要求29所述的方法,其中通过使用摄像机光线、反射光线、折射光线和阴影光线中的至少一者进行光线跟踪来执行所述渲染。31.一种方法,包括:识别视频的3d场景中的一个或多个对象的参数集;基于所识别的参数集确定所述3d场景中的所述一个或多个对象的中间结构;基于对应的替代对象,确定每个对象的所述中间结构的颜色贡献;以及基于所述中间结构的所述确定的颜色贡献,提供对所述视频的所述3d场景的渲染。32.根据权利要求31所述的方法,其中所述参数集包括对象形状的复杂度、关于有反射/有折射的对象的对象位置和/或距离以及环境重要性值中的至少一者。33.根据权利要求32所述的方法,其中所述环境重要性值与来自所述3d场景中的对象的颜色贡献有关。34.根据权利要求31至33中任一项所述的方法,其中所述对象包括真实对象和虚拟对象中的至少一者。35.根据权利要求33所述的方法,其中来自所述3d场景中的对象的所述颜色贡献由反射光线承载。36.根据权利要求33所述的方法,其中来自所述3d场景中的对象的所述颜色贡献由反射光线和折射光线承载。37.根据权利要求31至36中任一项所述的方法,其中所述3d场景中的所选择对象是源对象,并且其中所述3d场景中的未选择对象是目标对象。38.根据权利要求37所述的方法,其中所述源对象的所述对应替代对象具有图元形状。39.根据权利要求31至38中任一项所述的方法,其中由虚拟摄像机投影参数确定基于所述对应替代对象的所述颜色贡献。40.根据权利要求39所述的方法,其中所述虚拟摄像机投影参数包括近平面距离、远平面距离和视场(fov)角度中的至少一者。41.一种用于渲染视频的3d场景的设备,包括:至少一个处理器,所述至少一个处理器被配置为:识别视频的3d场景中的一个或多个对象的参数集;基于所识别的参数集确定所述3d场景中的所述一个或多个对象的中间结构;基于对应的替代对象,确定每个对象的所述中间结构的颜色贡献;以及基于所述中间结构的所述确定的颜色贡献,提供对所述视频的所述3d场景的渲染。42.根据权利要求41所述的设备,其中所述参数集包括对象形状的复杂度、关于有反射/有折射的对象的对象位置和/或距离以及环境重要性值中的至少一者。43.根据权利要求42所述的设备,其中所述环境重要性值与来自所述3d场景中的对象的颜色贡献有关。44.根据权利要求41至43中任一项所述的设备,其中所述对象包括真实对象和虚拟对象中的至少一者。45.根据权利要求43所述的设备,其中来自所述3d场景中的对象的所述颜色贡献由反
射光线承载。46.根据权利要求43所述的设备,其中来自所述3d场景中的对象的所述颜色贡献由反射光线和折射光线承载。47.根据权利要求41至46中任一项所述的设备,其中所述3d场景中的所选择对象是源对象,并且其中所述3d场景中的未选择对象是目标对象。48.根据权利要求47所述的设备,其中所述源对象的所述对应替代对象具有图元形状。49.根据权利要求41至48中任一项所述的设备,其中由虚拟摄像机投影参数确定基于所述对应替代对象的所述颜色贡献。50.根据权利要求49所述的设备,其中所述虚拟摄像机投影参数包括近平面距离、远平面距离和视场(fov)角度中的至少一者。51.一种包括指令的计算机程序产品,所述指令在被执行时,使得处理器实现权利要求1至13和29至40中任一项所述的方法。
技术总结本发明公开了一种用于渲染3D场景的方法和系统。识别该3D场景中的对象的参数集。基于识别的参数集将对象分组,并且基于对象类型确定对象分组的中间结构的空间边界。针对该3D场景中的对象确定中间结构的空间边界的每个平面的照明贡献。然后基于该3D场景中的每个对象的中间结构的确定的空间边界和照明贡献来渲染该场景。染该场景。染该场景。
技术研发人员:卢贺齐 P
受保护的技术使用者:交互数字CE专利控股有限公司
技术研发日:2021.03.15
技术公布日:2022/12/1