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年的第一场雪”,…

【2018.4.21】模拟赛之一-ssl2402 世界语【水题】

正题 大意 就是将1到10改为 “unu”,”du”,”tri”,”kvar”,”kvin”,”ses”,”sep”,”ok”,”nau”,”dek” 然后如果是十几: 如12:”dek du” 如果是几十几: 如88:”dudek du” 解题思路 就是判断就好了,…

是什么使你留在你的公司

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

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

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

收割百度、阿里、腾讯、头条、网易华为等大厂Offer的面经

转载自 收割百度、阿里、腾讯、头条、网易华为等大厂Offer的面经 本文作者是跨专业考研的985硕士一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今…

【2018.4.21】模拟赛之二-ssl2403 蜡烛【贪心】

正题 大意 有n个蜡烛&#xff0c;第i个晚上要烧i根&#xff0c;没烧一个晚上蜡烛要消耗一个高度&#xff0c;求能烧多少个晚上。 解题思路 就是先烧高的&#xff0c;让剩下的蜡烛尽量多。 代码 #include<cstdio> #include<algorithm> using namespace std; int …

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

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

Sentinel限流保护

自定义限流错误页

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

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

【2018.4.21】模拟赛之三-ssl2404 上学【深度优先搜索】

正题 大意 有n个点&#xff0c;m辆车&#xff0c;每辆车有开车时间&#xff0c;需要走多久和需要多少钱。求在t个时间单位内到达可以需要花掉的最少价格 解题思路 暴力搜索能过就对了 代码 #include<cstdio> #include<iostream> using namespace std; struct li…

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

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

这本书强烈推荐看看!

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

【2018.4.21】模拟赛之四-ssl2405 巧克力【实际上是模拟】

正题 大意 有n块巧克力&#xff0c;一个a*b的网格&#xff0c;如果网格可以完全包括一块巧克力就可以获得这块巧克力&#xff0c;求最多能获得的巧克力数量 解题思路 枚举点&#xff08;在巧克力上的&#xff09;和各种情况&#xff0c;然后判断这种情况包括多少个巧克力&…

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

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

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

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

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

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

ssl初一组周六模拟赛【2018.4.21】

前言 hzb大佬好强啊&#xff0c;hzb好强啊&#xff0c;大佬好强啊&#xff0c;好强啊&#xff0c;超级强的。 后面有惊喜 先说一下成绩&#xff1a; 姓名成绩zyc390hzb360lrz340xjq310xxy300(话说原本是350)wyc290hjq230lw200 正题 题目1&#xff1a;ssl2402 世界语【水题…

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

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