【AR】开始使用Vuforia开发iOS(2)

  • 设置iOS开发环境
  • 安装Vuforia iOS SDK
  • 如何安装Vuforia iOS示例
  • 编译并运行Vuforia iOS示例
  • 支持iOS金属
  • iOS 64位迁移

设置iOS开发环境

适用于iOS的Vuforia引擎目前支持运行iOS 9及更高版本的大多数iOS设备。
按照以下步骤操作:

  1. 成为iOS开发者
  2. 安装XCode和iOS SDK
  3. 设置配置文件

成为iOS开发者


Vuforia应用程序必须部署到设备上运行; 他们不能在iOS模拟器中运行。您必须注册iOS开发人员程序才能将应用程序部署到iOS设备。你可以在这里注册:https: //developer.apple.com/programs/ios/

安装XCode和iOS SDK


注册iOS开发人员计划后,您应该可以访问iOS开发人员中心:http : //developer.apple.com/devcenter/ios

转到开发中心或Mac AppStore下载XCode。下载应该包括最新版本的iOS SDK。

有关受支持的XCode和iOs版本的最新信息,请参阅 https://library.vuforia.com/articles/Solution/Vuforia-Supported-Versions

设置配置文件


从iOS开发人员中心,您可以访问iOS开通门户,您可以按照这些步骤设置开发计算机以构建和部署iOS应用程序。另外,请遵循以下过程:

  • 获得证书
  • 分配设备
  • 创建一个应用程序ID
  • 创建一个配置文件
    1. 当选择一个应用程序ID时,选择一些足以在整个开发过程中工作的通用程序。有关选择App ID的更多详细信息,请参阅Apple Developer Provisioning Portal。
    2. 使用您创建的App ID创建开发配置文件,并确保添加您想要测试的设备。
    3. 将配置文件下载到您的计算机,然后双击它进行安装。
    4. 测试一下简单的非Vuforia应用程序(可能是iOS SDK中的示例之一)可以在设备上运行。如果遇到问题,最好在网上搜索解决方案,因为有很多可用的建议。

安装Vuforia iOS SDK

下载 vuforia-sdk-ios-x-x-x.zip从SDK下载

  1. 解压档案

产生的目录结构


将文件解压后,Vuforia将被安装在一个目录中,该目录将在下文中称为vuforia-sdk目录,其内容应如下图所示:
【AR】开始使用Vuforia开发iOS(2)

我们建议在SDK目录之外开发自己的应用程序,以便升级到未来版本的SDK。

如何安装Vuforia iOS示例

需要将Vuforia iOS示例添加到Vuforia iOS SDK安装的示例目录中。

  1. 下载压缩存档中的Vuforia示例,并将其展开到自己的目录中。
  2. 将示例复制到Vuforia安装目录中,如下所示:
    【AR】开始使用Vuforia开发iOS(2)

编译并运行Vuforia iOS示例

我们现在要构建Vuforia示例应用程序,该应用程序使用Vuforia支持的各种目标来显示自然特征的检测和跟踪。本节介绍如何在XCode中构建项目并将其部署到设备。

在XCode中配置项目


  1. 打开位于VuforiaSamples目录下的Vuforia Samples XCode项目,如下所示。
  2. 注意:Vuforia应用程序不会构建或使用模拟器。
  3. 您必须选择一个设备来构建和运行任何Vuforia应用程序。
  4. 确保您的iOS设备通过USB电缆连接到您的计算机,并且XCode可以将其识别为可用于开发(如旁边绿色指示灯在管理器窗口中突出显示的那样)。
  5. 通过XCode窗口左上角的下拉选择器选择设备,如下所示:
    【AR】开始使用Vuforia开发iOS(2)

设置包标识符


要设置您的包标识符,使其与您在Apple Developer Provisioning Portal上设置的供应配置文件相匹配:

单击Vuforia Samples目标以使其处于活动状态。
替换com.vuforia.sample.testapps 为您自己的包标识符,如下所示:
【AR】开始使用Vuforia开发iOS(2)

设置代码签名标识


在Xcode中,单击“活动目标”,然后单击“构建设置”选项卡,如下所示:

【AR】开始使用Vuforia开发iOS(2)

在代码签名标识下,确保选择了正确的标识。这通常是默认情况下发生的,如果一切正常,则显示当前匹配的消息。这验证了供应配置文件与Apple Developer Portal上设置的代码签名身份匹配。

运行示例应用程序


打印图像目标
将 /ImageTargets/media任何格式的vuforia-sdk目录中的所有图像目标打印到US Letter或A4尺寸的纸张上,页面缩放为“无”选项,保持图像的原始高宽比不变。

通常有三个图像目标,如下所示。
【AR】开始使用Vuforia开发iOS(2)
部署并运行应用程序

  1. 通过USB连接器将iOS设备连接到电脑。
  2. Build and Run 假设没有任何问题,使用XCode中的按钮将应用程序部署到设备上,该按钮将完成此操作并将其安装到设备上。
    闪屏后,显示实时相机图像。

使用您的设备查看打印目标的芯片或石头,您应该看到一个集中在目标顶部的纹理茶壶,接地到飞机上。
【AR】开始使用Vuforia开发iOS(2)

您已经成功部署了第一个使用Vuforia SDK的应用程序!

双击屏幕以显示菜单,然后选择选择目标> Tarmac切换数据集。茶壶将不再出现在石头的目标上。这是因为Tarmac图像存储在不同的数据库中。现在,将设备指向停机坪打印目标,然后您将再次看到茶壶。

此应用程序显示了SDK如何从预定义的图像集中检测和跟踪单个图像。该应用程序还显示了如何在不费力的情况下在数据库之间切换,以及如何处理相机设置,例如自动对焦。通过小代码更改,还可以编译它以同时检测和跟踪多个图像。

下一步


随意探索Vuforia示例应用程序中包含的其余功能。

有关此示例应用程序的进一步细节包含在可下载的存档中。

支持iOS金属

使用Vuforia SDK版本5.5及更高版本时,运行iOS 8及更高版本的iOS设备支持Apple的金属渲染API。

本文介绍如何配置使用Vuforia iOS SDK的本机iOS应用程序以使用Metal。Vuforia Unity iOS应用程序不需要使用Vuforia API来配置Metal支持,默认情况下Metal支持作为Build Settings中的Auto Graphics API设置。

在本机iOS应用程序中配置金属支持


要在iOS应用程序中使用Metal,您需要将Metal初始化标志传递给Vuforia :: setInitParameters,以便在初始化SDK之前配置应用程序的渲染上下文。

该金属初始化标志在Vuforia.h头文件中定义。

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">枚举INIT_FLAGS {</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    GL_20 = 1,/// <启用OpenGL ES 2.x渲染(在UWP平台上不可用)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    METAL = 2,/// <启用金属渲染(可在Apple平台上使用)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    DX_11 = 4,/// <启用DirectX 11渲染(仅在UWP平台上可用)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    GL_30 = 8,/// <启用OpenGL ES 3.x渲染(在UWP平台上不可用)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
};</font></font><font></font>

为了在您的应用中使用Metal API,您需要使用Vuforia :: setInitParameters方法将METAL INIT_FLAGS值传递给SDK 。

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">Vuforia :: setInitParameters(Vuforia :: METAL, “”);
</font></font>

注意: 在调用Vuforia :: init()开始初始化Vuforia SDK 之前,必须调用Vuforia :: setInitParameters()。ImageTargetsMetal请添加链接描述演示了使用Metal初始化应用程序的正确调用顺序适用于iOS的高级主题示例项目。可以通过在SampleApplicationSession.mm的第144行中为mVuforiaInitFlags变量赋值Vuforia :: METAL 来配置金属API支持。

mVuforiaInitFlags可以在调用时被定义initAR或以后在initVuforiaInBackground在示例代码。

请参阅:Vuforia 5.5的变化 了解更多关于如何为iOS Metal API引入Vuforia SDK的信息。

iOS 64位迁移

正如苹果在2014年10月20日宣布的那样:

从2015年2月1日开始,上传到App Store的新iOS应用程序必须包含64位支持,并且可以使用Xcode 6或更高版本中包含的iOS 8 SDK进行构建。要在您的项目中启用64位,我们建议使用标准体系结构的默认Xcode构建设置来构建具有32位和64位代码的单个二进制文件。

这对Vuforia开发者来说意味着什么?


截至2015年2月1日,新发布的应用程序需要利用iOS 8 SDK和新款iOS设备中的新64位ARM芯片。

Vuforia SDK 4.0完全支持iOS 8和64位ARM架构,并且Vuforia iOS样本也已更新,可以在64位模式下正确构建和运行。
特别是,新发布的Vuforia Sample项目已经提供了正确的Xcode Build Settings,以支持32位(armv7,armv7s)和64位(arm64)模式。

您可以在下载中获得Vuforia 4.0 SDK和支持iOS 64位的样本 开发人员门户部分。

如果您使用Vuforia和iOS 8创建应用程序,则还应确保将相同的构建设置应用于您自己的项目,以便能够将您的应用程序上传到Apple App Store。本文结尾处提供了有关配置Unity iOS 64位版本的说明。

我们还建议您在将应用程序提交到应用程序商店之前,在至少一台64位和一台32位设备上测试您的应用程序; 例如,iPhone 5S配备了64位CPU,而iPhone 4S则配备了32位芯片。应用程序必须能够在两个平台(32位和64位)上正确运行。

我是否需要构建两个不同的应用程序?


您不需要构建两个不同的应用程序,即一个应用程序处于32位模式,另一个应用程序处于64位模式。使用推荐的Build Settings构建Xcode项目,其中包括armv7 / armv7s(32位)和arm64体系结构; 这将确保您的应用程序将打包所有必需的工件,以便能够在32位和64位设备上运行。

编码指南


在使用面向64位体系结构的Vuforia SDK编写iOS应用程序时,通常应遵循适用于任何iOS应用程序的相同通用准则。Vuforia不引入任何额外的要求或限制。

两项公约:ILP32和LP64


32位运行时使用称为ILP32的约定,其中整数,长整数和指针为32位数量。64位运行时使用LP64约定; 整数是32位数量,长整数和指针是64位数量。

从上面得出的最重要和最明显的建议之一是避免将指针指向整数。如果您的应用程序代码确实将指针转换为整数,则您的代码在32位模式下可能会正常运行,但如果指针超过32位范围,则可能会导致在64位模式下执行时发生崩溃或其他运行时错误行为。

此外,包含long类型元素的数组在使用64位模式构建代码时,其字节大小是其字节的两倍,相对于32位的情况。对于大型数据阵列,这也可能导致显着增加的内存使用量。在创建大型数组并选择适当的类型时请记住这一点; 在许多情况下,32位整数可能足以表示常用数据值。

NSInteger数据类型:


NSInteger类型是32位运行时的32位整数和64位运行时的64位整数。当从方法或代码表达式接收到NSInteger数据时,应该使用NSInteger类型来保存结果; 例如,将一个NSInteger转换为int可能会导致在64位模式下原始值被截断(数据丢失),因此通常应该避免这种情况,除非有问题的值已知/保证始终在32位边界。

CGFloat数据类型:


CGFloat以64位代码更改大小。CGFloat类型更改为64位浮点数。与NSInteger类型一样,您不能认为CGFloat是浮点型或双精度型。所以一直使用CGFloat。

有关64位转换的完整指南,请参阅Apple网站上发布的官方iOS 64位迁移指南:
https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013501-CH1-SW1

https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/Major64-BitChanges/Major64-BitChanges.html#//apple_ref/doc/uid/TP40013501-CH2-SW1

https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html#//apple_ref/doc/uid/TP40013501-CH3-SW1

Unity iOS


按照这些说明来确保您使用Unity iOS 64位支持进行构建

  • 使用最新的Unity版本*
  • 在“生成设置”中选择iOS构建目标。
  • 在其他设置中,将脚本后端设置为IL2CPP
  • 体系结构设置必须设置为Universa
    注意: Unity 64.1bit支持最初是在Unity 4.6.1p5补丁版本中引入的。这是支持Vuforia iOS 64位Unity扩展的最早版本。

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【AR】开始使用Vuforia开发iOS(2)

猜你喜欢

转载自blog.51cto.com/4789781/2128105