CN110910505B - 一种场景模型的加速渲染方法 - Google Patents

一种场景模型的加速渲染方法 Download PDF

Info

Publication number
CN110910505B
CN110910505B CN201911203599.8A CN201911203599A CN110910505B CN 110910505 B CN110910505 B CN 110910505B CN 201911203599 A CN201911203599 A CN 201911203599A CN 110910505 B CN110910505 B CN 110910505B
Authority
CN
China
Prior art keywords
octree
model
node
rendering
points
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911203599.8A
Other languages
English (en)
Other versions
CN110910505A (zh
Inventor
董丽丽
严昱欣
张翔
张温
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian University of Architecture and Technology
Original Assignee
Xian University of Architecture and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian University of Architecture and Technology filed Critical Xian University of Architecture and Technology
Priority to CN201911203599.8A priority Critical patent/CN110910505B/zh
Publication of CN110910505A publication Critical patent/CN110910505A/zh
Application granted granted Critical
Publication of CN110910505B publication Critical patent/CN110910505B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种场景模型的加速渲染方法,1.将所有node节点作为为模型瓦片的基础对象;2.将一个模型瓦片对应node结点的属性抽取出来,构成新的文件;3.生成三角网格,查询三角网格信息,并以数组的形式存储三角网格的顶点索引;4.建立模型瓦片数据的空间八叉树索引,将所有node节点整合到八叉树数据结构;5.计算相机空间坐标系中视场的锥体裁剪范围;6.判断节点所在的LOD层级,对八叉树进行视锥剔除;7.将顶点删除后,对空洞几何特征进行三角化;8.将三角化后的数据送入渲染,渲染完成后,刷新当前场景模型,本次渲染结束。实现了瓦片的渲染简化、加速绘制,提高了三维瓦片的加载效率。

Description

一种场景模型的加速渲染方法
技术领域
本发明属于图形及模型处理领域,涉及一种场景模型的加速渲染方法。
背景技术
WebGL的出现为浏览器实现三维可视化创造了可能,Cesium作为其开源框架之一,它不仅掩盖了WebGL开发过程中的细节,而且综合了地理信息系统(GeographicInformation System,GIS)技术,为现阶段在浏览器中显示和开发三维模型(建筑物及其周围环境)的显示和开发提供了便捷。
glTF(GL Transmission Format GL传输格式),即图形语言交换格式。它是一种针对GL(WebGL,OpenGL ES以及OpenGL)的3D内容的格式标准,同时也是Cesium可支持的基础模型格式。glTF的设计是面向实时渲染应用,尽量提供可以直接传输给图形API的数据形式,不再需要二次转换。但是当要渲染一个很大的三维模型时,glTF模型文件中真正的模型数据量也非常多,就会造成加载过程中出现卡顿、加载缓慢、对GPU消耗过大的问题。同时,由于不同硬件计算机水平参差不齐,同一Web程序在不同硬件计算机可能呈现不同的效果,综上使用轻量化网片格式,加速模型绘制就显得尤为重要。
发明内容
本发明的目的在于克服上述现有技术的缺点,提供一种场景模型的加速渲染方法,实现了瓦片的渲染简化、加速绘制,提高了三维瓦片的加载效率。
为达到上述目的,本发明采用以下技术方案予以实现:
一种场景模型的加速渲染方法,包括以下步骤;
步骤1,将glTF文件中场景模型的所有node节点作为为模型瓦片的基础对象;
步骤2,将一个模型瓦片对应node结点的属性抽取出来,并按照node节点重新构成新的文件,属性包括顶点索引、三角网格、名称、包围盒、坐标、纹理属性、纹理坐标、法向量数据、网格中点的索引和质心坐标属性;
步骤3,根据步骤2中生成的新的文件中的模型瓦片的三角网格,三角网格对应的位置、纹理、面索引这三类访问器,查询模型瓦片的三角网格信息,并以数组的形式存储三角网格的顶点索引;
步骤4,建立模型瓦片数据的空间八叉树索引,将步骤1中的所有node节点整合到八叉树数据结构,并分离为瓦片的八叉树索引和真实模型数据;
步骤5,将场景模型由其所处的世界坐标系变换为相机空间坐标系,计算相机空间坐标系中视场的锥体裁剪范围;
步骤6,利用LOD层次细节模型算法,对八叉树根结点先序遍历,判断节点所在的LOD层级,并记录在每个对象节点中,在遍历过程记录同时对八叉树进行视锥剔除;
步骤7,根据当前所处八叉树深度,确定三角网格中随机删除顶点数,删除顶点数随层级深度递减,根据当前LOD层级,将顶点删除后,对空洞几何特征进行三角化;
步骤8,将三角化后的数据送入渲染,渲染完成后,刷新当前场景模型,本次渲染结束。
优选的,若需要改变视锥体范围,则返回步骤5。
优选的,完成步骤6,进入步骤7之前,以层序遍历对八叉树进行遍历,对同一父亲节点下的兄弟节点进行距离位置判断,若距离小于设定距离,则将边缘顶点进行融合。
进一步,融合过程为,计算模型瓦片包围盒质心之间的距离,取距离中心坐标;对真实八叉树元素的位置重新计算并将重新计算后的位置设置为八叉树中的结点元素的位置;将八叉树中的结点元素的背面剔除。
优选的,步骤7中,若空洞结构为凸多边形,则三角化过程包括;
步骤7.1.1,选择凸多边形的任意一点为起点,将起点与起点的前面和后面一点构成三角形,然后将得到的三角形保存起来;
步骤7.1.2,删除起点,形成新的多边形;
步骤7.1.3,重复步骤7.1.1和步骤7.1.2,直到只剩三个点,完成三角化;
若空洞结构为凸多边形,则三角化过程包括;
步骤7.2.1,选取多边形中的一个凹角,然后凹角所在点,和前两点或后两点,形成一个三角形;若剩余的点,任意点在剩余多边形的内部,则证明错误,选取其余凹角继续本步骤;若剩余的点,任意点在剩余多边形的外部,把这3个点构成的三角形保存到三角形数组中,删除该3个点;
步骤7.2.2,计算非三角化部分角度的凹凸性,若为凸多边形,重复凸多边形三角化的步骤,否则重复步骤7.2.1。
优选的,步骤4中,八叉树的建立过程如下;
步骤4.1,通过模型瓦片的最大和最小坐标值,围绕模型瓦片定义第一个立方体;
步骤4.2,设定最大递归深度;
步骤4.3,按照node节点中的数组顺序循环遍历将node结点元素放入能被包含,且没有子节点的立方体;
步骤4.4,若没有达到最大递归深度,就进行细分八等分的子立方体,再将该立方体所装的单位元元素全部分担给八个子立方体;
步骤4.5,若子立方体所分配到的单位元元素数量不为零且跟父立方体相同,则该子立方体停止细分,完成八叉树的建立;若子立方体所分配到的单位元元素数量不为零且跟父立方体不相同,则回到步骤4.3。
优选的,步骤6中,每个节点与相机视锥六个面的距离大于设置值,则将该节点与其子节点从八叉树中剔除。
优选的,步骤6中,若八叉树元素部分不处于视锥范围内,则将此部分八叉树元素的node节点的可见性属性改为不可见,将其从可见范围剔除,不加入渲染。
与现有技术相比,本发明具有以下有益效果:
本发明的模型结点以数组的形式存储,通过八叉树将模型的结点以树的形式组织,会更清晰的显示出模型的层次结构,便于结点的操作和管理;当视场越大,相机距离该模型越远,根据层次细节模型确定了结点的渲染队列,避免了不在该视场内的结点进入渲染,导致加载过程中的GPU资源浪费,加载缓慢;模型瓦片中三角网格简化采用顶点随机删除算法,采取该算法可以保留模型原本的特征,使其简化后不至于失真;在保证模型的真实性和准确性的前提下,简化了结点和网格,解决了在Cesium的开发场景中模型数据量大,加载过程中出现卡顿、加载缓慢的问题。
进一步地,以层序遍历对八叉树进行遍历,对同一父亲节点下的兄弟节点进行距离位置判断,若距离小于设定距离,则将边缘顶点进行融合,采用了背面剔除的方法。通过采用这种方法以横向的角度将结点合并化简,根据设计的距离不同,同层次结点合并的数量也不同。
进一步地,采用顶点随机删除算法将顶点删除后,通过判断空洞多边形的方法,通过对凸多边形和凹多边形均采用不同的三角化方案,三角化快速高效,并且有效的防止了非三角化的空洞导致三角网格出错。
附图说明
图1为本发明的流程示意框图;
图2为本发明的模型渲染和简化的流程示意框图;
图3为本发明的glTF文件的结点结构图;
图4为本发明的八叉树的结构示意图;
图5为本发明的八叉树的意义示意图;
图6为本发明的视锥体几何构造示意图。
具体实施方式
下面结合附图对本发明做进一步详细描述:
为解决Cesium开发过程中场景模型数据量大,加载过程中出现卡顿、加载缓慢的问题,难以实现快速加载等难题,本发明从Cesium加载的基本数据格式glTF展开研究。由于glTF享有三维数据格式统一的好处,避免了在各个三维软件间处理模型引发的缩放问题、动画问题、纹理材质等问题。glTF模型格式主要由以下几个文件组成:
glTF的json文件:描述了构造三维(3D)场景的数据组成,包括整个场景中节点层次结构、摄像机、网格、材质以及动画等信息。
二进制文件(.bin):存放着模型的几何、动画、材质几何以及其它基于缓冲区的数据。
图片文件:主要是模型纹理的图片文件。
本发明主要对glTF文件中场景模型的nodes结点进行解析和管理,nodes结点为所有node节点,将其batchID、包围盒(boundingBox)构建模型基础对象,使用八叉树技术进行空间组织来管理结点数据;利用细节层次(Levels of Detail,简称LOD)模型加载的原理加载瓦片,再结合相机视场的大小,借助背面剔除和顶点随机删除方法,以及聚类融合的思想,简化了瓦片的三角网格。详细的步骤如下:
步骤一:解析glTF文件,将其构建模型基础对象的nodes结点,存储备用。场景中包含一个结点数组nodes,数组索引下标从0开始,记为batchID。这些节点存储的是根据obj模型文件中的组“group"进行划分的模型瓦片。在nodes结点数组中,每一个node结点下存储着有0-N个孩子结点。图3为一个场景模型的结点结构。
步骤二:将一个模型瓦片对应node结点的属性抽取出来,并按照node节点重新构成新的文件,属性包括它对应的顶点索引(batchID)、名称(name)、数据的三角网格(mesh)、包围盒(boundingBox)、坐标(position)、纹理属性(materials)、纹理坐标(texcoord)、法向量数据(normal)、网格中点的索引(indices)和质心坐标(barycentric coordinates)。
本实施例的glTF文件中,nodes数组中的索引记为batchID,它对应的的“mesh:1”确定了mesh三角网格的索引号,如下所示。
在一个实施例的glTF文件中,nodes数组中的“mesh:1”确定了mesh三角网格(mesh)的索引号,如下所示。
Figure BDA0002296462390000071
三角网格(mesh)代表在场景中出现的一个几何瓦片,即node结点对应的三角网格,大多的组成模式"mode"为三角形;mesh中通过mesh.primitive数组来描述结构,数组下标从0开始,每个数组元素是整个大模型的一块。例如"mesh":"1"是node1结点对应网格,也是primitive数组的第二块网格。Mesh.primitive属性通过属性字典的形式定义了模型的几何数据。这些属性的属性值对应这一个数据访问器accessor,几何数据是通过accessor读取的。
Figure BDA0002296462390000072
场景模型的真实数组存储在buffers中,它通过访问器accessor和bufferview来读取。如下面所示,在buffers的结构中只有一个buffer,它代表了一个原始的二进制数据块,没有层级结构,buffers通过uri来定位数据,这个uri指向的是一个外部的.bin文件。
Figure BDA0002296462390000081
如果要读取buffers中的数据,需要借助bufferview和accessor,以了解这个buffer的数据类型和数据结构。accessor分为位置、索引、纹理访问器,这三类分别的作用是确定网格的位置、网格点的索引和纹理左边。如下是位置访问器的结构:
Figure BDA0002296462390000082
Figure BDA0002296462390000091
质心的计算为:在访问器中构建了AABB包围盒,一个3D的AABB包围盒就是一个简单的六面体,每一边都平行于一个坐标平面,矩形边界框不一定都是立方体,它的长、宽、高可以彼此不同。AABB中点的重要性质为:
xmin≤x≤xmax;
ymin≤y≤ymax;
zmin≤z≤zmax;
特别重要的两个顶点为:Pmin=(xmin,ymin,zmin),Pmax=(xmax,ymax,zmax)。中心点center是两个顶点的中点,也代表了包围盒的质心。质心的计算方法如下:
center[x]=(xmin+xmax)*0.5;
center[y]=(ymin+ymax)*0.5;
center[z]=(zmin+zmax)*0.5;
所以质心坐标barycentric coordinates为(center[x],center[y],center[z])。
最后将node结点对应的上述全部属性抽取出来并重构为新的文件结构,一个模型瓦片对象包括node结点及其管理的属性,包括顶点索引、名称、三角网格、包围盒、坐标、纹理属性、纹理坐标、法向量数据、网格中点的索引、质心坐标。新的文件结构为:
Figure BDA0002296462390000101
步骤3:解析模型瓦片三角网格(mesh)对应的位置(positions)、纹理(texcoords)、面索引(indices)这三类访问器,获取模型瓦片结点的三角网格、面索引、纹理,并以数组的形式存储三角网格的顶点索引,记为数组v。在positions的访问器中,count属性的数量就是数组元素的数量。
步骤四:将步骤1中的nodes基础对象整合到八叉树数据结构,对nodes结点数据采用八叉树数据结构进行组织,建立瓦片数据的空间八叉树索引,并分离为瓦片的空间八叉树索引和真实模型数据,实现对瓦片数据的空间八叉树索引和真实数据的分离存储。八叉树及其意义如图4所示。
将它分解成8个子立方体,并对立方体依次编号为0,1,2...7。建立八叉树的步骤:
4.1、根据整个模型瓦片的最大和最小坐标值,围绕模型瓦片定义第一个立方体,即最大的立方体;模型瓦片的最大和最小坐标值可以通过模型包围盒的获得。
4.2、设定最大递归深度;
4.43、按照node节点中的数组顺序循环遍历将node结点元素放入能被包含,且没有子节点的立方体;
4.4、若没有达到最大递归深度,就进行细分八等分,再将该立方体所装的单位元元素全部分担给八个子立方体;
4.5、若子立方体所分配到的单位元元素数量不为零且跟父立方体相同,则该子立方体停止细分,完成八叉树的建立;若子立方体所分配到的单位元元素数量不为零且跟父立方体不相同,则回到步骤4.3。
通过上述步骤,将模型中的node结点全部存储在该八叉树中。
步骤五:通过上面四个步骤,已经完成该场景模型的瓦片划分、属性整理和八叉树结点管理,接下来为场景模型的简化部分。首先,建立将场景模型由其所处的世界坐标系变换为相机空间坐标系;其次,视场指被摄取物体的大小,视场的大小是以相机至被摄取物体距离。视场越大,相机距离该模型越远。计算视场的锥体裁剪范围,即由视场定义的上下左右四个面和由投影矩阵定义的远近剪切平面;在三维场景中,可视范围呈现类六棱台的视锥,本发明需要关注视点到物体质心的直线距离,也就是相机坐标系Z轴关系范围。计算视锥8个顶点,步骤如下所示:
5.1.计算相机的垂直视野(fov)即摄像机在竖直方向上的张角,该角度计算基于Cesium API即可得到预算的张角值(Camera.fieldOfView),单位为度;
fov=Camera.fieldOfView;
计算屏幕的宽高比(aspect)。
aspect=Camera.aspect;
5.2.计算yf参数,表示视锥体的上下侧面与xz平面的偏移量;其中使用Math.Deg2Rad()将角度转换为弧度。
Figure BDA0002296462390000121
然后计算xf,表示视锥体的左右侧面与yz平面的偏移量。
xf=yf*aspect;
5.53.计算视锥体四个侧边的方向向量。
dir0=Camera.transfrom.forward-Camera.transform.right*xf-Camera.transform.up*yf;
dir1=Camera.transfrom.forward-Camera.transform.right*xf+Camera.transform.up*yf;
dir2=Camera.transfrom.forward+Camera.transform.right*xf-Camera.transform.up*yf;
dir3=Camera.transfrom.forward+Camera.transform.right*xf+Camera.transform.up*yf;
5.4.计算出八个顶点:
farcp=Camera.main.farClipPlane;
nearcp=Camera.main.nearClipPlane;
position=Camera.main.transform.position;
Vector3 farLeftBottom=position+farcp*dir0;
Vector3 farLeftTop=position+farcp*dir1;
Vector3 farRightBottom=position+farcp*dir2;
Vector3 farRightTop=position+farcp*dir3;
Vector3 nearLeftBottom=position+nearcp*dir0;
Vector3 nearLeftTop=position+nearcp*dir1;
Vector3 nearRightBottom=position+nearcp*dir2;
Vector3 nearRightTop=position+nearcp*dir3;
该场景的相机视角如图5所示。其中farcp为相机的远裁剪平面,nearcp为近裁剪平面。记录视锥集合点至预设公共变量中,表示近截面的四个顶点NTL(nearTopLeft)为左上点、NTR(nearTopRight)为右上点、NBL(nearBottomLeft)为左下点、NBR(nearBottomRight)为右下点;远截面的四个顶点是FTL(nearTopLeft)为左上点、FTR(nearTopRight)为右上点、FBL(farBottomLeft)为左下点、FBR(farBottomRight)为右下点。
步骤六:利用基本LOD层次细节模型算法(Levels of Detail)原理,对步骤4中的八叉树根结点进行先序遍历,判断节点所在的LOD层级LodLevel,并记录在每个对象节点中,在遍历过程记录同时对八叉树进行视锥剔除。
进一步地,该层级信息LodLevel用以为模型融合提供辅助。
进一步地,层级判断依据为相机位置到物体质心的法向距离,本发明对该三维场景设置4个层级,每个层级的距离是三维场景比例尺向下200的距离;
进一步地,若八叉树元素部分不处于视锥范围内,则直接设置此部分八叉树元素的node节点的可见性属性visible为不可见false,将其从可见范围剔除,不加入GPU渲染队列。
步骤七:再次以层序遍历步骤4生成的八叉树,对同一父亲节点下的兄弟节点进行距离位置判断,若距离小于100m,则将基于步骤六中视点的边缘顶点进行融合,同时根据LOD层级对三维模型网格进行简化。
进一步地,模型融合步骤如下:
7.1,计算模型包围盒质心间距离,取距离中心坐标,并记录;
7.2,对八叉树结构中结点元素的位置position重新计算
Figure BDA0002296462390000141
将重新计算后的位置设置为八叉树中结点元素的位置;
7.3,场景元素的背面剔除的操作为:在Cesium框架的代码中设置为true,具体代码如下:
cull:{enabled:true,face:Cesium.CullFace.BACK};在该行代码中,上行公式中cull为剔除。Cesium.CullFace.BACK为将背面剔除。
步骤八:模型瓦片中的三角网格(mesh)简化采用顶点随机删除算法,采取该算法可以保留模型原本的特征,使其简化后不至于失真。该算法对模型简化步骤如下:
8.1.根据当前LOD层级,将顶点删除,假设当前LOD层级为2时,随机删除外部顶点外的顶点索引数组v中4个点,然后与该点组成的三角网格面进行删除;以删除掉的点1为例,假设与将删除的点1相关的三角面为1/2/3、1/2/4、1/3/4和1/3/5,将点1删除后,空洞结构为由1、2、3、4、5组成的多边形。剩余点的删除方法同整个步骤2。
8.2.删除面后模型空洞在,对该空洞使用最少三角面进行补充,使模型保持特征性和完整性。
进一步的,步骤8.2中空洞形状可能为凸多边形,也可能为凹多边形,实际空洞形状为一个平面,故先将顶点坐标向量化:
p0=(x0,y0,z0),p1=(x1,y1,z1),p2=(x2,y2,z2)...;
由向量的定义可知,
a1=(x1-x0,y1-y0,z1-z0),a2=(x2-x1,y2-y1,z2-z1)...,以此类推;
求得向量后,对相邻向量进行叉乘:
|a1*a2|=|a1|*|a2|*sinx=k1,...(t>1);
对叉乘后的结果进行整理,由于是顺时针计算,故设当前为第t次叉乘,kt>0,则该角为凸角,kt<0为凹角。
接下来进行空洞多边形三角化,当遍历结束后所有kt<0,则该空洞结构为凸多边形,此时三角化的步骤如下:
步骤8.1.1:选择凸多边形的任意一点为起点,将起点与起点的前面和后面一点构成三角形,然后将得到的三角形保存起来,简称为邻接点三角形构造法。
步骤8.1.2:删除起点,形成新的多边形。
步骤8.1.3:重复以上步骤,直到只剩三个点无法对其上述操作,完成三角化。
若存在kt<0,则证明该空洞结构为凹多边形,此时三角化的步骤如下:
步骤8.2.1:选取多边形中的一个凹角,然后凹角所在点,和前两点或后两点,形成一个三角形,简称为前后两点三角形构造法。如剩余的点,任意点在剩余多边形的内部,则证明错误,换个凹角继续本步骤操作。反之,把这3个点构成的三角形保存到三角形数组中,删除该3个点。
步骤8.2.2:计算未被三角化的部分形状角度的凹凸性,若为凸多边形,重复凸多边形三角化的步骤即可,否则重复步骤8.2.1。
步骤九:将三角化后的数据送入渲染,渲染完成后,刷新当前场景模型scene,以达到页面呈现简化结果的效果,本次渲染结束。
步骤十:若需要改变视锥体范围,则返回步骤五,渲染完成后,刷新当前场景模型。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

Claims (7)

1.一种场景模型的加速渲染方法,其特征在于,包括以下步骤;
步骤1,将glTF文件中场景模型的所有node节点作为模型瓦片的基础对象;
步骤2,将一个模型瓦片对应node结点的属性抽取出来,并按照node节点重新构成新的文件,属性包括顶点索引、三角网格、名称、包围盒、坐标、纹理属性、纹理坐标、法向量数据、网格中点的索引和质心坐标属性;
步骤3,根据步骤2中生成的新的文件中的模型瓦片的三角网格,三角网格对应的位置、纹理、面索引这三类访问器,查询模型瓦片的三角网格信息,并以数组的形式存储三角网格的顶点索引;
步骤4,建立模型瓦片数据的空间八叉树索引,将步骤1中的所有node节点整合到八叉树数据结构,并分离为瓦片的八叉树索引和真实模型数据;
八叉树的建立过程如下;
步骤4.1,通过模型瓦片的最大和最小坐标值,围绕模型瓦片定义第一个立方体;
步骤4.2,设定最大递归深度;
步骤4.3,按照node节点中的数组顺序循环遍历将node结点元素放入能被包含,且没有子节点的立方体;
步骤4.4,若没有达到最大递归深度,就进行细分八等分的子立方体,再将该立方体所装的单位元元素全部分担给八个子立方体;
步骤4.5,若子立方体所分配到的单位元元素数量不为零且跟父立方体相同,则该子立方体停止细分,完成八叉树的建立;若子立方体所分配到的单位元元素数量不为零且跟父立方体不相同,则回到步骤4.3;
步骤5,将场景模型由其所处的世界坐标系变换为相机空间坐标系,计算相机空间坐标系中视场的锥体裁剪范围;
步骤6,利用LOD层次细节模型算法,对八叉树根结点先序遍历,判断节点所在的LOD层级,并记录在每个对象节点中,在遍历过程记录同时对八叉树进行视锥剔除;
步骤7,根据当前所处八叉树深度,确定三角网格中随机删除顶点数,删除顶点数随层级深度递减,根据当前LOD层级,将顶点删除后,对空洞几何特征进行三角化;
步骤8,将三角化后的数据送入渲染,渲染完成后,刷新当前场景模型,本次渲染结束。
2.根据权利要求1所述的一种场景模型的加速渲染方法,其特征在于,若需要改变视锥体范围,则返回步骤5。
3.根据权利要求1所述的一种场景模型的加速渲染方法,其特征在于,完成步骤6,进入步骤7之前,以层序遍历对八叉树进行遍历,对同一父亲节点下的兄弟节点进行距离位置判断,若距离小于设定距离,则将边缘顶点进行融合。
4.根据权利要求3所述的一种场景模型的加速渲染方法,其特征在于,融合过程为,计算模型瓦片包围盒质心之间的距离,取距离中心坐标;对真实八叉树元素的位置重新计算并将重新计算后的位置设置为八叉树中的结点元素的位置;将八叉树中的结点元素的背面剔除。
5.根据权利要求1所述的一种场景模型的加速渲染方法,其特征在于,步骤7中,若空洞结构为凸多边形,则三角化过程包括;
步骤7.1.1,选择凸多边形的任意一点为起点,将起点与起点的前面和后面一点构成三角形,然后将得到的三角形保存起来;
步骤7.1.2,删除起点,形成新的多边形;
步骤7.1.3,重复步骤7.1.1和步骤7.1.2,直到只剩三个点,完成三角化;
若空洞结构为凸多边形,则三角化过程包括;
步骤7.2.1,选取多边形中的一个凹角,然后凹角所在点,和前两点或后两点,形成一个三角形;若剩余的点,任意点在剩余多边形的内部,则证明错误,选取其余凹角继续本步骤;若剩余的点,任意点在剩余多边形的外部,把这3个点构成的三角形保存到三角形数组中,删除该3个点;
步骤7.2.2,计算非三角化部分角度的凹凸性,若为凸多边形,重复凸多边形三角化的步骤,否则重复步骤7.2.1。
6.根据权利要求1所述的一种场景模型的加速渲染方法,其特征在于,步骤6中,每个节点与相机视锥六个面的距离大于设置值,则将该节点与其子节点从八叉树中剔除。
7.根据权利要求1所述的一种场景模型的加速渲染方法,其特征在于,步骤6中,若八叉树元素部分不处于视锥范围内,则将此部分八叉树元素的node节点的可见性属性改为不可见,将其从可见范围剔除,不加入渲染。
CN201911203599.8A 2019-11-29 2019-11-29 一种场景模型的加速渲染方法 Active CN110910505B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911203599.8A CN110910505B (zh) 2019-11-29 2019-11-29 一种场景模型的加速渲染方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911203599.8A CN110910505B (zh) 2019-11-29 2019-11-29 一种场景模型的加速渲染方法

Publications (2)

Publication Number Publication Date
CN110910505A CN110910505A (zh) 2020-03-24
CN110910505B true CN110910505B (zh) 2023-06-16

Family

ID=69821032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911203599.8A Active CN110910505B (zh) 2019-11-29 2019-11-29 一种场景模型的加速渲染方法

Country Status (1)

Country Link
CN (1) CN110910505B (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111415401B (zh) * 2020-03-25 2023-05-30 上海城建信息科技有限公司 基于WebGL的大规模场景渲染方法
CN111563948B (zh) * 2020-03-30 2022-09-30 南京舆图科技发展有限公司 基于gpu进行资源动态处理和缓存的虚拟地形渲染方法
CN111598992B (zh) * 2020-04-08 2023-10-31 上海嘉奥信息科技发展有限公司 基于Unity3D体和面模型分区剔除渲染方法及系统
CN111161411B (zh) * 2020-04-08 2020-07-14 速度时空信息科技股份有限公司 一种基于八叉树的三维建筑物模型lod方法
CN111881238A (zh) * 2020-07-16 2020-11-03 武汉中地数码科技有限公司 一种适用于Web端的轻量级三维数据构建方法、介质和电子设备
CN112308974B (zh) * 2020-10-30 2022-02-18 南京航空航天大学 一种改进八叉树和自适应读取的大规模点云可视化方法
CN112256897B (zh) * 2020-11-04 2022-04-08 重庆市地理信息和遥感应用中心 一种三维场景下矢量瓦片加载方法
CN114565709A (zh) * 2020-11-13 2022-05-31 华为技术有限公司 一种数据存储的管理方法、对象渲染的方法及设备
CN112396682B (zh) * 2020-11-17 2021-06-22 重庆市地理信息和遥感应用中心 一种三维场景下视觉递进的模型浏览方法
CN112215935B (zh) * 2020-12-02 2021-04-16 江西博微新技术有限公司 Lod模型自动切换方法、装置、电子设备及存储介质
CN112509118B (zh) * 2020-12-02 2021-10-08 南京航空航天大学 一种可预加载节点和自适应填充的大规模点云可视化方法
CN112785673B (zh) * 2021-01-20 2023-11-07 江西航天鄱湖云科技有限公司 一种基于WebGL批量三维模型数据的渲染方法
CN113066160B (zh) * 2021-03-09 2023-06-27 浙江大学 一种室内移动机器人场景数据的生成方法
CN113051491B (zh) * 2021-04-22 2023-12-15 北京百度网讯科技有限公司 地图数据处理的方法、设备、存储介质及程序产品
CN113435564A (zh) * 2021-05-25 2021-09-24 北京理工大学 一种基于强化学习的增强现实多智能体协作对抗实现方法
CN113178014B (zh) * 2021-05-27 2023-06-13 网易(杭州)网络有限公司 场景模型渲染方法、装置、电子设备和存储介质
CN113255021B (zh) * 2021-05-31 2023-03-31 中国科学院长春光学精密机械与物理研究所 3d打印支撑结构的生成方法
CN113421337A (zh) * 2021-07-21 2021-09-21 北京臻观数智科技有限公司 一种提升模型渲染效率的方法
CN113628314B (zh) * 2021-08-30 2022-09-23 中国人民解放军国防科技大学 一种虚幻引擎中摄影测量模型的可视化方法、装置和设备
CN114419256B (zh) * 2022-01-24 2024-01-23 正元地理信息集团股份有限公司 基于多级抽壳算法的城市级bim数据轻量化方法及系统
WO2023184139A1 (en) * 2022-03-29 2023-10-05 Huawei Technologies Co., Ltd. Methods and systems for rendering three-dimensional scenes
CN114529633B (zh) * 2022-04-22 2022-07-19 南京师范大学 一种支持gis线对象和面对象连续lod绘制的方法
CN114898026A (zh) * 2022-05-10 2022-08-12 北京领为军融科技有限公司 一种基于位置和视线的地景动态加载卸载方法
CN115063531B (zh) * 2022-05-31 2023-03-24 中建八局第二建设有限公司 一种智慧园区空间数据包轻量化处理和渲染方法
CN115272549B (zh) * 2022-08-02 2023-12-15 动森数字科技(重庆)有限公司 一种超大数字场景的存储和渲染调度方法及装置
CN115761082A (zh) * 2022-10-21 2023-03-07 圣名科技(广州)有限责任公司 三维图形渲染的方法和装置、电子设备和存储介质
CN115409906B (zh) * 2022-11-02 2023-03-24 中国测绘科学研究院 一种大规模倾斜摄影模型轻量化方法及装置
CN115937438B (zh) * 2023-02-14 2024-01-23 正元地理信息集团股份有限公司 城市三维模型轻量化方法、系统、电子设备及存储介质
CN116049924B (zh) * 2023-03-07 2023-07-04 武汉益模科技股份有限公司 一种基于Cuda的三维零件差异分析方法
CN116128903B (zh) * 2023-04-17 2023-06-27 北京飞渡科技股份有限公司 一种智慧城市三维场景瓦片化分割方法
CN117953181A (zh) * 2024-03-27 2024-04-30 江苏狄诺尼信息技术有限责任公司 一种面向web3d的顶点分层与增量式lod方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7561156B2 (en) * 2006-02-08 2009-07-14 INOVO Limited Adaptive quadtree-based scalable surface rendering
CN104781852B (zh) * 2012-09-21 2020-09-15 欧克里德私人有限公司 用于渲染三维场景的计算机绘图方法
CN110070613B (zh) * 2019-04-26 2022-12-06 东北大学 基于模型压缩和异步加载的大型三维场景网页展示方法

Also Published As

Publication number Publication date
CN110910505A (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
CN110910505B (zh) 一种场景模型的加速渲染方法
EP1271410B1 (en) Image-based method of representation and rendering of three-dimensional object
CN104781852B (zh) 用于渲染三维场景的计算机绘图方法
US9177414B2 (en) Apparatus and method for rendering point cloud using voxel grid
CN110796742B (zh) 一种基于面向对象的三维场景视锥体剔除方法
CN107993279B (zh) 一种场景精确表达方法
Wonka et al. Guided visibility sampling
CN112070909A (zh) 一种基于3D Tiles的工程三维模型LOD输出方法
Luo et al. Quad-tree atlas ray casting: a gpu based framework for terrain visualization and its applications
Vyatkin et al. Photorealistic imaging of digital terrains, free forms, and thematic textures in real-time visualization system Voxel-Volumes
Kaufman et al. Continuum volume display
CN103440678B (zh) 一种三维体数据可视化方法及装置
JP2548742B2 (ja) 3次元シーン表示装置
KR930003811B1 (ko) 3차원도형 처리방법 및 그 장치
Gomez et al. Time and space coherent occlusion culling for tileable extended 3D worlds
Agarwala Volumetric surface sculpting
Luo et al. Spherical projective displacement mesh
Meseth et al. Memory Efficient Billboard Clouds for BTF Textured Objects.
Yilmaz et al. Modeling and visualization of complex geometric environments
Cui Procedural cave generation
Lai et al. An Effective Algorithm Research of Scenario Voxelization Organization and Occlusion Culling
Popescu et al. Sample-based cameras for feed forward reflection rendering
Schertler et al. Visualization of Scanned Cave Data with Global Illumination.
Shu-Jun et al. Optimized volumetric visual hull reconstruction method based on CUDA
Zhou et al. Key technology with large-scale three-dimensional terrain management

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant