服务热线: 020-87201405 | 关于GPS之家 | 网站地图 | 联系方式 | 在线客服
您的位置:
ArcOjects 3D开发方法简介
2008-02-26 GPS之家 来源:中国GIS资讯网 作者:
【55gps.com资讯】
 

‘设置Z和M坐标awareness

Dim pZAware As esriCore.IZAware

Set pZAware = pMultiPatch

pZAware.ZAware = True

 

Dim pMAware As esriCore.IMAware

Set pMAware = pMultiPatch

pMAware.MAware = False

 

通常,多片是用来描述阴影平面集合,并且可以在其上粘贴影像,也就是贴图。为了粘贴影像,需要在Multipatch的每一个定点上记录纹理坐标。纹理坐标记录为s和t,值为0到1,表示了从x到y方向影像的起点到终点。在ArcObjects中将s和t编码存储在定点的M值中。另外,如果要用Multipatch表达复杂连续的几何对象,比如球体,为了平滑阴影平面之间的转折,需要在Multipatch的每一个顶点上记录它的法向量,同样法向量也是编码后存储在定点的M值中。如下面的代码:

Dim pNormal As esriCore.IVector3D

Dim pVertex As esriCore.Ipoint

Dim m As Double

m = 0

. . .

Dim pEncoder As IEncode3DProperties

Set pEncoder = New GeometryEnvironment

pEncoder.PackNormal vNormal, m

pEncoder.PackTexture2D s, t, m

pVertex.M = m
按此在新窗口浏览图片
 

四、3D渲染和动画功能定制简介

在ArcObjects中的3D对象内部调用了OpenGL图形库,所以有关3D渲染方面的开发是基于OpenGL图形库方面的知识。在ArcObjects中的定制渲染工作原理如下图,在SceneGraph::Redraw绘制开始和结束时分别会激活SceneGraph或其它外部事件处理器的OnBeforeDraw和OnAfterDraw事件,我们可以在这两个事件添加自己的渲染效果,比如在OnBeforeDraw事件中添加雾化效果等,而可以在OnAfterDraw事件中添加三维文字标注等。
按此在新窗口浏览图片
动画使得场景有动态的感觉,我们可以通过对视角、图层的可见性、以及场景的属性进行定制来达到动画的效果。下图是在动画定制中将会涉及到的部分类和接口。
按此在新窗口浏览图片
从此对象模型图我们可以看出在Scene对象中可以访问动画轨迹对象(AnimationTrack),而动画轨迹是由关键帧组成的,关键帧分成场景的、图层的和书签(照相机)的。同时动画类型也分为场景、图层和照相机三种。这些类都是CoClass,可以通过创建的方式实例化,从而来控制动画的定制。另外,在ArcObjects中提供了控制动画演播和录制的相应方法,具体参考帮助文档中AnimationTrack类和ScreenViewer类。

 

五、三维控件

在ArcObjects中包含一个ActiveX viewer控件,它为ActiveX控件容器如Microsoft Word、Microsoft PowerPoint等提供了显示三维文档、图层及图形数据的功能。下面的代码显示了如何在VB中使用此控件:

‘ 引用ArcScene文档

SceneViewerCtrl1.DocName = “c:\temp\myscene.sxd”

或者

‘ 添加一个图层

SceneViewerCtrl.SceneGraph.Scene.AddLayer pLayer

或者

‘添加一个图形元素

Dim pMap As IBasicMap

Set pMap = SceneViewerCtrl1.SceneGraph.Scene

Dim pGCon As IGraphicsContainer3D

Set pGCon = pMap.BasicGraphicsLayer

Set pGCon = pGLayer

pGCon.AddElement pElement

Viewer.Redraw False

 

六、总结

本文旨在对ArcObjects?中有关3D的部分做一个简单的介绍,具体详细的3D对象描述及所涉及的具体方法和属性等可参考《Exploring ArcObjects》一书,以及随机开发人员帮助。
上一页 1 2下一页 上一篇:探讨在3G中实现LBS的定位技术和GIS系统   下一篇:GIS应用模式的革命
需要了解更多详情请登陆G友社区:http://bbs.55gps.com
相关报价
本文共有0条评论,点击查看读者的评论
匿名发表 用户名 密码
本站部分文章来源于合作媒体,转载时请注明原出处,如转载“GPS之家原创文章”,请注明来源55gps.com!
请点击链接:http://www.55gps.com
GPS之家原创文章
相关产品
GPS火热促销
GPS相关文章