编者语: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
原文地址:http://blog.csdn.net/kinfey/article/details/76281802
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注