最近在利用CityMaker做三维管廊的开发,需要根据场景切换到不同的位置和视角。客户提供的管廊数据分了5个分区,一个监控中心,加上管廊初始化加载时的视角共需要7组数据。在伟景行提供的SDK中如果要把地图切换到 某一点,需要的数据除了包括X、Y、Z外,还需要Angle数据。X、Y、Z可以理解为经纬度加高程。Angle为相机欧拉角,包括Heading、Tilt、Roll参数。其中Heading表示相机的(左右)摇摆角,单位为度,正北方向为0,值域[0,360),顺时针递增;Tilt表示相机的(上下)俯仰角,单位为度,平视为0,值域[-90,90]度,低头为负,抬头为正;Roll表示相机的倾斜角,单位为度,水平为0。如下图所示:
怎么获得上述参数?这里使用CityMaker Builder提供的特定场景功能获取。在主界面的右侧tab页中找到特别场景tab页,可以点击新建特定场景组,如下图:
添加完特定场景后,把地图拉到你想要切换的位置,然后在特定场景组下边的面板中点击右键插入特定场景,如下图:
输入场景名称、说明和播放间隔后点击确定,特定场景就生成完毕,生成后入下图:
IEulerAngle angle = new EulerAngle();
angle.Set(locationCamera.Heading, locationCamera.Tilt, locationCamera.Roll);
if (geoFactory == null)
geoFactory = new GeometryFactory();
IPoint pos = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
pos.X = locationCamera.X;// 10533.269655684308;
pos.Y = locationCamera.Y;// 24483.287786598114;
pos.Z = locationCamera.Z;// 770.96200000031581;
pos.SpatialCRS = datasetCRS;
this.axRenderControl.Camera.LookAt2(pos, 50, angle);
CityMaker三维管廊开发

本文介绍如何使用CityMaker进行三维管廊开发,重点讲解通过特定场景功能获取地图位置和视角参数的方法,并演示如何将这些参数应用于程序实现场景的精准定位。
1万+

被折叠的 条评论
为什么被折叠?



