版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、地学三维可视化与过程模拟实验指导实验一地质灾害三维可视化建模实验实验目的:1、掌握一款地学方面三维可视化软件,了解三维可视化概念及其原理。2、使用地学相关数据,使用三维可视化软件,建立地质三维模型。实验原理:根据采集得来的地理信息数据以及地下地质数据,利用三维可视化建模软件,使用手动创建图元,自动创建图元等人机交互功能,搭建起三维地质模型,能如实的反应出地上地形情况以及地下岩层分布情况,通过三维可视化分析,能清楚的反应出该区域的相关地质信息,提供与专家或相关技术人员做进一步的分析。实验过程:1、软件安装双击QuantyHazard3D1.0.msi文件,安装QuantyHazard3D1.0三
2、维可视化软件。2、数据整理(该部分一个完成的三维可视化建模中的一部分,由于实验课时间有限,在实验课上的数据是整理好的半成品数据,并且删除部分复杂的数据源)3、三维建模(该部分是由学生在上级实验课上独立完成的内容。为了减少难度和适应课上演练,以下实验数据是经过简化后的某地区岩溶塌陷地质灾害勘探数据)(1)用QuantyHazard3D软件打开实验数据.gvp文件,里面有整理好的三维数据,打开之后效果如下图。s=r=wwii.2=fwi»WAi吕二步白(2)使用菜单中编辑一条件选取功能,选择如下图配置。再次使用菜单中编辑一条件选取功能,选择如下图配置。就创自动画出了杂填土底层的上下控制节
3、点,如下图:关闭其他图层,只打开杂填土上节点图层,如下图:按住Ctrl+A,全部选中这些控制数据点,使用菜单功能三维建模一创建TIN面,就可以创建出杂填土层的上表面。如下图:同理创建出杂填土下表面,如下图:选中杂填土的上表面和下表面,使用菜单功能编辑一多面体编辑一自动生成体,生成一个封闭的地层体。如下图:对照岩芯模型里面的颜色和属性,对应修改地层体的颜色和属性。如下图:以此类推创建出其他地层,把建立的地质体模型放在地质体模型图层中,没有地质体模型图层的自己新建一个。最终结果如下图:(3)建立地层面模型图层,建立一套地质体模型的面模型,简称地层面模型,主要用于计算面积和纹理的功能需要。把所有的多
4、边面图形数据全部转移到地层面模型图层中如下图:从上至下一次建立多边形性面的侧面,下面以一个地层的上下面为例子。首选把其他图形隐藏,只留下一个地层的上下面,为每一个面创建一条边界线。选中一个面,单击右键,在右键菜单中点击边界成线,就能够创建一条边界线。如下图:同理创建下表面的边界线,隐藏面图形,如下图:然后选中两条边界线,使用菜图形工具中自动造多边形,即可生成地层侧面。如下图:|_QuantyUaiard3D-1沼埸恪地成灾矍品vp图范工且(I)三维建模也捏SJ分析)数据库管理qp显示心囱口/希勖®自由层钻孑幽&岩向魏地层面稹空地质体椁里地震解崎去边再©物诘现则曲面用
5、包界剂妗培)清除小三稻寿©台井面中恪道点校正两面交灵点,H投睇雪T1K边界轼剪T1H边界苴剪住节直->建蚤线至-遥边僧线1条=>fhiibm面蛋谢-渤条皿寒边窕-尚"底面区)HwM面79边潴宓面体多边彩电)翳条投影到TH裁条投修到DTM同理依次创建其他地层的面模型,并且又该显色和属性,最终的面模型如下图:(4)加载地表影像图,选中地层面最上层的表面,单击右键,点击右键菜单中的属性菜单,即可弹出属性页对话框,使用纹理贴图功能,找到已经准备好的地表影像图,进行纹理。如下图:霎边形属性多边形定义皎理贴图基本属性I几何属性I属性编辑I确定取消(5)对地层面模型图层中其他
6、地层侧面和底面进行纹理。选中一个地层的侧面,点击右键,点击右键菜单中的属性菜单,即可弹出属性页对话框,使用纹理贴图功能,找到已经准备好的纹理图片,进行纹理。如下图:然后使用该属性页中的编辑功能,根据实际情况选择合理的坐标映射模式,进行纹理。如下图。然后同理依次纹理侧面,如下图:实验结论:在实验结束以后,根据自己做实验的情况,以实习论文形式提交个人实验心得和实验结论。课后练习:使用给定实验数据或者自己模拟创建的数据,在QuantyHazard3三维可视化软件中建立一个完成的三维地质模型。实验二三维可视化分析实验目的:1、加深对三维建模软件的使用,掌握软件三维可视化分析操作和原理。2、了解三维可视
7、化分析各个功能的编程原理和基本算法。实验原理:利用QuantyHazard3D开发完成的“地质灾害体三维可视化分析”软件,对三维地质灾害体进行三维建模,生成三维数字灾害体,然后对三维地质灾害体进行剖面图切割、地质块体切取、方量计算、真三维检索查询等可视化分析,以支持地质灾害综合分析与预测预报。实验过程:1、计算长度计算先选中一根线条,使用菜单模型分析一数量计算一长度计算就能得出该先跳到长度,用于测量距离、路程和周长来用。如下图:面积计算选中一个面,使用菜单模型分析一数量计算一面积计算,即可计算出该区域面积。如下图:体积计算选中一个体,使用菜单模型分析一数量计算一体积计算,即可计算出该区域体积。
8、如下图:2、图例显示打开地质体模型图层,关闭其他图层,选中全部图形,然后点击菜单显示一显小颜色图例'一显本图例',国工程但)创建如掘帽®的琨工具三雎建模®棹量分析数据库管理(a)|fiSP自小口裒及Q田加闻©或日1?口用图加#0口口口口口一目苗岩电密总舸甄口由孔芯层质表切更面地制I切密型模模区鼠梗而修型型体刷新EJtt©霜小)锵理)期里平移快速显示世)观图显示。由定至株辅id打印最佳视角虻'刷新城考背导国).显示叁著e景中显示坐库方向必显示血包酬1位)灯洸设置材盾设邑g分层设色出:).录性显示值)然后弹出图例编辑对话框,如果有不满
9、意的地方可以做一下调整,点击确定。图:图例编辕设置图例的属性及耳颜色I添加删除取消图列是不困冽遢宣如下%QuarilyEax.ardl3D-碧溶塌陷她隔灾室.*/中风之踞电含薛布用碳粕原国藤即心粉很粘土杀瞋十含FF石/邺柑点3、剪切剖面先点击菜单模型分析一剖面分析一剪切剖面线,然后任意画一条直线,即生成一组剖面线。如下图:4、剪切分析先点击菜单模型分析一快速剪切地质体,然后任意画一条直线,即生成一组剪切后的地质体。如下图:5、开挖分析先点击菜单模型分析一快速工程开挖,然后任意画一条折线,即生成一组开挖后的地质体。如下图:6、截面分析先点击菜单模型分析一快速截面分析,然后任意画一条折线,即生成一
10、组截面。如下图:实验结论:在实验结束以后,根据自己做实验的情况,以实习论文形式提交个人实验心得和实验结论。课后练习:1、根据软件的操作手册指导,自己尝试完成其他分析功能,例如图例分析,布尔运算分析等。2、实习基本结束,全面了解并且掌握软件的使用,并且了解其中的原理。实验三基于QuantyView的二次开发实验目的:1、了解地学三维可视化软件,掌握地学三维可视化的基本原理。2、熟悉基于QuantyView的二次开发,掌握地学三维可视化软件基本框架的搭建。3、通过QuantView平台软件的二次开发,了解地学三维可视化技术的应用方法。实验原理:QuantyView是由中国地质大学(武汉)地质信息科
11、技研究所研发的具有完全自主版权的国产三维可视化地质信息系统平台。它是建立于基层单位(数据采集点)或主管部门、可以对各种地质数据进行收集、存贮、管理、处理和使用的基础性和综合性技术系统。该系统采用行业或部门统一的数据模型、标准的代码体系,可以实现从野外数据采集到室内数据综合整理、平剖面图件编绘、真三维可视化分析,再到国土资源和工程地质条件综合预测评价、科学管理与决策、地下工程(包括地下管线)和资源开发设计,乃至成果的保存、管理使用和出版印刷等等的全程计算机辅助化。QuantyView的架构设计与开发应该具有高起点,前瞻性,可扩充性,遵循软件工程原理与方法,设计开发成一个具有明显核心技术优势的可配
12、置、可搭建式的平台系统(如下图所示)。该系统的设计以地质矿产点源信息系统理论框架为指导,由QuantyView2D和QuantyView3D两部分组成。其中,QuantyView3D是用VisualC+和OpenGL开发的具有完全自主版权的三维地质可视化软件平台。该平台具有强劲的真三维图形数据和属性数据编辑模块;提供各种专业的可视化分析工具;可以分别利用钻孔、平胴、槽探、竖井、勘探剖面图和构造平面图等来生成三维数字地质体;所生成的三维地质体可以进行空间数据和属性数据的双重可视化查询和分析。以QuantyView3D为基础平台设计的软件系列有广泛的用途,能实时、快速、动态地获取、管理和处理各种矿
13、山开采、油气资源勘探、水利、水电、高速公路、铁路、隧道、桥梁、地铁、防空设施等地质勘查和设计施工信息,可用于资源评价、城乡建设、环境监测、地震区划、灾害防治和规划决策等领域。对于信息源所在处或基层勘查单位而言,它们是功能强劲的微型工作站;而对于国家的国土资源信息系统而言,它们是信息齐备的网络结点。QuantyView层叠式复合结构作为地质信息系统三维可视化软件平台,QuantyView3D框架由9个相对独立又相互联系的模块组成:(1)基本图形模块:是三维平台图形核心基础模块,实现基本图元以及图元组织和渲染等基本图形功能;(2)科学计算模块:支持数据处理、空间分析、功能应用等基本的科学计算,主要
14、是一些数学算法。它的数据结构以及开发尽量考虑跨平台、独立性;(3)数据管理传输模块:利用点源数据库进行地质数据的存储、查询、调度等,C/S及B/S模式的数据传输;(4)文件转换信息模块:实现地质3D数据文件的标准化,以及与其他通用的同类软件之间的数据交换处理;(5)可视化显示模块:为地质建模、交互编辑、空间分析、专题应用提供一个三维可视化的环境,要求快速、逼真、多形式;(6)交互编辑模块:封装三维可视化平台的常用编辑功能,要求方便快捷人性化;(7)地质建模模块:负责地表、地质体、地质工程建筑等的模型构建;(8)空间分析模块:封装地质空间的常规分析方法;(9)专题应用模块:总结地质信息化工作的项
15、目成果,发展基于平台的专题应用产品。如矿山、地质调查、城市建设、地下管线、油气盆地、水文地质、工程地质、灾害地质等专题。QuantyView3D模块组成本次实验利用VisualC+2010开发工具,基于QuantyView提供的二次开发包(SDK),通过SDK包的一系列动态链接库,搭建专题应用软件架构,能够实现一般的地学三维可视化功能。以数字矿山产品为例,QuantyView3D的SDK开发包主要包括数学库GV3dMath、实用库GV3dUser、图形库GV3dBase、算法库GV3dAlgorithms、输入输出库GV3dFileIO、资源库GV3dRes、框架库GV3dFrame以及三维系
16、统原型QuantyView3D。基于此二次开发包,开发人员可以开发地质专题如数字矿山的专题动态库GV3dMine,更进一步可以基于QuantyView3D系统原型快速开发专题产品,如“紫金山矿区三维可视化系统”。QlJfttlhAl-金山矿区7可视化子系统心Frame-框架库eifdMin*-应用率GVJdRes1黄承库J一GXWd.,I削Hthiu,一,OVJ-dFllflO算法库,人输出库图雅库aXnSi!MH6VMM*ih-数学库<3V3,5tr-实用库基于QuantyView3D的专题动态库及产品二次开发架构其中,GV3dMath库包含有常用的数学计算函数;GV3dUser库主要
17、是简单的GUI类;GV3dBase库是SDK包的核心,包含有图形对象类;GV3dAlgotithms库主要是各类分析函数;GV3dFileIO库包含有对一些常用三维格式的数据文件的输入输出函数;GV3dRes库是对话框等界面资源;GV3dFrame库集成了Document及View的基本框架,避免了开发人员重复三维可视化环境框架的搭建开发。在整体架构上,QuantyView3D采用的是两线交叉模式,一方面从三维可视化环境角度分为"World-Project-Looker-Render”模式,另一方面从数据组织上分为"Project-Map-Layer-3dObject”模式
18、。其中,CGV3dWorld类总管三维可视化环境;CGV3dProject类负责三维数据对象的组织,它采用的是"Project-Map-Layer-Object”模式,即一个工程(Porject)下有多个图幅(Map),一个图幅包含有多个图层(Layer),一个图层包含有多个图形对象(3dObject),图形对象主要是点(CGV3dPoint)、线(CGV3dPolyline)、面(CGV3dPolygon与CGV3dSurface)、体(CGV3dPolyhedron)等几种基本图元类。QuantyView3D基本框架实验步骤:QuantyView3D的SDK包主要包括build、
19、include>lib、libd等四个文件夹,其中build文件夹主要是主框架或其他动态库的源码文件夹,include是QuantyView3D平台二次开发用到的头文件,用户自定义的动态库的头文件也可统一放到该文件夹,lib文件夹是32位Release版本的平台库,libd文件夹是32位Debug版本的平台库。一般的二次开发主要是程序员根据应用专题开发动态库或者应用程序EXE,源码一般放在build文件夹中,导出库或者应用EXE一般放到lib或者libd中。下面以32位白Debug版的专题动态库和EXE的创建及配置为例,介绍了QuantyView3D的二次开发基本过程。1)专题动态库创建
20、及配置以MFCExtensionDll为例,创建一个专题动态库,如“GV3dMine.dll”,其工程名称为GV3dMine,放在build下的3DFrame或者ours文件夹下。再设置好动态库属性页的一些配置参数,如下图是一个参数设置示例:“字符集”设置为“使用多字节字符集”;(如图1)“输出路径”为“.libd”;(如图1)“中间文件路径”设置为“”;(如图1)“附加库目录”设置为“$(OutDir)”;(如图2)“附加依赖项”设为“mpr.lib;glut32.lib;GV3dModeling.lib;GV3dUser.lib;GV3dMath.lib;GV3dBase.lib;GV3d
21、Algorithms.lib;GV3dFileIO.lib;GV3dRes.lib;GV3dFrame.lib;Geoattribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.lib;jbig.lib;spzip.lib;tiff.lib;MathLib.lib;ThirdlyLibrary.lib;AlgorithmsLib.lib;GdiPlus.lib;geobase.lib;MapProjections.lib;GeoObjBase.lib;GeoStruct.lib;GeoGeometry.
22、lib;GeoBaseUI.lib”。(如图3)Active(Debug)*Flatform:Aetit(WiH32)Cgnf口gui&t3inMaaagwr.+CommonProperti-asI三Canfigur<tionFrptrtiG电口史ralDebagg.in&VC-H-Directoraesac/cf*+Linker+MuufeslTo-ol3.R电孱Q5qq号XNLDocumentGenerator+王+Brows*Inform&tionEni工也EventeCustomBui1dSiepCcideAnalysieOutputEireeloryIb
23、ttrmtdiateDireeltryIirgetMu£THrgft-tEmIauxion国算t曹UISiMVSt&D.l.t.QT1CltBJ1BuildU£Fil.PlfttfcrmToolsetEnableManagedIncrementalBuildBProjectDefaultsCmfiguralionTypeU&e*fMFC3在ATLCh«1rMiktS«tC(HnDRLMgua$电Hmiti单SupportVhol«Prop"anOtiiiization.V.V.UihdV_V.bidl工8GdA$(Ff
24、oj£cLffue)$CfmjectNamw).dll*cd£;*c.th*二审.gbj.ilk:*.r.写qhc.8二*tllb:*iCntDir)I(M£Bu门dFmj.ctHv)IqevlOONoDaaaieLibru(.dll)UeIFCSkuedDLLNdtUsingATLIf-scHol1CliuncterS«t.NqCntmciikLan0.&.RwiAlmqEvppqrtWqWhoisProgramQptimix&ticnthitviitDirectcirSpeeifies.arelativepithtotheoutpat
25、£ilidirectory;亡皿includefenvireiwerttvariables.睹定期消专题动态库属性配置(1)专题动态库属性配置(2)*nTra?rwyiwj尸尸m专题动态库属性配置(3)在使用时,在头文件stdafx.h中或者实现文件的开头加上相应的包含文件即可,例如:卮>l$b虱Scoipe)#inclu<fainclEjdc/gl/gl.h*sinclude.一/i-JIiklude/gl/glu.h,Nitieludeafct/1./.Xirelude/gl/giut.h*IncludeIrclude/GED'IMME/Iflages/jci
26、iHV.b"include,“/././inCIude/6ea4da/ado2uhri*include"rr/r.Zinclud«/G«QAttribuitc/gKivttrilNjtv甫"tineludebitlude/0EOBA5EUI/GeoBa5je«ra,h"include.*lude/GWdyath/Miath.hHincluidfl"rr/,/intlud«/iSV3dU4er/Gv3GlUser,lir,includev./»./1.,/include/G3dBase/Gv3dB
27、ase.h"Wincludr".finclude/6v3dHilgorithHs/,Gv3-dULl!g:arithfrt-h.9include"rr/././liKlud«/S¥3dFilcIO/Civ3ilfilvZO.h1*NlneludeM./Lntlude/6v3dRes/6V3dRe5.hH4includr''include/OvdModeling/GVJfizdeling.h"externt_deeL印2“)CGVBdGlobal_3dObjj/导K的至局时制至此,一个专题动态库已经创建完成了,下一步的工
28、作就是基于QuantyView3D的SDK包针对地质专题需求开发所属的功能接口了。中EldtbchVinclude<afKd»o.h>/MFCDAOdatabaseclasses#endif/_AFX_NO_&ftD_SuPPORTR*lfndef_AFX_MO_OLE_WPOR7include<afxdtctlih/MFCsupportforInterntetEscplorer4CcmnoniCswitral5sendif日#ifrtdef_AFX_W0_AFMCm_5UPPQRT#:include<afxcmn.lh>ffMFCsupport
29、fortrindawsCcnicnC<mtnolsSendif/_AFX_HO_AFXCffl_SUPPORTinclude/功肝.区ID拌件条的"七支符2)专题EXE的创建及界面配置以MFC应用程序MDI为例,创建一个专题EXE,如“QuantySoft.exe”,其工程名称为QuantySoft,放在build下的3DFrame或者ours文件夹下。再设置好应用程序属性页的一些配置参数,如下图是一个参数设置示例:“字符集”设置为“使用多字节字符集”;(如图4)“输出路径”为“.libd”;(如图4)“中间文件路径”设置为“”;(如图4)“附加库目录”设置为“$(OutDir
30、)”;(如图5)“附加依赖项”设为“mpr.lib;glut32.lib;GV3dModeling.lib;GV3dUser.lib;GV3dMath.lib;GV3dBase.lib;GV3dAlgorithms.lib;GV3dFileIO.lib;GV3dRes.lib;GV3dFrame.lib;Geoattribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.lib;jbig.lib;spzip.lib;tiff.lib;MathLib.lib;ThirdlyLibrary.lib;Algor
31、ithmsLib.lib;GdiPlus.lib;geobase.lib;MapProjections.lib;GeoObjBase.lib;GeoStruct.lib;GeoGeometry.lib;GeoBaseUI.lib”。(如图6)专题应用程序EXE属性配置(5)在头文件stdafx.h中或者实现文件的开头加上相应的包含文件即可,例如:veriLDn='ft-U-H.Wp-ocesszQuantyView3D框架开发的一中J'eaJPDI'b-rji143DPrwft?'-S'flsntTSflifiiNafxh器lEbdil£亡鲤4
32、SpragrracDiwientfiJ.nkfcr'i'rTaniTesedependrndji;X-type=winJ2'narrc='Hi£rfiiart-r-dincT-s.LDnnbn-LantroLS#BFbdlif"Miiffineludeinclude/gl/gl.h"include/irvicludc/gl/glu.h"Hn1dAicks*r./ihclude/gl/glut,h*fflnc.Lude*fc.y./-a/iraclude/6e&Pr*jectiDns/HapProjtctlam.hH
33、ffinclude*./»././iraclude/GEOIMAiE/Iaages/xiraage-.hi"include/iraclude/GE-Q4<fa/adg2.hr,sinclude./include/Gto5truct/Ge5truct.h"ffin£hide*.7i./include/GeoAttribute/gecattribuitie.h"finelude*,./>>/u./ihclude/geDbae/GeoBd&e.h'fine.ludeJ/Jinclude/geobaecuI/BAdBa
34、5«UI.h"#incImde-/icjSase/GroOtij&ase.hi"*inicludc"r,B/iriclud«/Ge&i#e?<wtry/<j<«Q<ietry,h"vinelude/include/6V3JMath/MathGV.hHVineludea/iraclude/6V3dUscr/Gv3dU5crh*#iniclude*././irsclude/Gv3-d!ase/GvjdBase.h*includc*rr/.,/,=/inclucli/Gw5dAlggrith
35、iTs/Gv3ciAl目*ifn一h"finelude/lhcl4Jde/Gv3dFlleio/5v=kifilei(.liiKLtde*.7.,/a/imelude/GtfStllle570V3dR&5.h"ffinclude/include/QVJiMGdeiing/GVadMndeLin.h厂#xnclude*./././iraclude/GvidFrafre/gv-rare.h"exterfl_declsgsecfdUifl钟产t)CSV3dGlobalg_3dobj;,/导入的全局对象至此,一个专题应用程序EXE已经创建完成了,下一步的工作就是基
36、于QuantyView3D的SDK包针对地质专题需求开发所属的功能了。下图是基"些地质专题软件产品:地质专题软件产品系列实例实验结论:在实验结束以后,根据自己做实验的情况,以实习论文形式提交个人实验心得和实验结论。课后练习:基于QuantyViewSDK自己动手搭建一个专题软件框架,并能导入数据进行三维可视化展小。实验四基于QuantyView的功能开发实验目的:1、熟悉地学三维可视化的基本概念和技术原理,了解QuantyView的二次开发过程。2、了解QuantView基本三维对象的数据结构及其创建。3、熟悉基于QuantyView的路线飞行漫游、键盘漫游、分层设色等功能的编程实现
37、。实验原理:1)基本三维对象的数据结构QuantyView3D基本三维图形对象主要是点(CGV3dPoint)、线(CGV3dPolyline)、面(CGV3dPolygon与CGV3dSurface)、体(CGV3dPolyhedron)等几种图元类,均由图层CGV3dLayer进行管理(见GV3dBase下的GV3d.h)。如下图,分别表示了线对象、多边形对象、曲面对象、标注对象的主要数据组织。线洌登CPoEineObiect1对象唯一标识m昵值例宽度长度空间坐粽点列坐新点的拓扑结构耳它屋住多边弗对象(Palv?on>对象唯一标识TP颜色值埴克方案面积空间坐标点列坐标点的拓扑结构皴理
38、坐标列其它屏柱对象唯一标识ID颜色值宽度半数高度系数方向标注内容空间坐标位置耳它属性ID,除此外,线对象包曲面对象t痴击e)对象喈一标识ID颜色值面积空同坐标点列情向格网数飒向格网数触坐标列其它屋住每个空间基本对象包含一个区别于其它对象的唯一标识即对象括颜色值、线型、长度、宽度等属性;多边形对象包括面积、填充方案属性;曲面对象包括面积属性。多边形对象和曲面对象都是面结构,它们的区别在于空间坐标点的组织不同。格上说,标注对象只是系统的辅助对象,它仅有一个空间坐标位置,不具有几何形态,在系统中起标注说明的作用。QuantyView3D的体对象CGV3dPolyhedron是用封闭的面表达的,所采用
39、的数据结构与CGV3dPolygon类似。另外,还有从基本图元类派生出的其它对象类型,比如块对象,是线、多边形、曲面等对象的组合。在QuantyView3D中可通过对象属性对话框设置他们的属性,如下图。以CGV3dPolygon为例,主要的数据成员包括坐标点列、拓扑结构、颜色、纹理等信息。坐标点列实际是一个POINT3d类型的数组,拓扑结构是UINT数组,颜色信息可以是所有坐标节点用一个颜色,CByteArray类型。也可以每个节点使用不同的颜色,是多边形曲面对象的数据一般如下:XYZ_NUMS,STRUCT_SIZE,ALPHA坐标数组结构数组点色数组其中:XYZ_NUMS坐标节点的总数,i
40、nt型STRUCT_SIZE结构数组元素的总数,int型ALPHA透明度,BYT例,从0至U255坐标数组:存放多边形曲面对象节点的XYZ坐标列,格式如下(x,y,z都是double型):X1,Y1,Z1X2,Y2,Z2,Xn,Yn,Zn结构数组:存放多边形对象的组织结构,UINT型数据。如果STRUCT_SIZE=(0W不存放结构数组,多边形对象使用缺省结构,否则需要读取结构数组,结构数组的说明如下:nGn,nG1_Ps,nG1_p1,nG1_p2,,nG1_ps,nG2_PqnG2_p1,nG2_p2,nG2_pq,nGn_PmnGn_p1,nGn_p2,nGn_pmnGn表示该多边形曲面
41、由多少个简单多边形构成,随后是每个简单多边形的结构,都是按照(点数,每个结点k在坐标列中的序号)组织,结点在坐标列中的序号从0开始。缺省的结构数组是表达的简单多边形的数据组织,如多边形g由一系列点0,1,2,3,4组成,则结构数组为1,5,0,1,2,3,4。点色数组:存放每个节点的颜色,与坐标数组一一对应,每个颜色分量为BYTE型,从0到255。一般情况下,不会进行点色设置,此时所有的结点用同一个颜色。如果处于点色状态,则点色数组组织如下:R1,G1,B1R2,G2,B2,Rn,Gn,Bn如处于非点色状态,及所有点用同一颜色,则点色数组组织为:R,G,B针对多边形对象的常用方法包括(详见Qu
42、antyView3D二次开发手册):获取对象名称:CStringCGV3dObject:GetName();设置对象名称:voidCGV3dObject:SetName(constCStringszName);获取坐标点列:voidCGV3dAtom:GetAll(CArray<XYZ,XYZ>&data);设置坐标点列:voidCGV3dAtom:SetAll(CArray<XYZ,XYZ>&data);获取对象颜色:COLORREFCGV3dObject:GetColor();设置对象颜色:voidCGV3dObject:SetColor(const
43、COLORREFcr);是否打开了点色开关:BOOLCGV3dAtom:IsApplyColors();打开/关闭点色开关:voidCGV3dAtom:ApplyC010rs(BOOLbApply=TRUE);设置点色:voidCGV3dAtom:SetDotC010rs(BYTE*byRs,BYTE*byGs,BYTE*byBs,intn);获取点色:voidCGV3dAtom:GetDotC010rs(CByteArray*pArray);获取多边形拓扑结构:voidCGV3dPolygon:GetPolygons(GV3dWARRAY&ps);设置多边形拓扑结构:voidCGV3
44、dPolygon:SetPolygons(GV3dWARRAY&ps);获取对象类型:UINTCGV3dObject:GetClass();其返回值见CLASS_GV3D_TYPE义(GV3dBase下的gv3dCommon.h)与图元对象相关的图层的常用方法包括:获取图层中图元对象的总数:intCGV3dLayer:GetCount();获取指定序号的图元对象:CGV3dObject*CGV3dLayer:GetObjectAt(intnIndex);向图层中增力口图元对象:intCGV3dLayer:AddObject(CGV3dObject*p3dObj,BOOLbHaveDel
45、eted=FALSE);2)多视图显示原理对于三维可视化视图而言,重要的三要素为:观察者(或称为相机)位置Position视点位置CenterPosition、观察者向上方向UpDirection。根据观察者的位置、观察点、观察者向上矢量能够确定观察三维世界的角度,从而显示三维实体在不同角度下的各种形态。视线方向是从观察者到视点的矢量方向,QuantyView3D提供全三维空间任意角度观察显示的功能,特别的是观察者沿着+x轴、逆着+x轴、沿着+y轴、逆着+y轴、沿着+z轴、逆着+z轴等几个常用角度视图,分别为左视图、右视图、正视图、后视图、底视图、俯视图。如下图所示。这六种常用的视图其视线方向
46、以及观察者向上的方向(矢量)如下表所示,具体的观察姿态要根据实际数据来定。视图视线力向观察者向上方向俯视图(0,0,-1)(0,1,0)底视图(0,0,1)(0,-1,0)正视图(0,1,0)(0,0,1)后视图(0,-1,0)(0,0,-1)左视图(1,0,0)(0,0,1)右视图(-1,0,0)(0,0,1)在三维系统中,经常需要沿着某一路线观察沿途的景观或者三维实体内部的结构,称作路线漫游或者路线飞行。在QuantyView3D中,可根据选定的一条飞行路线,实现路线漫游效果。实现原理和方法的关键是设置观察者的位置、观察点、以及观察者向上的方向,以模拟真实的飞行器沿着路线进行飞行。比如,可
47、以设置观察者的位置在路线上方,观察点可以在路线前进的方向上的某一点,观察者向上的方向可以为(0,0,1)等,要达到更逼真、更复杂的飞行浏览,需对这些参数进行更复杂的设置。效果如下图所示:调整观察者的方法主要有(详见GV3dBase下的GV3d.h):获取观察者位置:voidCGV3dLooker:GetPosition(POINT3dPosition);设置观察者位置:voidCGV3dLooker:SetPosition(POINT3dPosition);获取视点的位置:voidCGV3dLooker:GetCenter(POINT3dCenter);设置视点的位置:voidCGV3dLoo
48、ker:SetCenter(POINT3dCenter);获取观察者的向上方向:voidCGV3dLooker:GetUpDirection(POINT3dUpDirection);设置观察者的向上方向:voidCGV3dLooker:SetUpDirection(POINT3dUpDirection);基于这些方法,模拟飞行器观察的姿态,就可以实现复杂的三维飞行漫游了,如下图所示:4)分层设色的基本原理在三维系统中,有时需要根据不同的高程赋予不同的颜色,以达到生动显示不同高低范其基本原理是:通过给三维实体的坐标节点赋不同的颜色值,根据两点的颜色值值),进行插值计算两点间的任意一点的颜色值,如
49、下图所示的颜色立方体。围的模型,例如DEMQuantyView支持线、面、体等实体的分层设色,由选定的或者自定义的颜色表,根据不同的高程自动赋予相应的颜色,达到最佳的渲染效果。如下图:QuantyView二次开发手册):(RGB针对线、面、体等对象的点色设置的主要方法如下(详见打开/关闭点色开关:voidCGV3dAtom:ApplyColors(BOOLbApply=TRUE);intn);设置点色:voidCGV3dAtom:SetDotC010rs(BYTE*byRs,BYTE*byGs,BYTE*byBs,获取点色:voidCGV3dAtom:GetDotC010rs(CByteArr
50、ay*pArray);实验步骤:1)搭建基于QuantyView的三维可视化软件框架根据上节实验内容和步骤,以及QuantyViewSDK包快速搭建自己的三维可视化软件框架。本次实验将在这个软件框架上,通过增加功能菜单,编码实现创建基本几何对象、三维场景的飞行漫游以及分层设色等功能。2)在当前图层中创建一个多边形对象增加“创建自己的对象”菜单项,如下:#defineIDM_NEW_MY_PGON33938POPUP"创建(&N)",MENUITEM"创建自己的对象",IDM_NEW_MY_PGONENDSTRINGTABLEBEGINIDM_NE
51、W_MY_PGON"创建自定义对象n向当前图层中添加一个自定义的多边形对象END给这个菜单项,添加消息映射,如下:QuantyView3DView.hclassCQuantyView3DView:publicCGV3dView,public:afx_msgvoidOnNewMyPgon(););QuantyView3DView.cppBEGIN_MESSAGE_MAP(CQuantyView3DView,CGV3dView),ON_COMMAND(IDM_NEW_MY_PGON,&CQuantyView3DView:OnNewMyPgon)END_MESSAGE_MAP()v
52、oidCQuantyView3DView:OnNewMyPgon()/TODO:Addyourcommandhandlercodehere)添加创建自定义的对象(一个正方体的表面)代码,可以如下:QuantyView3DView.cppvoidCQuantyView3DView:OnNewMyPgon()CGV3dDocument*pDoc=GetDocument();ASSERT_VALID(pDoc);/获取当前图层CGV3dLayer*pCurLayer=pDoc->m_Project.GetCurrentLayer();if(!pCurLayer)return;/给当前图层中创建
53、一个新的对象(正方体表面)CArray<XYZ,XYZ>data;GV3dWARRAYwa;XYZpt;pt.x=-1.0,pt.y=-1.0,pt.z=-1.0;data.Add(pt);/0号点pt.x=1.0,pt.y=-1.0,pt.z=-1.0;data.Add(pt);/1号点pt.x=1.0,pt.y=1.0,pt.z=-1.0;data.Add(pt);/2号点pt.x=-1.0,pt.y=1.0,pt.z=-1.0;data.Add(pt);/3号点pt.x=-1.0,pt.y=-1.0,pt.z=1.0;data.Add(pt);/4号点pt.x=1.0,pt.
54、y=-1.0,pt.z=1.0;data.Add(pt);/5号点pt.x=1.0,pt.y=1.0,pt.z=1.0;data.Add(pt);/6号点pt.x=-1.0,pt.y=1.0,pt.z=1.0;data.Add(pt);/7号点wa.Add(6);/6个面wa.Add(4);/第1个面有4个点(底面)wa.Add(0);wa.Add(3);wa.Add(2);wa.Add(1);/分别为哪四个节点wa.Add(4);/第2个面有4个点(顶面)wa.Add(4);wa.Add(5);wa.Add(6);wa.Add(7);/分别为哪四个节点wa.Add(4);/第3个面有4个点(左面)wa.Add(0);wa.Add(4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家用纺织品的产品线调整与升级换代考核试卷
- 涡轮增压汽油发动机调教考核试卷
- 森林改培与生态经济发展考核试卷
- 海水淡化处理中的污泥处理技术应用考核试卷
- 财政支出项目绩效评价报告
- DB11T 269-2014 粪便处理设施运行管理规范
- DB11∕T 1796-2020 文物建筑三维信息采集技术规程
- 大班课件比赛教学课件
- 医院新员工培训计划
- 淮阴工学院《快速表现》2021-2022学年第一学期期末试卷
- 国家开放大学《电气传动与调速系统》章节测试参考答案
- 须弥(短篇小说)
- 旋风除尘器设计与计算
- 《装配基础知识培训》
- 出口退税的具体计算方法及出口报价技巧
- PCB镀层与SMT焊接
- Unit 1 This is my new friend. Lesson 5 课件
- 2019年青年英才培养计划项目申报表
- 剪纸教学课件53489.ppt
- 芳香油的提取
- 企业人才测评发展中心建设方案
评论
0/150
提交评论