一种基于移动终端平台的多格特效渲染方法及系统的制作方法

文档序号:8260277阅读:432来源:国知局
一种基于移动终端平台的多格特效渲染方法及系统的制作方法
【技术领域】
[0001]本发明涉及移动终端平台(1S/Android/WP)特效渲染技术领域,尤其是一种基于移动终端的多格特效渲染方法。
【背景技术】
[0002]目前移动终端平台的基于实时特效的摄影摄像类应用在某一分类下的特效展示大多基于静态样片(由设计人员设计的特效样图)的展示。这类展示方法存在着它自身的优点,但是这样的展示方式不够直观,用户不能直接观察到其当前拍摄影像进行特效渲染后的效果,且需要用户在特效静态样片及拍照界面之间切换,操作不便。
[0003]为此人们提出了一种实时特效渲染方法,以解决操作不便的问题。即是,实时获取摄像头拍摄到的预览帧图像,并按照用户选定特效对图像进行渲染,使用户能够直观看到预拍摄景象经过特效渲染后的效果。用户体验更优。
[0004]然而,基于移动终端平台的摄像应用程序提供的特效滤镜往往是多种,当用户想要浏览全部的特效渲染效果时,就需要不停的切换滤镜效果。由于这种方法只能显示一种特效渲染效果,用户在选择最优的效果时依然存在不够直观的问题。

【发明内容】

[0005]针对上述情况,若能提供一种多格显示特效渲染效果的方法,将能带来更佳的用户体验。也即是,在屏幕上设置多个显示格,每个显示格实时显示当前场景经过某特效滤镜渲染后的效果,每个显示格的特效滤镜不同,以便用户能够同时、直观的看到当前预拍摄场景经过不同的特效滤镜渲染后的效果。
[0006]本发明采用的技术方案如下,包括:
[0007]步骤1:将显示区域分为多格并确定每个显示格的位置信息Ri,以及确定每个显示格对应的特效Ei, i取值为1、2、…、N1, N1为大于I的自然数;
[0008]步骤2:获取摄像头拍摄到的当前预览帧,基于所述当前预览帧创建纹理数据;
[0009]步骤3:使用特效EJi应的渲染动作对所述纹理数据进行渲染,并将渲染结果按照位置信息民显示到第i显示格中;i取值为1、2、…、N i,N1为大于I的自然数。
[0010]所述步骤3进一步包括:
[0011]步骤3.1:将特效Ei进行渲染动作拆分,得到N2个渲染子动作,记为渲染子动作P」,j取值为1、2、…、N2,N2为大于I的自然数;
[0012]步骤3.2:使用渲染子动作所述纹理数据进行离屏渲染,并将渲染结果作为下一个渲染子动作的处理对象进行渲染,依次类推,使用渲染子动作&对使用渲染子动作Pu处理得到的离屏渲染结果进行离屏渲染,直到得到使用渲染子动作Pn2对使用渲染子动作PN2_i&理得到的离屏渲染结果进行离屏渲染的最终结果;
[0013]步骤3.3:依据位置信息Ri的宽高比和所述纹理数据的宽高比计算出使所述最终结果在第i显示格居中无压缩显示的纹理坐标数据UVcmp;
[0014]步骤3.4:根据所述纹理坐标数据11'_将离屏渲染的最终结果居中显示到第i显示格中。
[0015]进一步,还包括步骤4:当检测到用户选中某一显示格的渲染结果时,则将该显示格的渲染结果放大至全屏。
[0016]或者包括步骤4:当检测到用户选中某一显示格的渲染结果时,则执行:
[0017]步骤4.1:将该显示格放大至全屏;
[0018]步骤4.2:获取摄像头拍摄到的当前预览帧,基于所述当前预览帧创建第二纹理数据;
[0019]步骤4.3:使用该显示格的特效对应的渲染动作对第二纹理数据进行渲染,将渲染结果显示到放大至全屏的显示格中。
[0020]所述步骤4.3进一步包括:
[0021]步骤4.3.1:将该显示格的特效进行渲染动作拆分,得到N2个渲染子动作,记为渲染子动作P」,j取值为1、2、…、N2,N2为大于I的自然数;
[0022]步骤4.3.2:使用渲染子动作PJt所第二述纹理数据进行离屏渲染,并将渲染结果作为下一个渲染子动作的处理对象进行渲染,依次类推,使用渲染子动作&对使用渲染子动作IV1处理得到的离屏渲染结果进行离屏渲染,直到得到使用渲染子动作P N2对使用渲染子动作P1^1*理得到的离屏渲染结果进行离屏渲染的最终结果;
[0023]步骤4.3.3:依据显示屏的宽高比和所述第二纹理数据宽高比计算出使所述离屏渲染的最终结果在显示屏居中无压缩显示的纹理坐标数据UV' crop;
[0024]步骤4.3.4:根据所述纹理坐标数据Uv'将离屏渲染的最终结果居中显示到放大至全屏的显示格中。
[0025]所述步骤4.1中显示格放大至全屏的过渡动作进一步包括:
[0026]步骤4.1.1:令用户选中的显示格原来的位置信息为M1,放大至全屏后的位置信息为M2;定义运动曲线方程f(t);根据M1、M2及运动曲线方程f(t)得到显示格尺寸及位置随时间变化曲线组:将显示格位置信息Ml中的左上角横坐标与运动曲线方程f(t)相加得到显示格左上角横坐标随时间变化曲线,将显示格位置信息Ml中的左上角纵坐标与运动曲线方程f(t)相加得到显示格左上角纵坐标随时间变化曲线,将显示格位置信息Ml中的宽与运动曲线方程f(t)相加得到显示格的宽随时间变化曲线,将显示格位置信息Ml中的高与运动曲线方程f(t)相加得到显示格的高随时间变化曲线;
[0027]步骤4.1.2:执行过渡动作,根据前述显示格尺寸及位置随时间变化曲线组计算当前时刻显示格的左上角坐标、宽与高;并检测当前显示格的宽是否大于位置信息M2中的宽,若超出则将当前显示格的宽设为位置信息M2中的宽,检测当前显示格的高是否大于位置信息M2中的高,若超出则将当前显示格的高设为位置信息M2中的高,以及检测当前显示格是否超出显示屏,若是则对当前显示格进行平移使其位于显示屏内,否则重复本步骤4.1.2,直到当前显示格的高与宽分别等于位置信息M2中的高与宽并且当前显示格未超出显示屏。
[0028]本发明还提供了与上述方法步骤一一对应的软系统。
[0029]综上所述,由于采用了上述技术方案,本发明的有益效果是:
[0030]本发明实现了多格特效渲染,使得用户能同时看到当前预拍摄场景的不同特效渲染效果,以便用户能直观比较哪种特效更佳,用户体验更好。
[0031]本发明还支持将用户选中的特效显示格进行放大,以便用户查看,同时保证放大后显示格显示预览帧的实时性。
[0032]本发明实现流程简洁,占用硬件资源少,可在移动终端平台上使用,且保证流畅性。
【具体实施方式】
[0033]本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
[0034]本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0035]本发明一个实施例包括:
[0036]步骤1:将显示区域分为多格并确定每个显示格的位置信息Ri,以及确定每个显示格对应的特效Ei, i取值为1、2、…、N1, N1为大于I的自然数。具体的,将显示区域分为3X3个显示格,每个显示格的位置信息Ri至少包括显示格的左上角坐标,高与宽。
[0037]步骤2:获取摄像头拍摄到的当前预览帧,基于所述当前预览帧创建纹理数据。
[0038]步骤3:使用特效EJi应的渲染动作对所述纹理数据进行渲染,并将渲染结果按照位置信息民显示到第i显示格中;i取值为1、2、…、N i,N1为大于I的自然数。
[0039]由于图片的特效渲染过程为已有技术,本发明在此不再赘述其需要的硬件资源、参数及渲染具体过程。
[0040]由于某些特效滤镜是由多个渲染效果叠加的,例如,某些特效由2个或3个子特效叠加的效果。因此,在本发明的另一个实施例的步骤3进一步包括:
[0041]步骤3.1:将特效Ei进行渲染动作拆分,得到N2个渲染子动作,记为渲染子动作P」,j取值为1、2、…、N2,N2为大于I的自然数。
[0042]步骤3.2:使用渲染子动作P1对所述纹理数据进行离屏渲染,并将渲染结果作为下一个渲染子动作的处理对象进行渲染,依次类推,使用渲染子动作&对使用渲染子动作Pp1处理得到的离屏渲染结果进行离屏渲染,直到得到使用渲染子动作Pn2对使用渲染子动作Pi1处理得到的离屏渲染结果进行离屏渲染的最终结果。也即是说,将前一渲染子动作处理的结果作为下一渲染子动作的处理输入,直到将N2个子特效叠加到当前预览帧的纹理数据上,得到特效Ei的渲染结果。
[0043]步骤3.3:依据位置信息Ri的宽高比和所述纹理数据的宽高比计算出使所述最终结果在第i显示格居中无压缩显示的纹理坐标数据uV_p。例如位置信息的宽高比为1:1,纹理数据的宽高比为4:3,本领域技术人员知晓GPU将所有纹理数据坐标归一化到O?I之间,且默认纹理数据的左上角坐标为(0,0),右下角坐标为(1,1)。为了使纹理数据能在第i显示格中居中显示,需要对纹理数据坐标进行剪裁,本例中剪裁后的纹理数据的左上角坐标为(1/8,O),相应的右下角坐标为(7/8,I)。
[0044]步骤3.4:根据所述纹理坐标数据11'_将离屏渲染的最终结果居中显示到第i显示格中,即是显示格中显示的纹理数据左上角的内容为原纹理数据坐标的(1/8,0)对应的内容,显示格中显示的纹理数据右下角的内容为原纹理数据坐标(7/8,I)对应的内容。
[0045]在又一实施例中,还包括步骤4:当检测到用户选中某一显示格的渲染结果时,则将该显示格的渲染结果放大至全屏。具体的,当检测到用户的触屏动作,且触屏动作的发生坐标位于某一显示格区域内时,则认为该显示格被选中,当然选中操作并不局限于这种,目前针对手机等移动终端平台的选中操作均可用于本实施例中。
[0046]将显示格放大至全屏的过渡动作进一步包括:
[0047]令用户选中的显示格原来的位置信息为M1,放大至全屏后的位置信息为M2;定义运动曲线方程f(t),本实施例中选择的运动曲线方程为f(t) = 1.0-2_t(t彡0),t为时间,f(t)表示显示格的位置信息随时间的变化量。
[0048]根据M1、M2及运动曲线方程f(t)得到显示格尺寸及位置随时间变化曲线组,具体的,将显示格位置信息Ml中的左上角横坐标作为初始值与增量f(t)相加得到显示格左上角横坐标随时间变化曲线,将显示格位置信息Ml中的左上角纵坐标作为初始值与增量f(t)相加得到显示格左上角纵坐标随时间变化曲线,将显示格位置信息Ml中的宽作为初始值与增量f(t)相加得到显示格的宽随
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1