赞
踩
作者:kele
SuperMap Hi-Fi 3D SDK(2023 11i) for Unity推出新功能:支持矢量面同时贴地形图层和模型图层,并且能实现数据点击查询属性、更改初始填充颜色、初始边框线颜色、选中填充颜色、选中边框线颜色、控制显示高度等效果。
SuperMap Hi-Fi 3D SDK(2023 11i) for Unity支持矢量面叠加模型缓存、地形使用,并且支持设置矢量面填充颜色、线框颜色、选中颜色、可见高度等参数
准备好矢量面数据,使用 SuperMap iDesktopX 桌面软件将数据添加到场景中,通过【风格设置】将数据前景色、线颜色都设置成白色
保存场景,对场景右键【生成场景瓦片】,S3M版本选择【S3M 1.0】格式,得到瓦片数据
选择矢量面配置文件(*.scp)后,点击【添加图层】
之后以同样的方式,添加一份倾斜摄影瓦片数据,运行场景
可以看到,倾斜摄影瓦片和矢量面瓦片都添加到场景中了,但是矢量面瓦片并没有贴在模型上,也没有初始化颜色,下面咱们通过代码来控制矢量面的初始颜色、选中颜色,以及显示高度。
找到并打开 SupermapGIS 脚本,在 SceneAddLayer 方法中插入以下代码:
//设置矢量面数据 贴倾斜 var s3mLayer = info.Layer as Layer3DS3MFile; if (s3mLayer.DataType == S3MType.ObliquePhotogrammetry3DModel) s3mLayer.ClampVector = true; //设置矢量面数据填充颜色、边框颜色、选中风格 if (s3mLayer != null && s3mLayer.Type == Layer3DType.S3M && s3mLayer.Name.Contains("社")) { //设置矢量面初始风格:面颜色、半透;贴地矢量面的边框颜色;执行贴地 Style3D style = s3mLayer.Style; style.FillColor = new Color(02f, 0.4f, 0.1f, 0.5f); //蓝色 style.LineColor = new Color(0.0f, 1.0f, 0.0f, 1.0f);//绿框 style.AltitudeMode = AltitudeMode.ClampToGround;//贴地 s3mLayer.Style = style; //设置选中风格 Style3D selectstyle = s3mLayer.SelectStyle; selectstyle.FillColor = new Color(0.0f, 0.0f, 1.0f, 0.5f); //蓝色 selectstyle.AltitudeMode = AltitudeMode.ClampToGround; s3mLayer.SelectStyle = selectstyle; s3mLayer.UpdateData(); }
找到并打开 SupermapGIS 脚本,在 PlayingUpdate 方法中插入以下代码:
//当相机高度小于5000米时,显示矢量面,反之隐藏 if (came.Altitude < 5000) { for (int i = 0; i < Realspace.SceneControl.Scene.Layers.Count; i++) { var layer = Realspace.SceneControl.Scene.Layers[i]; if (layer.Type == Layer3DType.S3M && layer.Name.Contains("社")) //找到社区矢量面图层 { if (layer.IsVisible != true) { layer.IsVisible = true; //矢量面图层可见性 } } else if (layer.Type == Layer3DType.S3M && layer.Name.Contains("Config")) //找到倾斜摄影图层 { layer.IsVisible = true; //倾斜摄影图层可见性 } else if (layer.Type == Layer3DType.S3M) { if (layer.IsVisible == true) { layer.IsVisible = false; //隐藏其它矢量面图层 } } } }
打开属性查询功能,通过鼠标点击矢量面进行属性查询
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。