一种基于Unity3D图像渲染的优化方法及系统技术方案

技术编号:15840232 阅读:81 留言:0更新日期:2017-07-18 16:44
本发明专利技术涉及Unity 3D引擎领域,尤其涉及一种基于Unity 3D图像渲染的优化方法及系统。所述优化方法包括:预设缓存区域,所述缓存区域包括两个以上的子区域;所述子区域的状态包括空闲状态和锁定状态;创建解码线程,解码线程将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;于主线程创建渲染线程,渲染线程读取锁定状态的子区域内的图像信息至Unity 3D,对图像信息填充纹理后进行图像渲染。通过将解码线程与渲染线程分离,通过设置包括两个以上的子区域的缓存区域,并且通过设置子区域的状态,实现解码线程的写入操作与渲染线程的读取操作相互分离,避免将正在解码中的数据进行渲染,造成错误。

Optimization method and system based on Unity3D image rendering

The invention relates to a Unity 3D engine field, especially relates to a method and system for optimizing Unity image rendering based on 3D. The optimization methods include: the default cache area, the buffer area includes the sub area of more than two; the sub regional state including the idle state and the locking state; create decoding threads, thread will decode the image sub region information is decoded VLC video player output write idle state; in the main thread create the render thread, rendering thread read lock state within the sub region image information to Unity 3D, the image information after filling texture image rendering. By decoding the thread separation and rendering thread, including two sub regions by setting the buffer area, and by setting the sub regions of the state, the read operation decoding thread write operations and rendering threads from each other, to avoid being decoded data in rendering errors.

【技术实现步骤摘要】
一种基于Unity3D图像渲染的优化方法及系统
本专利技术涉及Unity3D引擎领域,尤其涉及一种基于Unity3D图像渲染的优化方法及系统。
技术介绍
随着VR技术的兴起,全景视频的需求也是节节攀升。传统的视频播放器都是将图像渲染在一张平面的2D纹理上。而全景播放器则是需要随着视角的变换,展示的内容也随之发生变化。这就需要在3D的坐标系下才能满足。目前Unity是市面上炽手可热的3D引擎,VLC则是成熟的开源视频播放器。通过用Unity3D引擎构建场景物件(视频投影幕),再利用VLC提供强大的视频解码能力,把输出的纹理贴到3D的视频投影幕上,则可投射出类似球形,方形的视频出来,可以满足了全景视频的应用场景,然而相比普通的2D播放器,需要带来额外的性能消耗,其原因有两方面:一是相比2D播放器,全景播放器中用到的球形、方形或柱状体等,这些模型所需要的面数精度远高于2D播放器中的一个平面(仅需要包含2个面即可),球形模型想要达到较好的精度,通常需要上万的面数。在现代图像学中最终是需要对每个面进行UV映射,故全景播放器在进行UV映射时需要消耗更多的性能;二是视频解码器输出的每一帧的视频图像并不能直接显示在Unity的模型上,需要先填充在一张Unity的Texture2D(Unity纹理)上,再将这张Texture2D贴在3D的视频投影幕上才行,就如同把一张长方形的海报,按规定的坐标映射关系贴到一个篮球上。Unity对于图像的渲染是有要求,必须要在主线程中进行,而视频解码是个耗时的工作,如果也在主线程中进行势必造成整个播放器的渲染效率降低。
技术实现思路
本专利技术所要解决的技术问题是:提供一种高效的基于Unity3D图像渲染的优化方法及系统。为了解决上述技术问题,本专利技术采用的技术方案为:一种基于Unity3D图像渲染的优化方法,包括:预设缓存区域,所述缓存区域包括两个以上的子区域;所述子区域的状态包括空闲状态和锁定状态;创建解码线程,所述解码线程将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;变更子区域的状态为锁定状态;于主线程创建渲染线程,所述渲染线程读取锁定状态的子区域内的图像信息至Unity3D,对图像信息填充纹理后进行图像渲染。本专利技术采用的另一技术方案为:一种基于Unity3D图像渲染的优化系统,包括预设模块、写入模块、变更模块和读取模块;预设模块,用于预设缓存区域,所述缓存区域包括两个以上的子区域;所述子区域的状态包括空闲状态和锁定状态;写入模块,用于创建解码线程,所述解码线程将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;变更模块,用于变更子区域的状态为锁定状态;读取模块,用于于主线程创建渲染线程,所述渲染线程读取锁定状态的子区域内的图像信息至Unity3D,对图像信息填充纹理后进行图像渲染。本专利技术的有益效果在于:本专利技术提供的基于Unity3D图像渲染的优化方法及系统,通过将解码线程与渲染线程分离,二者不在同一线程中,使得视频解码不会造成整个播放器的渲染效果降低,再则由于二者不在同一线程,需要增加缓存的拷贝和同步,通过设置包括两个以上的子区域的缓存区域,并且通过设置子区域的状态,实现解码线程的写入操作与渲染线程的读取操作相互分离,避免将正在解码中的数据进行渲染,造成错误,并且能够提升渲染效率。附图说明图1为本专利技术的基于Unity3D图像渲染的优化方法的步骤流程图;图2为本专利技术的基于Unity3D图像渲染的优化系统的步骤流程图;标号说明:1、预设模块;2、写入模块;3、变更模块;4、读取模块。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。本专利技术最关键的构思在于:通过将解码线程与渲染线程分离,二者不在同一线程中,通过设置包括两个以上的子区域的缓存区域,并且通过设置子区域的状态,实现解码线程的写入操作与渲染线程的读取操作相互分离,避免将正在解码中的数据进行渲染,造成错误。请参照图1,本专利技术提供的一种基于Unity3D图像渲染的优化方法,包括:预设缓存区域,所述缓存区域包括两个以上的子区域;所述子区域的状态包括空闲状态和锁定状态;创建解码线程,所述解码线程将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;变更子区域的状态为锁定状态;于主线程创建渲染线程,所述渲染线程读取锁定状态的子区域内的图像信息至Unity3D,对图像信息填充纹理后进行图像渲染。从上述描述可知,本专利技术的有益效果在于:本专利技术提供的基于Unity3D图像渲染的优化方法,通过将解码线程与渲染线程分离,二者不在同一线程中,使得视频解码不会造成整个播放器的渲染效果降低,再则由于二者不在同一线程,需要增加缓存的拷贝和同步,通过设置包括两个以上的子区域的缓存区域,并且通过设置子区域的状态,实现解码线程的写入操作与渲染线程的读取操作相互分离,避免将正在解码中的数据进行渲染,造成错误,并且能够提升渲染效率。进一步的,还包括:图像信息填充纹理后,锁定状态的子区域的状态变更为空闲状态。由上述描述可知,在上述实施方式中,将图像信息填充纹理后的子区域的状态变更为空闲状态,也就是初始化,解码线程识别到空闲状态的子区域即可写入图像信息,实现内存资源多次利用。进一步的,将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中,之前还包括:判断所有子区域中是否存在状态为空闲状态的子区域,若是,则将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;若否,则间隔预设时长后继续判断所有子区域中是否存在状态为空闲状态的子区域。由上述描述可知,在上述实施方式中,解码线程在写入图像信息之前,事先判断所有子区域的状态,子区域初始化时的状态为空闲状态,空闲状态的子区域是可以写入图像信息数据的,写入后,该子区域的状态就变更为锁定状态,此时该子区域就不能用于接收图像信息数据了,只能等待渲染线程读取。因此,若所有的子区域的状态都被标记为锁定状态,则需要等待预设时长后继续判断,直到存在空闲状态的子区域,此时将图像信息数据写入至空闲状态的子区域,从而有效地通过子区域的状态将解码线程与渲染线程相隔离。进一步的,若存在空闲状态的子区域,将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中,具体为:若存在空闲状态的子区域,获取空闲状态的子区域中字节数不少于图像信息字节数的子区域,得到子区域集合;将VLC视频播放器输出的已解码的图像信息写入子区域集合中字节数最少的子区域。由上述描述可知,在上述实施方式中,为了适应不同字节大小的图像信息,子区域的数量可以是多个的,并且子区域的字节空间也可以是不同的,此时先获取空闲状态的子区域中字节数不少于图像信息字节数的子区域,得到子区域集合,该子区域集合内的子区域也就是满足装载图像信息字节数的要求,并且选择该子区域集合内字节数最少的子区域,即为最接近图像信息字节数的子区域,实现提升子区域空间高利用率。进一步的,若子区域集合为空,将图像信息按照预设固定字节长度划分成多个子图像信息,依次写入空闲状态的子区域中。由上述描述可知,在上述实施方式中,若子区域集合为空,也就是说,该图像信息的字节数超长,大于所有子区域的字节数,所以将图像信息按照预设固定字节长本文档来自技高网
...
一种基于Unity3D图像渲染的优化方法及系统

【技术保护点】
一种基于Unity 3D图像渲染的优化方法,其特征在于,包括:预设缓存区域,所述缓存区域包括两个以上的子区域;所述子区域的状态包括空闲状态和锁定状态;创建解码线程,所述解码线程将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;变更子区域的状态为锁定状态;于主线程创建渲染线程,所述渲染线程读取锁定状态的子区域内的图像信息至Unity 3D,对图像信息填充纹理后进行图像渲染。

【技术特征摘要】
1.一种基于Unity3D图像渲染的优化方法,其特征在于,包括:预设缓存区域,所述缓存区域包括两个以上的子区域;所述子区域的状态包括空闲状态和锁定状态;创建解码线程,所述解码线程将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;变更子区域的状态为锁定状态;于主线程创建渲染线程,所述渲染线程读取锁定状态的子区域内的图像信息至Unity3D,对图像信息填充纹理后进行图像渲染。2.根据权利要求1所述的基于Unity3D图像渲染的优化方法,其特征在于,还包括:图像信息填充纹理后,锁定状态的子区域的状态变更为空闲状态。3.根据权利要求1所述的基于Unity3D图像渲染的优化方法,其特征在于,将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中,之前还包括:判断所有子区域中是否存在状态为空闲状态的子区域,若是,则将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中;若否,则间隔预设时长后继续判断所有子区域中是否存在状态为空闲状态的子区域。4.根据权利要求3所述的基于Unity3D图像渲染的优化方法,其特征在于,若存在空闲状态的子区域,将VLC视频播放器输出的已解码的图像信息写入空闲状态的子区域中,具体为:若存在空闲状态的子区域,获取空闲状态的子区域中字节数不少于图像信息字节数的子区域,得到子区域集合;将VLC视频播放器输出的已解码的图像信息写入子区域集合中字节数最少的子区域。5.根据权利要求4所述的基于Unity3D图像渲染的优化方法,其特征在于,若子区域集合为空,将图像信息按照预设固定字节长度划分成多个子图像信息,依次写入空闲状态的子区域中...

【专利技术属性】
技术研发人员:刘德建张毅郭玉湖
申请(专利权)人:福建天泉教育科技有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1