3D模型渲染方法、装置、设备和存储介质转让专利

申请号 : CN202010118219.7

文献号 : CN111275803A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈思利刘赵梁

申请人 : 北京百度网讯科技有限公司

摘要 :

本申请公开了一种3D模型渲染方法、装置、电子设备和存储介质。涉及渲染技术领域,具体实现方案为:确定当前需要渲染的姿态;根据当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点;获取3D模型在每个目标固定视点下的待渲染可视面片;在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。由此可通过获取每个目标固定视点下的待渲染可视面片,实现了在CPU上对3D模型的快速渲染,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度。

权利要求 :

1.一种3D模型渲染方法,其特征在于,包括:确定当前需要渲染的姿态;

根据所述当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点;

获取所述3D模型在每个目标固定视点下的待渲染可视面片;

在中央处理器CPU上,根据所述3D模型在所述每个目标固定视点下的待渲染可视面片,对所述3D模型进行渲染。

2.根据权利要求1所述的方法,其特征在于,所述多个已标定固定视点通过以下方式预先获得:确定针对所述3D模型的球面,其中,所述球面为以所述3D模型为中心,预设值为半径构成的球体的表面;

在所述球面上均匀选取多个点,并将所述均匀选取的多个点确定为所述多个已标定固定视点。

3.根据权利要求2所述的方法,其特征在于,在获得所述多个已标定固定视点之后,所述方法还包括:预先获得所述3D模型在每个已标定固定视点下的可视面片。

4.根据权利要求3所述的方法,其特征在于,预先获得所述3D模型在每个已标定固定视点下的可视面片,包括:依次按照所述每个已标定固定视点渲染所述3D模型;

在每次完成所述3D模型的渲染时,获取Z缓存区中存放的图像空间每个可见像素的Z坐标;

根据所述Z缓存区在所述每次渲染后所存放的图像空间每个可见像素的Z坐标,获得所述3D模型在所述每个已标定固定视点下的可视面片。

5.根据权利要求1至4中任一项所述的方法,其特征在于,获取所述3D模型在每个目标固定视点下的待渲染可视面片,包括:根据所述每个目标固定视点,从所述3D模型在每个已标定固定视点下的可视面片中,获取所述3D模型在每个目标固定视点下的可视面片;

将所述3D模型在每个目标固定视点下的可视面片进行合并;

将合并后的可视面片确定为所述3D模型在每个目标固定视点下的待渲染可视面片。

6.根据权利要求1至4中任一项所述的方法,其特征在于,根据所述当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点,包括:根据所述当前需要渲染的姿态,确定当前待渲染姿态所对应的视点;

从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点;

将所述最接近的多个固定视点确定为所述多个目标固定视点。

7.根据权利要求6所述的方法,其特征在于,从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点,包括:确定所述当前待渲染姿态所对应的视点与所述3D模型的中心点之间的第一连线;

确定各个已标定固定视点与所述中心点之间的第二连线;

计算所述第一连线与各个第二连线之间的夹角;

根据所述第一连线与各个第二连线之间的夹角,从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点。

8.一种3D模型渲染装置,其特征在于,包括:待渲染姿态的确定模块,用于确定当前需要渲染的姿态;

目标视点确定模块,用于根据所述当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点;

待渲染可视面片获取模块,用于获取所述3D模型在每个目标固定视点下的待渲染可视面片;

渲染模块,用于在中央处理器CPU上,根据所述3D模型在所述每个目标固定视点下的待渲染可视面片,对所述3D模型进行渲染。

9.根据权利要求8所述的装置,其特征在于,还包括:预先标定模块,用于确定针对所述3D模型的球面,其中,所述球面为以所述3D模型为中心,预设值为半径构成的球体的表面;在所述球面上均匀选取多个点,并将所述均匀选取的多个点确定为所述多个已标定固定视点。

10.根据权利要求9所述的装置,其特征在于,还包括:获取模块,用于预先获得所述3D模型在每个已标定固定视点下的可视面片。

11.根据权利要求10所述的装置,其特征在于,所述获取模块具体用于:依次按照所述每个已标定固定视点渲染所述3D模型;

在每次完成所述3D模型的渲染时,获取Z缓存区中存放的图像空间每个可见像素的Z坐标;

根据所述Z缓存区在所述每次渲染后所存放的图像空间每个可见像素的Z坐标,获得所述3D模型在所述每个已标定固定视点下的可视面片。

12.根据权利要求8至11中任一项所述的装置,其特征在于,所述待渲染可视面片获取模块具体用于:根据所述每个目标固定视点,从所述3D模型在每个已标定固定视点下的可视面片中,获取所述3D模型在每个目标固定视点下的可视面片;

将所述3D模型在每个目标固定视点下的可视面片进行合并;

将合并后的可视面片确定为所述3D模型在每个目标固定视点下的待渲染可视面片。

13.根据权利要求8至11中任一项所述的装置,其特征在于,所述目标视点确定模块具体用于:根据所述当前需要渲染的姿态,确定当前待渲染姿态所对应的视点;

从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点;

将所述最接近的多个固定视点确定为所述多个目标固定视点。

14.根据权利要求13所述的装置,其特征在于,所述目标视点确定模块具体用于:确定所述当前待渲染姿态所对应的视点与所述3D模型的中心点之间的第一连线;

确定各个已标定固定视点与所述中心点之间的第二连线;

计算所述第一连线与各个第二连线之间的夹角;

根据所述第一连线与各个第二连线之间的夹角,从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点。

15.一种电子设备,其特征在于,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至7中任一项所述的3D模型渲染方法。

16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至7中任一项所述的3D模型渲染方法。

17.一种3D模型渲染方法,其特征在于,包括:根据当前待渲染姿态所对应的视点,从多个已标定固定视点中确定出多个目标固定视点;

获取3D模型在每个目标固定视点下的待渲染可视面片;

根据所述3D模型在所述每个目标固定视点下的待渲染可视面片,对所述3D模型进行渲染。

说明书 :

3D模型渲染方法、装置、设备和存储介质

技术领域

[0001] 本申请涉及渲染技术领域,尤其涉及一种3D模型渲染方法、装置、电子设备和存储有计算机指令的非瞬时计算机可读存储介质。

背景技术

[0002] 3D渲染是渲染3D模型的计算机绘图的领域。3D渲染用于包括虚拟现实、动画片和电影的各种应用领域。其中,3D物体跟踪算法是增强现实(Augm ented Reality,英文简称为AR)技术产品里的一个重要算法,其中,在通常的3D物体跟踪算法中,需要不时地渲染所追踪的3D物体的模型(如obj格式等),用以对3D物体跟踪算法的姿态做矫正。
[0003] 相关技术中,渲染3D模型一般有两种方法,一种是采用GPU(Graphics Processing Unit,图形处理器)对3D模型进行渲染,另一种是采用CPU(Centra lProcessing Unit,中央处理器)对3D模型进行渲染。其中,采用GPU对3D模型进行渲染时,在AR产品中,追踪一个3D物体时,需要同步地在显示设备(如手机屏幕)上渲染展示用的模型、动画等物料(比如3D说明书,可理解为根据3D物体在手机屏幕上的姿态来渲染一些说明指引动画等),如果频繁地使用GPU渲染跟踪算法所需的3D模型,渲染算法使用的3D模型和渲染展示使用的模型一起工作,会导致手机发热、降频等技术问题,导致用户体验差。而采用CPU对3D模型进行渲染时,由于CPU是串行运算单元,当渲染面片数较多的模型时,导致渲染3D模型速度慢;且由于3D模型的不同造型,部分面片的法向量指向视点所在的半个空间,仍然有被别的面片遮挡的可能,在渲染3D模型时,导致该部分面片造成资源浪费。

发明内容

[0004] 本申请的目的旨在至少在一定程度上解决相关技术中的技术问题之一。
[0005] 为此,本申请的第一个目的在于提出一种3D模型渲染方法,该方法可通过获取每个目标固定视点下的待渲染可视面片,实现了在CPU上对3D模型的快速渲染,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度。
[0006] 本申请的第二个目的在于提出一种3D模型渲染装置。
[0007] 本申请的第三个目的在于提出一种电子设备。
[0008] 本申请的第四个目的在于提出一种存储有计算机指令的非瞬时计算机可读存储介质。
[0009] 本申请的第五个目的在于提出另一种3D模型渲染方法。
[0010] 为达到上述目的,本申请第一方面实施例提出的3D模型渲染方法,包括:
[0011] 确定当前需要渲染的姿态;
[0012] 根据所述当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点;
[0013] 获取所述3D模型在每个目标固定视点下的待渲染可视面片;
[0014] 在中央处理器CPU上,根据所述3D模型在所述每个目标固定视点下的待渲染可视面片,对所述3D模型进行渲染。
[0015] 根据本申请的一个实施例,所述多个已标定固定视点通过以下方式预先获得:确定针对所述3D模型的球面,其中,所述球面为以所述3D模型为中心,预设值为半径构成的球体的表面;在所述球面上均匀选取多个点,并将所述均匀选取的多个点确定为所述多个已标定固定视点。
[0016] 根据本申请的一个实施例,在获得所述多个已标定固定视点之后,所述方法还包括:预先获得所述3D模型在每个已标定固定视点下的可视面片。
[0017] 根据本申请的一个实施例,预先获得所述3D模型在每个已标定固定视点下的可视面片,包括:依次按照所述每个已标定固定视点渲染所述3D模型;在每次完成所述3D模型的渲染时,获取Z缓存区中存放的图像空间每个可见像素的Z坐标;根据所述Z缓存区在所述每次渲染后所存放的图像空间每个可见像素的Z坐标,获得所述3D模型在所述每个已标定固定视点下的可视面片。
[0018] 根据本申请的一个实施例,获取所述3D模型在每个目标固定视点下的待渲染可视面片,包括:根据所述每个目标固定视点,从所述3D模型在每个已标定固定视点下的可视面片中,获取所述3D模型在每个目标固定视点下的可视面片;将所述3D模型在每个目标固定视点下的可视面片进行合并;将合并后的可视面片确定为所述3D模型在每个目标固定视点下的待渲染可视面片。
[0019] 根据本申请的一个实施例,根据所述当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点,包括:根据所述当前需要渲染的姿态,确定当前待渲染姿态所对应的视点;从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点;将所述最接近的多个固定视点确定为所述多个目标固定视点。
[0020] 根据本申请的一个实施例,从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点,包括:确定所述当前待渲染姿态所对应的视点与所述3D模型的中心点之间的第一连线;确定各个已标定固定视点与所述中心点之间的第二连线;计算所述第一连线与各个第二连线之间的夹角;根据所述第一连线与各个第二连线之间的夹角,从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点。
[0021] 为达到上述目的,本申请第二方面实施例提出的3D模型渲染装置,包括:
[0022] 待渲染姿态的确定模块,用于确定当前需要渲染的姿态;
[0023] 目标视点确定模块,用于根据所述当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点;
[0024] 待渲染可视面片获取模块,用于获取所述3D模型在每个目标固定视点下的待渲染可视面片;
[0025] 渲染模块,用于在中央处理器CPU上,根据所述3D模型在所述每个目标固定视点下的待渲染可视面片,对所述3D模型进行渲染。
[0026] 为达到上述目的,本申请第三方面实施例提出的电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请第一方面所述的3D模型渲染方法。
[0027] 为达到上述目的,本申请第四方面实施例提出的存储有计算机指令的非瞬时计算机可读存储介质,包括:所述计算机指令用于使所述计算机执行本申请第一方面所述的3D模型渲染方法。
[0028] 为达到上述目的,本申请第五方便实施例提出的3D模型渲染方法,包括:根据当前待渲染姿态所对应的视点,从多个已标定固定视点中确定出多个目标固定视点;获取3D模型在每个目标固定视点下的待渲染可视面片;根据所述3D模型在所述每个目标固定视点下的待渲染可视面片,对所述3D模型进行渲染。
[0029] 上述申请中的一个实施例具有如下优点或有益效果:可通过从多个已标定固定视点中确定出多个目标固定视点,并根据每个目标固定视点下的待渲染可视面片,来实现在CPU上对3D模型的快速渲染,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题,提高了用户体验。因为采用从多个已标定固定视点中确定出多个目标固定视点,之后获取3D模型在每个目标固定视点下的待渲染可视面片,在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染的技术手段,所以克服了相关技术中在渲染时,部分面片被其他面片遮挡造成的资源浪费,硬件运行时的功耗较大,渲染速度慢等问题;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题。进而达到了在CPU上对3D模型的快速渲染,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题,提高了用户体验技术效果。
[0030] 上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

[0031] 附图用于更好地理解本方案,不构成本申请的限定。其中:
[0032] 图1是根据本申请一个实施例的3D模型渲染方法的流程图。
[0033] 图2是根据本申请一个具体实施例的3D模型渲染方法的流程图。
[0034] 图3是根据本申请一个实施例的获得多个已标定固定视点的方式的流程图。
[0035] 图4是根据本申请一个实施例的确定离当前待渲染姿态所对应的视点最接近的多个固定视点的示意图。
[0036] 图5是根据本申请另一个实施例的3D模型渲染方法的流程图。
[0037] 图6是根据本申请一个实施例的3D模型渲染装置的结构示意图。
[0038] 图7是根据本申请另一个实施例的3D模型渲染装置的结构示意图。
[0039] 图8是根据本申请又一个实施例的3D模型渲染装置的结构示意图。
[0040] 图9是根据本申请一个实施例的电子设备的结构示意图。

具体实施方式

[0041] 以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0042] 本申请提出了一种3D模型渲染方法、装置、电子设备和存储有计算机指令的非瞬时计算机可读存储介质,本申请解决了相关技术中在渲染时,部分面片被其他面片遮挡造成的资源浪费,硬件运行时的功耗较大,渲染速度慢等问题;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题。具体地,下面参考附图描述本申请实施例的3D模型渲染方法、装置、电子设备和存储有计算机指令的非瞬时计算机可读存储介质。
[0043] 图1是根据本申请一个实施例的3D模型渲染方法的流程图。需要说明的是,本申请实施例的3D模型渲染方法可应用于本申请实施例的3D模型渲染装置,该装置可被配置于电子设备上。其中,该电子设备可以是具有显示屏的各种电子设备,可以是移动终端,例如,智能手机、平板电脑,或者还可以是AR设备。需要说明的是,该电子设备具有3D模型识别装置。
[0044] 如图1所示,该3D模型渲染方法可以包括:
[0045] S110,确定当前需要渲染的姿态。
[0046] 举例而言,当电子设备中的识别装置识别到3D物体时,可对该3D物体的模型进行渲染,在确定对该3D模型进行渲染时,可先确定当前需要渲染的姿态。
[0047] S120,根据当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点。
[0048] 在本申请的实施例中,可根据当前需要渲染的姿态,确定当前待渲染姿态所对应的视点,然后从多个已标定固定视点中,确定出离当前待渲染姿态所对应的视点最接近的多个固定视点,之后将最接近的多个固定视点确定为多个目标固定视点。
[0049] 其中,多个已标定固定视点可通过以下方式预先获得:可确定针对3D模型的球面,其中,球面为以3D模型为中心,预设值为半径构成的球体的表面,然后在球面上均匀选取多个点,并将均匀选取的多个点确定为多个已标定固定视点。
[0050] 在本申请的实施例中,获得多个已标定固定视点之后,可预先获得3D模型在每个已标定固定视点下的可视面片。具体的实现过程可参考后续实施例。
[0051] S130,获取3D模型在每个目标固定视点下的待渲染可视面片。
[0052] 在本申请的实施例中,可根据每个目标固定视点,从3D模型在每个已标定固定视点下的可视面片中,获取3D模型在每个目标固定视点下的可视面片,之后将3D模型在每个目标固定视点下的可视面片进行合并,将合并后的可视面片确定为3D模型在每个目标固定视点下的待渲染可视面片。
[0053] S140,在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。
[0054] 也就是说,获取到3D模型在每个目标固定视点下的待渲染可视面片,可根据3D模型在每个目标固定视点下的待渲染可视面片,在中央处理器CPU上,对3D模型进行渲染。
[0055] 根据本申请实施例的3D模型渲染方法,可确定当前需要渲染的姿态,之后根据当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点,然后获取3D模型在每个目标固定视点下的待渲染可视面片,最后在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。该方法可通过从多个已标定固定视点中确定出多个目标固定视点,并根据每个目标固定视点下的待渲染可视面片,来实现在CPU上对3D模型的快速渲染,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题,提高了用户体验。
[0056] 图2是根据本申请一个具体实施例的3D模型渲染方法的流程图。如图2所示,该3D模型渲染方法可以包括:
[0057] S210,确定当前需要渲染的姿态。
[0058] 举例而言,当电子设备中的识别装置识别到3D物体时,可对该3D物体的模型进行渲染,在确定对该3D模型进行渲染时,可先确定当前需要渲染的姿态。
[0059] S220,根据当前需要渲染的姿态,确定当前待渲染姿态所对应的视点。
[0060] 举例而言,可从正前方角度对3D模型进行渲染,进而可确定正前方角度所对应的视点。
[0061] S230,从多个已标定固定视点中,确定出离当前待渲染姿态所对应的视点最接近的多个固定视点。
[0062] 其中,在本申请的实施例中,如图3所示,多个已标定固定视点可通过以下方式预先获得:
[0063] S310,确定针对3D模型的球面,其中,球面为以3D模型为中心,预设值为半径构成的球体的表面。
[0064] 为了能够保证在球体的表面上的点能够完整看到3D物体,在本申请的实施例中,可确定以3D模型为中心,预设值为半径构成的球体的表面。
[0065] S320,在球面上均匀选取多个点,并将均匀选取的多个点确定为多个已标定固定视点。
[0066] 通过大量实验可知,为了后续在确定多个目标固定视点时,避免多个目标固定视点所组成的视角范围大或范围小,提高渲染效果,举例而言,以3D模型为中心,预设值为半径构成的球体的表面上可均匀选取20个点,并将选取的20个点确定为多个已标定固定视点。
[0067] 在本申请的实施例中,确定多个已标定固定视点后,可从多个已标定固定视点中,确定出离当前待渲染姿态所对应的视点最接近的多个固定视点。
[0068] 其中,在本申请的实施例中,可确定当前待渲染姿态所对应的视点与3D模型的中心点之间的第一连线,确定各个已标定固定视点与中心点之间的第二连线,之后计算第一连线与各个第二连线之间的夹角,然后根据第一连线与各个第二连线之间的夹角,从多个已标定固定视点中,确定出离当前待渲染姿态所对应的视点最接近的多个固定视点。
[0069] 需要说明的是,第一连线与第二连线之间的夹角越小,第二连线中的已标定固定视点离当前待渲染姿态所对应的视点最接近。
[0070] 举例而言,如图4所示,当前待渲染姿态所对应的视点为S1,3D模型的中心点为Z1,各个已标定固定视点分别为G1、G2、G3、G4、G5,可确定S1与Z1之间的第一连线,确定G1、G2、G3、G4、G5分别与Z1之间的第二连线,之后计算第一连线与各个第二连线之间的夹角,然后根据第一连线与各个第二连线之间的夹角,从G1、G2、G3、G4、G5多个固定视点中,确定出离S1最接近的3个固定视点,例如,离S1最接近的3个固定视点分别为G3、G4、G5。
[0071] 可选地,在本申请的一个实施例中,在获得多个已标定固定视点之后,还需预先获得3D模型在每个已标定固定视点下的可视面片。
[0072] 在本申请的实施例中,可通过依次按照每个已标定固定视点渲染3D模型,在每次完成3D模型的渲染时,获取Z缓存区中存放的图像空间每个可见像素的Z坐标,之后根据Z缓存区在每次渲染后所存放的图像空间每个可见像素的Z坐标,获得3D模型在每个已标定固定视点下的可视面片。
[0073] 举例而言,在获得20个已标定固定视点之后,可依次按照20个已标定固定视点渲染3D模型,并记录每个已标定固定视点下的可见像素,并把每个可见像素的Z坐标放到Z缓存区中。在每次完成3D模型的渲染时,可获取Z缓存区中存放的图像空间每个可见像素的Z坐标,根据Z缓存区在每次渲染后所存放的图像空间每个可见像素的Z坐标,可获得3D模型在每个已标定固定视点下的可视面片。也就是说,可将3D在每个已标定固定视点下的各个可见像素的Z坐标记录到对应的集合(记为Si,其中i=1...20)中,每个集合中所记载的Z坐标即为对应已标定固定视点下的可视面片。
[0074] S240,将最接近的多个固定视点确定为多个目标固定视点。
[0075] 也就是说,从多个已标定固定视点中,确定出离当前待渲染姿态所对应的视点最接近的多个固定视点后,可将最接近的多个固定视点确定为多个目标固定视点。
[0076] S250,获取3D模型在每个目标固定视点下的待渲染可视面片。
[0077] 在本申请的实施例中,根据每个目标固定视点,从3D模型在每个已标定固定视点下的可视面片中,获取3D模型在每个目标固定视点下的可视面片,然后将3D模型在每个目标固定视点下的可视面片进行合并并去重,将合并后的可视面片确定为3D模型在每个目标固定视点下的待渲染可视面片。
[0078] S260,在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。
[0079] 也就是说,获取到3D模型在每个目标固定视点下的待渲染可视面片,可根据3D模型在每个目标固定视点下的待渲染可视面片,在中央处理器CPU上,对3D模型进行渲染。
[0080] 根据本申请实施例的3D模型渲染方法,可确定当前需要渲染的姿态,根据当前需要渲染的姿态,确定当前待渲染姿态所对应的视点,从多个已标定固定视点中,确定出离当前待渲染姿态所对应的视点最接近的多个固定视点,将最接近的多个固定视点确定为多个目标固定视点,然后获取3D模型在每个目标固定视点下的待渲染可视面片,之后在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。该方法可通过从多个已标定固定视点中确定出多个目标固定视点,并根据每个目标固定视点下的待渲染可视面片,来实现在CPU上对3D模型的快速渲染,能高效的计算出可视面片,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题,提高了用户体验。
[0081] 图5是根据本申请另一个实施例的3D模型渲染方法的流程图。如图5所示,该3D模型渲染方法可以包括:
[0082] S510,根据当前待渲染姿态所对应的视点,从多个已标定固定视点中确定出多个目标固定视点。
[0083] S520,获取3D模型在每个目标固定视点下的待渲染可视面片。
[0084] S530,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。
[0085] 根据本申请实施例的3D模型渲染方法,可根据当前待渲染姿态所对应的视点,从多个已标定固定视点中确定出多个目标固定视点,之后获取3D模型在每个目标固定视点下的待渲染可视面片,然后根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。该方法可高效的计算出可视面片,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题,提高了用户体验。
[0086] 与上述几种实施例提供的3D模型渲染方法相对应,本申请的一种实施例还提供一种3D模型渲染装置,由于本申请实施例提供的3D模型渲染装置与上述几种实施例提供的3D模型渲染方法相对应,因此在3D模型渲染方法的实施方式也适用于本实施例提供的3D模型渲染装置,在本实施例中不再详细描述。图6是根据本申请一个实施例的3D模型渲染装置的结构示意图。
[0087] 如图6所示,该3D模型渲染装置600包括:待渲染姿态的确定模块610、目标视点确定模块620、待渲染可视面片获取模块630和渲染模块640。其中:
[0088] 待渲染姿态的确定模块610用于确定当前需要渲染的姿态。
[0089] 目标视点确定模块620用于根据所述当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点;作为一种示例,所述目标视点确定模块具体用于:根据所述当前需要渲染的姿态,确定当前待渲染姿态所对应的视点;从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点;将所述最接近的多个固定视点确定为所述多个目标固定视点。
[0090] 在本申请的实施例中,所述目标视点确定模块620具体用于:确定所述当前待渲染姿态所对应的视点与所述3D模型的中心点之间的第一连线;确定各个已标定固定视点与所述中心点之间的第二连线;计算所述第一连线与各个第二连线之间的夹角;根据所述第一连线与各个第二连线之间的夹角,从所述多个已标定固定视点中,确定出离所述当前待渲染姿态所对应的视点最接近的多个固定视点。
[0091] 待渲染可视面片获取模块630用于获取所述3D模型在每个目标固定视点下的待渲染可视面片;作为一种示例,所述待渲染可视面片获取模块630具体用于:根据所述每个目标固定视点,从所述3D模型在每个已标定固定视点下的可视面片中,获取所述3D模型在每个目标固定视点下的可视面片;将所述3D模型在每个目标固定视点下的可视面片进行合并;将合并后的可视面片确定为所述3D模型在每个目标固定视点下的待渲染可视面片。
[0092] 渲染模块640用于在中央处理器CPU上,根据所述3D模型在所述每个目标固定视点下的待渲染可视面片,对所述3D模型进行渲染。
[0093] 在本申请的实施例中,如图7所示,所述3D模型渲染装置还包括:预先标定模块650,其中,所述预先标定模块650用于确定针对所述3D模型的球面,其中,所述球面为以所述3D模型为中心,预设值为半径构成的球体的表面;在所述球面上均匀选取多个点,并将所述均匀选取的多个点确定为所述多个已标定固定视点。
[0094] 在本申请的实施例中,如图8所示,所述3D模型渲染装置还包括:获取模块660,其中,获取模块660用于预先获得所述3D模型在每个已标定固定视点下的可视面片。作为一种实例,所述获取模块660具体用于:依次按照所述每个已标定固定视点渲染所述3D模型;在每次完成所述3D模型的渲染时,获取Z缓存区中存放的图像空间每个可见像素的Z坐标;根据所述Z缓存区在所述每次渲染后所存放的图像空间每个可见像素的Z坐标,获得所述3D模型在所述每个已标定固定视点下的可视面片。
[0095] 根据本申请实施例的3D模型渲染装置,可确定当前需要渲染的姿态,之后根据当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点,然后获取3D模型在每个目标固定视点下的待渲染可视面片,最后在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。由此可通过从多个已标定固定视点中确定出多个目标固定视点,并根据每个目标固定视点下的待渲染可视面片,来实现在CPU上对3D模型的快速渲染,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题,提高了用户体验。
[0096] 根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
[0097] 如图9所示,是根据本申请实施例的3D模型渲染方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
[0098] 如图9所示,该电子设备包括:一个或多个处理器901、存储器902,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图9中以一个处理器901为例。
[0099] 存储器902即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的3D模型渲染方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的3D模型渲染方法。
[0100] 存储器902作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的3D模型渲染方法对应的程序指令/模块(例如,附图6所示的待渲染姿态的确定模块610、目标视点确定模块620、待渲染可视面片获取模块630和渲染模块640)。处理器901通过运行存储在存储器902中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的3D模型渲染方法。
[0101] 存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据3D模型渲染的电子设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至3D模型渲染的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0102] 3D模型渲染方法的电子设备还可以包括:输入装置903和输出装置904。处理器901、存储器902、输入装置903和输出装置904可以通过总线或者其他方式连接,图9中以通过总线连接为例。
[0103] 输入装置903可接收输入的数字或字符信息,以及产生与3D模型渲染的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置904可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
[0104] 此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0105] 这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
[0106] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0107] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
[0108] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
[0109] 根据本申请实施例的技术方案,可确定当前需要渲染的姿态,之后根据当前需要渲染的姿态,从多个已标定固定视点中确定出多个目标固定视点,然后获取3D模型在每个目标固定视点下的待渲染可视面片,最后在中央处理器CPU上,根据3D模型在每个目标固定视点下的待渲染可视面片,对3D模型进行渲染。该方法可通过从多个已标定固定视点中确定出多个目标固定视点,并根据每个目标固定视点下的待渲染可视面片,来实现在CPU上对3D模型的快速渲染,避免了在渲染时,部分面片被其他面片遮挡造成的资源浪费,降低了在硬件上运行时的功耗,加快了渲染速度;同时采用CPU对3D模型进行渲染,避免了AR应用中和渲染引擎(用来渲染展示的模型)一起在GPU工作所导致的手机发热、降频等技术问题,提高了用户体验。
[0110] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
[0111] 上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。