-1-ARCSCENE三维GIS虚拟现实可视化制作教程在三维场景中浏览数据更加直观和真实,对于同样的数据,三维可视化将使数据能够提供一些平面图上无法直接获得的信息。可以很直观地对区域地形起伏的形态及沟、谷、鞍部等基本地形形态进行判读,比二维图形如等高线图更容易为大部分读图者所接受。ArcScene是ArcGIS三维分析模块的一部分,通过在3DAnalyst菜单条中点击按钮打开。它具有管理3DGIS数据、进行3D分析、编辑3D要素、创建3D图层以及把二维数据生成3D要素等功能。一、要素立体显示有时需要将要素数据在三维场景中以透视图显示出来进行观察和分析。要素数据与表面数据的不同之处在于,要素数据描述的是离散的对象如点对象、线对象、面对象(多边形)等。它们通常具有一定的几何形状和属性。常见的点要素有通信塔台、泉眼等在地图上通常表现为点状符号;线状要素更为常见,如道路、水系、管线等等;多边形要素如湖泊、行政区及大比例尺地形图上的居民地等。在三维场景中显示要素的先决条件是要素必须被以某种方式赋予高程值或其本身具有高程信息。因此,要素的三维显示主要有两种方式:1)具有三维几何的要素,在其属性中存储有高程值,可以直接使用其要素几何中或属性中的高程值,实现三维显示;2)对于缺少高程值的要素,可以通过叠加或突出两种方式在三维场景中显示。所谓叠加,即将要素所在区域的表面模型的值作为要素的高程值,如将所在区域栅格表面的值作为一幅遥感影像的高程值,可以对其做立体显示;突出则是指根据要素的某个属性或任意值突出要素,如要想在三维场景中显示建筑物要素,可以使用其高度或楼层数这样的属性来将其突出显示(图1)。图1建筑物二维图形按高度突出-2-另外,有时研究分析可能需要使用要素的非高程属性值作为三维Z值,在场景中显示要素。最常见的是在社会、经济领域的应用。如对某省行政范围内每个市县的经济总量值作为Z值进行三维立体显示(图2),可直观地观察和分析全省总体的情况。图2某地区各个城镇人口数突出显示由前所述,添加到三维场景中的数据并不一定会自动以三维方式显示。具有三维几何的要素及TIN表面将自动以三维方式进行绘制时,会放置在一个平坦的三维平面上,若要以三维方式查看它们,需首先定义其Z值。ArcGIS的三维分析功能在要素属性对话框中提供了要素图层在三维场景中的三种显示方式:1)使用属性设置图层的基准高程;2)在表面上叠加要素图层设置基准高程;3)突出要素。还可以结合多种显示方式,如先使用表面设置基准高程,然后在表面上再突出显示要素。在城市景观三维显示中,以表面设置基准高程,然后在表面上突出显示要素建筑物,可以更加自然真实显示城市景观。1.通过属性设置基准高程显示要素图层在要素属性对话框(Properties)中,选择基准高程选项卡(BaseHeights),设置以常量或表达式作为基准高程,填写或点击Calculate按钮生成提供Z值的字段或表达式即可,见图3。之后,二维要素将以所设定属性或表达式的值为Z值在三维场景中显示,图4是以等高线的高程属性作为基准高程显示的等高线三维透视图。-3-图3设置要素图层的基准高程图4等高线要素的三维显示2.使用表面设置基准高程显示要素图层在设置基准高程时选择由表面获取要素图层的高程,点击Obtainheightsforlayersfromesurface选择所需表面即可(图5)。要素将会以表面所提供的高程在场景中显示。-4-图5使用表面设置要素的基准高程3.要素的突出显示在图层属性对话框的突出(Extrusion)标签中,选中对图层中的要素进行突出复选框(图6)。-5-图6突出表达式生成器二、设置场景属性-6-在实现要素或表面的三维可视化时,需要注意以下一些问题,包括:1.添加到场景中的图层必须具有坐标系统才能正确显示;2.为更好地表示地表高低起伏的形态,有时需要进行垂直拉伸,以免地形显示地过于陡峭或平坦;3.为全面地了解区域地形地貌特征,可以进行动画旋转;4.为增加场景真实感,需要设置合适的背景颜色;5.根据不同分析需求,设置不同的场景光照条件,包括入射方位角,入射高度角及表面阴影对比度;6.为提高运行效率,需要尽可能地减小场景范围,去除一些不需要的信息。以下就ArcScene中常用的场景设置内容做一详细介绍。1.场景坐标系统如果场景中要显示的数据都处于相同的坐标系统之下,则直接将数据添加显示即可,不需考虑图层的叠加是否正确。如果各个图层存在不同的坐标系统,则须进行适当的转换以确保ArcScene能够正确显示它们。通常,当在一个空的场景中加入某图层时,该图层的坐标系统就决定了场景的坐标系统。在这之后可以根据应用需求再对场景的坐标系统进行更改。当随后加入其它图层到场景中时,ArcScene将会自动将图层的坐标系统转换使与场景的坐标系统一致。若新加入图层没有坐标系统,将不能正确显示,此时可人为地确定数据的坐标系统。如果数据本身没有任何坐标系统的信息,ArcScene将会检查图层的坐标值,看其X值是否落在-180度到180度之间,Y值是否在-90度到90度之间。如果满足上述条件,则ArcScene将该数据认为是经纬度坐标数据。否则,将认为该数据为平面坐标数据。(1)查询当前场景坐标系统打开场景的属性对话框(图7)。选择其中的坐标系统(CoordinateSystem)选项卡,将显示当前使用的坐标系统的详细信息。(图8)-7-图7打开场景的属性对话框(2)在图8所示的场景属性对话框中,双击预定义(Predefined),选择预定义坐标系统,之后,所有加载到场景中的数据都将使用该坐标系统进行显示。图8将显示当前使用的坐标系统的详细信息需要注意的是,改变场景的坐标系统,并不会改变图层源数据其坐标系统,只是以场景坐标系统对其进行显示。2.垂直拉伸垂直拉伸一般用于强调表面的细微变化。在进行表面的三维显示时,如果表面的水平范围远大于其垂直变化,则表面的三维显示效果可能不太明显,此时,可以进行垂直拉伸以利于观察分析。另外,当表面垂直变化过于剧烈不便于分析应用时也可以进行垂直拉伸,不过垂直拉伸系数应设置为分数。垂直拉伸对场景内所有图层都产生作用,如果要对单个图层做垂直拉伸,可以通过改变图层的高程转换系数来实现。打开场景属性对话框,在General选项卡中选择垂直拉伸(VerticalExaggeration)系数(图9),或者点击CalculateFromExtent按钮,系统将根据场景范围与高程变化范围自动计算垂直拉伸系数。图10为原始表面与设置拉伸系数为2时的显示效果的对比。-8-图9垂直拉伸(VerticalExaggeration)系数-9-图10原始表面与拉伸后的表面3.使用动画旋转通过对场景进行旋转观察,可以获得表面总体概况。ArcScene可以使场景围绕其中心旋转,旋转速度与察看角度可以人为调整,并可在旋转的同时进行缩放。欲使用动化旋转,需要先对该功能进行激活。打开场景属性对话框后,在General选项卡中选中EnableAnimatedRotation选项即可激活动画旋转功能(图11)激活之后,可以使用场景漫游工具(Navigate)将场景左右拖动之后,即可开始进行旋转,旋转的速度决定于鼠标释放前的速度,在旋转的过程中也可以通过键盘的PageUp键和PageDown键进行调节速度。点击场景即可停止其转动。图11激活动画旋转功能-10-图12设置场景的光照4.设置场景背景颜色同样地,打开场景属性对话框,在General选项卡中,选择背景色(Background),同时还可以将所选颜色设置为场景默认背景色(选中Useasdefaultinallnewscenes复选框)。5.改变场景的光照通过设置光源的方位角、高度角及对比度可以调整场景的照明情况。在场景属性对话框的Illumination选项卡中,可以通过手动输入方位角(Azimuth)和高度角(Altitude)或通过鼠标滑动改变这两个参数。另外,同时在此还可设置对比度。以上操作见图12所示。6.改变场景范围设置合适的场景范围,可以消除一些无关信息,增加绘图时的性能。默认情况下,场景的范围为场景中所有图层的范围。可以根据应用需求改变场景的范围,使之与某个图层的范围一致,或通过X、Y坐标的最大最小值来指定。打开场景属性对话框后,选择Extent选项卡,在此设置场景范围(图13)。如前所述可以两种方式进行设置:1)在Layers下拉列表中选择某一图层(图a);2)点击自定义(Custom),输入最大最小X、Y坐标,从而确定场景范围(图b)。-11-ab图13设置设置场景范围的两种方式三、飞行动画通过使用动画,可以使场景栩栩如生,能够通过视角、场景属性、地理位置以及时间的变化来观察对象。例如,可以创建一个动画来观察运动着的卫星在它们的轨道上是如何相互作用的,也可以用动画来模拟地球的自转及随之的光照变化。1.如何制作动画在ArcScene中提供了制作动画的工具条Animation。默认情况下,它没有添加到ArcScene的视图中,可以通过在工具栏上点击右键,在弹出的快捷菜单中选择Animation项打开它。能够制作数据动画、视角动画和场景动画。动画是由一条或多条轨迹组成,轨迹控制着对象属性的动态改变,例如,场景背景颜色的变化,图层视觉的变化或者观察点的位置的变化。轨迹是由一系列帧组成,而每一帧是某一特定时间的对象属性的快照,是动画中最基本的元素。在ArcScene中可以通过以下几种方法生成三维动画:(1)通过创建一系列帧组成轨迹来形成动画:在动画工具条中提供了创建帧的工具。可以通过改变场景的属性(例如场景的背景颜色、光照角度等)、图层的属性(图层的透明度、比例尺等)以及观察点的位置来创建不同的帧。然后用创建的一组帧组成轨迹演示动画。动画功能会自动平滑两帧之间的过程。如,可以改变场景的背景颜色由白变黑,同时改变场景中光照的角度来制作一个场景由白天到黑夜的动画。实现过程如下:1)设置动画第一帧的场景属性;-12-2)点击Animation下拉菜单,选择CreateKeyframe命令(图14);图15选择帧类型图14创建帧工具3)在Type栏中选择帧类型为Scene,由不同场景构成动画的帧(图9.65);4)点击New按钮,创建一个动画,此时弹出AnimationTrack对话框(图9.66),键入动画名称;5)点击Create抓取一个新的帧;6)再次改变场景属性,之后点击Create,抓取第二帧,根据需要抓取全部所需的帧。7)抓取完全部的帧之后,点击Close,关闭创建帧对话框;-13-8)点击Openanimationcontrols按钮,弹出动画控制工具条(图17);9)点击;Play按钮,预览动画。(2)通过录制导航动作或飞行创建动画:点击动画控制器上(AnimationControls,图17)的录制按钮开始录制,在场景中通过导航工具进行操作或通过飞行工具进行飞行,操作结束后点击录制按钮停止录制。这个工具类似录相器,将场景中的导航操作或飞行动作的过程录制下来形成动画。图16命名动画图17动画控制工具条(3)通过捕捉不同视角,并自动平滑视角间过程创建动画:通过导航工具将场景调整到某一合适的视角,用动画工具条上的捕捉视角命令捕捉此视角,然后将场景调整到另一个合适的视角,再次用捕捉命令捕捉视角,依次可捕捉多个视角。动画功能会自动平滑两视角间的过程,形成一个完整的动画过程。(4)通过改变一组图层的可视化形成动画效果:通过动画制作工具条中的创建组合动画命令,选择图层控制一组图层使他们按照顺序逐个显示通过效果调整实现动画效果。例如,可以用一组显示洪水淹没过程的图层生成洪水演进的动画效果。实现过程如下:1)在场景中添加相关图层,并按照动画设计的播放顺序从上到下依次调整图层顺序;。2)点击Animation下拉菜单下的CreateGroupAnimation命令(图18),弹出创建图层动画对话框(图19);-14-图18CreateGroupAnimation命令图19创建图层动画对话框3