一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

体素化模型构建方法、装置、存储介质和电子设备与流程

2022-08-31 23:03:21 来源:中国专利 TAG:


1.本公开涉及图像处理技术领域,尤其涉及一种体素化模型构建方法、装置、存储介质和电子设备。


背景技术:

2.三维网格的体素化在图形渲染领域和物理模拟领域中运用非常广泛。例如在图形渲染中通过将场景体素化为体素来简化场景,在物理模拟中将场景中的交互对象体素化为流体的边界,以进行流体碰撞模拟,如图1中,从左及右依次为原始几何体到逐渐精细的体素化模型。
3.目前的体素化大部分是依靠光栅化,但是光栅化过程中需要对原始几何体中的每个最小单元,也就是对每个三角形分别从三个不同方向分别渲染一次,而整个原始几何体中包含有无数的三角形,渲染的次数过多,从而导致目前体素化的效率较低。


技术实现要素:

4.本公开提供了一种体素化模型构建方法、装置、存储介质和电子设备,进而提高体素化效率。
5.第一方面,本公开一个实施例提供了一种体素化模型构建方法,包括:
6.确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识;
7.将待构建对象拆分为包含有多个像素单元的二维平面纹理;其中,各像素单元包含有对应的命中标识与方向标识;
8.基于二维平面纹理中多个像素单元对应的命中标识与方向标识构建待构建对象的体素化模型。
9.在本公开一个可选实施例中,确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识,包括:
10.确定待构建对象的形状参数与对象位置参数;
11.基于形状参数与对象位置参数确定虚拟光源;其中,虚拟光源包含多个用于发射虚拟光线的虚拟子光源;
12.基于虚拟光源发射出的虚拟光线照射待构建对象,确定待构建对象被虚拟光线照射时各体素单元的命中标识与方向标识。
13.在本公开一个可选实施例中,确定待构建对象被虚拟光线照射时各体素单元的命中标识与方向标识,包括:
14.确定虚拟光线的光线原点位置参数、虚拟光线的照射方向;
15.根据各光线原点位置参数、虚拟光线的照射方向确定各体素单元的命中标识与方向标识。
16.在本公开一个可选实施例中,根据各光线原点位置参数、虚拟光线的照射方向确定各体素单元的命中标识与方向标识,包括:
17.针对每个体素单元,根据光线原点位置参数与虚拟光线的照射方向确定体素单元是否被虚拟光线命中;
18.若体素单元被虚拟光线命中,则将体素单元的命中标识标记为占用标识;
19.若体素单元未被虚拟光线命中,则将体素单元的命中标识标记为占空标识。
20.在本公开一个可选实施例中,根据各光线原点位置参数、虚拟光线的照射方向确定各体素单元的命中标识与方向标识,还包括:
21.若体素单元被虚拟光线命中,确定体素单元被虚拟光线命中的表面为虚拟光线的入光面还是出光面;
22.若体素单元被虚拟光线命中的表面为虚拟光线的入光面,则将体素单元的方向标识确定为正向标识;
23.若体素单元被虚拟光线命中的表面为虚拟光线的出光面,则将体素单元的方向标识确定为反向标识。
24.在本公开一个可选实施例中,确定虚拟光线的光线原点位置参数,包括:
25.确定各虚拟子光源对应的光源位置参数;
26.确定待构建对象的中心位置参数;
27.根据光源位置参数、中心位置参数与预设边界参数确定各虚拟子光源发射的虚拟光线的光线原点位置参数。
28.在本公开一个可选实施例中,将待构建对象拆分为包含有多个像素单元的二维平面纹理,包括:
29.将待构建对象拆分为预设拆分维度个维度单元;
30.确定各维度单元在二维平面纹理中对应的纹理单元;
31.确定各体素单元在各纹理单元中对应的像素单元;
32.将各体素单元对应的命中标识与方向标识同步至对应的像素单元,得到包含有多个像素单元的二维平面纹理。
33.在本公开一个可选实施例中,确定各体素单元在各纹理单元中对应的像素单元,包括:
34.确定待构建对象中各体素单元的体素位置信息;
35.确定各纹理单元的平铺偏移量;
36.针对每个体素单元,根据世界坐标信息与体素单元所在的纹理单元对应的平铺偏移量,确定体素单元对应的像素位置;
37.将像素位置所在的像素单元确定为体素单元在纹理单元中对应的像素单元。
38.第二方面,本公开一个实施例提供了一种体素化模型构建装置,该装置包括:
39.确定模块,用于确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识;
40.拆分模块,用于将待构建对象拆分为包含有多个像素单元的二维平面纹理;其中,各像素单元包含有对应的命中标识与方向标识;
41.构建模块,用于基于二维平面纹理中多个像素单元对应的命中标识与方向标识构建待构建对象的体素化模型。
42.第三方面,本公开一个实施例提供了一种计算机可读存储介质,其上存储有计算
机程序,该计算机程序被处理器执行时实现如上的方法。
43.第四方面,本公开一个实施例提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行如上的方法。
44.本公开的技术方案具有以下有益效果:
45.上述体素化模型构建方法先确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识,然后将待构建对象拆分为包含有多个像素单元的二维平面纹理,最近只需要基于二维平面纹理中多个像素单元对应的命中标识与方向标识构建待构建对象的体素化模型。全程无需光栅化,同时只需要最后从二维平面纹理到三维体素化模型的构建时渲染一次即可,避免了传统方法中需要对待构建对象的原始几何体中每个三角形分别从三个不同方向分别渲染一次的步骤,从而解决了目前体素化的效率较低的技术问题,达到了提高体素化效率的技术效果。
46.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
47.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1示出本示例性实施方式中一种体素化方法过程示意;
49.图2示出本示例性实施方式中一种体素化模型构建方法的流程图;
50.图3示出本示例性实施方式中虚拟光线穿透待构建模型示意图;
51.图4示出本示例性实施方式中一种体素化模型构建方法的流程图;
52.图5示出本示例性实施方式中虚拟光源与待构建模型结构示意图;
53.图6示出本示例性实施方式中一种体素化模型构建方法的流程图;
54.图7示出本示例性实施方式中一种体素化模型构建方法的流程图;
55.图8示出本示例性实施方式中虚拟光线穿透体素单元的示意图;
56.图9示出本示例性实施方式中一种体素化模型构建方法的流程图;
57.图10示出本示例性实施方式中一种体素化模型构建方法的流程图;
58.图11示出本示例性实施方式中一种体素化模型构建方法的流程图;
59.图12示出本示例性实施方式中将待构建对象拆分为二维平面纹理的示意图;
60.图13示出本示例性实施方式中一种体素化模型构建方法的流程图;
61.图14示出本示例性实施方式中基于二维平面纹理生成体素化模型的示意图;
62.图15示出本示例性实施方式中扫描二维平面纹理示意图;
63.图16示出本示例性实施方式中另一种扫描二维平面纹理示意图;
64.图17示出本示例性实施方式中一种体素化模型构建装置结构示意图;
65.图18示出本示例性实施方式中一种电子设备的结构示意图。
具体实施方式
66.现在将参考附图更全面地描述示例性实施方式。然而,示例性实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例性实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
67.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
68.附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
69.相关技术中,三维网格的体素化在图形渲染领域和物理模拟领域中运用非常广泛。例如在图形渲染中通过将场景体素化为体素来简化场景,在物理模拟中将场景中的交互对象体素化为流体的边界,以进行流体碰撞模拟,如图1中,从左及右依次为原始几何体到逐渐精细的体素化模型。目前的体素化大部分是依靠光栅化,但是光栅化过程中需要对原始几何体中的每个最小单元,也就是对每个三角形分别从三个不同方向分别渲染一次,而整个原始几何体中包含有无数的三角形,渲染的次数过多,从而导致目前体素化的效率较低。
70.鉴于上述问题,本公开实施例提供了一种体素化模型构建方法,先确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识,然后将待构建对象拆分为包含有多个像素单元的二维平面纹理,最近只需要基于二维平面纹理中多个像素单元对应的命中标识与方向标识构建待构建对象的体素化模型。全程无需光栅化,同时只需要最后从二维平面纹理到三维体素化模型的构建时渲染一次即可,避免了传统方法中需要对待构建对象的原始几何体中每个三角形分别从三个不同方向分别渲染一次的步骤,从而解决了目前体素化的效率较低的技术问题,达到了提高体素化效率的技术效果。
71.以下对体素化的过程进行简要阐述:
72.体素化(voxelization)是将物体的几何形式表示转换成最接近该物体的体素表示形式,产生体数据集,其不仅包含模型的表面信息,而且还包含模型的内容属性。需要解释的是,模型的空间体素与表示图像的二维像素较为相似,将二维的点扩展到三维的立方体单元。体素化一般包括模型表面的体素化和模型内部的体素化。
73.模型表面的体素化:在对模型表面进行体素化时,首先会计算出3d模型的包围盒(也就是模型的外表面,计为aabb),然后根据空间分辨率对包围盒进行划分,得到多个空间像素列表。然后对构成3d模型在二维平面上的平面多边形或平面三角形列表进行遍历,得
到这些基本体元所对应的包围盒。然后由包围盒(aabb)求交运算得到这些基本体元所能影响到的体素,将这些体素作为判断与虚拟光线是否相交的基本对象。为了进一步提高判断精准性,一般使用三角形与包围盒(aabb)的求交运算确定这些基本体元所能影响到的最终体素,并将这些体素标记为非空或者被命中。
74.模型内部的体素化:在完成3d模型表面体素化操作得到用于表示模型体素的“外壳”,例如先将对应的3d模型建立空间八叉树,通过这颗八叉树进行基本体元面片的求交操作。然后对3d模型中的所有空体素从其中心位置以轴对齐方向发射两条射线,这两条射线的方向相反,但基本方向都是轴对齐的。对于这两条的射线利用空间模型的八叉树来得到各空体素的相交位置,并得到相交点的法向量及到相交带你的距离,然后根据这两点法向量之间的关系来判断得到当前体素是在3d模型的内部或是3d模型的外部。将这样的操作施加于每一个空的体素转换就可完成对3d模型内部的体素化操作。
75.以上是将一个像素作为一个像素单元所作的解释,需要解释的是,本公开实施例中的体素单元可以为一个体素,也可以为由若干个相邻体素构成的一个体素区域,本公开实施例不作具体限定。
76.请参见图2,本公开实施例提供了一种体素化模型构建方法,应用于模型处理系统,用于对原始几何体,也就是待构建对象进行体素化处理,以生成对应的体素化模型。其中,该体素化模型构建方法包括如下步骤201-步骤203:
77.步骤201、确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识。
78.其中,命中标识用于表征该体素单元是否被该虚拟光线击中,方向标识用于表征该体素单元的表面的朝向,例如为虚拟光线的入光面还是出光面。待构建对象也就是原始几何体一般为中空的,包括外表面与内表面,例如图3中,虚拟光线305在照射时依次照射于第一外表面301-第一内表面302-第二内表面303-第二外表面304,直至出射至外部。那么第一外表面301与第二内表面303均为入光面,该方向标识即为第一方向标识;第一内表面302与第二外表面304均为出光面,该方向标识即为第二方向标识,第一方向标识与第二方向标识相反。相反的,若虚拟光线在照射时依次照射于第二外表面304-第二内表面303-第一内表面302-第一外表面301,直至出射至外部,那么第一外表面301与第二内表面303均为出光面,该方向标识即为第二方向标识;第一内表面302与第二外表面304均为入光面,该方向标识即为第一方向标识。
79.步骤202、将待构建对象拆分为包含有多个像素单元的二维平面纹理。
80.其中,各像素单元包含有对应的命中标识与方向标识。待构建对象即为原始几何体,该原始几何体中包含多个体素单元,每个体素单元即为一个由多个像素单元构成的柱状体。本公开实施例将三维空间的待构建对象中的各体素单元映射为对应的像素单元,所有的像素单元即构成了该待构建对象对应的二维平面纹理。在三维空间中,各体素单元包含有其对应的命中标识,将其平面化为二维平面后,各像素单元也具有其在体素单元中具有的命中标识与方向标识。
81.步骤203、基于二维平面纹理中多个像素单元对应的命中标识与方向标识构建待构建对象的体素化模型。
82.其中,命中标识用于表征该像素单元在实际场景中是否为光线命中点,例如在实际场景中被虚拟光线命中的那个点正处于该体素单元内,那么该体素单元的标识即为占用
标识,否则为占空标识;该方向标识用于表征击中的表面为虚拟光线的入光面还是出光面,在得到这两个信息后,通过扫描各像素单元的命中标识与方向标识即可确定各像素单元对应的模型单元,然后基于所有的模型单元进行渲染一次即可得到该待构建对象的体素化模型。
83.本公开实施例先确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识,然后将待构建对象拆分为包含有多个像素单元的二维平面纹理,最近只需要基于二维平面纹理中多个像素单元对应的命中标识与方向标识构建待构建对象的体素化模型。全程无需光栅化,同时只需要最后从二维平面纹理到三维体素化模型的构建时渲染一次即可,避免了传统方法中需要对待构建对象的原始几何体中每个三角形分别从三个不同方向分别渲染一次的步骤,从而解决了目前体素化的效率较低的技术问题,达到了提高体素化效率的技术效果。
84.请参见图4,在本公开一个可选实施例中,上述步骤202、确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识,包括如下步骤401-步骤403:
85.步骤401、确定待构建对象的形状参数与对象位置参数。
86.请参见图5,待构建对象如图5中的三维球体,那么先确定该三维球体的形状参数,该形状参数可以为轮廓的三维坐标,也可以为分辨率,本实施例不作具体限定。该对象位置参数是指该待构建对象的位置坐标,可以为普通三维空间坐标,也可以为世界坐标,本实施例不作具体限定。
87.步骤402、基于形状参数与对象位置参数确定虚拟光源。
88.其中,虚拟光源包含多个用于发射虚拟光线的虚拟子光源。根据形状参数确定一个与待构建对象形状相匹配的轮廓,然后根据对象位置参数将该黑色阴影部移动至与该待构建对象对应的位置。例如图5中由待构建对象的位置沿 y的方向平移若干个单元,即得到了该待构建对象501的虚拟光源502,如图5中的黑色阴影部分。同时,在本公开一个可选的实施例中,还可以预先设定一个预设范围框,通过该预设范围框限定生成的虚拟光源的外轮廓范围,以避免生成的虚拟光源范围过大,而影响体素化的效率。例如图5中,通过该预先设定的矩形框,将虚拟光源的范围限定至外部白色区域部分。
89.步骤403、基于虚拟光源发射出的虚拟光线照射待构建对象,确定待构建对象被虚拟光线照射时各体素单元的命中标识与方向标识。
90.在基于步骤402确定得到虚拟光源后,控制该虚拟光源发射出虚拟光线,需要指出的是,本公开实施例中虚拟光源产生的虚拟光线均为平行光线。请继续参见图5,通过各虚拟光线平行照射至待构建对象,通过虚拟光线的光路与待构建对象是否命中便可确定当前体素单元是否被击中,也就得到了对应的命中标识。在命中的情况下,请继续参见上述图3,根据击中表面为虚拟光线的入光面还是出光面确定得到对应的方向标识。
91.本公开实施例先确定待构建对象的形状参数与对象位置参数,然后基于形状参数与对象位置参数确定虚拟光源,确定得到的虚拟光源与待构建对象的适配性更高,最后基于虚拟光源发射出的虚拟光线照射待构建对象,便可确定得到待构建对象被虚拟光线照射时各体素单元的命中标识与方向标识,避免了传统方法中的复杂算法,命中标识与方向标识的确定方法更为简单高效,在保障其可靠性的前提下大大提高了效率,进一步提高本公开实施例体素化的可靠性与效率。
92.请参见图6,在本公开一个可选实施例中,上述步骤403、确定待构建对象被虚拟光线照射时各体素单元的命中标识与方向标识,包括如下步骤601-步骤602:
93.步骤601、确定虚拟光线的光线原点位置参数、虚拟光线的照射方向。
94.其中,光线原点位置参数是指虚拟光线在虚拟光源中的各子虚拟光源中的具体坐标位置。因为每个子虚拟光源均为一个发光像素,而发光的是具体的一个发光点,而非整个发光像素,即该虚拟光线对应的原点是指一个具体的发光原点,通过这样的方式确定虚拟光线与体素单元的命中标识,可以大大提高其命中标识的可靠性与精确性。虚拟光线的照射方向可以根据实际情况具体设定,例如图5中的-y方向,本实施例不作具体限定,可根据实际情况具体设置。
95.步骤602、根据各光线原点位置参数、虚拟光线的照射方向确定各体素单元的命中标识与方向标识。
96.在得到各虚拟光线对应的光线原点位置参数与照射方向后,便可通过几何模拟的方式,或者坐标计算的方式快速的确定各体素单元的命中标识与方向标识。
97.本公开实施例先确定虚拟光线的光线原点位置参数、虚拟光线的照射方向,然后根据各光线原点位置参数、虚拟光线的照射方向便可快速的确定各体素单元的命中标识与方向标识,简单方便,可以大大降低命中标识与方向标识确定的难度,以及提高确定效率。
98.请参见图7,在本公开一个可选实施例中,上述步骤602、根据各光线原点位置参数、虚拟光线的照射方向确定各体素单元的命中标识与方向标识,包括如下步骤701-步骤703:
99.步骤701、针对每个体素单元,根据光线原点位置参数与虚拟光线的照射方向确定体素单元是否被虚拟光线命中。
100.步骤702、若体素单元被虚拟光线命中,则将体素单元的命中标识标记为占用标识。
101.步骤703、若体素单元未被虚拟光线命中,则将体素单元的命中标识标记为占空标识。
102.请参见图8,针对体素单元810,光线原点位置参数为(x0,y0,z0)虚拟光线的照射方向为-y方向,则以(x0,y0,z0)为原点沿-y方向发射一射线,该射线命中了该体素单元810,且依次穿透其第一表面811,第二表面812,第三表面813与第四表面814,那么该体素单元即被该虚拟光线命中,则将该体素单元标记为占用标识,用以表征该体素单元被击中。同时,该体素单元820并未被虚拟光线击中,则将该体素单元标记为占空标识,用以表征该体素单元未被击中。
103.本公开实施例基于体素单元是否被虚拟光线命中,将体素单元标记为占用标识与占空标识,可以方便后续对各体素单元对应的像素单元进行命中结果的扫描,以快速确定各像素单元的光线命中结果,大大提高扫描效率,进一步提高本公开实施例体素化的效率。
104.请参见图9,在本公开一个可选实施例中,上述步骤602、根据各光线原点位置参数、虚拟光线的照射方向确定各体素单元的命中标识与方向标识,还包括如下步骤901-步骤903:
105.步骤901、若体素单元被虚拟光线命中,确定体素单元被虚拟光线命中的表面为虚拟光线的入光面还是出光面。
106.步骤902、若体素单元被虚拟光线命中的表面为虚拟光线的入光面,则将体素单元的方向标识确定为正向标识。
107.步骤903、若体素单元被虚拟光线命中的表面为虚拟光线的出光面,则将体素单元的方向标识确定为反向标识。
108.例如,请继续参见上述图8,虚拟光线命中了体素单元810,且依次穿透其第一表面811,第二表面812,第三表面813与第四表面814。其中,第一表面811和第三表面813为虚拟光线的入光面,那么将该第一表面811和第三表面813的方向标识标记为正向标识;对应的,第二表面812和第四表面814为虚拟光线的出光面,那么将该第二表面812和第四表面814的方向标识标记为反向标识。
109.本公开实施例基于体素单元被虚拟光线命中的表面为虚拟光线的入光面还是出光面,将各体素单元的方向标识标记为正向标识与反向标识,可以大大提高后续对各体素单元的命中方向的扫描速度,快速确定各像素单元的命中方向,大大提高扫描效率,进一步提高本公开实施例体素化的效率。
110.请参见图10,在本公开一个可选实施例中,上述步骤601、确定虚拟光线的光线原点位置参数,包括如下步骤1001-步骤1003:
111.步骤1001、确定各虚拟子光源对应的光源位置参数。
112.虚拟子光源即为各发光像素,即各光源位置参数即为各发光像素对应的位置坐标。
113.步骤1002、确定待构建对象的中心位置参数。
114.其中,该中心位置参数可以根据待构建对象的各体素单元坐标确定,也可以根据预先设定的范围框确定,例如根据图5中的矩形框确定,本实施例不作具体限定。
115.步骤1003、根据光源位置参数、中心位置参数与预设边界参数确定各虚拟子光源发射的虚拟光线的光线原点位置参数。
116.可以通过如下公式(1)计算得到该光线原点位置参数:
[0117][0118]
公式(1)中,pos表示中心位置参数,size表示预设边界参数,pixelcoord是光源位置参数,x、y、z分别为空间坐标轴。
[0119]
本公开实施例先确定各虚拟子光源对应的光源位置参数与待构建对象的中心位置参数,然后根据光源位置参数、中心位置参数与预设边界参数确定各虚拟子光源发射的虚拟光线的光线原点位置参数,通过光线原点位置确定虚拟光线,得到的虚拟光线更为可靠,通过该虚拟光线确定的各体素单元的命中标识与方向标识可靠性也更高,进一步提高本公开实施例体素化的可靠性。
[0120]
请参见图11,在本公开一个可选实施例中,上述步骤202、将待构建对象拆分为包含有多个像素单元的二维平面纹理,包括如下步骤1101-步骤1104:
[0121]
步骤1101、将待构建对象拆分为预设拆分维度个维度单元。
[0122]
请参见图12,左边的4
×4×
4的矩形几何体即为待构建对象,预先设定的预设拆分维度为4,也就是将该矩形几何体拆分为1201a、1202a、1203a与1204a四个维度单元。
[0123]
步骤1102、确定各维度单元在二维平面纹理中对应的纹理单元。
[0124]
请继续参见图12,其中,左图中的维度单元1201a对应右图中的纹理单元1201b,维度单元1202a对应右图中的纹理单元1202b,维度单元1203a对应右图中的纹理单元1203b,维度单元1204a对应右图中的纹理单元1204b。
[0125]
步骤1103、确定各体素单元在各纹理单元中对应的像素单元。
[0126]
请继续参见图12,例如左图中黑色阴影部分的各体素单元在右图二维平面中分别对应的黑色阴影部分的像素单元。例如图12中,左图中的维度单元1201a中的“l”型体素单元在右图中纹理单元1201b中对应也为“l”型,占用对应的“l”型区域的像素单元。
[0127]
步骤1104、将各体素单元对应的命中标识与方向标识同步至对应的像素单元,得到包含有多个像素单元的二维平面纹理。
[0128]
例如图12中左图中的体素单元与右图中的像素单元一一对应,将各体素单元中的命中标识与方向标识同步至右图中的二维平面纹理中对应的像素单元,即可得到可以用于表征待构建对象几何形状的二维平面纹理。
[0129]
本公开实施例提供先将待构建对象拆分为预设拆分维度个维度单元,然后将各体素单元对应的命中标识与方向标识同步至对应的像素单元,即可得到包含有多个像素单元的二维平面纹理,可以保障各体素单元的命中标识与方向标识在二维平面中的一一对应,可靠性更高,且方法简单快捷,进一步可以提高本公开实施例体素化的可靠性与效率。
[0130]
请参见图13,在本公开一个可选实施例中,上述步骤1103、确定各体素单元在各纹理单元中对应的像素单元,包括如下步骤1301-步骤1304:
[0131]
步骤1301、确定待构建对象中各体素单元的体素位置信息。
[0132]
其中,体素位置信息用于表征各体素的具体位置,例如可以为世界坐标或者三维坐标等均可,本实施例不作具体限定。
[0133]
步骤1302、确定各纹理单元的平铺偏移量。
[0134]
平铺偏移量是指体素坐标系中各体素单元映射至二维平面,在二维平面中以某一点为基准的偏移量。可以基于待构建对象的深度,例如在z轴上深度来确定平铺的偏移量。例如图12中待构建对象为左图中的4
×4×
4的矩形几何体,那么该对应的偏移量可以设置为4,即在右图中以1201b为基础,其他维度单元均以4个像素单元为偏移量进行一一映射为各纹理单元或像素单元。
[0135]
步骤1303、针对每个体素单元,根据世界坐标信息与体素单元所在的纹理单元对应的平铺偏移量,确定体素单元对应的像素位置。
[0136]
在确定得到各体素单元对应的偏移量与原始的体素位置信息后,基于该偏移量即可得到对应的时间位置信息,也就是上述的像素位置。
[0137]
步骤1304、将像素位置所在的像素单元确定为体素单元在纹理单元中对应的像素单元。
[0138]
在通过位置计算得到各体素单元在二维平面中对应的像素位置后,便可将该位置对应的像素单元确定为该体素单元对应的像素单元。同时,可以将通过上述步骤得到的命中标识与方向标识同步至对应的像素单元。
[0139]
本公开实施例先确定各纹理单元的平铺偏移量,然后基于待构建对象中各体素单元的体素位置信息与该平铺偏移量即可计算得到各像素单元对应的实际像素位置,可以快速的确定各体素单元在二维平面纹理中的像素单元,高效快捷,且可靠性高。
[0140]
在本公开一个可选实施例中,在得到包含有各像素单元的二维平面纹理后,可以通过扫描各像素单元对应的命中标识与方向标识后以生成对应的体素化模型,例如图14中,在得到左图中的二维平面纹理后,基于raymarch(光线步进)等技术生成如右图中的体素化模型。全过程只需要在此节点进行一次渲染即可,避免了传统方法中需要对待构建对象的原始几何体中每个三角形分别从三个不同方向分别渲染一次的步骤,大大提高了体素化效率。
[0141]
在本公开一个可选实施例中,在对各像素单元的命中标识与方向标识进行扫描时可以通过如下方式:
[0142]
请参见图15,例如,命中标识为占用标识为“1”,占空标识为“0”,正向标识为“1”,方向标识为“0”,依次对各像素单元进行扫描,得到图14中的命中标识与方向标识。其中需要解释的是,因为模型一般为中空的,因此,本公开实施例将第一个命中的像素单元记为“1”,将后续与之连续的像素单元均记为“0”,直至最后一个被命中的像素单元记为“1”,其中,第一个命中的像素单元即为模型的第一面,最后一个命中的像素单元即为模型的第二面,该第一面与第二面之间均为中空,即记为“0”,从而使得其形成一个闭环,以方便扫描与计算。
[0143]
在本公开一个可选实施例中,请参见图16,针对部分体素单元重叠,例如图16中的交点1601,以及边界的尖锐角如图16中的拐点1602,针对该种情况,本公开实施例将其统一标记为占空标记,以防止针对同一像素单元重复处理,大大提高体素化的可靠性。
[0144]
请参见图17,为了实现上述体素化模型构建方法,本公开的一个实施例中提供一种体素化模型构建装置1700,图17示出了体素化模型构建装置1700的示意性架构图,该体素化模型构建装置1700包括:确定模块1710、拆分模块1720和构建模块1730,其中:
[0145]
该确定模块1710,用于确定待构建对象被虚拟光源照射时各体素单元的命中标识与方向标识;
[0146]
拆分模块1720,用于将待构建对象拆分为包含有多个像素单元的二维平面纹理;其中,各像素单元包含有对应的命中标识与方向标识;
[0147]
该构建模块1730,用于基于二维平面纹理中多个像素单元对应的命中标识与方向标识构建待构建对象的体素化模型。
[0148]
在一个可选的实施例中,该确定模块1710具体用于,确定待构建对象的形状参数与对象位置参数;基于形状参数与对象位置参数确定虚拟光源;其中,虚拟光源包含多个用于发射虚拟光线的虚拟子光源;基于虚拟光源发射出的虚拟光线照射待构建对象,确定待构建对象被虚拟光线照射时各体素单元的命中标识与方向标识。
[0149]
在一个可选的实施例中,该确定模块1710具体用于,确定虚拟光线的光线原点位置参数、虚拟光线的照射方向;根据各光线原点位置参数、虚拟光线的照射方向确定各体素单元的命中标识与方向标识。
[0150]
在一个可选的实施例中,该确定模块1710具体用于,针对每个体素单元,根据光线原点位置参数与虚拟光线的照射方向确定体素单元是否被虚拟光线命中;若体素单元被虚
拟光线命中,则将体素单元的命中标识标记为占用标识;若体素单元未被虚拟光线命中,则将体素单元的命中标识标记为占空标识。
[0151]
在一个可选的实施例中,该确定模块1710还用于,若体素单元被虚拟光线命中,确定体素单元被虚拟光线命中的表面为虚拟光线的入光面还是出光面;若体素单元被虚拟光线命中的表面为虚拟光线的入光面,则将体素单元的方向标识确定为正向标识;若体素单元被虚拟光线命中的表面为虚拟光线的出光面,则将体素单元的方向标识确定为反向标识。
[0152]
在一个可选的实施例中,该确定模块1710具体用于,确定各虚拟子光源对应的光源位置参数;确定待构建对象的中心位置参数;根据光源位置参数、中心位置参数与预设边界参数确定各虚拟子光源发射的虚拟光线的光线原点位置参数。
[0153]
在一个可选的实施例中,该拆分模块1720具体用于,将待构建对象拆分为预设拆分维度个维度单元;确定各维度单元在二维平面纹理中对应的纹理单元;确定各体素单元在各纹理单元中对应的像素单元;将各体素单元对应的命中标识与方向标识同步至对应的像素单元,得到包含有多个像素单元的二维平面纹理。
[0154]
在一个可选的实施例中,该拆分模块1720具体用于,确定待构建对象中各体素单元的体素位置信息;确定各纹理单元的平铺偏移量;针对每个体素单元,根据世界坐标信息与体素单元所在的纹理单元对应的平铺偏移量,确定体素单元对应的像素位置;将像素位置所在的像素单元确定为体素单元在纹理单元中对应的像素单元。
[0155]
本公开的示例性实施方式还提供了一种计算机可读存储介质,可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。在一种实施方式中,该程序产品可以实现为便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0156]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0157]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0158]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0159]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序
代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。在本公开实施例中,计算机可读存储介质中存储的程序代码被执行时可以实现如上体素化模型构建方法中的任一步骤。
[0160]
请参见图18,本公开的示例性实施方式还提供了一种电子设备1800,可以是信息平台的后台服务器。下面参考图18对该电子设备1800进行说明。应当理解,图18显示的电子设备1800仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
[0161]
如图18所示,电子设备1800以通用计算设备的形式表现。电子设备1800的组件可以包括但不限于:至少一个处理单元1810、至少一个存储单元1820、连接不同系统组件(包括存储单元1820和处理单元1810)的总线1830。
[0162]
其中,存储单元存储有程序代码,程序代码可以被处理单元1810执行,使得处理单元1810执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1810可以执行如图2所示的方法步骤等。
[0163]
存储单元1820可以包括易失性存储单元,例如随机存取存储单元(ram)1821和/或高速缓存存储单元1822,还可以进一步包括只读存储单元(rom)1823。
[0164]
存储单元1820还可以包括具有一组(至少一个)程序模块1825的程序/实用工具1824,这样的程序模块1825包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0165]
总线1830可以包括数据总线、地址总线和控制总线。
[0166]
电子设备1800也可以与一个或多个外部设备2000(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/o)接口1840进行。电子设备1800还可以通过网络适配器1850与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1850通过总线1830与电子设备1800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0167]
在本公开实施例中,电子设备中存储的程序代码被执行时可以实现如上体素化模型构建方法中的任一步骤。
[0168]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0169]
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统
称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
[0170]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献