发明内容
有鉴于此,本申请的实施例提供了一种三维泊车的显示方法、车辆和存储介质。
本申请提供了一种三维泊车的显示方法,包括:
根据获取到的泊车启动指令确定虚拟相机对三维泊车场景的初始视角和最终视角;
根据所述初始视角和所述最终视角确定过渡视角;
根据所述初始视角、所述过渡视角和所述最终视角,显示所述虚拟相机绘制的所述三维泊车场景的多个图像帧。
在某些实施方式中,所述三维泊车场景包括找车场景、选车场景、溜车场景、泊入场景中的至少一个。
在某些实施方式中,根据所述初始视角和所述最终视角确定过渡视角,包括:
根据所述三维泊车场景所处的泊车阶段确定切换基准,所述切换基准包括所述初始视角对应的初始基准值和所述最终视角对应的最终基准值;
根据所述初始基准值和所述最终基准值确定过渡基准值,所述过渡基准值为所述过渡视角对应的所述切换基准的值;
根据所述过渡基准值确定从所述过渡视角至所述最终视角的切换比例;
根据所述切换比例、所述初始视角和所述最终视角,确定所述过渡视角。
在某些实施方式中,所述泊车阶段包括泊入前阶段,根据所述三维泊车场景所处的泊车阶段确定切换基准,包括:
在所述三维泊车场景处于所述泊入前阶段的情况下,将所述虚拟相机的拍摄角度作为所述切换基准,所述拍摄角度包括所述初始视角对应的初始角度值和所述最终视角对应的最终角度值;
根据所述初始基准值和所述最终基准值确定过渡基准值,包括:
根据所述初始角度值和所述最终角度值确定过渡角度值,所述过渡角度值为所述过渡视角对应的所述拍摄角度的值;
根据所述过渡基准值确定从所述过渡视角至所述最终视角的切换比例,包括:
根据所述过渡角度值和所述最终角度值确定从所述过渡视角至所述最终视角的切换比例。
在某些实施方式中,所述泊车阶段包括泊入阶段,根据所述三维泊车场景所处的泊车阶段确定切换基准,包括:
在所述三维泊车场景处于所述泊入阶段的情况下,将所述车辆与泊入车位之间的泊入距离作为所述切换基准,所述泊入距离包括所述初始视角对应的初始距离值和所述最终视角对应的最终距离值;
根据所述初始基准值和所述最终基准值确定过渡基准值值,包括:
根据所述初始距离值和所述最终距离值确定过渡距离值,所述过渡距离值为所述过渡视角对应的所述泊入距离的值;
根据所述过渡基准值确定从所述过渡视角至所述最终视角的切换比例,包括:
根据所述过渡距离值和所述初始距离值确定从所述过渡视角至所述最终视角的切换比例。
在某些实施方式中,所述三维泊车的显示方法包括:
根据所述初始视角对应的所述车辆的位置和所述泊入车位的位置确定所述初始距离值。
在某些实施方式中,所述初始视角包括所述虚拟相机的初始相机位置和初始预览位置,所述最终视角包括所述虚拟相机的最终相机位置和最终预览位置,所述过渡视角包括所述虚拟相机的过渡相机位置和过渡预览位置,根据所述切换比例、所述初始视角和所述最终视角确定所述过渡视角,包括:
根据所述切换比例、所述初始相机位置和所述最终相机位置,确定所述过渡相机位置;
根据所述切换比例、所述初始预览位置和所述最终预览位置,确定所述过渡预览位置。
在某些实施方式中,根据所述初始视角、所述过渡视角和所述最终视角显示所述虚拟相机绘制的所述三维泊车场景的多个图像帧,包括:
获取所述虚拟相机处于所述初始视角时绘制的初始泊车画面的图像帧、处于所述过渡视角时绘制的过渡泊车画面的图像帧、和处于所述最终视角时绘制的最终泊车画面的图像帧;
依次显示所述初始泊车画面的图像帧、所述过渡泊车画面的图像帧和所述最终泊车画面的图像帧。
本申请提供了一种车辆。所述车辆包括存储器和处理器,所述存储器存储有计算机程序,所述处理器用于执行所述程序以实现上述任一实施方式的三维泊车的显示方法。
本申请提供了一种包含计算机可执行指令的非易失性计算机可读存储介质,当所述计算机可执行指令被一个或多个处理器执行时,使得所述处理器执行上述任一实施方式的三维泊车的显示方法。
本申请实施方式的控制方法、车辆及计算机可读存储介质中,根据基于泊车启动指令确定的虚拟相机对三维泊车场景的初始视角和最终视角,以及基于初始视角和最终视角确定的过渡视角,显示虚拟相机绘制的三维泊车场景的多个图像帧,使得显示的泊车画面与泊车实际场景相适应,并使得初始视角与最终视角之间的切换较为连贯自然,从而使得视觉效果较好,有利于提高用户体验。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
请参阅图1、图2和图3,本申请提供一种三维泊车的显示方法和车辆1000。
本申请提供的三维泊车的显示方法包括:
步骤S12:根据获取到的泊车启动指令确定虚拟相机对三维泊车场景的初始视角和最终视角;
步骤S14:根据初始视角和最终视角确定过渡视角;
步骤S16:根据初始视角、过渡视角和最终视角,显示虚拟相机绘制的三维泊车场景的多个图像帧。
本申请提供的车辆1000包括存储器102和处理器101,存储器102存储有计算机程序,处理器101用于执行程序以实现上述的三维泊车的显示方法。
也即是说,处理器101用于根据获取到的泊车启动指令确定虚拟相机对三维泊车场景的初始视角和最终视角;及用于根据初始视角和最终视角确定过渡视角;以及用于根据初始视角、过渡视角和最终视角,显示虚拟相机绘制的三维泊车场景的多个图像帧。
本申请实施方式的控制方法和车辆1000中,根据基于泊车启动指令确定的虚拟相机对三维泊车场景的初始视角和最终视角,以及基于初始视角和最终视角确定的过渡视角,显示虚拟相机绘制的三维泊车场景的多个图像帧,使得显示的泊车画面与泊车实际场景相适应,并使得初始视角与最终视角之间的切换较为连贯自然,从而使得视觉效果较好,有利于提高用户体验。
具体地,车辆1000可包括显示部件,可通过显示部件显示虚拟相机绘制的三维泊车场景的多个图像帧。显示部件包括中控屏幕、仪表屏幕、挡风玻璃中的至少一种。可以理解,挡风玻璃可用于抬头显示(Head Up Display,HUD)。
在步骤S12中,可根据泊车启动指令确定三维泊车场景,再根据三维泊车场景确定虚拟相机对三维泊车场景的初始视角和最终视角。如此,实现根据泊车启动指令确定初始视角和最终视角。
具体地,泊车启动指令可由用户触发。例如可通过用户输入的语音信息、手势信息、按键信息、触屏信息中的至少一个触发泊车启动指令。
具体地,泊车启动指令也可由车辆1000根据检测数据自行触发。例如可通过检测到的目标车位的图像触发泊车启动指令。在此不进行限定。
具体地,三维泊车场景包括找车场景、选车场景、溜车场景、泊入场景中的至少一个。
在三维泊车场景的数量为一个的情况下,可直接将该三维泊车场景对应的初始的视角作为初始视角,并直接将该三维泊车场景对应的最终的视角作为最终视角,
在三维泊车场景的数量为多个的情况下,可将第一个三维泊车场景对应的初始的视角作为初始视角,并将最后一个三维泊车场景对应的最终的视角作为最终视角。
在一个例子中,三维泊车场景包括找车场景,可将找车场景对应的初始的视角作为初始视角,并将找车场景对应的最终的视角作为最终视角;
在另一个例子中,三维泊车场景包括找车场景和选车场景,可将找车场景对应的初始的视角作为初始视角,并将选车场景对应的最终的视角作为最终视角;
在又一个例子中,三维泊车场景包括泊入场景,可将泊入场景对应的初始的视角作为初始视角,并将泊入场景对应的最终的视角作为最终视角。
在此不对三维泊车场景的具体形式进行限定。
每种三维泊车场景对应的视角可预先设定并存储在车辆1000中,在确定了三维泊车场景时,即可根据三维泊车场景确定初始视角和最终视角。
请注意,步骤S12中的“三维泊车场景”并非是指真实的泊车场景,而是指与真实的泊车场景对应的、虚拟的、并由虚拟相机进行观测的三维场景。
进一步地,三维泊车场景可包括三维车辆模型和三维环境模型。其中,三维车辆模型可基于预存的车辆数据建立,三维环境模型可基于车辆采集的信号数据建立。
类似地,虚拟相机并非是指能够拍摄真实场景的相机实体,而是用于对三维泊车场景进行观察的虚拟的相机。虚拟相机处于每个视角时可对三维泊车场景绘制图像帧,用户可通过观察显示的多个图像帧,了解到多个视角下三维泊车场景的视觉状态,从而使得用户可以从多个视角观察三维泊车场景,尤其是观察三维泊车场景中的三维车辆模型。
具体地,视角可指虚拟相机观察三维泊车模型的状态。在本实施方式中,视角可包括相机位置和预览位置。相机位置指虚拟相机在三维泊车场景中所处的位置,预览位置与相机观察三维车辆模型的方向相关。相机位置至预览位置的连线,也即是虚拟相机的视线,与相机向量相关,可表示虚拟相机观察三维车辆模型的方向。
在图4的示例中,虚拟相机1002的相机位置为位置A,观察位置为位置B,位置A与位置B的连线L,为虚拟相机1002的视线。连线L与三维泊车模型1001中的水平面S之间的夹角形成拍摄角度α。
基于此,初始视角和最终视角可分别指虚拟相机在三维泊车场景中对三维泊车场景中的三维车辆模型的初始视角和最终视角。而过渡视角可理解为,虚拟相机在从初始视角切换至最终视角的过程中的视角。也即是,虚拟相机在从初始相机位置运动至最终相机位置,并将视线从初始预览位置调整至最终预览位置的过程中,相机的位置和朝向。
如前所述,每种场景对应的视角可预先设定并存储在车辆1000中,在确定了三维泊车场景时,即可确定对应的视角,从而可以确定拍摄角度。例如,找车场景的拍摄角度为38°,选车场景的拍摄角度为58°,泊入场景初始的拍摄角度为58°,泊入场景最终的拍摄角度为90°。
请注意,在本实施方式中,相机位置坐标可用坐标系X轴的坐标值、坐标系Y轴的坐标值和坐标系Z轴的坐标值表示。坐标系X轴用来虚拟相机左右移动,坐标系Y轴用来控制虚拟相机垂直于显示器移动,坐标系Z轴用来控制虚拟相机上下移动。
可以理解,过渡视角的数量可以为1个、2个、3个、4个或其他数量。过渡视角的数量越多,从初始视角至最终视角的切换就越自然、细腻。在此不对过渡视角的数量进行限定。
在本实施方式中,步骤S16包括:获取虚拟相机处于初始视角时绘制的初始泊车画面的图像帧、处于过渡视角时绘制的过渡泊车画面的图像帧、和处于最终视角时绘制的最终泊车画面的图像帧;依次显示初始泊车画面的图像帧、过渡泊车画面的图像帧和最终泊车画面的图像帧。
对应地,处理器101用于获取虚拟相机处于初始视角时绘制的初始泊车画面的图像帧、处于过渡视角时绘制的过渡泊车画面的图像帧、和处于最终视角时绘制的最终泊车画面的图像帧;以及用于依次显示初始泊车画面的图像帧、过渡泊车画面的图像帧和最终泊车画面的图像帧。
如此,实现根据初始视角、过渡视角和最终视角,显示虚拟相机绘制的三维泊车场景的多个图像帧。而且,由于初始泊车画面的图像帧、过渡泊车画面的图像帧和最终泊车画面的图像帧依次显示,用户可以从初始视角观察三维车辆模型,顺滑地切换到从最终视角观察三维车辆模型,避免了画面帧的混乱显示,有利于提高视觉效果。
具体地,在控制终端100的操作系统为安卓系统(android)的情况下,初始泊车画面的图像帧、过渡泊车画面的图像帧和最终泊车画面的图像帧可通过开放图形库(OpenGraphics Library,openGL)绘制。在控制终端100的操作系统为IOS系统的情况下,初始泊车画面的图像帧、过渡泊车画面的图像帧和最终泊车画面的图像帧可通过Metal绘制。在此不对绘制画面帧的方式进行限定。
具体地,在过渡画面帧的数量为多个的情况下,显示器可在显示初始画面帧后,依次显示多个过渡画面帧,再显示最终画面帧。
接下来以泊车场景包括找车场景和溜车场景为例,对本申请实施方式的三维泊车的显示方法的效果,进行进一步解释和说明。
请参阅图5,相关技术在泊车过程中,从找车场景切换至溜车场景时,虚拟相机直接从找车视角切换至溜车视角。即,从显示找车视角对应的图像帧P01,直接切换至显示溜车视角对应的图像帧P02。请参阅图6,相关技术在泊车过程中,虚拟相机从溜车视角切换至找车视角时,从显示溜车视角对应的图像帧P02,直接切换至显示找车视角对应的图像帧P01。
这样,视角切换较为生硬,不够自然,视觉效果较差,用户容易感受到泊车画面中的车辆突然放大或缩小,导致用户体验较差。
请参阅图7,而本实施方式的三维泊车的显示方法在泊车过程中,从找车场景切换至溜车场景时,虚拟相机从找车视角切换至第一过渡视角、再切换至第二过渡视角、再切换至第三过渡视角,最后切换至溜车视角。即,从显示找车视角对应的图像帧P11,切换至显示第一过渡视角对应的图像帧P12、再切换至显示第二过渡视角对应的图像帧P13、再切换至显示第三过渡视角对应的图像帧P14,最后切换至显示溜车视角对应的图像帧P15。
请参阅图8,本实施方式的三维泊车的显示方法在泊车过程中,从溜车场景切换至找车场景时,虚拟相机从溜车视角切换至第三过渡视角、再切换至第二过渡视角、再切换至第一过渡视角,最后切换至找车视角。即,从显示溜车视角对应的图像帧P15,切换至显示第三过渡视角对应的图像帧P14、再切换至显示第二过渡视角对应的图像帧P13、再切换至显示第一过渡视角对应的图像帧P12,最后切换至显示溜车视角对应的图像帧P11。
这样,在找车视角和溜车视角之间,通过三个过渡视角,实现了过渡效果,使得显示器显示的泊车画面更加顺滑、自然,泊车画面中的车辆不会突兀地变大或变小,在视觉上产生了过渡的效果,用户体验较好。
请参阅图9,在某些实施方式中,步骤S14包括:
步骤S141:根据三维泊车场景所处的泊车阶段确定切换基准,切换基准包括初始视角对应的初始基准值和最终视角对应的最终基准值;
步骤S142:根据初始基准值和最终基准值确定过渡基准值,过渡基准值为过渡视角对应的切换基准的值;
步骤S143:根据过渡基准值确定从过渡视角至最终视角的切换比例;
步骤S144:根据切换比例、初始视角和最终视角,确定过渡视角。
在某些实施方式中,处理器101用于根据三维泊车场景所处的泊车阶段确定切换基准,切换基准包括初始视角对应的初始基准值和最终视角对应的最终基准值;及用于根据初始基准值和最终基准值确定过渡基准值,过渡基准值为过渡视角对应的切换基准的值;及用于根据过渡基准值确定从过渡视角至最终视角的切换比例;以及用于根据切换比例、初始视角和最终视角,确定过渡视角。
如此,实现根据初始视角和最终视角确定过渡视角。而且,由于切换基准根据泊车阶段确定,使得切换基准适应于不同的泊车阶段,可以提高过渡视角确定的准确性,从而使得切换更加自然顺滑,有利于提高视觉效果。
在步骤S141中,初始基准值为初始视角对应的切换基准的值,最终基准值为最终视角对应的切换基准的值。
具体地,切换基准可包括虚拟相机的拍摄角度、相机位置、预览位置、切换时刻中的至少一个。可以理解,初始基准值为初始视角对应的切换基准的值,最终基准值为最终视角对应的切换基准的值。
例如,切换基准为拍摄角度,初始基准值为:30,最终基准值为60;又如,切换基准为相机位置的X值,初始基准值为:1,最终基准值为:2;又如,切换基准为预览位置的Y值,初始基准值为:2,最终基准值为:1;再如,切换基准为显示器显示泊车显示界面的第几秒,初始基准值为:1,最终基准值:2。
以上仅为示例,在此不对切换基准的具体形式,以及初始基准值和最终基准值的具体数值进行限定。
在步骤S142中,可利用ValueAnimator工具根据初始基准值和最终基准值确定过渡基准值。具体地,通过以下代码,可生成从初始基准值y_start和最终基准值y_end之间的一系列数字,也即是多个过渡基准值。
ValueAnimator translateAnimator=ValueAnimator.ofFloat(y_start,y_end)。
可以理解,也可利用预定值根据初始基准值和最终基准值确定过渡基准值。例如,初始基准值为1,最终基准值为10,预定值为1,则可确定过渡基准值为:2,3,4,5,6,7,8,9。
在此不对确定过渡基准值的具体方式进行限定。
另外,过渡基准值的数量可为多个,相邻两个过渡基准值的差值相同。如此,使得过渡效果更加均匀,视觉上更加顺滑,有利于提高用户体验。
请参阅图10,在某些实施方式中,泊车阶段包括泊入前阶段,步骤S141包括:
步骤S1411:在三维泊车场景处于泊入前阶段的情况下,将虚拟相机的拍摄角度作为切换基准,拍摄角度包括初始视角对应的初始角度值和最终视角对应的最终角度值;
步骤S142包括:
步骤S1421:根据初始角度值和最终角度值确定过渡角度值,过渡角度值为过渡视角对应的拍摄角度的值;
步骤S143包括:
步骤S1431:根据过渡角度值和最终角度值确定从过渡视角至最终视角的切换比例。
在某些实施方式中,泊车阶段包括泊入前阶段,处理器101用于在三维泊车场景处于泊入前阶段的情况下,将虚拟相机的拍摄角度作为切换基准,拍摄角度包括初始视角对应的初始角度值和最终视角对应的最终角度值;及用于根据初始角度值和最终角度值确定过渡角度值,过渡角度值为过渡视角对应的拍摄角度的值;以及用于根据过渡角度值和最终角度值确定从过渡视角至最终视角的切换比例。
如此,在三维泊车场景处于泊入前阶段的情况下,通过初始角度值和最终角度值确定过渡角度值,从而确定从过渡视角至最终视角的切换比例,处理过程简单,可以提高处理速度。
在步骤S1411中,三维泊车场景处于泊入前阶段,是指,在三维泊车场景下车辆1000未进行泊入运动。例如三维泊车场景为找车场景、选车场景、溜车场景中的至少一个。在此不进行限定。可以理解,处于泊入前阶段的三维泊车场景的视角切换基本都是让找车区域从大到小或者从小到大,并且虚拟相机绕X轴进行一定角度旋转。
在步骤S1421中,可通过如前所述的ValueAnimator工具或预定值,根据初始角度值和最终角度值确定过渡角度值。为避免冗余,在此不再赘述。
步骤S1431中,可将过渡角度值与最终角度值的比值,作为切换比例。
在一个例子中,三维泊车场景包括找车场景和选车场景,找车场景对应的初始角度值为38°;选车场景对应的最终角度值为58°。可通过如下代码生成38-58之间的多个过渡角度值:ValueAnimator translateAnimator=ValueAnimator.ofFloat(38,58)。在一个过渡角度值为48的情况下,该过渡角度值对应的切换比例为48/58。
请参阅图11,在某些实施方式中,泊车阶段包括泊入阶段,步骤S141包括:
步骤S1412:在三维泊车场景处于泊入阶段的情况下,将车辆1000与泊入车位之间的泊入距离作为切换基准,泊入距离包括初始视角对应的初始距离值和最终视角对应的最终距离值;
步骤S142包括:
步骤S1422:根据初始距离值和最终距离值确定过渡距离值,过渡距离值为过渡视角对应的泊入距离的值;
步骤S143包括:
步骤S1432:根据过渡距离值和初始距离值确定从过渡视角至最终视角的切换比例。
在某些实施方式中,泊车阶段包括泊入阶段,处理器101用于在三维泊车场景处于泊入阶段的情况下,将车辆1000与泊入车位之间的泊入距离作为切换基准,泊入距离包括初始视角对应的初始距离值和最终视角对应的最终距离值;及用于根据初始距离值和最终距离值确定过渡距离值,过渡距离值为过渡视角对应的泊入距离的值;以及用于根据过渡距离值和初始距离值确定从过渡视角至最终视角的切换比例。
如此,在三维泊车场景处于泊入阶段的情况下,初始距离值和最终距离值确定过渡距离值,从而确定从过渡视角至最终视角的切换比例,使得视角的切换与车辆的运动同步,在车辆开始泊入时,视角切换也开始进行,在车辆完成泊入时,视角切换也已经完成,使得视觉效果更好。
在步骤S1412中,三维泊车场景处于泊入阶段,可指,在三维泊车场景下车辆1000正在进行泊入运动。
在一个例子中,选车完成后即开始进行泊入,则选车场景的最终的视角为初始视角,泊入场景的最终的视角为最终视角。
在另一个例子中,找车完成后即开始进行泊入,则找车场景的最终的视角为初始视角,泊入场景的最终的视角为最终视角。在此不进行限定。
在步骤S1412中,可通过如前所述的ValueAnimator工具或预定值,根据初始距离值和最终距离值确定过渡距离值。为避免冗余,在此不再赘述。
步骤S1432中,可确定初始距离值与当前距离值的差值,并将差值与初始距离值的比值,作为切换比例。
在一个例子中,三维泊车场景为泊入场景,即处于泊入阶段,初始距离值为100,最终距离值为0。可通过如下代码生成100-0之间的多个过渡距离值:
ValueAnimator translateAnimator=ValueAnimator.ofFloat(38,58)。
在一个过渡距离值为30的情况下,该过渡距离值对应的切换比例为7/10。
请参阅图12,在某些实施方式中,三维泊车的显示方法包括:
步骤S13:根据初始视角对应的车辆的位置和泊入车位的位置确定初始距离值。
在某些实施方式中,处理器101用于根据初始视角对应的车辆的位置和泊入车位的位置确定初始距离值。
如此,可以快速确定初始距离值,有利于缩短三维泊车的显示方法的执行时间,从而提高响应速度。可以理解,初始视角对应的车辆的位置,是指泊入开始时车辆的位置,车辆1000从该位置开始运动,直至泊入车位。
具体地,车辆的位置可为车辆的中心点的位置,泊入车位的位置可为泊入车位的中心点的位置。如此,使得初始距离值的确定更加准确。
具体地,车辆的位置可指三维环境模型中三维车辆模型的位置,泊入车位的位置可指三维环境模型中泊入车位的位置。如此,可快速地获取位置坐标,从而减少确定初始距离值的时间。进一步地,可通过空间的两点间距离公式计算初始距离值。
可以理解,车辆的位置也可为现实场景中车辆的位置,泊入车位的位置可为现实场景中泊入车位的位置。例如,车辆的位置可基于全球定位系统、北斗卫星导航系统等导航系统确定。泊入车位的位置可基于车辆1000采集的传感数据、停车场的数据等确定。在此不进行限定。
请参阅图13,在某些实施方式中,初始视角包括虚拟相机的初始相机位置和初始预览位置,最终视角包括虚拟相机的最终相机位置和最终预览位置,过渡视角包括虚拟相机的过渡相机位置和过渡预览位置,步骤S144包括:
步骤S1441:根据切换比例、初始相机位置和最终相机位置,确定过渡相机位置;
步骤S1442:根据切换比例、初始预览位置和最终预览位置,确定过渡预览位置。
在某些实施方式中,处理器101用于根据切换比例、初始相机位置和最终相机位置,确定过渡相机位置;以及用于根据切换比例、初始预览位置和最终预览位置,确定过渡预览位置。
如此,在相机位置和预览位置两个维度,实现根据切换比例、初始视角和最终视角,确定过渡视角,使得过渡视角的确定更加准确。如前所述,视角可包括相机位置和预览位置。相机位置指虚拟相机在三维泊车模型中所处的位置,预览位置与虚拟相机观察三维泊车模型的方向相关。所以,确定了过渡相机位置和过渡预览位置,就可以确定对应的一个过渡视角,避免了过渡视角的错误。
在一个例子中,三维泊车场景处于泊入前阶段。可根据最终预览位置的Z坐标值和切换比例,确定过渡预览位置的Z坐标值。即:
float translateZ=Z1*percent;
其中,translateZ为过渡预览位置的Z坐标值,Z1为最终预览位置的Z坐标值,percent为切换比例。然后,可通过如下代码,设置过渡预览位置(0,0,translateZ):mCam.lookAt(0,0,translateZ)。
接着,可根据最终预览位置的Y坐标值、初始预览位置的Y坐标值和切换比例,确定中间值;并根据中间值和过渡角度值,确定过渡相机位置的Y坐标值和Z坐标值。
上述过程用代码可表示为:
float lookY=Y0+(Y1-Y0)*percent;
float cameraZ=(float)Math.sin(a1/180.0f*Math.PI)*lookY;
float y=(float)Math.cos(a1/180.0f*Math.PI)*lookY;
其中,Y0为初始预览位置的Y坐标值,Y1为最终预览位置的Y坐标值,percent为切换比例,lookY为中间值,cameraZ为过渡相机位置的Y坐标值,y为过渡相机位置的Y坐标值。
最后,可通过代码设置过渡相机位置,即:
mCam.position.set(mCam.position.x,y,cameraZ)。
可以理解,对于每一个过渡视角对应的切换比例,都可以进行上述的过程,以确定对应的过渡预览位置和过渡相机位置,从而确定该过渡视角。
如此,可实现找车区域从大到小或者从小到大,并且虚拟相机绕X轴进行一定角度旋转。
在另一个例子中,三维泊车场景为泊入场景,即处于泊入阶段,可根据最终相机位置的X坐标值、初始相机位置的X坐标值和切换比例,确定过渡相机位置的X坐标值。可根据最终相机位置的Y坐标值、初始相机位置的Y坐标值和切换比例,确定过渡相机位置的Y坐标值。可根据最终相机位置的Z坐标值、初始相机位置的Z坐标值和切换比例,确定过渡相机位置的Z坐标值。即:
float x2=x0+(x1-x0)*percent;
float y2=y0+(y1-y0)*percent;
float z2=(z0+(z1-z0)*percent)*(1-percent);
其中,切换比例为percent;x0为初始相机位置的X坐标值,x1为最终相机位置的X坐标值,x2为过渡相机位置的X坐标值;y0为初始相机位置的Y坐标值,y1为最终相机位置的Y坐标值,y2为过渡相机位置的Y坐标值;z0为初始相机位置的Z坐标值,z1为最终相机位置的Z坐标值,z2为过渡相机位置的Z坐标值。
另外,可根据初始相机位置和初始预览位置确定初始向量,可根据最终相机位置和最终预览位置,确定最终向量。然后,根据初始向量、最终向量和切换比例,确定当前向量,最后,根据当前向量确定过渡预览位置。即:
x4=x3+(x5-x3)*percent;
y4=y3+(y5-y3)*percent;
z4=z3+(z5-z3)*percent;
z4=z4*(1-percent);
其中,切换比例为percent;x3为初始向量的X坐标值,x5为最终向量的X坐标值,x4为过渡向量的X坐标值;y3为初始向量的Y坐标值,y5为最终向量的Y坐标值,y4为过渡向量的Y坐标值;z3为初始向量的Z坐标值,z5为最终向量的Z坐标值,z4为过渡向量的Z坐标值。过渡预览位置可基于过渡向量(x4,y4,z4)确定。
可以理解,在泊入过程中,如果维持某个单一角度进行泊入,用户的视觉感受较不只管。而在该示例中,随着泊入的逐渐推进,视角逐渐切换,同时,环境逐渐放大,可以让用户更直观的查看整个泊入过程。
以上仅为示例,并不代表对根据切换比例、初始视角和最终视角确定过渡视角的限制。
本申请实施方式还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当计算机可执行指令被一个或多个处理器101执行时,使得处理器101执行上述任一实施方式的三维泊车的显示方法。
本申请实施方式的存储介质,根据基于泊车启动指令确定的虚拟相机对三维泊车场景的初始视角和最终视角,以及基于初始视角和最终视角确定的过渡视角,显示虚拟相机绘制的三维泊车场景的多个图像帧,使得显示的泊车画面与泊车实际场景相适应,并使得初始视角与最终视角之间的切换较为连贯自然,从而使得视觉效果较好,有利于提高用户体验。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于一非易失性计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。