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。

       
        增强现实技术(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所需要的视图,会话和配置文件


  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)
     
   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授权
   
   8.最后就是运行了,打开按Button,一张桌子就加载进你的现实场景中了,棒极了
      


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


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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

挺不喜欢下雪的

你要储蓄你的可爱,眷顾你的善良,变得勇敢。当这个世界越来越坏时,只希望你能越来越好。——《南山南》昨天夜间,窗外雪花飘飘,朋友圈中到处都是晒下雪的照片,有的说是“这是2020年的第一场雪”,…

是什么使你留在你的公司

一个故事 之前离职的一个同事,是典型的技术型人才,前段时间跟他一起吃饭,得知他工作状况不是很理想(他在创业型团队,工作强度非常大,且做出来的东西得不到应有的认可,公司给他的报酬也不是很高…

有些事,父母一定不能依着孩子!

今天的文章,可能有的人不太喜欢。在我教学这么些年以来,这个问题在今年出现的最多——父母总是站在孩子的角度,不管什么事都是依着孩子;如果此事对孩子好也就罢辽,但是明明对孩子没有一点好处,还要和孩子一…

“看起来你每天都要做好多事,你有时间吗?”

“我看你每天要干的事好多啊,你有那么多时间吗?” “有啊,早起会儿,晚睡会儿,时间就出来了” 我每天确实是要做好多事。 01 我是一个喜欢规律生活的人,通常会将自己的一天划分为好多块,每一块时间安排的事都不一样,不太喜欢别人打乱我的生活规律,也不知道这是好事还是…

Sentinel限流保护

自定义限流错误页

浅谈 EF CORE 迁移和实例化的几种方式

出于学习和测试的简单需要,使用 Console 来作为 EF CORE 的承载程序是最合适不过的。今天笔者就将平时的几种使用方式总结成文,以供参考,同时也是给本人一个温故知新的机会。因为没有一个完整的脉络,所以也只是想起什么写点什么&a…

Redis 高可用特性之 “持久化” 详解

转载自 Redis 高可用特性之 “持久化” 详解 在之前的文章中,介绍了《Redis的内存模型》,从这篇文章开始,将依次介绍 Redis 高可用相关的知识——持久化、复制(及读写分离)、哨兵、以及集群。 本文将先说明上述几种技术分别解决了 Redis 高…

这本书强烈推荐看看!

大家好,我是雄雄,欢迎关注公众号【雄雄的小课堂】今天,给大家推荐一本书《计算机是怎样跑起来的》,作者:矢泽久雄。也不知道它是怎么进入我的书架的,由于最近一直在看理财类的书籍,所以以前加入…

基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级

1、前言 surging受到不少.net同学的青睐,也提了不少问题,提的最多的是什么时候集成API 网关,在这里回答大家最近已经开始着手研发,应该在1,2个月内会有个初版API网关,其它像Token身份验证,限流降级等功能完…

1 分钟教会你用 Spring Boot 发邮件

转载自 1 分钟教会你用 Spring Boot 发邮件 Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口。 org.springframework.mail.javamail.JavaMailSender Spring Boot 提供了一个 starter,并能自动配置,下面来做个小例子&#xf…

小二,先来两桂花豆沙包!

“包子嘞,卖包子嘞,新出锅的大包子,走过路过千万不要错过呦~包子嘞……”某年某月某下午,百万包子铺进来一人,进来便招呼:“小二,包子怎么卖?”小二:“客官,你…

SQL Server 2017 RC1 现已实现 Linux 功能扩展

经过七个预览版本的迭代之后,Microsoft 宣告发布第一个 SQL Server 2017 候选版本。开发人员可以藉由该版本来探索一些扩展 SQL Server Linux 版能力的新改进。 在这些新改进中,首先是对 Linux 上SQL Server 的 Active Directory 身份验证的支持。使用 …

一百馒头一百僧,大僧三个更无争,小僧三人分一个大小和尚得几丁?

如题&#xff1a;一百馒头一百僧&#xff0c;大僧三个更无争&#xff0c;小僧三人分一个大小和尚得几丁&#xff1f; 要求使用java实现求得大僧小僧各有多少人&#xff1f; public class shdjshj {public static void main(String[] args) {for(int i 1;i<100;i){int j 1…

Microsoft使用.NET Core SDK遥测数据

Microsoft发布了采集自.NET Core SDK用户的遥测原始数据集。数据集的时间跨度是从2016年第三季度到2017年第二季度&#xff0c;为了解当前开发人员使用SDK的情况提供了一个视角。据Microsoft的Rich Lander介绍&#xff0c;今后Microsoft将每季度提供一次遥测数据集&#xff0c;…

你们好好的学,回头教教我~

辣椒酱中奖的已经安排发货了&#xff0c;不日即可达到&#xff0c;注意收货。雄雄辣椒酱&#xff0c;免费送~这一周&#xff0c;3班的孩子们都在培训双创的内容&#xff0c;因为这个培训是学校统一组织的&#xff0c;所以对培训的内容以及培训方式我是一无所知的。周二我值班&a…

CAP 介绍及使用【视频】

前言 很多同学可能对于CAP这个项目想有更一步的了解&#xff0c;包括她的工作原理以及适用的场景&#xff0c;所以博主就准备了一场直播给大家讲解了一下&#xff0c;这个视频是直播的一个录像。 由于我这次直播本来是没有打算对外的&#xff0c;所以也是没有怎么准备的&…