通过二维模拟的三维场景互动方法及计算机可读存储介质与流程

专利检索2022-05-10  211


本发明涉及三维技术领域,尤其涉及一种通过二维模拟的三维场景互动方法及计算机可读存储介质。

背景技术

目前在游戏中,经常看到虚拟形象在三维背景中进行各种操作的场景。该方案的实现不仅需要实时渲染三维的虚拟形象,还需要实时渲染三维背景,需要实时处理大量数据,对设备的性能要求非常高。

并且,目前的三维舞台互动技术,主要是对组成三维舞台画面的多层图像单独进行控制,达不到整体画面联动的效果。例如课程直播类的舞台,由背景、主播和观众这三个独立的子画面组成,但三个子画面都是独立控制的,如主播(老师)仅能控制自己的子画面的显示大小,无法控制其他子画面。



技术实现要素:

本发明所要解决的技术问题是:提供一种通过二维模拟的三维场景互动方法及计算机可读存储介质,通用性强,且可提高三维场景的互动效果。

为了解决上述技术问题,本发明采用的技术方案为:一种通过二维模拟的三维场景互动方法,包括:

获取三维场景,所述三维场景包括前景层和背景层,所述前景层用于显示三维模型,所述背景层用于显示二维视频;

所述前景层和所述背景层通过互动指令进行互动;

其中,所述前景层和背景层通过互动指令进行互动,包括:

前景层发送第一互动指令至背景层,背景层根据所述第一互动指令,执行对应的互动任务,所述第一互动指令包括变换指令和/或特效触发指令;

和/或背景层发送第二互动指令至前景层,前景层根据所述第二互动指令,控制所述三维模型执行对应的动作。

本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

本发明的有益效果在于:通过细分三维场景为前景和背景,对前景采用三维技术显示,对背景采用二维技术显示,从整体上营造三维舞台的效果,且可降低对设备的性能要求,适用于大部分终端设备,使用门槛低,通用性强;通过前景与背景的互动,丰富了整体内容,提升了整体效果的协调性,提高整体画面的联动效果。

附图说明

图1为本发明实施例一的一种通过二维模拟的三维场景互动方法的流程图;

图2为本发明实施例一的构建三维场景的方法流程图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。

请参阅图1,一种通过二维模拟的三维场景互动方法,包括:

获取三维场景,所述三维场景包括前景层和背景层,所述前景层用于显示三维模型,所述背景层用于显示二维视频;

所述前景层和所述背景层通过互动指令进行互动;

其中,所述前景层和背景层通过互动指令进行互动,包括:

前景层发送第一互动指令至背景层,背景层根据所述第一互动指令,执行对应的互动任务,所述第一互动指令包括变换指令和/或特效触发指令;

和/或背景层发送第二互动指令至前景层,前景层根据所述第二互动指令,控制所述三维模型执行对应的动作。

从上述描述可知,本发明的有益效果在于:可降低对设备的性能要求,通用性强;且可提高三维场景的互动效果。

进一步地,所述获取三维场景之前,进一步包括:

对三维场景进行分层,得到前景层和背景层;

构建三维模型,所述三维模型可执行至少一个的动作,并将所述三维模型添加至所述前景层中;

获取视频,并将所述视频添加至所述背景层中,所述视频包括至少一个的视频源,所述视频为二维视频,所述二维视频显示三维场景;

将所述三维模型的各动作的动作编号分别与预设的视频时间点、预设的视频源编号或预设的滤镜编号一一对应地进行关联,得到第一关联关系;

将所述三维模型的各视角对应的场景编号分别与预设的视频时间点或预设的视频源编号一一对应地进行关联,得到第二关联关系。

由上述描述可知,基于2D 3D的混合使用,可降低全3D素材的制作成本,且可支持大部分的终端系统,适用于大众业务的生产。

进一步地,所述前景层发送第一互动指令至背景层,背景层根据所述第一互动指令,执行对应的互动任务具体为:

当前景层中的三维模型执行一动作时,发送变换指令至背景层,所述变换指令包括所述一动作的动作编号;

背景层根据所述变换指令中的动作编号,从所述第一关联关系中获取对应的视频时间点、视频源编号或滤镜编号;

背景层控制所述视频从所述对应的视频时间点开始播放,

或控制所述视频播放所述视频源编号对应的视频源,

或获取所述滤镜编号对应的滤镜程序,并通过所述滤镜程序对所述视频的视频帧进行修改。

由上述描述可知,背景层中的视频画面可根据前景层中的三维模型的动作变化而变化,提升整体效果的协调性。

进一步地,所述前景层发送第一互动指令至背景层,背景层根据所述第一互动指令,执行对应的互动任务具体为:

当切换所述三维模型的视角时,所述前景层发送变换指令至背景层,所述变换指令包括切换后的视角对应的场景编号;

背景层根据所述变换指令中的场景编号,从所述第二关联关系中获取对应的视频时间点或视频源编号;

背景层控制所述视频从所述对应的视频时间点开始播放,或控制所述视频播放所述视频源编号对应的视频源。

由上述描述可知,背景层中的视频画面可根据前景层中的三维模型的视角变化而变化,避免出现三维模型漂移,提升整体效果的协调性。

进一步地,所述前景层发送第一互动指令至背景层,背景层根据所述第一互动指令,执行对应的互动任务具体为:

前景层发送特效触发指令至背景层,所述特效触发指令包括特效编号;

背景层在所述视频上叠加显示所述特效编号对应的特效。

由上述描述可知,通过叠加显示特效效果,可丰富整体内容,提升互动效果。

进一步地,所述背景层发送第二互动指令至前景层,前景层根据所述第二互动指令,控制所述三维模型执行对应的动作具体为:

当背景层中的视频播放到一预设的视频时间点时,发送第二互动指令至前景层,所述第二互动指令包括所述一预设的视频时间点;

前景层根据所述一预设的视频时间点,从所述第一关联关系中获取对应的动作编号,并控制所述三维模型执行所述动作编号对应的动作。

进一步地,所述背景层发送第二互动指令至前景层,前景层根据所述第二互动指令,控制所述三维模型执行对应的动作具体为:

当背景层中的视频播放一预设的视频源时,发送第二互动指令至前景层,所述第二互动指令包括所述一预设的视频源的视频源编号;

前景层根据所述一预设的视频源的视频源编号,从所述第一关联关系中获取对应的动作编号,并控制所述三维模型执行所述动作编号对应的动作。

由上述描述可知,前景层中的三维模型的动作可基于视频内容的变化而变化,提升了整体效果的协调性。

进一步地,所述获取视频,并将所述视频添加至所述背景层中之后,进一步包括:

获取所述视频的视频帧,并确定所述视频帧中各像素点的Alpha值;

分别将各像素点的Alpha值与其RGB值进行组合,得到各像素点的ARGB值。

由上述描述可知,可将各像素点显示成相应的透明度,从而达到透明视频的效果。

进一步地,所述获取所述视频的视频帧,并确定所述视频帧中各像素点的Alpha值具体为:

获取所述视频的视频帧;

根据预设的像素点位置与Alpha值的关联关系,获取所述视频帧中各像素点的Alpha值。

进一步地,所述前景层发送第一互动指令至背景层,背景层根据所述第一互动指令,执行对应的互动任务之后,进一步包括:

背景层将所述互动任务的执行结果反馈至前景层。

由上述描述可知,使得前景层可基于执行结果对下一步做出不同的动作等效果。

本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

实施例一

请参照图1-2,本发明的实施例一为:一种通过二维模拟的三维场景互动方法,可应用于三维舞台,如图1所示,包括如下步骤:

S1:获取三维场景,所述三维场景包括前景层和背景层,所述前景层用于显示三维模型,所述背景层用于显示二维视频。

通过细分三维场景为前景与背景,大部分场景下,背景主要用于衬托前景,用户交互的关注点主要在前景上,因此对前景采用三维技术显示,以满足高互动性,而背景则采用2D技术,配合前景所需的视频画面,从整体上营造三维舞台效果。

进一步地,在该步骤之前,先构建三维场景,具体地,如图2所示,包括如下步骤。

S001:构建初始的三维场景,并对该三维场景进行分层,得到前景层和背景层。其中,前景层和背景层相当于叠加的两个图层,位于上方的图层为前景层,位于下方的图层为背景层。

S002:构建三维模型,所述三维模型可执行至少一个的动作,并将所述三维模型添加至所述前景层中。例如,构建的三维模型可为人物模型,该人物模型具有若干个动作模式,不同的动作模式对应的不同的动作,如转身、鼓掌等。同时,该人物模型还具有若干个视角,如正视、侧视等。三维模型的设计可基于如3d Max、blender等工具制作,输出的内容包含相应格式的文件,如图片素材(包含相关颜色值属性)、坐标文件等。

进一步地,将所述前景层中三维模型外的其他区域渲染为透明色。本步骤即对前景层进行渲染,可采用OpenGL技术进行渲染,渲染时,除了可视部分有相应颜色值,如图片、阴影等,其他区域都渲染为透明色。

S003:获取视频,并将所述视频添加至所述背景层中;其中,所述视频包括至少一个的视频源,所述视频为二维视频,所述二维视频显示三维场景,即视频内容为3D场景画面。本步骤即背景层进行渲染,以视频形式制作素材,视频格式可为mp4等,基于OpenGL对视频帧进行绘制。进一步地,也可以采用纯色当背景。

S004:将所述三维模型的各动作的动作编号分别与预设的视频时间点、预设的视频源编号或预设的滤镜编号一一对应地进行关联,得到第一关联关系,即一个动作编号对应一个视频时间点、一个视频源编号或一个滤镜编号。

S005:将所述三维模型的各视角对应的场景编号分别与预设的视频时间点或预设的视频源编号一一对应地进行关联,得到第二关联关系,即一个场景编号对应第一个视频时间点或一个视频源编号。

S2:所述前景层和背景层通过互动指令进行互动。

本实施例中,互动主要分为两个部分,第一部分是背景层根据前景层发送的第一互动指令执行对应的互动任务,其中,第一互动指令包括变换指令和特效触发指令,对应的互动任务包括变换视频画面、切换视频源、添加滤镜、显示特效等;第二部分是前景层根据背景层发送的第二互动指令控制三维模型执行对应的动作。

其中,前景层和背景层通过软件内容通讯机制进行指令传送。

对于第一部分,具体地,包括如下步骤:

S201:当前景层中的三维模型执行一动作时,发送变换指令至背景层,所述变换指令包括所述一动作的动作编号;

S202:背景层根据所述变换指令中的动作编号,从所述第一关联关系中获取对应的视频时间点、视频源编号或滤镜编号。当该动作编号在第一关联关系中关联的是视频时间点,则执行步骤S203;当该动作编号在第一关联关系中关联的是视频源编号,则执行步骤S204;当该动作编号在第一关联关系中关联的是滤镜编号,则执行步骤S205。

S203:背景层控制所述视频从所述对应的视频时间点开始播放,即将视频切换到指定的视频画面。

视频的视频内容可在时间轴上分为多段,每一段对应一个视频源,且每一段都对应一个开始时间点和结束时间点。在构建第一关联关系时,可将动作编号对应的视频时间点设为视频内容某一段的开始时间点。

在该步骤切换视频画面时,视频播放器可直接定位到指定的开始时间点进行播放,当播放到该段的结束时间点时,可再定位到该段的开始时间点进行该段视频内容的轮播。

S204:背景层控制所述视频播放所述视频源编号对应的视频源。

可预先对视频资源按一定的属性进行归类,在该步骤切换视频源时,切换到对应的视频源进行轮播。

S205:背景层获取所述滤镜编号对应的滤镜程序,并通过所述滤镜程序对所述视频的视频帧进行修改。

视频播放时,通过解码器可以提取到每一帧的视频帧,此时基于OpenGL对视频帧中的ARGB值或像素位置进行修改,实现滤镜效果。具体地,可通过OpenGL的着色语言GLSL编写程序对每个像素点进行着色处理,对于视频帧上每个像素点,通过修改其ARGB值可达到画面颜色变化的效果。

进一步地,第一部分还包括如下步骤:

S211:当切换所述三维模型的视角时,前景层发送变换指令至背景层,所述变换指令包括切换后的视角对应的场景编号;

S212:背景层根据所述变换指令中的场景编号,从所述第二关联关系中获取对应的视频时间点或视频源编号。当该场景编号在第二关联关系中关联的是视频时间点,则执行步骤S213;当该场景编号在第二关联关系中关联的是视频源编号,则执行步骤S214。

S213:背景层控制所述视频从所述对应的视频时间点开始播放。

S214:背景层控制所述视频播放所述视频源编号对应的视频源。

当三维模型的视角变化时,通过使背景层中的视频对应变化,从而避免出现三维模型漂移。

进一步地,场景编号对应的视频时间点和视频源编号的优先级高于动作编号对应的视频时间点和视频源编号。因此,当三维模型视角变化及动作变化时,背景层中的视频优先显示场景编号对应的视频画面。

进一步地,第一部分还包括如下步骤:

S221:前景层发送特效触发指令至背景层,所述特效触发指令包括特效编号。

S222:背景层在所述视频上叠加显示所述特效编号对应的特效。即在背景层视频的显示基础上,在Z轴(画面的深度方向)上增加显示特效效果,以丰富互动效果。

在其他实施例中,特效效果也可以叠加显示在前景层中的三维模型之上。

进一步地,对于第一部分,当背景层对于前景层的指令做出相应的UI效果后,将互动任务的执行结果(如是否执行、执行程度)反馈至前景层,使得前景层基于执行结果对下一步做出不同的动作等效果。

对于第二部分,具体地,包括如下步骤:

S231:当背景层中的视频播放到一预设的视频时间点时,发送第二互动指令至前景层,所述第二互动指令包括所述一预设的视频时间点;

S232:前景层根据所述一预设的视频时间点,从所述第一关联关系中获取对应的动作编号,并控制所述三维模型执行所述动作编号对应的动作。

进一步地,第二部分还包括如下步骤:

S241:当背景层中的视频播放一预设的视频源时,发送第二互动指令至前景层,所述第二互动指令包括所述一预设的视频源的视频源编号;

S242:前景层根据所述一预设的视频源的视频源编号,从所述第一关联关系中获取对应的动作编号,并控制所述三维模型执行所述动作编号对应的动作。

背景层会在视频播放到指定画面的时候通过指令通知前景层,前景层解析指令并转化为动作任务,使得三维模型的动作可基于视频内容的变化而变化。

通过前景与背景的互动,丰富了整体内容,提升了整体效果的协调性。

本实施例基于2D 3D的混合使用,可降低全3D素材的制作成本;采用纯软件技术,节省高昂的硬件成本,降低使用门槛,支持大部分的终端系统(智能终端系统,如Android、IOS等,包括PC上,OpenGL及视频播放都是支持的),适用于大众业务的生产;有效保证互动的即时性,使画面更逼真,提高整体舞台的联动效果。

实施例二

本实施例是实施例一的进一步拓展,相同之处不再累述,区别在于,本实施例中,对于背景层中的二维视频,可基于OpenGL技术,利用GPU渲染,通过编写shader语言,对视频画面进行绘制,使其可达到透明视频的效果。

具体地,在步骤S003中获取视频之后,对每个视频帧进行处理,标记每个像素点的透明值。本实施例中,可以有以下两种处理方法。

方法一:将视频帧划分为待透明部分和非透明部分;然后将透明部分中各像素点的一颜色分量的值设为255;并且,若非透明部分中一像素点的所述一颜色分量的值为255,则修改所述一像素点的所述一颜色分量的值,修改后的值可为0-254中的任一值,如可修改为250。

例如,将透明部分中的每个像素点的RGB中的G值(即绿色分量)设为255,对于非透明部分中的像素点,若其G值=255,则对其进行修改,使其G值不为255,从而可在后续基于各像素点的G值,确定各像素点的透明值。

方法二:构建各像素点位置与其Alpha值的关联关系。

具体地,修改视频帧的大小,使其高度变为原来的两倍,此时视频帧可分为上半部分和下半部分两部分,上半部分和下半部分中的像素点一一对应。其中,上半部分用于放置原来视频帧的画面,即上半部分中各像素点的RGB值与原来的视频帧中各像素点的RGB值相同;然后分别将下半部分中的各像素点的一颜色分量的值设为其对应的上半部分的像素点的预设透明值。也就是说,下半部分每个像素点的一颜色分量的值即表示上半部分相应位置的像素点的透明值。

例如,假设视频帧的大小为100×100,则修改后的大小为100×200;假设坐标为(10,20)的像素点被设定的透明值为125,则将坐标为(10,120)的像素点的红色分量的值设为125。

视频帧在显示时,只会显示上半部分,不会影响视频的正常播放。

步骤S003之后,还包括如下步骤:

获取所述视频的视频帧,并确定所述视频帧中各像素点的Alpha值。

具体地,当采用上述方法一对视频帧进行处理时,本步骤即分别根据视频帧中各像素点的所述一颜色分量的值,确定各像素点的透明值。具体地,若所述视频帧中一像素点的所述一颜色分量的值为255,则将所述一像素点的透明值设为0(透明值),否则将所述一像素点的透明值设为255(非透明值)。

当采用上述方法二对视频帧进行处理时,本步骤即根据预设的像素点位置与Alpha值的关联关系,获取所述视频帧中各像素点的Alpha值。具体地,即根据下半部分中对应位置的像素点的所述一颜色分量的值,确定视频帧中各像素点的Alpha值。

然后分别将各像素点的Alpha值与其RGB值进行组合,得到各像素点的ARGB值。OpenGL着色语言对每个像素点的处理结果是一个1×4的矩阵,分别包含透明度(A或Alpha)、红色值(R)、绿色值(G)、蓝色值(B),对于RGB可直接从图像中读取,像mp4格式的视频就不包含透明度的值,所以需要将Alpha与RGB组成着色数据,就能将像素点显示成相应的透明度。

本实施例中,通过达到透明视频的效果,使得背景可以显示成透明效果,且由于视频支持Alpha显示,可以对背景层进行叠加,以达到更逼真的效果,具有更好的灵活性。

实施例三

本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的通过二维模拟的三维场景互动方法实施例中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

综上所述,本发明提供的一种通过二维模拟的三维场景互动方法及计算机可读存储介质,通过细分三维场景为前景和背景,对前景采用三维技术显示,对背景采用二维技术显示,从整体上营造三维舞台的效果,且可降低对设备的性能要求,适用于大部分终端设备,使用门槛低,通用性强;通过前景与背景的互动,丰富了整体内容,提升了整体效果的协调性,提高整体画面的联动效果。通过达到透明视频的效果,使得背景可以显示成透明效果,且由于视频支持Alpha显示,可以对背景层进行叠加,以达到更逼真的效果,具有更好的灵活性。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

转载请注明原文地址:https://win.8miu.com/read-48.html

最新回复(0)