编者语:Xamarin 的兼容性是它最大的优点,对于iOS / Android 新的功能支持也是无缝的,做到100%兼容。Xamarin.iOS for iOS 11.0的支持已经开始,大家可以在这里下载最新的Preview支持 (https://releases.xamarin.com/preview-xcode-9-beta-4-ios-11-macos-10-13-support-preview-2/) . iOS 11 个人觉得是一个比较大的更新,ARKit(增强现实)和CoreML(人工智能)是下一代移动平台所必须的。而Xamarin在前两天iOS 11 beta 4 发布后也同步更新了Xamarin.iOS ,这个新版本也正式和新的iOS 11 API 完全兼容了。(向Miguel和Xamarin团队90度鞠躬)。今天先来看看ARKit。
增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。AR系统具有三个突出的特点:①真实世界和虚拟的信息集成;②具有实时交互性;③是在三维尺度空间中增添定位虚拟物体。AR技术可广泛应用于多等领域。苹果的ARKit利用设备摄像头和传感器完成增强现实的图像渲染工作,你可以通过结合SceneKit和SpriteKit为现实场景添加3D/2D图像。
这里一个大致的ARKit 框架图(如图)
.
iOS是通过ARSCNView构建AR视图,你需要设置好一些配置,例如光暗度/方位等。然后需要设置场景,根据你场景的距离和方位利用SCNScene构建3D模型。我在CSDN找到一个ARKit系列的文章很不错如果想深入下去,建议大家看看 http://blog.csdn.net/u013263917/article/category/6959089 。
我们尝试通过Visual Studio for Mac 来尝试构建一个简单的ARKit应用。
1. 由于暂时没有Xcode 9 中的AR模版,我用一个Single View 做模版创建
2.添加一个ARViewController,创建成功后添加ARKit和SceneKit应用, 并添加全局变量,这里就是刚才提到的ARKit所需要的视图,会话和配置文件
ARSCNView arSCNView; ARSession arSession; ARSessionConfiguration arSessionConfig;3.在 ARViewController创建 ViewWillAppear方法添加如下代码,完成会话工作和视图添加
ARWorldTrackingSessionConfiguration config = new ARWorldTrackingSessionConfiguration(); config.PlaneDetection = ARPlaneDetection.Horizontal; arSessionConfig = config; arSessionConfig.LightEstimationEnabled = true; arSession = new ARSession(); arSCNView = new ARSCNView(); arSCNView.Frame = View.Bounds; arSCNView.Session = arSession; arSCNView.AutomaticallyUpdatesLighting = true; View.AddSubview(this.arSCNView); arSession.Run(this.arSessionConfig);4.在项目中创建一个 Models.scnassets文件夹,并添加一个3D模型(建模麻烦,给大家一个网站https://www.turbosquid.com/Search/3D-Models/free)
5.继续在 ARViewController的 ViewWillAppear延续刚才代码,添加一个3D场景
var scene = SCNScene.FromFile("Models.scnassets/chair/chair.scn"); SCNNode node = scene.RootNode.ChildNodes[0]; node.Position = new SCNVector3(0, -1, -1); arSCNView.Scene.RootNode.AddNodes(node);6.在ViewController中添加Button并添加响应事件跳转到 ARViewController
partial void UIButton2935_TouchUpInside(UIButton sender) { ARViewController arViewCtrl = new ARViewController(); this.PresentViewController(arViewCtrl, true, null); }7.别忘记开启Info.plist的Camera授权
8.最后就是运行了,打开按Button,一张桌子就加载进你的现实场景中了,棒极了
这样我们就利用Xamarin构建了一个ARKit场景,Cool吧。
源代码下载 https://github.com/lokinfey/ARDemo