一种基于视频的3d图形实时渲染的方法及其系统

文档序号:1802455 发布日期:2021-11-05 浏览:24次 >En<

阅读说明:本技术 一种基于视频的3d图形实时渲染的方法及其系统 (Video-based 3D (three-dimensional) graph real-time rendering method and system ) 是由 刘德建 李臻 黄昌彦 陈宏展 于 2021-08-25 设计创作,主要内容包括:本发明提供了一种基于视频的3D图形实时渲染的方法,所述方法通过3D图形预渲染环节和播放环节来实现渲染,其中在3D图形预渲染环节,将画面内容进行预渲染操作,然后将3D画面的变化过程录制成视频;在播放环节,通过对用户的交互操作识别,来转义成视频的播放进度控制,实现等效的图形渲染效果;该方法移植性高,复用性强。(The invention provides a video-based 3D (three-dimensional) graph real-time rendering method, which realizes rendering through a 3D graph pre-rendering link and a playing link, wherein in the 3D graph pre-rendering link, the pre-rendering operation is carried out on the content of a picture, and then the change process of the 3D picture is recorded into a video; in the playing link, the interactive operation identification is carried out on the user to define the playing progress control of the video, so that the equivalent graphic rendering effect is realized; the method has high portability and strong reusability.)

一种基于视频的3D图形实时渲染的方法及其系统

技术领域

本发明涉及3D图形渲染的技术领域,特别是一种基于视频的3D图形实时渲染的方法及其系统。

背景技术

3D渲染是通过电脑计算的方式把模型从3D模型网格呈现出2D真实感高的图像,计算过程包含光线及辅助光线,材料的材质和纹理,相机相关设置等综合变量。3D渲染可在本机电脑渲染,但是效率低,渲染时间长。着急的项目、场景项目可以试用云渲染,可批量渲染,批量出结果,节省渲染时间,提高工作效率,事半功倍。

现有的3D图形渲染技术存在如下缺点:1、业界现有方案,一般渲染和播放环节采用同一个引擎。对播放器而言,画面效果受引擎的渲染能力限制。如果引擎的渲染能力欠佳,那么无法提供理想的画面效果;

2、难以移植,使用到的资源/源代码难以从使用一个引擎的工程移植到使用不同引擎的工程;

3、实时播放画面的环节,对硬件的要求较高,通常采用的3D实时渲染方式,对硬件的要求比本发明采用的“播放视频”的要求更高。尤其是越期望画面效果好的情况下,硬件要求越高;

4、包体积过大,越是精细、华丽的画面效果,一般来说越需要体积更为庞大的资源,从而最终客户端的包体积也更大;

5、复用性低,对于已经渲染过的画面,在后续的实时渲染过程中,依然需要再次渲染。难以对硬件已经运算过的结果进行复用。

发明内容

为克服上述问题,本发明的目的是提供一种基于视频的3D图形实时渲染的方法,能基于3D图形渲染引擎,实时渲染3D画面,该方法移植性高,复用性强。

本发明采用以下方案实现:一种基于视频的3D图形实时渲染的方法,所述方法通过3D图形预渲染环节和播放环节来实现渲染,其中在3D图形预渲染环节,将画面内容进行预渲染操作,然后将3D画面的变化过程录制成视频;在播放环节,通过对用户的交互操作识别,来转义成视频的播放进度控制,实现等效的图形渲染效果。

进一步的,所述3D图形预渲染环节进一步具体为:步骤S11、使用3D图形渲染引擎,对3D画面进行渲染;

步骤S12、捕捉每一帧渲染的画面;

步骤S13、将每一帧画面整合成视频,此处视频的编码能根据实际情景做调整,如果在播放期间,期望视频置顶、在视频之下还要有其它底板,那么使用PNG视频编码的方式,将每一帧画面整合成带有阿尔法通道的视频;

步骤S14、对视频文件进行存储,以便后续播放环节使用。

进一步的,所述播放环节进一步具体为:步骤S21、读取3D图形预渲染环节产出的视频文件,并加载到内存;

步骤S22、识别用户的交互,转义成对视频的正序或逆序、加快或放慢播放指令;即在UI界面上按住“顺时针旋转模型”或“逆时针旋转模型”的按钮,引发视频的正序或逆序播放;按住按钮时间较久时,需要加速模型旋转,引发视频的加速播放;

步骤S23、根据播放指令,获得要播放的视频帧的缓冲范围,并从视频文件中提取对应的各个视频帧、依次填入缓冲区;

步骤S24、在播放期间的每一帧,从缓冲区获得视频关键帧画面,并播放。

进一步的,所述步骤S23进一步具体为:根据播放指令,获得要播放的视频帧的缓冲范围,该缓冲范围即为一系列的帧编号,并从视频文件中提取对应的各个视频帧、依次填入缓冲区,即:首先,获取当前正在播放的帧编号,其次,获取播放的方向,该方向为正序或逆序,如果是正序播放,那么缓冲范围是当前帧及之后一定帧数的画面,该一定帧数是通过配置文件来配置1倍速播放的情况下默认的帧数;反之,如果是逆序播放,那么缓冲的范围是当前帧及之前一定帧数的画面;如果有加速或者减速播放的情况,那么缓冲的帧数量对应增加或者减少,该帧数量对应增加或者减少是用播放速率乘以配置文件中指定的1倍速播放情况下的帧数来获得;从而在流畅度和内存占用之间寻求平衡;

最后,根据这个缓冲范围,从视频文件中加载每一帧的画面,放入缓冲区。

本发明还提供了一种基于视频的3D图形实时渲染的系统,所述系统通过3D图形预渲染模块和播放模块来实现渲染,所述3D图形预渲染模块,用于将画面内容进行预渲染操作,然后将3D画面的变化过程录制成视频;所述播放模块,通过对用户的交互操作识别,来转义成视频的播放进度控制,实现等效的图形渲染效果。

进一步的,所述3D图形预渲染模块的实现方式进一步具体为:使用3D图形渲染引擎,对3D画面进行渲染;

捕捉每一帧渲染的画面;

将每一帧画面整合成视频,此处视频的编码能根据实际情景做调整,如果在播放期间,期望视频置顶、在视频之下还要有其它底板,那么使用PNG视频编码的方式,将每一帧画面整合成带有阿尔法通道的视频;

对视频文件进行存储,以便后续播放环节使用。

进一步的,所述播放模块的实现方式进一步具体为:读取3D图形预渲染环节产出的视频文件,并加载到内存;

识别用户的交互,转义成对视频的正序或逆序、加快或放慢播放指令;即在UI界面上按住“顺时针旋转模型”或“逆时针旋转模型”的按钮,引发视频的正序或逆序播放;按住按钮时间较久时,需要加速模型旋转,引发视频的加速播放;

根据播放指令,获得要播放的视频帧的缓冲范围,并从视频文件中提取对应的各个视频帧、依次填入缓冲区;

在播放期间的每一帧,从缓冲区获得视频关键帧画面,并播放。

进一步的,所述根据播放指令,获得要播放的视频帧的缓冲范围,该缓冲范围即为一系列的帧编号,并从视频文件中提取对应的各个视频帧、依次填入缓冲区,即:首先,获取当前正在播放的帧编号,其次,获取播放的方向,该方向为正序或逆序,如果是正序播放,那么缓冲范围是当前帧及之后一定帧数的画面,该一定帧数是通过配置文件来配置1倍速播放的情况下默认的帧数;反之,如果是逆序播放,那么缓冲的范围是当前帧及之前一定帧数的画面;如果有加速或者减速播放的情况,那么缓冲的帧数量对应增加或者减少,该帧数量对应增加或者减少是用播放速率乘以配置文件中指定的1倍速播放情况下的帧数来获得;从而在流畅度和内存占用之间寻求平衡;

最后,根据这个缓冲范围,从视频文件中加载每一帧的画面,放入缓冲区。

本发明的有益效果在于:1、解决缺点1-播放器的引擎渲染能力要求高:由于3D图形预渲染环节的输出物是一个视频,因此对于播放环节使用的渲染引擎的要求大大降低。在播放环节只需要播放引擎支持视频播放,即可达到目的,因此大幅降低了对播放器所采用的引擎的渲染能力的要求。

2、解决缺点2-移植性弱:由于3D图形预渲染环节的输出物是一个视频,而视频文件在业界具有较好的通用性,因此在播放环节不需要考虑资源/代码跨引擎移植的问题。

3、解决缺点3-实时播放的硬件门槛:本发明将整体过程拆为2个环节,对于后一个环节(播放环节),由于采用的是播放视频的策略,因此硬件门槛大幅降低。

4、解决缺点4-包体积过大:对于发布给用户使用的播放器而言,由于本发明以“视频文件”作为它的Input;而视频的大小取决于时长、分辨率、帧率、码率、编码方案等参数,与画面的精细/华丽程度不构成正相关。因此可以避开业界通常会遇到的“越是精细、华丽的画面效果,一般来说越需要体积更为庞大的资源”的问题。

5、解决缺点5-复用性低:由于3D图形预渲染环节已经使用计算机的CPU、GPU进行过一次渲染、输出为视频,因此在第2次以后的播放环节,无需再次处理“渲染”的工作,只需要按规则播放视频中的指定帧即可。

附图说明

图1是本发明的方法流程示意图。

图2是本发明的系统原理框图。

具体实施方式

下面结合附图对本发明做进一步说明。

本发明是一种基于视频的3D图形实时渲染的方法,所述方法通过3D图形预渲染环节和播放环节来实现渲染,其中在3D图形预渲染环节,将画面内容进行预渲染操作,然后将3D画面的变化过程录制成视频;在播放环节,通过对用户的交互操作识别,来转义成视频的播放进度控制,实现等效的图形渲染效果。

请参阅图1所示,所述3D图形预渲染环节进一步具体为:步骤S11、使用3D图形渲染引擎(如Unity渲染引擎、Unreal渲染引擎),对3D画面进行渲染;注意此处如果追求渲染效果,那么可以使用业界在图形渲染方面表现卓越的引擎,并且允许每帧耗费较多时间进行渲染。

步骤S12、捕捉每一帧渲染的画面;

步骤S13、将每一帧画面整合成视频,此处视频的编码能根据实际情景做调整,如果在播放期间,期望视频置顶、在视频之下还要有其它底板,那么使用PNG视频编码的方式,将每一帧画面整合成带有阿尔法通道的视频;该带有阿尔法通道的视频的用途是:在项目中有需要把这个视频叠在其它内容上方的需求。

步骤S14、对视频文件进行存储,以便后续播放环节使用。

所述播放环节进一步具体为:步骤S21、读取3D图形预渲染环节产出的视频文件,并加载到内存;

步骤S22、识别用户的交互,转义成对视频的正序或逆序、加快或放慢播放指令;即在UI界面上按住“顺时针旋转模型”或“逆时针旋转模型”的按钮,引发视频的正序或逆序播放;按住按钮时间较久时,需要加速模型旋转,引发视频的加速播放;

步骤S23、根据播放指令,获得要播放的视频帧的缓冲范围(一系列的帧编号),并从视频文件中提取对应的各个视频帧、依次填入缓冲区:如果是正序播放,那么缓冲范围是当前帧及之后一定帧数的画面;如果是逆序播放,那么缓冲范围是当前帧及之前一定帧数的画面;如果有加速或减速播放的情况,那么缓冲的帧数量对应增加或减少,从而在流畅度和内存占用之间寻求平衡;进一步的,(1)首先,获取当前正在播放的帧编号;

(2)其次,获取播放的方向(正序/逆序),如果是正序播放,那么缓冲的范围是当前帧及之后一定帧数的画面(目前这个帧数,是通过配置文件来配置1倍速播放的情况下,默认的帧数。从而在不同的目标硬件水准、不同的视频规格下,可以通过调整配置文件来实现最佳经验数值的应用);

反之如果是逆序播放,那么缓冲的范围是当前帧及之前一定帧数的画面;如果有加速/减速播放的情况,那么缓冲的帧数量对应增加/减少,从而在流畅度和内存占用之间寻求平衡(目前帧数量增加/减少的方式,是用[播放速率]乘以[配置文件中指定的1倍速情况下的帧数]得来)。

(3)最后,根据这个缓冲范围(一系列的帧编号),从视频文件中加载每一帧的画面,放入缓冲区。

步骤S24、在播放期间的每一帧,从缓冲区获得视频关键帧画面,并播放。

总之,本发明使用3D图形渲染引擎,将3D画面的变化过程录制成支持透明通道的视频格式,并通过一定的播放过程控制手段,实现等同于3D实时渲染的效果。

请参阅图2所示,本发明还提供了一种基于视频的3D图形实时渲染的系统,所述系统通过3D图形预渲染模块和播放模块来实现渲染,所述3D图形预渲染模块,用于将画面内容进行预渲染操作,然后将3D画面的变化过程录制成视频;所述播放模块,通过对用户的交互操作识别,来转义成视频的播放进度控制,实现等效的图形渲染效果。

所述3D图形预渲染模块的实现方式进一步具体为:使用3D图形渲染引擎(如Unity渲染引擎、Unreal渲染引擎),对3D画面进行渲染;

捕捉每一帧渲染的画面;

将每一帧画面整合成视频,此处视频的编码能根据实际情景做调整,如果在播放期间,期望视频置顶、在视频之下还要有其它底板,那么使用PNG视频编码的方式,将每一帧画面整合成带有阿尔法通道的视频;该带有阿尔法通道的视频的用途是:在项目中有需要把这个视频叠在其它内容上方的需求。

对视频文件进行存储,以便后续播放环节使用。

所述播放模块的实现方式进一步具体为:读取3D图形预渲染环节产出的视频文件,并加载到内存;

识别用户的交互,转义成对视频的正序或逆序、加快或放慢播放指令;即在UI界面上按住“顺时针旋转模型”或“逆时针旋转模型”的按钮,引发视频的正序或逆序播放;按住按钮时间较久时,需要加速模型旋转,引发视频的加速播放;

根据播放指令,获得要播放的视频帧的缓冲范围,并从视频文件中提取对应的各个视频帧、依次填入缓冲区:如果是正序播放,那么缓冲范围是当前帧及之后一定帧数的画面;如果是逆序播放,那么缓冲范围是当前帧及之前一定帧数的画面;如果有加速或减速播放的情况,那么缓冲的帧数量对应增加或减少,从而在流畅度和内存占用之间寻求平衡;

在播放期间的每一帧,从缓冲区获得视频关键帧画面,并播放。

根据播放指令,获得要播放的视频帧的缓冲范围,并从视频文件中提取对应的各个视频帧、依次填入缓冲区即:(1)首先,获取当前正在播放的帧编号;

(2)其次,获取播放的方向(正序/逆序),如果是正序播放,那么缓冲的范围是当前帧及之后一定帧数的画面(目前这个帧数,是通过配置文件来配置1倍速播放的情况下,默认的帧数。从而在不同的目标硬件水准、不同的视频规格下,可以通过调整配置文件来实现最佳经验数值的应用);

反之如果是逆序播放,那么缓冲的范围是当前帧及之前一定帧数的画面;如果有加速/减速播放的情况,那么缓冲的帧数量对应增加/减少,从而在流畅度和内存占用之间寻求平衡(目前帧数量增加/减少的方式,是用[播放速率]乘以[配置文件中指定的1倍速情况下的帧数]得来)。

(3)最后,根据这个缓冲范围(一系列的帧编号),从视频文件中加载每一帧的画面,放入缓冲区。

该系统可以应用于3D画面的播放期间,对用户的交互所带来的期望效果可以提前预判的场合。

例如期望通过旋转的方式,观察一个3D物体,在这种情景下,可以预判:无论用户如何旋转该模型,最终都是播放模型旋转到一定角度的画面。这样3D图形预渲染环节确保预先拆分出来的(离散的)每个角度的画面都被渲染和录制,从而服务于播放的环节。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于中小型场景的环形三维影像采集装置及实景建模方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类