渲染装置、方法、电子设备及可读存储介质
技术领域
本发明涉及交互设备技术领域,尤其涉及一种渲染装置、方法、电子设备及可读存储介质。
背景技术
在教学、会议、设计等场景中,可能会存在对图形进行渲染与演示的情况;当需要进行三维图形与二维图形之间的切换时,现有技术往往是直接在三维图形所在的渲染图层,对三维图形进行进一步的绘制来得到二维图形,如此,需要针对三维图形进行大量的用于实现平行显示(Head Up Display,HUD)的开发工作,进而导致针对三维图形的开发效率较低。
发明内容
本发明实施例提供一种渲染装置、方法、电子设备及可读存储介质,以解决现有技术中为进行三维图形与二维图形之间的切换,需要预先针对三维图形进行大量的用于实现HUD的开发工作,进而导致针对三维图形的开发效率较低的问题。
为了解决上述技术问题,本发明是这样实现的:
第一方面,本发明实施例提供了一种渲染装置,包括:
第一渲染模块,用于在第一图层上渲染三维对象,其中,所述三维对象位于显示屏的预设显示区域之内;
第二渲染模块,用于在第二图层上渲染至少一个预设操作控件,其中,所述预设操作控件位于所述显示屏的第一目标显示区域之内,所述第二图层位于所述第一图层之上,所述第一目标显示区域位于所述预设显示区域之内;
所述第二渲染模块还用于,在接收到针对所述至少一个预设操作控件中的第一操作控件的第一操作输入的情况下,在所述第二图层上渲染与所述三维对象匹配的二维对象,其中,所述二维对象位于所述显示屏的第二目标显示区域之内,所述第二目标显示区域位于所述预设显示区域之内。
第二方面,本发明实施例还提供了一种渲染方法,应用于上述的渲染装置,所述方法包括:
在第一图层上渲染三维对象,在第二图层上渲染至少一个预设操作控件,其中,所述第二图层位于所述第一图层之上,所述三维对象位于显示屏的预设显示区域之内,所述预设操作控件位于所述显示屏的第一目标显示区域之内,所述第一目标显示区域位于所述预设显示区域之内;
在接收到针对所述至少一个预设操作控件中的第一操作控件的第一操作输入的情况下,在所述第二图层上渲染与所述三维对象匹配的二维对象,其中,所述二维对象位于所述显示屏的第二目标显示区域之内,所述第二目标显示区域位于所述预设显示区域之内。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
第四方面,本发明实施例还提供了一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
本发明实施例提供的渲染装置,包括第一渲染模块与第二渲染模块,其中,第一渲染模块可用于在第一图层上渲染三维对象,三维对象位于显示屏的预设显示区域之内;第二渲染模块可用于在第二图层上渲染至少一个预设操作控件,且还可以用于在接收到针对第一操作控件的第一操作输入的情况下,在所述第二图层上渲染与所述三维对象匹配的二维对象,其中,第二图层位于第一图层之上,预设操作控件与二维对象分别位于第一目标显示区域与第二目标显示区域之内,且第一目标显示区域与第二目标显示区域均位于预设显示区域之内。本发明实施提供的渲染装置,通过第一渲染模块与第二渲染模块的混合渲染,能够在保证三维对象与二维对象的显示区域大小的基础上,减少针对三维对象的HUD开发,提高三维对象的开发效率。
附图说明
图1为本发明实施例提供的一种渲染装置的结构示意图;
图2为本发明实施例中反映图层及显示区域位置的示意图;
图3为本发明实施例中针对二维对象进行渲染的一个示例图;
图4为本发明实施例中针对三维对象进行渲染的一个示例图;
图5为本发明实施例提供的另一种渲染装置的结构示意图;
图6为本发明中渲染方法的第一个实施例的流程图;
图7为本发明中渲染方法的第二个实施例的流程图;
图8为本发明中渲染方法的第三个实施例的流程图;
图9为本发明实施例中对三维对象进行更新的流程图;
图10为本发明中渲染方法的第四个实施例的流程图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本发明的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本发明的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
除非另作定义,本发明中使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。
如图1所示,本发明实施例提供的渲染装置,包括:
第一渲染模块101,用于在第一图层上渲染三维对象,其中,三维对象位于显示屏的预设显示区域之内;
第二渲染模块102,用于在第二图层上渲染至少一个预设操作控件,其中,预设操作控件位于显示屏的第一目标显示区域之内,第二图层位于第一图层之上,第一目标显示区域位于预设显示区域之内;
第二渲染模块102还用于,在接收到针对至少一个预设操作控件中的第一操作控件的第一操作输入的情况下,在第二图层上渲染与三维对象匹配的二维对象,其中,二维对象位于显示屏的第二目标显示区域之内,第二目标显示区域位于预设显示区域之内。
本实施例中,第一图层可以认为是三维层,在该三维层上可以进行三维对象的渲染。对于第一渲染模块101来说,其主要的功能可以是渲染自身支持的三维体系。
相对地,第二图层可以认为是应用渲染层,或者说集成开发环境(IntegratedDevelopment Environment ,IDE)层,可以用于渲染操作控件、二维对象等内容。其中,此处的操作控件主要是指用于人机交互的控件,可以是以例如文字、图标或者缩略图等形式进行展示;而此处的二维对象,则主要是指与三维对象匹配的二维对象,例如,三维对象可以是球形地图,匹配的二维对象可以是平面地图;再例如,三维对象可以是某一物品的立体图,匹配的二维对象可以是该物品的六视图等。对于第二渲染模块102来说,其主要功能可以是渲染自身支持的控件体系,容易理解的是,二维对象的展示,可以是在第二渲染模块102所渲染的图形显示控件中进行的,其也可以认为是基于第二渲染模块102渲染自身支持的控件体系来实现的。
第一渲染模块101与第二渲染模块102可以进行交互,体现在应用层面,可以认为是第一图层与第二图层进行交互。具体到人机交互的角度,用户主要是通过对渲染的预设操作控件进行操作,来实现二维对象与三维对象的展示形式的变化。
本实施例中,三维对象、预设操作控件以及二维对象可以具有对应的显示区域,三维对象可以是位于预设显示区域T之内,参见图2,该预设显示区域T可以对应第一图层的全部区域,三维对象可以展示在预设显示区域T中。同时,预设操作控件可以显示在图2中所示的第一目标显示区域C之内,在实际应用中,第一目标显示区域C处可以是渲染一图形显示控件,或者说一窗口,并将上述预设操作控件显示在图形显示控件上;在实际应用中,该窗口的透明度可以根据需要进行设定,例如采用较高的透明度,避免对第一目标显示区域C之内显示的内容过度遮挡。当需要展示二维对象时,可以在图2所示的第二目标显示区域D中渲染一图像显示控件,或者说一窗口,用于显示二维对象。
结合图2所示的渲染方式可见,本实施例中,可以认为是使用位于上层的第二图层当做三维平行显示(Head Up Display,HUD)的交互,实现IDE和三维渲染的混合渲染。相比之下,现有技术中多采用三维渲染与IDE分区域设置的方式;或者在三维渲染层上显示控件,并基于针对三维对象开发的HUD在三维层上做出二维效果。前者往往导致三维对象的显示区域被IDE中的工具栏等所挤压,导致可用于三维对象显示的区域较小;后者则需要针对三维对象进行大量的HUD开发,开发效率较低。
本发明实施例提供的渲染装置,包括第一渲染模块101与第二渲染模块102,其中,第一渲染模块101可用于在第一图层上渲染三维对象,三维对象位于显示屏的预设显示区域之内;第二渲染模块102可用于在第二图层上渲染至少一个预设操作控件,且还可以用于在接收到针对第一操作控件的第一操作输入的情况下,在第二图层上渲染与三维对象匹配的二维对象,其中,第二图层位于第一图层之上,预设操作控件与二维对象分别位于第一目标显示区域与第二目标显示区域之内,且第一目标显示区域与第二目标显示区域均位于预设显示区域之内。本发明实施提供的渲染装置,通过第一渲染模块101与第二渲染模块102的混合渲染,能够在保证三维对象与二维对象的显示区域大小的基础上,减少针对三维对象的HUD开发,提高三维对象的开发效率。
为了实现二维对象与三维对象的切换显示,在本实施例中,第二渲染模块102还用于,在第二图层上渲染有二维对象,且接收到对第一操作控件的第二操作输入的情况下,将二维对象隐藏。
对于第一操作控件,可以认为是配置为对二维对象与三维对象进行切换的操作控件,在实际应用中,针对第一操作控件的第一操作输入与第二操作输入,可以是相同或不同的操作方式。例如,对于第一操作输入与第二操作输入是相同的操作方式,在第二图层上未渲染二维对象时,用户可以单击第一操作控件,使得在第二图层上渲染二维对象;而在第二图层上渲染有二维对象时,用户同样可以单击第一操作控件,使得二维对象从第二图层中隐藏,从而在显示屏上重新展示三维对象;在以上切换过程中,第一操作控件对应的图标可以相应变化,例如在未渲染二维对象时,图标中显示文字“2D”,在渲染有二维对象时,图标中显示文字“3D”。当然,第一操作输入与第二操作输入也可以是不同的操作方式,例如,可以是单击、双击、滑动、长按等操作中的任两种。
值得说明的是,本实施例中,二维对象与三维对象的切换显示,可以理解为对二维对象的显示与隐藏的切换过程。当二维对象未被渲染在第二图层上时,三维对象可以显露出来,即实现对三维对象的显示;当二维对象渲染在第二图层上时,三维对象可以被遮盖起来,即实现对二维对象的显示。
在一个优选实施例中,在第二图层上渲染有二维对象的情况下,二维对象覆盖于三维对象之上。
也就是说,在该实施例中,三维对象可以是一直渲染于第一图层上的,需要对二维对象进行显示时,可以使用二维对象将三维对象完全遮盖;具体来讲,可以在第二图层上渲染一图形显示控件,或者说一个窗口,以用于加载二维对象。
容易理解的是,三维对象在预设显示区域之内,通常可能并不会占满整个预设显示区域,例如在预设显示区域中除三维对象以外的区域中,可以显示一些背景图像等。如此,二维对象所在的第一目标显示区域,实际上可以与三维图像具体所在的显示区域发生重叠,即完成二维对象对三维对象的遮盖。
通过以上方案,可以在对二维对象进行显示时,避免在当前显示界面上同时显露出三维对象,避免出现两者部分叠加造成视觉干扰的情况,提高用户体验。
当然,在一些可行的实施方式中,也可以将二维对象与三维对象同时进行显示,主要将二维对象的第一显示区域与三维对象具体所在的显示区域进行错开,使得渲染的二维对象对三维对象不遮盖或者不完全遮盖即可;如此,有助于用户同时阅览二维对象与三维对象,便于进行对象之间的比对等操作。
可选地,至少一个预设操作控件还中还包括有第二操作控件;
第二渲染模块102还用于,在第二图层上渲染有二维对象,且接收到针对第二操作控件的第三操作输入的情况下,调用与第二操作控件关联的预设数据对二维对象进行更新。
参考图3与图4,以三维对象302为球形地图,匹配的二维对象301为平面地图为例;在一些教学场合,可能需要针对各类地理知识进行演示,例如地球六大板块、全球降水分别、气温分布、人口分布、表层洋流、陆地自然带或者海平面等压线等。在这种情况下,可以预先存储各类地理知识所对应的预设数据,该预设数据可以通过图像的形式进行存储;此外,还可以在第二图层上渲染与各预设数据分别关联的第二操作控件304,当用户操作某一第二操作控件304时,可以调用与该第二操作控件304对应的预设数据,并利用该预设数据对二维对象301进行更新。
例如,若第二图层上当前渲染的二维对象301为卫星图,当用户单击了名为“六大板块”的第二操作控件304后,可以调用地球六大板块对应的预设数据,将卫星图替换为六大板块图,即实现了二维对象301的更新。
当然,在实际应用中,上述第三操作输入还可以是例如双击、滑动或者长按等类型的输入,此处不做具体限定。第二操作控件304的数量,可以根据预设数据的数量进行相应设置。对于预设数据,也可以通过例如数据流的形式进行存储,例如,将二维对象301或三维对象302中各个点的坐标与像素值进行关联存储等。
本实施例中,通过设置第二操作控件304,并在用户操作第二操作控件304时,调用与该第二操作控件304对应的预设数据对二维对象301进行更新,可以丰富对二维对象301的展示方式,提高展示效果。
在一些可行的实施方式中,在常规状态下,第二图层上可以渲染初始操作控件303,当用户针对该初始操作控件303时,再渲染出多个第二操作控件304,如此,可以使得在常规状态下,显示屏的整体界面更加简洁。可选地,对于第二操作控件304,可以是通过缩略图加文字的形式进行展示。可选地,上述初始操作控件303还可以包括有用于进行二维和三维切换的操作控件。
可选地,第一渲染模块101还用于,在第二图层上未渲染有二维对象,且接收到针对第二操作控件的第三操作输入的情况下,调用与第二操作控件关联的预设数据对三维对象进行更新。
第二操作控件可以是关联了预设数据,当用户针对第二操作控件的操作时,也可以调用关联的预设数据对三维对象进行更新。对于第三操作输入,同样可以是单击、双击、滑动或者长按等,此处不做具体限定。
参考图3与图4,同样结合以上球形地图的例子,在常规状态下,三维对象302可以是一球形的卫星地图的渲染形式,当单击了名为“六大板块”的第二操作控件304后,可以调用地球六大板块对应的预设数据,可以在球形地图上显示六大板块及其边界线、相对运动方向等内容,从而实现对三维对象302的更新。
可见,本实施例在第二图层上未渲染有二维对象301,且用户操作第二操作控件304时,调用与该第二操作控件304对应的预设数据对三维对象302进行更新,可以丰富对三维对象302的展示方式,提高展示效果。
在一个示例中,可以在第二图层上渲染一图形显示控件305,以对二维对象301或三维对象302中出现的各类标识进行释义,例如,在六大板块图的举例中,可以在图形显示控件中展示六大板块图中的实线、虚线以及箭头分别代表板块边界、未定板块边界以及板块运动方向。如此,有助于用户更好地对二维对象或三维对象的内容进行理解。
容易理解的是,对于三维对象302与二维对象301,不仅仅可以体现为球形地图与平面地图的形式,也可以是一些物品的三维图与平面图;对于这些三维图与平面图,也可以有不同的渲染形式,例如彩色图、线条图、透视图等,通过第二操作控件304的设置与操作,也可以实现二维对象301或三维对象302的更新。
如图5所示,在另一个实施例中,渲染装置包括:第一渲染模块501、第二渲染模块502以及底层图层构建模块503,其中,第一渲染模块501与第二渲染模块502分别与上文实施例中的第一渲染模块101、第二渲染模块102相同,此处不再赘述。
而底层图层构建模块503,用于构建用于加载第一图层的底层图层。
换而言之,在本实施例中,图层可以分为底层、中间层以及上层,其中,在实际应用中,底层可以是IDE层,中间层可以是三维层,上层则可以是IDE层;上层的IDE层位于三维层之上,可与三维层进行交互;具体来说,可以通过在上层的IDE层设置的操作控件,例如IDE控制按钮,以实现图层间交互的构成。
容易理解的是,以上图层的设置方式,实质上是IDE和三维渲染进行混合渲染的过程,IDE层可以当做三维HUD的交互层,可以大量减少三维开发工作量。
如图6所示,本发明实施例还提供了一种渲染方法,应用于上述的渲染装置,该方法包括:
步骤601,在第一图层上渲染三维对象,在第二图层上渲染至少一个预设操作控件,其中,第二图层位于第一图层之上,三维对象位于显示屏的预设显示区域之内,预设操作控件位于显示屏的第一目标显示区域之内,第一目标显示区域位于预设显示区域之内;
步骤602,在接收到针对至少一个预设操作控件中的第一操作控件的第一操作输入的情况下,在第二图层上渲染与三维对象匹配的二维对象,其中,二维对象位于显示屏的第二目标显示区域之内,第二目标显示区域位于预设显示区域之内。
本实施例中,第一图层可以认为是三维层,在该三维层上可以进行三维对象的渲染;相对地,第二图层可以认为是应用渲染层,或者说IDE层,可以用于渲染操作控件、二维对象等内容。在进行渲染时,三维对象可以位于显示屏的预设显示区域之内,预设操作控件位于第一目标显示区域之内,而第一目标显示区域由位于预设显示区域之中。
也就是说,一方面,预设操作控件并不会挤占用于三维对象显示的区域,避免导致可用于三维对象显示的区域缩小;另一方面,预设操作控件与三维对象在不同的图层上进行渲染,有助于减少针对三维对象的开发工作。
当接收到针对第一操作控件的第一操作输入的情况下,可以在第二图层上渲染与三维对象匹配的二维对象。与预设操作控件相似地,二维对象显示在第二目标显示区域之内,第二目标显示区域位于预设显示区域之内,二维对象的存在,并不会对可用于对三维对象显示的区域大小产生影响;同时,二维对象并非是在第一图层上进行渲染的,也就是说,可以在无需或者较少针对三维对象进行HUD开发的情况下,即可对与三维对象匹配的二维对象进行渲染与显示,进而有助于提高针对三维对象的开发效率。
可选地,如图7所示,在上述的渲染方法的另一实施例中,该方法包括:
步骤701,在第一图层上渲染三维对象,在第二图层上渲染至少一个预设操作控件,其中,第二图层位于第一图层之上,三维对象位于显示屏的预设显示区域之内,预设操作控件位于显示屏的第一目标显示区域之内,第一目标显示区域位于预设显示区域之内;
步骤702,在接收到针对至少一个预设操作控件中的第一操作控件的第一操作输入的情况下,在第二图层上渲染与三维对象匹配的二维对象,其中,二维对象位于显示屏的第二目标显示区域之内,第二目标显示区域位于预设显示区域之内;
步骤703,在接收到对第一操作控件的第二操作输入的情况下,将二维对象隐藏。
其中,步骤701、步骤702分别与步骤601、步骤602相同,此处不再赘述。本实施例中,对于第一操作控件,可以认为是配置为对二维对象与三维对象进行切换的操作控件,在实际应用中,针对第一操作控件的第一操作输入与第二操作输入,可以是相同或不同的操作方式。
值得说明的是,本实施例中,二维对象与三维对象的切换显示,可以理解为对二维对象的显示与隐藏的切换过程。当二维对象未被渲染在第二图层上时,三维对象可以显露出来,即实现对三维对象的显示;当二维对象渲染在第二图层上时,三维对象可以被遮盖起来,即实现对二维对象的显示。
在一个优选实施例中,在第二图层上渲染有二维对象的情况下,二维对象覆盖于三维对象之上。
也就是说,在该实施例中,三维对象可以是一直渲染于第一图层上的,需要对二维对象进行显示时,可以使用二维对象将三维对象完全遮盖;具体来讲,可以在第二图层上渲染一图形显示控件,或者说一个窗口,以用于加载二维对象。
容易理解的是,三维对象在预设显示区域之内,通常可能并不会占满整个预设显示区域,例如在预设显示区域中除三维对象以外的区域中,可以显示一些背景图像等。如此,二维对象所在的第一目标显示区域,实际上可以与三维图像具体所在的显示区域发生重叠,即完成二维对象对三维对象的遮盖。
通过以上方案,可以在对二维对象进行显示时,避免在当前显示界面上同时显露出三维对象,避免出现两者部分叠加造成视觉干扰的情况,提高用户体验。
可选地,如图8所示,在上述的渲染方法的另一实施例中,该方法包括:
步骤801,在第一图层上渲染三维对象,在第二图层上渲染至少一个预设操作控件,其中,第二图层位于第一图层之上,三维对象位于显示屏的预设显示区域之内,预设操作控件位于显示屏的第一目标显示区域之内,第一目标显示区域位于预设显示区域之内;
步骤802,在接收到针对至少一个预设操作控件中的第一操作控件的第一操作输入的情况下,在第二图层上渲染与三维对象匹配的二维对象,其中,二维对象位于显示屏的第二目标显示区域之内,第二目标显示区域位于预设显示区域之内;
步骤803,在接收到针对至少一个预设操作控件中的第二操作控件的第三操作输入的情况下,调用与第二操作控件关联的预设数据对二维对象进行更新。
其中,步骤801、步骤802分别与步骤601、步骤602相同,此处不再赘述。
本实施例中,第二操作控件的数量,可以根据预设数据的数量进行相应设置。通过设置第二操作控件,并在用户操作第二操作控件时,调用与该第二操作控件对应的预设数据对二维对象进行更新,可以丰富对二维对象的展示方式,提高展示效果。
如图9所示,在上一实施例的基础,渲染方法还可以用于实现如下过程:
步骤901,在第一图层上渲染三维对象,在第二图层上渲染至少一个预设操作控件,其中,第二图层位于第一图层之上,三维对象位于显示屏的预设显示区域之内,预设操作控件位于显示屏的第一目标显示区域之内,第一目标显示区域位于预设显示区域之内;
步骤902,在接收到针对第二操作控件的第三操作输入的情况下,调用与第二操作控件关联的预设数据对三维对象进行更新。
本实施例中,在显示屏上渲染有三维对象,且未渲染二维对象时,用户操作第二操作控件时,调用与该第二操作控件对应的预设数据对三维对象进行更新,可以丰富对三维对象的展示方式,提高展示效果。
进一步地,当用户操作第一操作控件,以使得二维对象渲染在第二图层上时,再操作第二操作控件,可以调用与该第二操作控件对应的预设数据对二维对象进行更新。
如图10所示,在上述渲染方法的另一实施例中,该方法包括:
步骤1001,构建用于加载第一图层的底层图层;
步骤1002,在第一图层上渲染三维对象,在第二图层上渲染至少一个预设操作控件,其中,第二图层位于第一图层之上,三维对象位于显示屏的预设显示区域之内,预设操作控件位于显示屏的第一目标显示区域之内,第一目标显示区域位于预设显示区域之内;
步骤1003,在接收到针对至少一个预设操作控件中的第一操作控件的第一操作输入的情况下,在第二图层上渲染与三维对象匹配的二维对象,其中,二维对象位于显示屏的第二目标显示区域之内,第二目标显示区域位于预设显示区域之内。
换而言之,在本实施例中,图层可以分为底层、中间层以及上层,其中,在实际应用中,底层可以是IDE层,中间层可以是三维层,上层则可以是IDE层;上层的IDE层位于三维层之上,可与三维层进行交互;具体来说,可以通过在上层的IDE层设置的操作控件,例如IDE控制按钮,以实现图层间交互的构成。
容易理解的是,以上图层的设置方式,实质上是IDE和三维渲染进行混合渲染的过程,IDE层可以当做三维HUD的交互层,可以大量减少三维开发工作量。
可选地,本发明实施例还提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的渲染方法。
可选地,本发明实施例还提供了一种可读存储介质,可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述的渲染方法。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。