一种流程工厂模型裁剪、绘制方法及装置与流程

文档序号:11520729阅读:169来源:国知局
一种流程工厂模型裁剪、绘制方法及装置与流程

本发明涉及大规模场景绘制技术领域,具体涉及一种流程工厂模型裁剪、绘制方法及装置。



背景技术:

流程工厂模型是指用来制造化学或物理制成品的反应容器、管线及其支撑的集合,主要由设备、管线等基本构件组成。其中,管线由管子和元件构成,元件包括管件、阀门、法兰、垫片等,各管子之间通过元件相连接。现今,流程工厂行业的市场巨大,在国民经济中占据着举足轻重的地位。而流程工厂图形平台是现代流程工厂从设计、施工到运营管理都不可缺少的支撑基础。随着经济的不断发展,流程工厂行业产能的不断提高,流程工厂管线的规模也在不断增大。

现有的流程工厂模型的裁剪方法,主要依据对流程工厂模型的顶点所划分的三角面片,对面片计算所占用的像素点数量,进而判断是否裁剪剔除。现有的上述方法需要对各个点组成的三角面片逐一进行遍历、筛选,裁剪效率低,无法满足在规定时间内快速处理顶点面片规模上亿的流程工厂模型的需求。



技术实现要素:

本发明实施例提供一种流程工厂模型裁剪、绘制方法及装置,用于解决现有的流程工厂模型裁剪方法效率低的问题。

本发明实施例提供了一种流程工厂模型裁剪方法,包括:

加载流程工厂模型,创建与所述流程工厂模型对应的多个构件;

根据各个构件的体素特征获取所述各个构件的最大占屏值和空间包围盒;

根据所述各个构件的最大占屏值将所述多个构件划分成第一构件集合和第二构件集合,所述第一构件集合中的构件的最大占屏值大于预设阈值,所述第二构件集合中的构件的最大占屏值小于预设阈值;

根据所述各个构件的空间包围盒分别求取所述第一构件集合的第一最大空间包围盒和所述第二构件集合的第二空间最大包围盒,根据所述第一最大空间包围盒构建与所述第一构件集合对应的第一空间八叉树,并根据所述第二最大空间包围盒构建与所述第二构件集合对应的第二空间八叉树;

对所述第一空间八叉树和所述第二空间八叉树的叶子节点进行视锥体裁剪测试,对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试。

可选地,所述根据所述第一最大空间包围盒构建与所述第一构件集合对应的第一空间八叉树,并根据所述第二最大空间包围盒构建与所述第二构件集合对应的第二空间八叉树,包括:

根据所述第一最大空间包围盒层次递归划分所述第一构件集合,构建第一空间八叉树,遍历所述第一构件集合,将所述第一构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第一空间八叉树的叶子节点下;

并根据所述第二最大空间包围盒层次递归划分所述第二构件集合,构建第二空间八叉树,遍历所述第二构件集合,将所述第二构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第二空间八叉树的叶子节点下。

可选地,所述对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试,包括:

获取视点到通过视锥体裁剪测试的第二空间八叉树的叶子节点包围盒中心的距离与预设比例因子的第一乘积;

比较所述第一乘积与对应的叶子节点下所有构件的最大占屏值的最大值的大小;

若所述对应的叶子节点的所述第一乘积小于等于该叶子节点所有构件的最大占屏值的最大值,则该叶子节点通过细节裁剪测试。

本发明实施例提供了一种流程工厂模型绘制方法,包括:

采用上述的方法对流程工厂模型进行裁剪;

对通过裁剪测试的叶子节点进行绘制。

可选地,所述对通过裁剪测试的叶子节点进行绘制包括:

对通过视锥体裁剪测试的第一空间八叉树的叶子节点进行细节层次lod绘制,并对通过视锥体裁剪测试和细节裁剪测试的第二空间八叉树的叶子节点进行细节层次lod绘制。

本发明实施例提供了一种流程工厂模型裁剪装置,包括:

构件创建单元,用于加载流程工厂模型,创建与所述流程工厂模型对应的多个构件;

构件要素获取单元,用于根据各个构件的体素特征获取所述各个构件的最大占屏值和空间包围盒;

构件集合划分单元,用于根据所述各个构件的最大占屏值将所述多个构件划分成第一构件集合和第二构件集合,所述第一构件集合中的构件的最大占屏值大于预设阈值,所述第二构件集合中的构件的最大占屏值小于预设阈值;

空间八叉树构建单元,用于根据所述各个构件的空间包围盒分别求取所述第一构件集合的第一最大空间包围盒和所述第二构件集合的第二空间最大包围盒,根据所述第一最大空间包围盒构建与所述第一构件集合对应的第一空间八叉树,并根据所述第二最大空间包围盒构建与所述第二构件集合对应的第二空间八叉树;

裁剪测试单元,用于对所述第一空间八叉树和所述第二空间八叉树的叶子节点进行视锥体裁剪测试,对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试。

可选地,所述空间八叉树构建单元进一步用于:

根据所述第一最大空间包围盒层次递归划分所述第一构件集合,构建第一空间八叉树,遍历所述第一构件集合,将所述第一构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第一空间八叉树的叶子节点下;

并根据所述第二最大空间包围盒层次递归划分所述第二构件集合,构建第二空间八叉树,遍历所述第二构件集合,将所述第二构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第二空间八叉树的叶子节点下。

可选地,所述裁剪测试单元进一步用于:

获取视点到通过视锥体裁剪测试的第二空间八叉树的叶子节点包围盒中心的距离与预设比例因子的第一乘积;

比较所述第一乘积与对应的叶子节点下所有构件的最大占屏值的最大值的大小;

若所述对应的叶子节点的所述第一乘积小于等于该叶子节点所有构件的最大占屏值的最大值,则该叶子节点通过细节裁剪测试。

本发明实施例提供了一种流程工厂模型绘制装置,包括:

裁剪单元,用于采用上述的装置对流程工厂模型进行裁剪;

绘制单元,用于对通过裁剪测试的叶子节点进行绘制。

可选地,所述绘制单元进一步用于:

对通过视锥体裁剪测试的第一空间八叉树的叶子节点进行细节层次lod绘制,并对通过视锥体裁剪测试和细节裁剪测试的第二空间八叉树的叶子节点进行细节层次lod绘制。

本发明实施例提供的流程工厂模型裁剪、绘制方法及装置,加载流程工厂模型,创建与所述流程工厂模型对应的多个构件;将所述多个构件划分为第一构件集合和第二构件集合,构建与第一构件集合对应的第一空间八叉树,构建与第二构件集合对应的第二空间八叉树;对所述第一空间八叉树和所述第二空间八叉树的叶子节点进行视锥体裁剪测试,对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试。本发明实施例利用构件体素特征,可以按照最大占屏值,估计构件在一定的视距下投影至屏幕的像素点数量;利用最大占屏值,可以快速的区分出构件大小,完整绘制尺寸大的构件,较为精确的绘制出整个模型的轮廓;对尺寸小的构件进行细节裁剪,避免现有技术中判断计算像素的方式,保证在绘制一帧的过程中,最大化的减少所需遍历与计算的数量,提高裁剪处理效率,从而提高渲染帧率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的流程工厂模型裁剪方法的流程示意图;

图2是本发明一个实施例的部分体素的形状图;

图3是本发明一个实施例的场景树的原理图;

图4是本发明一个实施例流程工厂模型裁剪方法的原理图;

图5是本发明一个实施例的视锥体的原理图;

图6是本发明一个实施例的流程工厂模型绘制方法的流程示意图;

图7是本发明一个实施例的流程工厂模型裁剪装置的结构示意图;

图8是本发明一个实施例的流程工厂模型绘制装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本发明实施例提及的构件是构成流程工厂模型的对象集合。管件,法兰,阀门,螺栓、螺母等各种管道器材,以及泵,风机,鼓风机,压缩机,真空设备,压力容器,蒸汽透平,塔,储罐,换热器,加热炉等各种工艺设备都可以统称为构件。组成流程工厂模型构件的体素,主要包括网格面体素,面片体素,多边形体素以及基本体素(如图2所示)。其中基本体素包括圆柱、斜截圆柱、多棱柱、偏心圆台、同心圆台、天圆地方、矩形断面圆台、长方体、圆形断面圆环、矩形断面圆环、球、直角楔形体、马鞍形、椭球封头、圆锥体等。所提及的构件的体素参数信息,以圆柱为例,即上顶面圆心,下底面圆心,半径,以及颜色。

图1是本发明一个实施例的流程工厂模型裁剪方法的流程示意图。如图1所示,该实施例的方法包括:

s1:加载流程工厂模型,创建与所述流程工厂模型对应的多个构件;

需要说明的是,本发明实施例读取对应的构件的体素参数信息,创建多个构件。在实际应用中,根据构件体素参数信息创建顶点数组,法线数组以及颜色数组;构件在图形引擎中亦即渲染节点,其主要保存顶点数组、法线数组以及颜色数组等信息以供绘制时渲染。

s2:根据各个构件的体素特征获取所述各个构件的最大占屏值和空间包围盒;

需要说明的是,构件的体素特征,亦即18种基本体素的几何特征。以圆柱为例,其几何特征包括通过给定上顶面圆心、下底面圆心求出的高,以及直径。所述的最大占屏值,用于抽象表示构件在空间上的大小。继续以圆柱为例,其在空间上的尺度有直径和高,选取直径作为最大占屏值来表示其在空间的占用大小。可理解的是,本发明实施例不采用高作为最大占屏值的主要因素是可能存在细长的圆柱,在图形渲染的过程中,如果视点距离对象很远,细长的圆柱从人眼的直观角度上来看是倾向于看不见的。

需要说明的是,最大占屏值,即是一种近似衡量构件在空间大小的参数;构件空间包围盒,则是通过剖分体素得到的顶点数组,通过不断比较顶点获取[(xmin,ymin,zmin),(xmax,ymax,zmax)]来表示其空间轴对齐包围盒。

对各个体素的最大占屏值的求取规则,如表1所示:

表1体素的最大占屏值的求取规则

本发明实施例的各个构件的最大占屏值的获取步骤如下:

s211、从构件集合中循环取出构件;

s212、取出构件的所有体素,对每个体素按照相应的最大占屏值求取规则进行求取该体素的最大占屏值;

s213、选取所有体素的最大占屏值的最大值作为该构件的最大占屏值pi。

本发明实施例的各个构件的空间包围盒的获取步骤如下:

s221、从构件集合中循环取出构件;

s222、获取构件的顶点数组verarray;

s223、初始化该构件的空间包围盒

(xmin,ymin,zmin)=(maxval,maxval,maxval),maxval表示计算可取的最大值,

(xmax,ymax,zmax)=(minval,minval,minval),minval表示计算机可取的最小值;

s224、取出verarray的顶点v=(x,y,z),不断计算

xmin=min(x,xmin),

ymin=min(y,ymin),

zmin=min(z,zmin),

xmax=max(x,xmax),

ymax=max(y,ymax),

zmax=max(z,zmax),

最终获取[(xmin,ymin,zmin),(xmax,ymax,zmax)]来表示其空间轴对齐包围盒。

s3:根据所述各个构件的最大占屏值将所述多个构件划分成第一构件集合和第二构件集合,所述第一构件集合中的构件的最大占屏值大于预设阈值,所述第二构件集合中的构件的最大占屏值小于预设阈值;

具体地,本发明实施例将多个构件划分成第一构件集合l和第二构件集合s的过程如下:

s31、对所有构件的最大占屏值,按照从大到小排序;

s32、确定划分阈值x%,选取最大占屏值集合中第x%的最大占屏值p确定为划分参照;

s33、将构件集合中的所有构件的最大占屏值,依次与划分参照p比较,小于则将构件加入构件集合s,否则加入构件集合l。

在实际应用中,划分阈值可以为10%,也可以根据需要设定其他的划分阈值,本发明对此不作限制。

s4:根据所述各个构件的空间包围盒分别求取所述第一构件集合的第一最大空间包围盒和所述第二构件集合的第二空间最大包围盒,根据所述第一最大空间包围盒构建与所述第一构件集合对应的第一空间八叉树,并根据所述第二最大空间包围盒构建与所述第二构件集合对应的第二空间八叉树;

需要说明的是,本发明实施例对构建第一空间八叉树和第二空间八叉树的顺序不作限制。

s5:对所述第一空间八叉树和所述第二空间八叉树的叶子节点进行视锥体裁剪测试,对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试;

需要说明的是,视锥体是指场景中摄像机的可见的一个锥体范围由上、下、左、右、近、远,共6个面组成。在视锥体内的景物可见,反之则不可见。本发明实施例直接判断叶子节点的空间包围盒是否在视锥体内,若是,则通过视锥体裁剪测试,否则未通过视锥体裁剪测试,直接将该叶子节点剔除不绘制。

在实际应用中,本发明实施例充分利用流程工厂模型的体素特征,在图形平台绘制一帧的时间内,快速计算出构件投影至屏幕中所占像素点的数量并进行相应的裁剪,同时精确绘制屏幕像素点占据多的构件,是保证在交互过程中能够最优的显示出流程工厂模型的轮廓且达到提升帧率的重要手段。

本发明实施例提供的流程工厂模型裁剪方法,利用构件体素特征,可以按照最大占屏值,估计构件在一定的视距下投影至屏幕的像素点数量;利用最大占屏值,可以快速的区分出构件大小,完整绘制尺寸大的构件,较为精确的绘制出整个模型的轮廓;对尺寸小的构件进行细节裁剪,避免现有技术中判断计算像素的方式,保证在绘制一帧的过程中,最大化的减少所需遍历与计算的数量,提高裁剪处理效率,从而提高渲染帧率。

在本发明实施例一种可选的实施方式中,所述根据所述第一最大空间包围盒构建与所述第一构件集合对应的第一空间八叉树,并根据所述第二最大空间包围盒构建与所述第二构件集合对应的第二空间八叉树,包括:

根据所述第一最大空间包围盒层次递归划分所述第一构件集合,构建第一空间八叉树,遍历所述第一构件集合,将所述第一构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第一空间八叉树的叶子节点下;

并根据所述第二最大空间包围盒层次递归划分所述第二构件集合,构建第二空间八叉树,遍历所述第二构件集合,将所述第二构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第二空间八叉树的叶子节点下。

需要说明的是,第一构件集合l和第二构件集合s的最大空间包围盒的获取步骤如下(如图4所示):

s411、对第一构件集合l中的所有构件,根据顶点数组,求取最大空间轴对齐包围盒aabbboxl[(xmin,ymin,zmin),(xmax,ymax,zmax)];

s412、对第二构件集合s中的所有构件,根据顶点数组,求取最大空间轴对齐包围盒aabbboxs[(xmin,ymin,zmin),(xmax,ymax,zmax)]。

具体地,构建第一空间八叉树octreel和第二空间八叉树octrees的步骤如下:

s421、对第一构件集合l,设定八叉树深度hl,按照aabbboxl依次层次递归划分,得到第一空间八叉树octreel;

s422、对第二构件集合s,设定八叉树深度hs,按照aabbboxs依次层次递归划分,得到第二空间八叉树octrees;

s423、将第一空间八叉树octreel和第二空间八叉树octrees的根节点挂载场景树根节点下。

需要说明的是,此时生成的场景树如图3所示,场景树根节点为流程工厂模型节点,其左右子树分别为第一空间八叉树octrees和第二空间八叉树octreel,第一空间八叉树octrees和第二空间八叉树octreel的叶子节点最终挂载在构件包围盒中心在相应空间区域的构件节点。

具体地,本发明实施例将构件挂载在相应的空间八叉树的步骤如下:

s431、对第一构件集合l,遍历每个构件,取出对应的包围盒中心,将其挂载至涵盖该中心位置的对应octreel叶子节点下;

s432、对octreel中的每个叶子节点选取挂载至该叶子节点中的所有构件的最大占屏值的最大值设定为其最大占屏值pmax;

s433、对构件集合s,遍历每个构件,取出对应的包围盒中心,将其挂载至涵盖该中心位置的对应octrees叶子节点下;

s434、对octrees中的每个叶子节点选取挂载至该叶子节点中的所有构件的最大占屏值的最大值设定为其最大占屏值pmax。

可理解的是,pmax表示叶子节点下所有构件最大占屏值的最大值。进一步地,所述对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试,包括:

获取视点到通过视锥体裁剪测试的第二空间八叉树的叶子节点包围盒中心的距离与预设比例因子的第一乘积;

比较所述第一乘积与对应的叶子节点下所有构件的最大占屏值的最大值的大小;

若所述对应的叶子节点的所述第一乘积小于等于该叶子节点所有构件的最大占屏值的最大值,则该叶子节点通过细节裁剪测试。

在本发明实施例的一个具体的实施方式中,对第二空间八叉树的叶子节点进行细节裁剪测试的过程如下:

s511、计算视点到该叶子节点包围盒中心的距离d与设定比例因子α的乘积t1,以此值作为估算该叶子节点下最大的构件投影至屏幕的像素大小,并比较pmax与t1的大小;

s512、若t1小于等于pmax,则表示该节点经过细节裁剪测试(亦即该节点中的所有构件在屏幕上显示的像素足够大),对该叶子节点下的所有构件进行绘制;

s513、若t1大于pmax,则表示该节点未经过细节裁剪测试(亦即该节点中的所有构件在屏幕上显示的像素足够小),则在此帧内,无需对该叶子节点下的所有构件进行绘制。

可理解的是,本发明实施例计算视点到叶子节点包围盒中心的距离d与设定比例因子α的乘积t1,可用于快速估算出构件投影至屏幕的像素点数量,其原理参见图5。

如图5所示,ab为近平面(其通常作为投影平面),cd为远平面。为了方便说明,以圆o表示位于视口中的构件,其半径为|po|,且ab的中垂线过圆心o(即en⊥ab)。那么,po投影至ab上的长度为2|mn|,

其中所以,圆o投影至ab上的长度占比为

其中,|ab|=2*|en|*tanθ,θ为∠aeo(2∠aeo即为视场角,在程序运行时设置为常量,在实际应用中,视场角选择为30°)。

由此可得,

因此,构件的大小与构件至视点距离的关系为故,构件在计算机屏幕上显示的像素点数量与构件自身的大小以及其距离视点的远近相关。观察物至视点的距离|eo|越小,则投影至投影面ab的长度占比k就越大,亦即其投影至屏幕所占的像素点数量的就越多。

采用上述公式,模拟计算出一定大小的构件,在一定的距离上,其投影至屏幕占用像素点数量为1*1px时k*tanθ的大小,并在1*1px的基础上对k*tanθ进行比例缩放,即可得到多个像素点时k'*tanθ的取值,此即为所述比例因子α。在实际应用中,α取值为0.002,此时在分辨率为1920*1080的屏幕,其对应的像素点数量阈值大约为14*8px。故对于所述的叶子节点的最大占屏值与视点到叶子节点包围盒中心的距离d的商与α的比较,即可得出该叶子节点下所有构件中尺寸最大的构件投影至屏幕上的估算像素值是否大于等于比例因子α所对应的像素值。由于除法在计算机中的运算量大,故采用视点到叶子节点包围盒中心的距离d与比例因子α的乘积与最大占屏值进行对比。

图6是本发明一个实施例的流程工厂模型绘制方法的流程示意图。如图6所示,本发明实施例的方法包括:

s1’:对流程工厂模型进行裁剪;

需要说明的是,本发明实施例的绘制方法采用上述实施例中的裁剪方法对流程工厂模型进行裁剪。

s2’:对通过裁剪测试的叶子节点进行绘制。

进一步地,所述对通过裁剪测试的叶子节点进行绘制包括:

对通过视锥体裁剪测试的第一空间八叉树的叶子节点进行细节层次lod绘制,并对通过视锥体裁剪测试和细节裁剪测试的第二空间八叉树的叶子节点进行细节层次lod绘制。

具体地,对叶子节点的细节层次lod绘制过程如下:

遍历通过测试的叶子节点的所有构件,依次取出最大占屏值pi;

计算视点到该构件包围盒中心的距离d与预设比例因子β的乘积t2;

比较t2与pi的大小,若t2大于pi,则对该构件选取低精度精度进行重绘,否则,采取高精度进行重绘。

可理解的是,本发明实施例的比例因子β与上述比例因子α的求取方法类似,所不同的是对占用像素点数量为1*1px时k*tanθ的比例缩放倍数,在此不再赘述。

本发明实施例根据构成构件的体素特征,采用给定体素最大占屏值的求取规则,依据最大占屏值来近似表示构件的大小。继而通过最大占屏值将构件按照给定的划分参照p按照大小将其分成两个集合。对于存储最大占屏值较大的集合l,可以应用八叉树空间的有序性,对叶子节点快速进行视锥体裁剪,以及可选对经过视锥体裁剪测试的叶子节点中的构件进行相应的细节层次lod绘制,其最终绘制出的结果可表示精确表示整个模型在空间的大致轮廓。而对存储最大占屏值较小的集合s,通过对建立的八叉树octrees的叶子节点进行相应的细节裁剪,根据每个叶子节点的最大占屏值pmax,以及所述的视点至叶子节点中心距离与比例因子的乘积的估计像素进行对比,可以快速确认该叶子节点下的所有构件是否绘制。相比于传统的裁剪方法中直接根据三角面片计算投影至屏幕的像素点数量的方法,本发明实施例直接从空间组织和构件层面上进行快速估计投影至屏幕的像素点数量,大大降低了数据处理规模,从而达到显示提升帧率的效果。

图7是本发明一个实施例的流程工厂模型裁剪装置的结构示意图。如图7所示,本发明实施例的装置包括构件创建单元71、构件要素获取单元72、构件集合划分单元73、空间八叉树构建单元74和裁剪测试单元75,具体地:

构件创建单元71,用于加载流程工厂模型,创建与所述流程工厂模型对应的多个构件;

构件要素获取单元72,用于根据各个构件的体素特征获取所述各个构件的最大占屏值和空间包围盒;

构件集合划分单元73,用于根据所述各个构件的最大占屏值将所述多个构件划分成第一构件集合和第二构件集合,所述第一构件集合中的构件的最大占屏值大于预设阈值,所述第二构件集合中的构件的最大占屏值小于预设阈值;

空间八叉树构建单元74,用于根据所述各个构件的空间包围盒分别求取所述第一构件集合的第一最大空间包围盒和所述第二构件集合的第二空间最大包围盒,根据所述第一最大空间包围盒构建与所述第一构件集合对应的第一空间八叉树,并根据所述第二最大空间包围盒构建与所述第二构件集合对应的第二空间八叉树;

裁剪测试单元75,用于对所述第一空间八叉树和所述第二空间八叉树的叶子节点进行视锥体裁剪测试,对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试。

在本发明实施例的一种可选的实施方式中,空间八叉树构建单元74进一步用于:

根据所述第一最大空间包围盒层次递归划分所述第一构件集合,构建第一空间八叉树,遍历所述第一构件集合,将所述第一构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第一空间八叉树的叶子节点下;

并根据所述第二最大空间包围盒层次递归划分所述第二构件集合,构建第二空间八叉树,遍历所述第二构件集合,将所述第二构件集合中的各个构件挂载至涵盖当前遍历构件的包围盒中心位置的所述第二空间八叉树的叶子节点下。

裁剪测试单元75进一步用于:

获取视点到通过视锥体裁剪测试的第二空间八叉树的叶子节点包围盒中心的距离与预设比例因子的第一乘积;

比较所述第一乘积与对应的叶子节点下所有构件的最大占屏值的最大值的大小;

若所述对应的叶子节点的所述第一乘积小于等于该叶子节点所有构件的最大占屏值的最大值,则该叶子节点通过细节裁剪测试。

本发明实施例的流程工厂模型绘制装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

图8是本发明一个实施例的流程工厂模型绘制装置的结构示意图。如图8所示,本发明实施例的装置包括裁剪单元81和绘制单元82,具体地:

裁剪单元81,用于对流程工厂模型进行裁剪;

绘制单元82,用于对通过裁剪测试的叶子节点进行绘制。

在本发明实施例的一种可选的实施方式中,绘制单元82进一步用于:

对通过视锥体裁剪测试的第一空间八叉树的叶子节点进行细节层次lod绘制,并对通过视锥体裁剪测试和细节裁剪测试的第二空间八叉树的叶子节点进行细节层次lod绘制。

本发明实施例的流程工厂模型绘制装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。

本发明实施例提供的流程工厂模型裁剪、绘制方法及装置,加载流程工厂模型,创建与所述流程工厂模型对应的多个构件;将所述多个构件划分为第一构件集合和第二构件集合,构建与第一构件集合对应的第一空间八叉树,构建与第二构件集合对应的第二空间八叉树;对所述第一空间八叉树和所述第二空间八叉树的叶子节点进行视锥体裁剪测试,对通过视锥体裁剪测试的第二空间八叉树的叶子节点进行细节裁剪测试。本发明实施例利用构件体素特征,可以按照最大占屏值,估计构件件在一定的视距下投影至屏幕的像素点数量;利用最大占屏值,可以快速的区分出构件大小,完整绘制尺寸大的构件,较为精确的绘制出整个模型的轮廓;对尺寸小的构件进行细节裁剪,避免现有技术中判断计算像素的方式,保证在绘制一帧的过程中,最大化的减少所需遍历与计算的数量,提高裁剪处理效率,从而提高渲染帧率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

需要说明的是术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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