Xamarin for iOS 11(一) - 初尝ARKit

编者语: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。

       Xamarin for iOS 11(一) - 初尝ARKit
        增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。AR系统具有三个突出的特点:①真实世界和虚拟的信息集成;②具有实时交互性;③是在三维尺度空间中增添定位虚拟物体。AR技术可广泛应用于多等领域。
苹果的ARKit利用设备摄像头和传感器完成增强现实的图像渲染工作,你可以通过结合SceneKit和SpriteKit为现实场景添加3D/2D图像。

       这里一个大致的ARKit 框架图(如图)
   .   Xamarin for iOS 11(一) - 初尝ARKit

       iOS是通过ARSCNView构建AR视图,你需要设置好一些配置,例如光暗度/方位等。然后需要设置场景,根据你场景的距离和方位利用SCNScene构建3D模型。我在****找到一个ARKit系列的文章很不错如果想深入下去,建议大家看看 http://blog.****.net/u013263917/article/category/6959089 。

   我们尝试通过Visual Studio for Mac 来尝试构建一个简单的ARKit应用。
   1. 由于暂时没有Xcode 9 中的AR模版,我用一个Single View 做模版创建

   Xamarin for iOS 11(一) - 初尝ARKit Xamarin for iOS 11(一) - 初尝ARKit

   
   2.添加一个ARViewController,创建成功后添加ARKit和SceneKit应用, 并添加全局变量,这里就是刚才提到的ARKit所需要的视图,会话和配置文件


  1. ARSCNView arSCNView;  

  2. ARSession arSession;  

  3. ARSessionConfiguration arSessionConfig;  

   3.在ARViewController创建ViewWillAppear方法添加如下代码,完成会话工作和视图添加


  1. ARWorldTrackingSessionConfiguration config = new ARWorldTrackingSessionConfiguration();  

  2. config.PlaneDetection = ARPlaneDetection.Horizontal;  

  3. arSessionConfig = config;  

  4. arSessionConfig.LightEstimationEnabled = true;  

  5.   

  6. arSession = new ARSession();  

  7.   

  8. arSCNView = new ARSCNView();  

  9. arSCNView.Frame = View.Bounds;  

  10. arSCNView.Session = arSession;  

  11. arSCNView.AutomaticallyUpdatesLighting = true;  

  12. View.AddSubview(this.arSCNView);  

  13. arSession.Run(this.arSessionConfig);  

   4.在项目中创建一个Models.scnassets文件夹,并添加一个3D模型(建模麻烦,给大家一个网站https://www.turbosquid.com/Search/3D-Models/free)
     Xamarin for iOS 11(一) - 初尝ARKit
   5.继续在ARViewController的ViewWillAppear延续刚才代码,添加一个3D场景

  1. var scene = SCNScene.FromFile("Models.scnassets/chair/chair.scn");  

  2. SCNNode node = scene.RootNode.ChildNodes[0];  

  3. node.Position = new SCNVector3(0, -1, -1);  

  4. arSCNView.Scene.RootNode.AddNodes(node);  

   6.在ViewController中添加Button并添加响应事件跳转到ARViewController


  1.    partial void UIButton2935_TouchUpInside(UIButton sender)  

  2.   

  3. ARViewController arViewCtrl = new ARViewController();  

  4.   

  5. this.PresentViewController(arViewCtrl, truenull);  

  6.    }  

   7.别忘记开启Info.plist的Camera授权
   Xamarin for iOS 11(一) - 初尝ARKit
   8.最后就是运行了,打开按Button,一张桌子就加载进你的现实场景中了,棒极了
   Xamarin for iOS 11(一) - 初尝ARKit   


   这样我们就利用Xamarin构建了一个ARKit场景,Cool吧。
   源代码下载 https://github.com/lokinfey/ARDemo


原文地址:http://blog.****.net/kinfey/article/details/76281802


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

Xamarin for iOS 11(一) - 初尝ARKit