siv06可视化工具简介_第1页
siv06可视化工具简介_第2页
siv06可视化工具简介_第3页
siv06可视化工具简介_第4页
siv06可视化工具简介_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

空间信息可视化工具山东科技大学地理系韩李涛工具类型Java3DDirect3DSVGXMLGraphicsfortheWeb

SVG是英语「ScalableVectorGraphics」的简写。可以翻译为「可缩放的矢量图型」。它是基于XML标记语言来描述二维矢量图型的一种图形格式。SVG由W3C制定,是一个开放标准。SVG是W3C在2000年发布的一种开放的标准文本式矢量图形描述语言。使用SVG可以在网页上显示出各种各样的高质量的矢量图形,包括许多图像处理中常见的功能,如图形、文字、动画、颜色、滤镜效果等。最关键的是SVG完全用普通文本来描述。也就是说,这是一种专门为网络而设计的基于文本的图像格式。并且SVG基于XML(ExtensibleMarkupLanguage),所以可扩展性很强,能够描述任意复杂的图像。Flexflex通常是指AdobeFlex,是最初由Macromedia公司在2004年3月发布的,基于其专有的MacromediaFlash平台,它是涵盖了支持RIA(RichInternetApplications)的开发和部署的一系列技术组合。原因:一是为了迎合更多的developers。Flash天生是为了designer(设计者)设计的,界面还有flash的动画概念和程序开发人员格格不入,为了吸引更多的jsp/asp/php等程序员,Macromedia推出了Flex。二是顺应标准:用非常简单的.mxml来描述界面给jsp/asp/php程序人员使用.(x/d)html非常相似,而且mxml更加规范化、标准化。Flex——RIARIA(RichInternetApplications)富互联网应用,具有高度互动性、丰富用户体验以及功能强大的客户端

RIA具有的桌面应用程序的特点包括:在消息确认和格式编排方面提供互动用户界面;在无刷新页面之下提供快捷的界面响应时间;提供通用的用户界面特性如拖放式(draganddrop)以及在线和离线操作能力。RIA具有的Web应用程序的特点包括如:立即部署、跨平台、采用逐步下载来检索内容和数据以及可以充分利用被广泛采纳的互联网标准。RIA具有通信的特点则包括实时互动的声音和图像。

同时融合网络和桌面应用程序的特点Flex的技术框架Flex技术包括以下几个主要技术框架:1.描述应用程序界面的XML语言(MXML);2.符合ECMA规范的脚本语言(ActionScript),处理用户和系统的事件,构建复杂的数据模型;3.一个基础类库;4.运行时的即时服务;5.由MXML与ActionScript文件生成swf文件的编译器。Flash与Flex1.尽管公用ActionScript,但是使用的库并不完全相同,更合适的说法是两者使用着两套具有极大“功能重叠”范围的库。2.面向对象:Flash偏向的是美术动画设计师人员,所以更容易发挥特效处理的优势,Flex偏向开发人员,所以容易做出具有丰富交互功能的应用程序。3.Flash只能以ActionScript脚本的形式开发;而Flex还可以使用称作mxml的标记语言来描述应用的外观和行为,mxml中可以直接嵌入ActionScript脚本。4.由于第三点而造成的两者市场定位不同,Flex是面向企业级的网络应用程序,Flash则面向诸如平面动画、广告设计等多媒体展示程序。5.借助FlashLite这一移动设备上的Flashplayer,Flash可以开发移动应用,Flex则不行。6.Flash的编程模型是基于时间轴的,Flex的则是基于窗体,虽然它运行在网页里。

ArcGISAPIforFlexArcGISAPIforFlexVRML

VRML是VirtualRealityModelingLanguage的缩写形式,意思是虚拟现实造型语言。VRML被称为继HTML之后的第二代Web语言,它本身是一种建模语言,也就是说,它是用来描述三维物体及其行为的,可以构建虚拟境界(VirturalWorld),可以集成文本、图像、音响、MPEG影像等多种媒体类型,还可以内嵌用Java、ECMAScript等语言编写的程序代码。VRML的基本目标是建立因特网上的交互式三维多媒体,基本特征包括分布式、三维、交互性、多媒体集成、境界逼真性等。VRML——实例VRML工具GeoVRMLx3DX3D对地学建模的支持Geospatial组件中的重要概念,提供地理学支持的地理学应用的讨论。地理学支持包括如何在某一X3D节点中镶入地理坐标,支持高精度的地理模型,处理大面积多分辨率地形数据集。这些概念将在以下描述。Geospatial组件遵循SpatialReferenceModel(空间建模参考标准)2.[I18026]

中定义的约定。Geospatial组件中共包含9个节点。以下是定义的节点。GeoCoordinate

GeoElevationGrid

GeoLocation

GeoLOD

GeoMetadata

GeoOrigin

GeoPositionInterpolator

GeoTouchSensor

GeoViewpoint

Java3DJava3D是Java语言在三维图形领域的扩展,是一组应用编程接口(API)。利用Java3D提供的API,可以编写出基于网页的三维动画、各种计算机辅助教学软件和三维游戏等等。利用Java3D编写的程序,只需要编程人员调用这些API进行编程,而客户端只需要使用标准的Java虚拟机就可以浏览,因此具有不需要安装插件的优点。

JAVA3D从高层次为开发者提供对三维实体的创建、操纵和着色,使开发工作变得极为简单。同时,JAVA3D的低级API是依赖于现有的三维图形系统的,如Direct3D、OpenGL、QuickDraw3D和XGL等,

JAVA3D的这种体系结构既可以使其开发的程序“到处运行”,又使其能充分利用系统的三维特性。就因为JAVA3D拥有如此的强大的三维能力,使得它在网络世界,特别是在游戏中能大展姿彩。

Java3D作为一名3D图形开发者,无论是游戏开发、科学计算,还是MCAD、生物技术,还是虚拟现实(VirtualReality)、仿真技术,Java3D都是很优秀的选择。理由如下:

1)基于Java技术,秉承了Java的一切优点,具有优秀的、丰富的UI(Swing、AWT)和Web发布能力(通过JavaPlug-In)。

2)作为第四代3D图形API,Java3D简单易用,不需要多深厚的计算机图形学功底和学习曲线,开发者便能开发出很专业的动画、仿真和交互。因为他借鉴了VRML的思想,所以学起来很轻松(熟悉VRML的开发者,如对Java还熟悉的,则会发现Java3D的思想和VRML很相近)。

Java3D3)功能强大,高层次开发。因为Java3D在底层借助于Open/GL、DirectX的强有力支持;在高层,开发者不再需要负责对象渲染、碰撞检查的编程任务,所以很不错。最新版本为1.3.1Beta。(/products/java-media/3D/)

4)基于场景图结构(SceneGraphStructure)。这种层次结构,无论是描述现实中的对象,还是计算机实现都栩栩如生。她(Java3D)在这两者之间几乎达到了极致。Java思想的简单也正体现在此。善于将复杂问题简单化,人性化。

5)学习资源丰富。

Java3D1.3有7个不同的可下载版本:Java3DforWindows(DirectXversion)SDKforJDK(includeRuntime);Java3DforWindows(OpenGLversion)SDKforJDK(includeRuntime);Java3DforSolaris/SPARCRuntimeforJDK(includeRuntime);Java3DforWindows(DirectXversion)RuntimeforJRE;Java3DforWindows(OpenGLversion)RuntimeforJRE;Java3DforSolaris/SPARCSDKforJRE;Java3DforSolarisRuntime64bitsupport;

环境配置(与基本图形库相关):Java3DforWindows(OpenGLversion)SDKforJDK(includeRuntime);

Java2(RuntimeorSDK)version1.3.1或更后的版本OpenGL1.1或更后的版本,并且是Microsoft支持的显卡厂商WindowsNT4.0only:ServicePack3或更后的版本(Window2000、WindowXP)

Java3D与其它三维技术的比较图,可以从中直观的看出他们相互间的区别

Direct3D(简称:D3D)Direct3D(简称:D3D)是微软公司在MicrosoftWindows作业系统上所开发的一套3D绘图编程介面,是DirectX的一部份,目前广为各家显示卡所支援。与OpenGL同为电脑绘图软体和电脑游戏最常使用的两套绘图编程介面之一。1995年2月,微软收购了英国的Rendermorphics公司,将RealityLab2.0技术发展成Direct3D标准,并整合到MicrosoftWindows中,Direct3D在DirectX3.0开始出现。后来在DirectX8.0发表时与DirectDraw编程介面合并并改名为DirectXGraphics。2007年8月微软释出Direct3D10.1以及ShaderModel4.1的测试版本,目前已Direct3D11

Direct3D——pipelineDirect3D10API定义了vertices,textures,buffers,以及state群组转换到萤幕上的流程。这样的流程被描述成renderingpipeline有着许多不同的stages.ThedifferentstagesoftheDirect3D10pipelineare:(1)InputAssembler:从程式里读取vertexdata并将程式提供的vertexbuffer倒进pipeline.(2)顶点着色引擎(VertexShader):Performsoperationsonasinglevertexatatime,像是transformations,skinning,或lighting.(3)几何着色器(GeometryShader):ShaderModel4.0引进了几何着色器,使用Shader资源来处理点、线、面的几何坐标变换,一次最多处理六个点,快速地将模型类似的顶点结合起来进行运算。此一过程无需CPU参与。

Direct3D——pipeline(4)StreamOutput:将VertexShader和PixelShader处理完成的数据输出给使用者。(5)Rasterizer:Convertsprimitivesintopixels,再将像素(pixels)输出给pixelshader.TheRasterizer亦可执行其他工作,像是切割非视觉性的像素,orinterpolatingvertexdataintoper-pixeldata.(6)像素着色引擎(PixelShader):决定最后的像素颜色(pixelcolour)tobewrittentotherendertargetandcanalsocalculateadepthvaluetobewrittentothedepthbuffer.(7)OutputMerger:接收来自于pixelshader的slice,进行传统的Stencil测试和Depth测试,整并各种不同的输出资料,用以建立最后之结果。

OpenGL(OpenGraphicsLibrary)OpenGL发展历程1992年7月,SGI公司发布了OpenGL1.0版本,随后又与微软公司共同开发了WindowsNT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL1.1版本面市,性能有许多提高。2004年8月,OpenGL2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB(OpenGLArchitectureReviewBoard)中占据主动地位的3DLabs。OpenGL发展历程2008年8月,在SIGGRAPH2008,OpenGL3.0。OpenGL3.0于微软DirectX10有不少相近之处,不仅能运行在WindowsVista系统上没,还能运行在WindowsXP甚至是Linux平台上

DirectX10只能在WindowsVista2009年又公布了升级版新规范OpenGL3.1、3.22010年,OpenGL3.3;ThelatestversionOpenGL4.0目前推出了网络版WebGL。OpenGL发展历程WebGLisaDOMAPIforcreating3DgraphicsinaWebbrowser.BasedonOpenGLES2.0,WebGLusestheOpenGLshadinglanguage,GLSL,andoffersthefamiliarityofthestandardOpenGLAPI.Inaddition,becauseitisfullyintegratedintothebrowser,aWebGLapplicationcantakeadvantageoftheJavaScriptinfrastructureandDocumentObjectModel(DOM)fundamentaltoanyHTMLdocument.WebGLisessentiallyanotherrenderingcontextonthe<canvas>element,soitcanbecleanlycombinedwithHTMLandotherwebcontentthatislayeredontoporunderneaththe3Dcontent.OpenGL(OpenGraphicsLibrary)OpenInventor:该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。OpenInventorCosmo3DOptimizerOpenGLOpenGL主要功能11.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。

2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。

3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(ColorIndex)。

4.光照和材质设置:OpenGL光有辐射光(EmittedLight)、环境光(AmbientLight)、漫反射光(DiffuseLight)和镜面光(SpecularLight)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。

OpenGL主要功能25:纹理映射(TextureMapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。

6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。

7:双缓存动画(DoubleBuffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。

此外,利用OpenGL还能实现深度暗示(DepthCue)、运动模糊(MotionBlur)等特殊效果。从而实现了消隐算法。OpenGL库结构组成OpenGL库函数结构OpenGLapplicationsusethewindowsystem’swindow,input,andeventmechanismGLUsupportsquadrics,NURBS,complexpolygons,matrixutilities,andmoreThisdiagramdemonstratestherelationshipbetweenOpenGLGLUandwindowingAPIs.OpenGL图形生成原理模型变换视图变换投影变换视域剪裁视区变换绘制到屏幕3D世界坐标2D屏幕坐标(X,Y,Z)(x,y)OpenGL图形操作步骤OpenGL关键技术OpenGL关键技术OpenGL编程实践现有图形库的选择与编程环境VC+OpenGL最佳组合VB+OpenGL也可以OpenGL的.net版本:第一个是:csgl,当前版本是:,包括两个dll,csgl.dll和csgl.native.dll第二个是:CsGL.Basecode.dll,为csgl应用程序的快速开发提供的一个模板,并写成了.NET程序集,名称为CsGL.Basecode.dll,当前版本为。开发时开发者只要关注场景绘制,输入输出控制等工作,不用关心渲染窗体创建,消息传递等工作,而且关于渲染的流程都封装好了,开发者只需要继承Model类并重写几个方法,相当简单,第三个版本是Tao.OpenGl,当前版本是,它提供了三个dll,Tao.OpenGl.dll,Tao.Platform.Windows.dll,和Tao.FreeGlut.dll。选择建议:第三个最好OpenGL编程实践OpenGL编程实践Windows环境下安装GLUT的步骤:

1、将下载的压缩包解开,将得到5个文件

2、以根据vc安装路径设置:

(1)“d:\Program

Files\Microsoft

Visual

Studio\VC98\include\GL文件夹”。把解压得到的glut.h放到这个GL文件夹里。没有GL文件夹可以自己建一个,一般都有的。

(2)“d:\Program

Files\Microsoft

Visual

Studio\VC98\lib文件夹”)。把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹,即lib文件夹。

(3)把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)OpenGL编程实践

第三步,创建工程,其步骤如下:

(1)创建一个Win32

Console

Application。(2)链接OpenGL

libraries:在Visual

C++中先单击Project,再单击Settings,再找到Link单击,最后在Object/library

modules

的最前面加上opengl32.lib

Glut32.lib

Glaux.lib

glu32.lib

(3)单击Project

Settings中的C/C++标签,将Preprocessor

definitions

中的_CONSOLE改为__WINDOWS。最后单击OK。

现在,准备工作基本上完成了,可不要轻视这一步,如果你没有设置好在编译及运行过程中总会出错的。OpenGL编程实践第四步,创建一个最简单的opengl程序

#include

<windows.h>

//

Windows的头文件

#include

<gl\gl.h>

//

OpenGL32库的头文件(核心库函数)

核心库函数个数最多,均以“gl”为前缀,它们提供了最基本的功能,如时下三维建模、建立光照模型、反走样及纹理映射等功能。

#include

<gl\glu.h>

//

GLu32库的头文件(实用库函数)

均以“glu”为前缀,他们在核心函数的上层。其实质是对核心函数进行组织和封装,提供比较简单的函数接口和用法,可减轻开发者的编程负担。

#include

<gl\glaux.h>

//

GLaux库的头文件(辅助库函数)

均以“aux”为前缀。应用程序只能在Win32环境中使用这些函数,可移植性较差,在Windows应用程序中一般用于窗口管理、输入输出处理及绘制一些简单的三维形体

#include

<gl/glut.h>

//OpenGL实用工具包

display()intwindow_width=600;intwindow_height=600;voiddisplay(){ //setbackground glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); //examplefordrawaline; glBegin(GL_LINES); glColor3f(1.0,1.0,1.0); glVertex2f(0.0,0.0); glVertex2f(600.0,600.0); glEnd(); //examplefordrawapixel glBegin(GL_POINTS); glColor3f(1.0,0.0,0.0); glVertex2f(300.0,100); glEnd(); glutSwapBuffers();//drawcommandfordoublebuffer}OpenGL编程实践一般来说产生3D图象的步骤:

1建模

2将几何模型经变换投影到2D透视图

3确定场景所有可见面,进行消隐

4计算场景颜色

消隐是OPENGL的工作,我们不必关心。所以就是高级3D图形编程的重点。包括纹理、光照、明暗、雾化等等。OpenGL与DirectXOpenGL只是图形函数库。DirectX包含图形,声音,输入,网络等模块。单就图形而论,DirectX的图形库性能不如OpenGLOpenGL稳定,可跨平台使用。但OpenGL多需要显卡支持.DirectX仅能用于Windows系列平台,包括WindowsMobile/CE系列以及XBOX/XBOX360。OpenGL与DirectX做windows平台上的游戏,当然是DX,想跨平台,想做科学计算程序,想做CAD,想做分布计算,想做工业级应用,最好用OpenGL。当然你要是对COM不感冒,或是想活得轻松一点,还是OpenGL吧。其实DX之所以是游戏首选平台是因为它速度快,在过去支持OpenGL加速的家用卡或游戏卡很少,而软件计算很慢。但从TNT2/Voodoo3开始,OpenGL已经是非常理想的游戏平台了,而在geforce256,savarage2000+为代表的四代卡上OpenGL已经是极为理想的游戏平台了:够快,够眩!另一方面到DX7这套东西质量已经相当不错了,与OpenGL差距已经很小了,而且是M$的东西……就看你怎么想了,如果想学得快,用得爽,调试方便,就选OpenGL,如果已经适应COM体系的思想那当然是DX自然。OpenGL相关网站OpenGL的官方网站

NeHe的OpenGL教程

FlipC

DevM

OpenGL空间

OpenGL扩展数据库

OpenGLExtensionWranglerLibrary

GLEasyExtensionlibrary

OpenGL中文教学(使用c++)

OSG:openscenegraphpenSceneGraph是一个开放源码,跨平台的图形开发包,它为诸如飞行器仿真,游戏,虚拟现实,科学计算可视化这样的高性能图形应用程序开发而设计。它基于场景图的概念,它提供一个在OpenGL之上的面向对象的框架,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具。OSG:openscenegraph有了OpenSceneGraph,我们的目标是让所有的人在场景图技术中受益,无论是商业还是非商业的用户。它完全是由标准C++程序和OpenGL写的,充分利用STL和设计模式,发挥开源开发模型的优势来提供一个免费的开发库,并且重点集中在用户的需求上。随着使用一个全特性的场景图OpenSceneGraph的关键优势在于它的性能、可扩展性、可移植性和快速开发(productivity),更具体的来说:

OSG:openscenegraph数据装载为了读入和写出数据库,有一个数据库的支持库(osgDB)增加了通过后缀名动态插件机制,从而支持大量数据格式,目前的发布版本有55种单独的插件支持3D数据和图像格式的装载。支持的3D数据格式包括COLLADA,LightWave(.lwo),AliasWavefront(.obj),OpenFlight(.flt),多线程页面调度支持的TerraPage(.txp),CarbonGraphicsGEO(.geo),3DStudioMAX(.3ds),Peformer(.pfb),AutoCAd(.dxf),QuakeCharacterModels(.md2).DirectX(.x),andInventorAscii2.0(.iv)/VRML1.0(.wrl),DesignerWorkshop(.dw),AC3D(.ac)和自带的.osgASCII文本格式。支持的图像格式包括.rgb,.gif,.jpg,.png,.tiff,.pic,.bmp,.dds(包含压缩的一系列Mip贴图影像),.tgaandquicktime(在OSX环境下),全范围的高质量、抗锯齿字体也能通过freetype插件支持,基于字体的图像也可以通过.txf插件支持。用户也可以通过与我们同行的一个项目(VirtualPlanetBuilder)生成大规模地形空间数据(multiGB),使用OpenSceneGraph的自带数据分页调度支持来查看这些数据。OSG:openscenegraph1998OpenSceneGraph诞生该项目是由Don在1998的一个业余爱好发展而来的,做为一种滑翔机的场景模拟器运行在Linux下。

1999初出熔炉在1999年Robert开始着手完善该项目并把它移植到Windows下。在1999年9月,OSG的源码宣布开源并且OpenSceneGraph应运而生,当时Robert接管了场景图的项目,而Don则着眼于滑翔机的模拟。几易寒暑,Robert以一直致力于加强对C++标准以及设计模式的理解以求场景图可以适应新的标准和methodoligy。

2000以专业精神对待业余爱

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论