随着 iOS 11 的正式发布,我们很高兴地宣布在 NativeScript 中提供增强现实 (AR) 支持的预览版!
Apple (ARKit) 和 Google (ARCore) 发布的 AR SDK 为 NativeScript 提供了一个机会,使开发人员能够创建沉浸式的跨平台 AR 体验。上面视频中的应用程序是使用我们即将发布的 nativescript-ar
插件的 alpha 版本创建的。目前,此插件利用 iOS 11 中提供的 ARKit API。在不久的将来,将通过 ARCore API 为 Android 添加支持。
虽然设备必须运行 iOS 11 才能使用 ARKit,但由于 NativeScript API 在运行时加载的方式,如果您使用 nativescript-ar
插件,您仍然可以定位 iOS 的较低版本。这意味着您可以向您的应用程序添加补充的 AR 功能,而不会影响 iOS <= 10 用户。
iOS 11 将支持 iPhone 6S 及更新的设备。
Android 上的 ARCore 则有所不同,因为 Google 将 ARCore 支持限制在运行在 Samsung Galaxy S8 和 Google Pixel 设备上的 Android 8(奥利奥)上。虽然支持肯定会扩大,但 Android 供应商更新到最新版本的 Android 的速度非常慢。
使用 AR 的规范方法是首先检测表面,然后在表面上(或上方)放置对象。这些对象可以是任何东西,从立方体和球体到使用数十万个多边形的完整 3D 模型。对象可以具有质量,因此重力可以影响它们。
正在为您的下一个 AR 项目寻找免费的 3D 模型存储库?请查看 turbosquid.com。
我们 AR 插件的目标是消除不必要的平台特定混淆,并提供一个干净简洁的 API。使用起来非常简单,只需将 <AR></AR>
元素添加到您的视图中,并添加事件和属性来指导其行为。
<AR (arLoaded)="arLoaded($event)"
(planeDetected)="planeDetected($event)"
(planeTapped)="planeTapped($event)">
</AR>
<AR></AR>
元素可以是任何普通的 NativeScript 布局的一部分,或者您甚至可以全屏显示。在任何一种情况下,您都可以选择在其顶部覆盖其他标准 NativeScript UI 元素。
nativescript-ar
插件在 Angular 和原生 JavaScript NativeScript 应用程序中都能很好地工作!
使用 nativescript-ar
插件,您将能够捕获事件并以编程方式与屏幕上的相机馈送进行交互。例如,您可以使用以下方法获取平面被点击的坐标的通知:
<AR (planeTapped)="planeTapped($event)">
...然后将 planeTapped
事件转发到您的组件以(在此示例中)将树的 3D 模型添加到场景中的特定点。
planeTapped(position: ARPosition): void {
this.ar.addModel({
name: "tree.dae",
position: position,
scale: 0.01,
mass: 0.0002,
onLongPress: ((model: ARNode) => {
model.remove();
})
});
}
准备好了就来 😄。
nativescript-ar
插件目前正在积极开发中。当我们发布第一个版本时,它将仅支持 ARKit,因为 Android 上的 ARCore 推出存在上述延迟。但是,ARKit 和 ARCore API 相对相似,在开发过程中,我们始终牢记整体占用空间,以确保我们的抽象是真正跨平台的。
无论如何,由于这两个 SDK 的 API 表面很大(并且感谢 NativeScript 的功能),开发人员始终能够利用更模糊的平台特定 API,如果它们没有通过插件公开。
在 Progress,我们对移动设备上增强现实的未来感到非常兴奋,并且很高兴 NativeScript 正在帮助引领这一潮流。