CN103390087B - 一种针对大规模几何场景的交互绘制方法 - Google Patents
一种针对大规模几何场景的交互绘制方法 Download PDFInfo
- Publication number
- CN103390087B CN103390087B CN201310329362.0A CN201310329362A CN103390087B CN 103390087 B CN103390087 B CN 103390087B CN 201310329362 A CN201310329362 A CN 201310329362A CN 103390087 B CN103390087 B CN 103390087B
- Authority
- CN
- China
- Prior art keywords
- scene
- service
- geometric scene
- data
- extensive
- 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
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种针对大规模几何场景的交互绘制方法,该方法分为两个主要部分:一、基于MapReduce对大规模的几何场景数据进行并行的预处理;二、以预处理的结果为基础构建了一个B/S架构的交互服务。本发明的优点在于针对大规模的场景,通过分布式并行处理的方式进行快速地预处理,然后以预处理的数据为基础,提供后续的交互服务,可以快速地将大规模的场景以一种交互的方式展现给用户,并且前端交互处理的速度基本不会随着场景复杂度的上升而明显下降,用户体验良好。其次,由于预处理数据中包含了法向、深度、材质等信息,前端服务可以对预处理数据进行十分灵活的处理,满足用户对不同绘制效果的需求。
Description
技术领域
本发明涉及大规模的几何场景数据,综合了分布式计算、图形绘制和互联网服务等领域的研究,具体涉及一种针对大规模几何场景的交互绘制方法。
背景技术
随着计算机技术的发展,越来越多的建模工作都从传统的模式迁移到了计算机上进行,即计算机辅助设计(CAD)。在早期的模型设计中,由于建模技术落后、建模需求也不高,模型往往都是比较粗糙、简陋的,这些简单的模型在今天的个人电脑上都可以很方便地实现实时绘制,因此用户的交互、修改都十分便捷。
然而,随着建模技术、建模软件的不断成熟,模型获取渠道的不断丰富,人们更愿意去制作一些更加细腻、复杂的场景,这也是各个领域对场景的高质量的需求在推动着的。比如,一架波音飞机的模型的规模可以达到3亿多个面片,而米开朗基罗的大卫像的扫描网格模型则有20多亿的面片。这些大规模模型的数据大小也从几G到几十G不等。
当然,随着场景复杂度、场景规模的上升,对于绘制技术、硬件的要求也越来越高。对于一个数十G大小的场景,普通的机器的内存都放不下,更别说实时绘制了。因此,当前对大规模场景的绘制主要有以下几种策略:
1、绘制前先对大规模场景进行简化,实际绘制的是简化后的模型。
2、对数据进行预处理,创建一些层次结构,结合视域剔除等技术,使得绘制程序可以很方便地根据视锥的信息取出需要绘制的小部分数据进行绘制。
3、对场景进行分布式的绘制,利用并行达到加速绘制的效果。
简化是最直接的方法,但是简化是有损的,直接影响到最终的绘制质量。第二种策略一般需要耗费很长的时间在预处理上。而第三种策略需要搭建昂贵的CPU/GPU集群设备,而且需要进行通信、同步、负载平衡等问题的处理,技术门槛高。
Google公司在2004年发表的论文“SimplifiedDataProcessingonLargeClusters”中提出了一种适用于大数据处理的分布式计算框架:MapReduce。在处理T/P级别的数据上,这种框架有着明显的优势。Google公司已经基于该框架实现了数以百计的应用,用于处理爬取的文档、网络请求日志、倒排索引等等数据。Google公司的MapReduce实现作为公司的核心技术目前还是处于保密状态。来自Apache开源组织的Hadoop则是MapReduce的一个基于java的开源实现,因其开源特性,目前相对流行,基于Hadoop实现的系统也已经很多了。
MapReduce的灵感来自于Lisp等函数式语言的map和reduce原始表示,它的基本做法是先由Map函数从分布式存储中读取数据进行处理并生成一系列的(key,value)的对,Reduce函数则根据不同的key将这些对进行合并操作并进行输出,整个流程如图1所示。
在MapReduce出现之前,我们需要为不同的应用实现特定的并行系统来满足特定的需求,有时甚至需要专门购买昂贵的设备,相比于那些并行系统,MapReduce具有如下优势:
1)简单易用
用户只需专注于设计特定的Map和Reduce函数,而不需要过多地去关注底层的硬件、容错等并行细节的东西。另外MapReduce一般基于纯CPU,在编程上相对于一些GPU编程更为简单。
2)十分通用
MapReduce的简单结构带来了相当大的灵活性,通过实现不同的Map和Reduce函数,可以实现各种应用(统计url访问、倒转网络链接图、倒排索引、并行排序、并行绘制、等值面提取、网格简化)。
3)可拓展性好
Yahoo08年公布的数据称Hadoop已经可以运行在4000个节点上。良好的拓展性一方面保证了整个系统的计算能力,另一方面也为超大数据的存储提供了条件,使之可以轻松地应对T/P级别的数据。
4)高度可靠
简单的runtime调度策略,虽然损失了部分性能,却保证了系统的高度可靠性,一旦一个Map或者Reduce任务失败了,系统只需简单地重启这个Map或Reduce任务(而不是整个任务)就可以了。
5)廉价、易获取
MapReduce对底层硬件的要求低,并且得益于它的通用性,我们不需要为不同的应用搭建不同的集群。而随着大量云计算公司的兴起,我们甚至可以直接使用由这些公司提供的硬件和系统。这些都大大地降低了实现一个应用所需要的成本。
发明内容
本发明的目的在于针对当前硬件条件不能满足用户对大规模几何场景进行很便捷地交互查看的需求的这种现状,提出了一种使用MapReduce分布式处理来加速对大规模数据的预处理,然后基于这些数据提供交互查看服务的方法。该方法极大地方便了用户对大规模场景进行直观地交互查看,同时可以很方便地更具用户的需求,添加不同的绘制效果、交互方式。
本发明中的技术方案基于背景技术中的大规模场景绘制的第二类策略,首先需对数据进行预处理,这种处理对于存储和计算能力的要求都很高,而基于MapReduce的云计算框架可以很好地满足这两点需求,在提供大容量、高度可靠的存储的同时,通过并行计算可以极大地提高处理的效率。在上述前提下,本发明利用MapReduce进行大规模场景的预处理,然后以预处理的数据为基础,以B/S架构的方式提供一个轻量级的大规模场景交互探索的服务。
一种针对大规模几何场景的交互绘制方法,分为以下几步:
1)对所述的大规模几何场景进行二进制格式转换,并记录大规模几何场景中各三角面片的顶点法向以及材质信息;
2)基于MapReduce对大规模几何场景进行光栅化预处理,所述的光栅化预处理分为两个阶段:
a)Map阶段:将所有三角面片平均分配给每个MapTask进行投影变换,得到面片投影数据;
b)Reduce阶段:读取Map阶段生成的面片投影数据,并进行光栅化处理,保留生成的所有像素,连同各像素的材质、法向和深度存储为预处理结果;
3)交互绘制:
a)根据用户的交互,向服务器发送绘制请求;
b)服务器根据所述的绘制请求,调用预处理结果进行渲染生成最终的结果图片,返回给用户。
根据各像素所对应的三角面片,并结合所述三角面片的材质信息,得到所述像素的材质。
根据各像素所对应的三角面片,对所述三角面片的三个顶点进行插值,得到所述像素的法向和深度。
在Reduce阶段,采用扫描线算法进行光栅化处理。
光栅化预处理后,根据预处理结果中对应的像素位置,将预处理结果分为若干数据单元,每个数据单元对应所述大规模几何场景中的一个区域。
服务器根据所述绘制请求中设计的区域,调用对应的预处理结果,并进行渲染。
在本发明中,由于几何场景的格式会因为制作软件的不同而不同,首先对大规模的几何场景数据进行转换,生成便于分布式处理的自定义的二进制格式。
在分布式预处理的阶段,采用云计算的解决方案。一方面,云存储可以满足对大规模场景以及大量的预处理结果的存储的需求;另一方面,MapReduce并行计算框架也可以很方便地对预处理的过程进行并行加速。
同时,用户交互服务采用了基于web的方案,这样,用户只需要合适的浏览器,就可以在任何设备上方便地使用该服务。
附图说明
图1为MapReduce流程;
图2为本发明的架构。
具体实施方式
本发明提出一种对大规模几何场景进行便捷地交互查看的方法,主要包括了两个步骤:
一、基于MapReduce对大规模的几何场景数据进行并行的预处理;
二、以预处理的结果为基础,构建一个基于web的B/S架构的交互服务供用户使用。
本发明的基本架构如图2所示,接下来,详细地介绍每个步骤以及各种细节:
1、几何场景的二进制表示
为了便于在分布式处理的时候进行任务分割,在预处理前,要首先进行场景格式的转换,将其转换为自定义的二进制格式,得到二进制场景文件。二进制格式如表1所示,本发明采用的二进制格式在现有的stl标准格式的基础上,将三角面片的法向变成了三个顶点的法向,便于进行法向插值。
表1几何场景的自定义二进制格式
stl标准格式是不支持材质、纹理信息的。在这里,我们额外为二进制场景文件添加了一个对应的材质文件,格式如表2所示。
表2几何场景自定义材质格式
材质的各项属性参考了.mtl材质文件格式,其中的“Numberoftriangles”代表了该材质的应用范围(比如,第一种材质的该值为3,第二种材质的该值为5,则表示编号为0,1,2,3的面片应用第一种材质,编号为4,5的面片应用第二种材质)。
2、并行处理的任务分割
Map阶段:
从二进制场景文件中读取各三角面片的信息,并作相应的投影变换;
从材质文件读取与每个三角面片相对应的材质信息;
该阶段的任务是按三角面片进行分配的,即所有的Map任务平均分配三角面片,由于每个面片的处理时间是一定的,所以在Map阶段,这样做可以得到很好的负载平衡。
Reduce阶段:
该阶段的任务是在图像空间进行分割的,即将最终结果的图像空间进行网格剖分,分成M*N的小片,每个Reduce任务就处理其中一个小片内部的数据。在这一阶段,由于投影到每个小片的面片的数目并不均匀,甚至会出现很大的倾斜,导致负载的不均衡,在某些复杂的分片中,会出现瓶颈。但是考虑到之后的交互服务也是基于图像空间进行分割的,这样做还是一种比较自然的方式。
3、Map和Reduce之间的数据传递
在MapReduce计算框架中,这两者之间数据的传递是通过一种<key,value>对的形式进行的,在Map阶段按用户的需求生成这些对,从Map到Reduce的过程中,这些对会根据key的值和用户定义的比较函数对这些对进行排序,并保证具有相同key的对会被同一个Reduce任务处理,在Reduce阶段只需对具有不同key的对分别进行处理即可。
在本发明中,我们把每个三角面片对应的最终图像空间分割片的编号(区域的编号)当作它的key,把深度、法向、投影坐标等信息作为value。这样可以保证同一个分片的所有面片被同一个Reduce任务处理,预处理的结果也被存放在同一个结果文件中。
4、预处理结果数据的组织方式
预处理的结果数据是根据结果图像空间的分片情况进行分开存放的,即每个分片都有与之对应的预处理数据(空的分片除外)。
为了便于交互服务的绘制,预处理结果中保存了各种绘制需要的信息,包括像素的法向、投影前坐标系中的位置、深度、所属物体的编号等信息。它的格式如表3所示,在分片的每个像素位置上,都有多个像素,“Numberofpixels”记录了在该像素位置上,存在的像素的数目n,之后的内容则记录了这n个像素的详细信息。
表3中间数据的存储格式
5、基于web的交互服务前后端之间的协作
前端是一个基于javascript和html5制作的界面,在处理每个用户交互动作时,前端都会根据图像空间的分片情况,对每个小片,分别向后端发送绘制请求。这些请求都是通过ajax异步地进行的,当后端绘制完成的时候,前端开始从服务器上读取绘制好的图片,然后显示在屏幕上适当地位置,呈现给用户。
后端由c++实现,接受并处理前端的绘制请求,对每个请求,读取相应的预处理数据块,进行绘制。由于每个请求都是独立的,后端在绘制的时候其实是并行的,这在一定程度上也提高了效率。
6、前端的交互方式
为了便于用户更好地对场景进行交互的探索,前端设计了很多交互,如表4所示。
表4前端交互
交互方式的丰富性从一个侧面表现出了这种预处理的数据格式的优越性。在具有法向、材质、位置信息的像素点的基础上,进行各种image-basedrendering都是很方便的,从而可以给用户以更好的体验。
7、在线交互的数据缓存
从后端看来,前端发过来的每个请求都是独立的,请求的内容也决定了最终需要返回的结果图像。因此,如果对这些请求作缓存处理,将会大大地提升响应速度,同时减小服务器的压力。
缓存的方法很简单,就是将请求看做一个字符串,然后对其计算MD5码,将计算的结果图像存放在以该MD5为目录名的目录里面。在接收到一个请求的时候,首先判断响应的MD5码的目录是否存在,如果存在,则可以直接返回结果,反之则需要进行计算。
由于MD5码的分散性是很不错的,即两条不同的字符串具有相同的MD5码的概率是很低的,所以这种缓存方式理论上可行,从实际使用上看来,效果也不错。
为了优化缓存的目录结构,提高效率,我们根据MD5码的前两个字符首先创建2层目录,然后把以MD5码命名的目录放在这两层目录内部,这样可以有效地防止单个目录下的子目录个数过多。
Claims (6)
1.一种针对大规模几何场景的交互绘制方法,其特征在于,分为以下几步:
1)对所述的大规模几何场景进行二进制格式转换,并记录大规模几何场景中各三角面片的顶点法向以及材质信息;
2)基于MapReduce对大规模几何场景进行光栅化预处理,所述的光栅化预处理分为两个阶段:
a)Map阶段:将所有三角面片平均分配给每个MapTask进行投影变换,得到面片投影数据;
b)Reduce阶段:读取Map阶段生成的面片投影数据,并进行光栅化预处理,保留生成的所有像素,连同各像素的材质、法向和深度存储为预处理结果;
3)交互绘制:
a)根据用户的交互,向服务器发送绘制请求;
b)服务器根据所述的绘制请求,调用预处理结果进行渲染生成最终的结果图片,返回给用户。
2.如权利要求1所述的针对大规模几何场景的交互绘制方法,其特征在于,根据各像素所对应的三角面片,并结合所述三角面片的材质信息,得到所述像素的材质。
3.如权利要求2所述的针对大规模几何场景的交互绘制方法,其特征在于,根据各像素所对应的三角面片,对所述三角面片的三个顶点进行插值,得到所述像素的法向和深度。
4.如权利要求3所述的针对大规模几何场景的交互绘制方法,其特征在于,在Reduce阶段,采用扫描线算法进行光栅化预处理。
5.如权利要求4所述的针对大规模几何场景的交互绘制方法,其特征在于,光栅化预处理后,根据预处理结果中对应的像素位置,将预处理结果分为若干数据单元,每个数据单元对应所述大规模几何场景中的一个区域。
6.如权利要求5所述的针对大规模几何场景的交互绘制方法,其特征在于,服务器根据所述绘制请求中设计的区域,调用对应的预处理结果,并进行渲染。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310329362.0A CN103390087B (zh) | 2013-07-31 | 2013-07-31 | 一种针对大规模几何场景的交互绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310329362.0A CN103390087B (zh) | 2013-07-31 | 2013-07-31 | 一种针对大规模几何场景的交互绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103390087A CN103390087A (zh) | 2013-11-13 |
CN103390087B true CN103390087B (zh) | 2016-03-09 |
Family
ID=49534356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310329362.0A Active CN103390087B (zh) | 2013-07-31 | 2013-07-31 | 一种针对大规模几何场景的交互绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103390087B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7280921B2 (en) * | 2002-09-23 | 2007-10-09 | Inha University Foundation, Inha University | Method for visualizing large-scale protein interaction data |
CN101807289A (zh) * | 2010-03-15 | 2010-08-18 | 深圳市中钞科信金融科技有限公司 | 一种用于分布式图像处理系统的建模方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009246408A (ja) * | 2008-03-28 | 2009-10-22 | Toshiba Corp | 対話装置、画像処理モジュール、画像処理方法およびプログラム |
-
2013
- 2013-07-31 CN CN201310329362.0A patent/CN103390087B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7280921B2 (en) * | 2002-09-23 | 2007-10-09 | Inha University Foundation, Inha University | Method for visualizing large-scale protein interaction data |
CN101807289A (zh) * | 2010-03-15 | 2010-08-18 | 深圳市中钞科信金融科技有限公司 | 一种用于分布式图像处理系统的建模方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103390087A (zh) | 2013-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pajarola et al. | Survey of semi-regular multiresolution models for interactive terrain rendering | |
CN102157008B (zh) | 一种大规模虚拟人群实时绘制方法 | |
CN107193911A (zh) | 一种基于bim模型的三维可视化引擎及web应用程序调用方法 | |
CN101853162B (zh) | 一种可编辑的网页三维几何造型渲染方法 | |
CN102663801A (zh) | 一种提高三维模型渲染性能的方法 | |
CN101119485A (zh) | 一种基于特征保留的三维模型递进传输方法 | |
JP6673905B2 (ja) | ネットワーク転送およびリアルタイムレンダリング用に3dテクスチャモデルを自動的に最適化するシステム、方法、およびコンピュータプログラム製品 | |
CN103679813B (zh) | 三维数字地球的构建方法以及三维数字地球系统 | |
US8896617B2 (en) | Multi-resolution texture aggregation | |
CN105844683A (zh) | 基于Canvas和WebWorker的像素差逐帧动画的实现方法 | |
CN116401332A (zh) | 一种大规模三维模型展示优化方法、系统及电子设备 | |
Dyken et al. | Semi‐Uniform Adaptive Patch Tessellation | |
CN103390087B (zh) | 一种针对大规模几何场景的交互绘制方法 | |
CN106780716A (zh) | 历史文化遗产数字化展示方法 | |
CN116543086A (zh) | 神经辐射场处理方法、装置及电子设备 | |
CN113419806B (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
CN115238345A (zh) | Bim模型处理方法、装置、存储介质及电子装置 | |
CN106570934A (zh) | 针对大场景的空间隐函数建模方法 | |
US8847949B1 (en) | Streaming replicated geographic data for display in a three-dimensional environment | |
CN102298796B (zh) | 大数据量cad模型实时绘制方法 | |
CN116502303B (zh) | 一种基于场景层级实例信息增强的bim模型可视化方法 | |
CN110223367A (zh) | 动画显示方法、装置、终端及存储介质 | |
Pan et al. | Level of detail and multi-resolution modeling for virtual prototyping | |
US8749550B1 (en) | Display of replicated geographic data using a hierarchical data structure | |
CN102622198A (zh) | 一种对数据进行可视化处理的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |