三维场景渲染方法、系统、装置及存储介质制造方法及图纸

技术编号:32819674 阅读:16 留言:0更新日期:2022-03-26 20:17
本发明专利技术属于计算机视觉技术领域,具体涉及一种三维场景渲染方法、系统、装置及存储介质。该方法包括:划分三维模型场景数据;创建三维场景相机;场景渲染。其中,定义当前渲染场景为S,将当前渲染场景S划分为固定部分场景S

【技术实现步骤摘要】
三维场景渲染方法、系统、装置及存储介质


[0001]本专利技术属于计算机视觉
,具体涉及一种三维场景渲染方法、系统、装置和存储介质。

技术介绍

[0002]随着三维设计技术的不断发展和深入应用,越来越多的零工程设计都采用三维模型的形式设计和存储。在工业CAD/CAE设计中,一个设计工程常包含多个具有业务意义的三维模型。以CAD类设计软件为例,在图元绘制、场景布置类常用交互中,如果场景规模较大的话,由于每帧场景渲染均需要将所有模型的顶点添加到OpenGL(Open Graphics Library)中进行渲染,所以渲染性能较差。
[0003]由于目前所有的三维模型均是由空间三维的点构成。一个点生成点,二个点生成线,三个或多个点生成三角面片或者多边形面。OpenGL提供的绘制也是通过顶点数组确认绘制内容,顶点为表示当前三维模型的点集合,配合链接方式可以实现点线面的绘制。但是通过分析,图元绘制与场景布置的时候,场景主体是没有变化的,只有当前动态绘制的部分是在变化的。
[0004]所以需要提供一种用于三维场景的高效渲染方法,使其能够通过缓存当前主体的渲染数据,在后面的每一帧场景渲染中复用并合成动态修改的部分,可以大大的降低当前帧场景的渲染内容。

技术实现思路

[0005]为解决现有技术中每帧场景渲染均需要将所有模型的顶点添加到OpenGL中进行渲染,导致渲染性能较差的问题,本专利技术提供了一种三维场景渲染方法、系统、装置和存储介质,通过缓存当前主体的渲染数据,在后面的每一帧场景渲染中复用并合成动态修改的部分,可以大大的降低当前帧场景的渲染内容,提高交互的流畅性。
[0006]本专利技术采用以下技术方案实现:
[0007]一种三维场景渲染方法,包括:
[0008]一、划分三维模型场景数据;
[0009]定义当前渲染场景为S,将当前渲染场景S划分为固定部分场景S
f
和变化部分场景,其中,所述变化部分场景拆分为透明部分场景S
t
与不透明部分场景S
c

[0010]二、创建三维场景相机;
[0011]创建相机C,作为当前渲染场景S的主相机,在主相机C下创建三个从属相机C
f
、C
c
、C
t
分别加载场景S
f
、S
c
、S
t
的场景数据,并为每个相机创建当前窗口像素大小的用于渲染使用的两张纹理图片;
[0012]三、场景渲染;
[0013]将数据变化部分场景渲染到变化部分的纹理图片中缓存;将固定部分场景S
f
渲染到帧场景缓存对象,复用上一帧场景的纹理图片;将缓存的变化部分的纹理图片数据以及
固定部分渲染的帧场景缓存对象的纹理图片数据混合,得到渲染成果,将渲染成果提交到界面渲染,并重复上述场景渲染操作开始下一帧场景的渲染。
[0014]作为本专利技术的进一步方案,所述划分三维模型场景数据中,定义的当前渲染场景S,与划分后的固定部分场景S
f
、透明部分场景S
t
以及不透明部分场景S
c
的关系满足:S=S
f
∪S
c
∪S
t
,其中,U表示求并运算。
[0015]进一步的,所述划分三维模型场景数据中,场景中的每个构件模型称之为元素,所述固定部分场景S
f
(Fix Scene)表示场景中一般固定的元素集合,通常情况下为场景的模型数据,只有在模型数据增删改的情况下才会触发修改;
[0016]所述不透明部分场景S
c
(Changing Scene)表示场景中频繁变化的元素集合,通常情况下为JIG动态绘制数据,模型会依赖当前鼠标位置实时变化;
[0017]所述透明部分场景S
t
(Transparent Scene)表示场景中带透明度的元素集合,通常情况下为绘制辅助数据,图元带有透明度。
[0018]作为本专利技术的进一步方案,所述创建三维场景相机时,在每帧场景渲染时,创建的主相机C的相机矩阵与从属相机C
f
、从属相机C
c
、从属相机C
t
的相机矩阵一致。
[0019]进一步的,所述创建三维场景相机时,为每个相机创建当前窗口像素大小的用于渲染使用的两张纹理图片包括纹理图片CT(Color Texture)和纹理图片DT(Depth Texture)。
[0020]进一步的,所述创建三维场景相机时,还包括:在主相机C下再创建一个始终填充屏幕的矩形HUD相机C
h
,用于针对矩形屏幕进行纹理填充,实现场景数据的渲染;其中,HUD相机C
h
的创建方式为:根据固定视口矩阵M
v
与投影矩阵M
p
在HUD相机C
h
下添加一个对应的矩形,获得矩形顶点列表;
[0021]所述固定视口矩阵M
v
为所述投影矩阵M
p
为所述矩形顶点列表为(

1,

1,0)、(

1,1,0)、(1,1,0)、(1,

1,0)。
[0022]作为本专利技术的进一步方案,所述场景渲染时,调用OpenGL(Open Graphics Library)进行场景渲染,在绘制到指定相机节点时进行分情况处理;其中,将数据变化部分场景渲染到变化部分的纹理图片中缓存,包括:
[0023]将主相机C的相机姿态,更新到从属相机C
c
和从属相机C
t
的相机姿态中;其中,所述相机姿态由视口变换矩阵、投影矩阵、视口矩阵组成,用于决定当前相机的观察方向与成像大小;
[0024]通过OpenGL的glBindFramebufferEXT方法将从属相机C
c
和从属相机C
t
的深度缓存与颜色缓存分别渲染到纹理图片CT
c
、纹理图片DT
c
和纹理图片CT
t
、纹理图片DT
t
中,其中,所述纹理图片CT
c
、纹理图片DT
c
为从属相机C
c
对应的不透明部分场景S
c
对应的纹理图片CT和
纹理图片DT,所述纹理图片CT
t
、纹理图片DT
t
为从属相机C
t
对应的透明部分场景S
t
对应的纹理图片CT和纹理图片DT。
[0025]进一步的,所述将固定部分场景S
f
渲染到帧场景缓存对象,复用上一帧场景的纹理图片,包括:
[0026]记录当前从属相机C
f
的相机姿态,与主本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种三维场景渲染方法;其特征在于,该三维场景渲染方法包括:一、划分三维模型场景数据;定义当前渲染场景为S,将当前渲染场景S划分为固定部分场景S
f
和变化部分场景,其中,所述变化部分场景拆分为透明部分场景S
t
与不透明部分场景S
c
;二、创建三维场景相机;创建相机C,作为当前渲染场景S的主相机,在主相机C下创建三个从属相机C
f
、C
c
、C
t
分别加载场景S
f
、S
c
、S
t
的场景数据,并为每个相机创建当前窗口像素大小的用于渲染使用的两张纹理图片;三、场景渲染;将数据变化部分场景渲染到变化部分的纹理图片中缓存;将固定部分场景S
f
渲染到帧场景缓存对象,复用上一帧场景的纹理图片;将缓存的变化部分的纹理图片数据以及固定部分渲染的帧场景缓存对象的纹理图片数据混合,得到渲染成果,将渲染成果提交到界面渲染,并重复上述场景渲染操作开始下一帧场景的渲染。2.如权利要求1所述的三维场景渲染方法,其特征在于:所述划分三维模型场景数据中,定义的当前渲染场景S,与划分后的固定部分场景S
f
、透明部分场景S
t
以及不透明部分场景S
c
的关系满足:S=S
f
∪S
c
∪S
t
,其中,U表示求并运算。3.如权利要求2所述的三维场景渲染方法,其特征在于:所述创建三维场景相机时,为每个相机创建当前窗口像素大小的用于渲染使用的两张纹理图片包括纹理图片CT和纹理图片DT。4.如权利要求3所述的三维场景渲染方法,其特征在于:所述创建三维场景相机时,还包括:在主相机C下再创建一个始终填充屏幕的矩形HUD相机C
h
,用于针对矩形屏幕进行纹理填充,实现场景数据的渲染;其中,HUD相机C
h
的创建方式为:根据固定视口矩阵M
v
与投影矩阵M
p
在HUD相机C
h
下添加一个对应的矩形,获得矩形顶点列表;所述固定视口矩阵M
v
为:所述投影矩阵M
p
为:所述矩形顶点列表为(

1,

1,0)、(

1,1,0)、(1,1,0)、(1,

1,0)。5.如权利要求4所述的三维场景渲染方法,其特征在于:所述场景渲染时,调用OpenGL进行场景渲染,在绘制到指定相机节点时进行分情况处理;其中,将数据变化部分场景渲染到变化部分的纹理图片中缓存,包括:将主相机C的相机姿态,更新到从属相机C
c
和从属相机C
t
的相机姿态中;其中,所述相机
姿态由视口变换矩阵、投影矩阵、视口矩阵组成;通过OpenGL的glBindFramebufferEXT方法将从属相机C
c
和从属相机C
t
的深度缓存与颜色缓存分别渲染到纹理图片CT
c
、纹理图片DT
c
和纹理图片CT
t
、纹理图片DT
t
中,其中,所述纹理图片CT
c
、纹理图片DT
c
为从...

【专利技术属性】
技术研发人员:朱林生李多曾江佑王海民
申请(专利权)人:江西博微新技术有限公司
类型:发明
国别省市:

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

1