一种基于WebGL可编辑大场景渐进式实时渲染方法与流程

文档序号:21369464发布日期:2020-07-04 04:46阅读:814来源:国知局
一种基于WebGL可编辑大场景渐进式实时渲染方法与流程

本发明涉及3d实时渲染的领域,具体涉及一种基于浏览器运行的3d大场景实时渲染技术。



背景技术:

三维场景是图形可视化应用的基础,随着业务的深入,更加细化的设计,三维的数据量和场景越来越大。对于设计软件,数据的更新要求使得数据需要独立存在,也更不利于数据合并等优化降低对硬件drawcall数量的需求。另一方面,尤其是基于浏览器的webgl三维显示技术,可以充分发挥硬件和底层图形接口的能力有限。比如还不能使用高级的opengl/directx/valken等底层图形接口特性,多核/多线程使用有限,相比本地软件javascript/浏览器有额外比较高的运行时消耗。作为普通的行业用户,通常使用的电脑设备都比较大众化。在软件使用便利性的同时,对于三维场景的实时渲染就提出了很大的挑战,速度和流畅性不够就无法正常进行交互的图形应用场景,尤其是设计编辑类的应用场景。

一类静态场景浏览得应用,场景数据是静态不变的,传统的做法是通过预处理对数据进行轻量化减少数据量和分级lod数据,降低drawcall数量来提高绘制效率的优化来达到高效的三维大场景渲染。比如,对场景内的各模型进行数据合并,对贴图进行合并,对数据进行提取进行实例化绘制,模型lod多级数据。有的使用服务器或者本地,进行离线预处理。有的在软件加载数据的时候,进行数据预处理。还有的通过网络服务器进行数据交换和lod分批加载。这些方法基本上是通过提高绘制效率,数据的lod表示来提高可实时渲染的场景大小。即便如此,当设备能力是一定的情况下,也只提升可支持的场景的一定大小量,仍旧容易碰到场景大小的性能问题,受到软件、硬件的能力和处理效率的限制。同时,对于能力低下的设备,比如移动设备,笔记本电脑,也是如此。

酷家乐家装设计软件,是基于web的三维图形设计编辑软件。在浏览器中基于webgl运行的三维图形系统中对家装设计方案进行实时渲染,提供用户进行设计编辑操作。方案的数据,包含各种形状的几何图形,大量模型的mesh几何形状,家装方案通常需要进行墙面、地面铺贴,各种有图案花纹的摆设和家具,因此方案还包含大量的纹理贴图。在编辑过程中需要对几何,位置,纹理贴图等分别进行编辑修改,这些操作都是实时的交互性地操作,可在三维环境中进行操作并获得实时场景的更新反馈。对于家装设计行业,从普通的二居室、三居室,随着业务和细分领域的发展,工装办公室、超市、仓库等有更大的设计面积和数据量。另外,在设计区域内,进行更加深入的设计,比如可定制的柜体,墙板等。设计元素和细化程度进一步提高,数据量也不断增加。

对于设计编辑应用,数据是动态的,是在编辑过程中产生的和修改更新的。三维场景的数据对象,对应单独的业务实体对象,在软件中需要进行独立的操作,比如高亮,显示/隐藏等。时机上不能进行事先预处理。数据量大,经常性地数据更新也不适合在运行时进行数据处理和复制产生合并优化的数据。尤其是对于家装设计软件,三维场景中的几何对象类型比较丰富,更有大量的贴图纹理需要显示渲染。



技术实现要素:

本发明的目的在于克服现有技术存在的不足,而提供一种基于webgl可编辑大场景渐进式实时渲染方法,保留原始场景设计模型,支持可编辑更新操作,对大型三维场景进行渐进式渲染绘制,在不同能力的设备下、不同规模大小场景下,使得三维交互实时渲染环境保持流畅。在酷家乐设计工具的图形系统中,使用该技术使得用户可以在浏览器环境中对大场景进行设计编辑。

本发明的目的是通过如下技术方案来完成的:这种基于webgl可编辑大场景渐进式实时渲染方法,包括以下步骤:

步骤1:基于bvh空间结构的层级空间关系管理,包括以下步骤:

a.平衡bvh,采用平均分配子节点的方式构建bvh;

b.基于webworker的bvh生成,采用的webworker技术,将bvh空间结构的生成逻辑迁移到worker中去执行;

c.检查worker是否为完成状态;若为完成状态,则取出worker生成的bvh结果并执行步骤d;反之,直接执行步骤d;

d.判断场景是否发生变化;若发生变化,则执行步骤e;反之,则进入步骤2;

e.判断当前worker是否正在构建bvh;若正在构建,则进入步骤2;反之,则执行步骤f;

f.收集场景信息,请求worker生成bvh,并进入步骤2;

步骤2:渐进式场景绘制,包括以下步骤:

a.用户场景描述层面,整理出每一份完成webgldrawcall所需渲染信息的数据组合,即渲染描述;

b.维护一份线性的关于渲染描述的中间数据结构,提升用户的非线性场景描述到线性渲染数据的转化性能;

c.使用步骤1中生成的bvh信息,以bvh的一种剔除策略,从步骤b的中间数据结构中获得一定数量按该剔除策略排序的渲染描述存在渲染队列中;

d.对于渲染队列中的物体,计算更多的额外信息,进行额外的优化排序;

e.渲染处于渲染队列中的物体;

f.检查帧耗时预算是否超标,若没有则重复步骤c;

g.在下一帧时,若bvh中的物体没有获取完成所有的物体,或者场景没有任何可观测变化,或者相机没有变化;则会从步骤c开始继续进行下一帧绘制;否则,下一帧,完成相应的场景更新,并重置bvh的当前获取位置,并从步骤a开始继续执行此流程。

作为进一步的技术方案,所述步骤2中步骤a所述的数据组合包括完成这个drawcall,所需的shader,uniform,attributebuffer,以及必要的状态设置。

作为优选的技术方案,所述步骤2中步骤c中使用优化的层次视锥剔除策略。

本发明的有益效果为:

1、保持设计数据的场景模型,支持动态和交互性地数据的编辑和更新;

2、对于大场景,大数据量,达到基本恒定流畅的交互性能;

3、比较通用,可以在浏览器,桌面和移动平台等不同设备,普遍设计应用下使用。

附图说明

图1为本发明步骤1的流程示意图。

图2为本发明步骤2的流程示意图。

图3为本发明应用场景1的示意图。

图4为本发明应用场景2的示意图。

具体实施方式

下面将结合附图对本发明做详细的介绍:

实施例:如附图1、2所示,这种基于webgl可编辑大场景渐进式实时渲染方法,包括:

步骤1:基于bvh空间结构的层级空间关系管理(为了减少渐进渲染在不同相机视角下的画布绘制突变,同时也为了提高渐进渲染的渲染性能,在进行渐进渲染之前,需要对场景进行有效的空间划分,本方案中采用的是基于bvh的空间场景划分),包括以下步骤:

a.平衡bvh,为了兼容可编辑场景,同时为了最大化当前bvh的有效性,采用平均分配子节点的方式构建bvh,这种方式构建出的bvh,可以严格保证构建出的bvh是一个类似于完全二叉树的结构;此结构能够极大程度的保证场景更新时对与子节点的分组影响,同时,是遍历效率最高的树形数据结构;

b.基于webworker的bvh生成,为了提高渲染效果,本方案中采用的webworker技术,将bvh空间结构的生成逻辑迁移到worker中去执行,这样就可以在不阻塞主线程的情况下进行空间场景划分,能够最大限度提升渲染效率;

c.检查worker是否为完成状态;若为完成状态,则取出worker生成的bvh结果并执行步骤d;反之,直接执行步骤d;

d.判断场景是否发生变化;若发生变化,则执行步骤e;反之,则进入步骤2;

e.判断当前worker是否正在构建bvh;若正在构建,则进入步骤2;反之,则执行步骤f;

f.收集场景信息,请求worker生成bvh,并进入步骤2;

步骤2:渐进式场景绘制,包括以下步骤:

a.用户场景描述层面,整理出每一份完成webgldrawcall所需渲染信息的数据组合(即渲染描述),这些数据包括完成这个drawcall,所需的shader,uniform,attributebuffer,以及必要的状态设置;

b.维护一份线性的关于渲染描述的中间数据结构,提升用户的非线性场景描述(场景树/场景图)到线性渲染数据的转化性能;

c.使用步骤1中生成的bvh信息,以bvh的一种剔除策略,从步骤b的中间数据结构中获得一定数量按该剔除策略排序的渲染描述存在渲染队列中,由于bvh的空间划分特性,可以在此使用优化的层次视锥剔除等剔除策略;

d.对于渲染队列中的物体,计算更多的额外信息,进行额外的优化排序;

e.渲染处于渲染队列中的物体;

f.检查帧耗时预算是否超标,若没有则重复步骤c;

g.在下一帧时,若bvh中的物体没有获取完成所有的物体,或者场景没有任何可观测变化,或者相机没有变化;则会从步骤c开始继续进行下一帧绘制;否则,下一帧,完成相应的场景更新,并重置bvh的当前获取位置,并从步骤a开始继续执行此流程。

下表展示了两个实际场景中应用本发明方法进行渲染前后的绘制帧率对比表1实际场景应用对比表

在实际测试数据方案中,采用传统的方法进行三维渲染,由于面片数量过高,drawcall过高,帧率都降低到无法使用的程度。在使用发明的方法进行渲染,同样的数据,绘制帧率始终保持很高的性能,保证了交互的流畅性。

本发明的技术方案由两个主要步骤构成。首先是一种适用于动态编辑场景的,基于bvh空间结构的层级空间关系管理。它以低计算开销,极低运行时延迟影响,进行空间层级信息的建立和维护。这一信息为离散的,大量的场景对象进行了空间范围聚合性进行组织,它的层级信息提供了分级的细节程度的分组分级信息作用。根据信息的聚合性、对象的细节程度、重要性,结合第二步骤对场景使用多帧进行渐进式叠加渲染绘制,从而达到稳定地高帧率,视觉影响最小的渲染画面,进行1~n帧逐步完成全部数量的三维场景内容的绘制渲染。

渐进式场景绘制整体的优化思想是:对于超大规模的场景,及已经非常复杂的场景,我们可以放弃在一帧之内完成所有绘制,而将绘制分散在多帧中进行,控制每一帧的绘制耗时,以此提升帧率表现。

可以理解的是,对本领域技术人员来说,对本发明的技术方案及发明构思加以等同替换或改变都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1