gis控制柜 电气hgis是什么意思( 二 )


var phoneSensors = new PhoneMotionDataSource();
fpcController.DeviceMotionDataSource = phoneSensors;
MySceneView.CameraController = fpcController;
phoneSensors.StartUpdatingAngles(false);
//phoneSensors.StartUpdatingInitialLocation();
//phoneSensors.StartAll();
5. 细化显示以适应用户需求
一般来说,这涉及到确定最佳帧率,以提供与覆盖在真实场景上的虚拟内容之间的交互 。例如,移动设备时,虚拟对象应该保持在真实场景的位置上 。另外,虚拟物体的渲染质量也需要足够好 。在ArcGIS Runtime API中,FirstPersonCameraController有一个Framerate属性,可以通过它来管理这种行为 。
fpcController.Framerate = FirstPersonFrameRate.Balanced;
这里有三个选项可用:Quality,Balanced和Speed:
Quality就是在场景视图中,每当场景视图摄像头(和设备)移动时,数据都会以完全保真的方式加载 。此选项一般针对具有高端处理器和更大内存的设备而言;
Balanced以两种方式改变数据加载模式 。第一,数据将被加载到场景视图的相机周围,而不仅仅是在视图中 。这假定设备将会快速改变位置和方向 。第二,场景图层将加载相同的层次细节模型 。这意味着更少的数据和更小的内存占用 。此选项最适合移动设备上的AR体验;
Speed与Balanced的数据加载模式相一致,但在场景视图相机周围加载的数据量将由GPU而不是本地内存来决定 。理想情况下,这个选项可以以每秒60帧的速度显示数据,这为VR体验提供了一个理想的解决方案 。
下面两张图展示了使用ArcGIS Runtime AR技术将建筑物叠加到会议室的桌子上以及将球投放在会议室中的效果 。
VR in ArcGIS Runtime
1. 创建SceneView
创建SceneView并设置基础底图,3D图层以及高程数据 。
MySceneView.Scene = new Scene(Basemap.CreateImagery());
MySceneView.Scene.OperationalLayers.Add(<operational layer>);
MySceneView.Scene.BaseSurface.ElevationSources.Add(<elevation layer>);
2. 设置SceneView.StereoRendering
设置SceneView.StereoRendering属性以定义虚拟体验 。在目前的版本中,只支持SideBySideBarrelDistortionStereoRendering,这种渲染模式旨在支持头戴设备的VR体验,例如Google Cardboard和Samsung Gear VR 。未来版本可能会为HTC Vive或Oculus Rift等高端VR平台或硬件资源的使用提供更好的支持 。
MySceneView.StereoRendering = new SideBySideBarrelDistortionStereoRendering();
3. 定义相机控制器,使用传感器交互
参见AR部分4的介绍 。
4.细化显示以适应用户需求
参见AR部分5的介绍 。
下图展示了使用ArcGIS Runtime VR技术得到的左右眼的建筑物视图,带上VR眼镜之后将会看到虚拟的3D立体视图 。
对ARKit的支持
最近ARKit很火,那么ArcGIS Runtime对它有支持吗?当然 。ArcGIS Runtime 提供了ARKitMotionDataSource,它可以与支持Apple ARKit框架的iOS设备集成 。这个框架为相关设备的位置和移动提供了相当准确的反馈,使用户能够浏览虚拟和真实场景相同步的视图 。代码如下:
var arKitSensors = new ARKitMotionDataSource(View as ARSCNView);
fpcController.DeviceMotionDataSource = arKitSensors;
arKitSensors.StartAll();
在这种体验中,虚拟世界对象和现实世界对象可以以相同的比例呈现 。但是,场景视图中的虚拟内容是以与现实场景不同的尺度来显示的 。例如桌面上建筑物虚拟模型的显示,在这种情况下,用户或设备在现实世界中的位置变化应该转换成场景视图内合理的移动以浏览虚拟场景 。TranslationFactor属性定义了虚拟世界中相当于现实世界中一个单位的单位数量 。例如,如果此属性设置为100,则当用户/设备在现实世界中移动1米时,场景视图相机将在虚拟空间中移动100米 。见如下代码和视频效果,视频中用户通过手持iPad前进、后退、左转、右转、抬头、低头来控制虚拟场景中的镜头,给人以身临其境的感觉 。