移动 Adobe Flash AIR 上的摄像机和 Stage3D。 AIR 上的增强现实

问题描述 投票:0回答:1

快速提问

如何使用Stage3D在Adobe AIR应用程序上快速显示网络摄像头?


详细问题

关于

我的目标是创建 AR(增强现实)移动应用程序的原型。我选择 Adobe Flash AIR 是为了在移动设备上提供良好的 3D 图形支持,并且 AIR 应用程序可以轻松移植到许多移动平台(iOS、Android、Blackberry Playbook)。

目的

我想展示复杂的3D模型(所以我需要使用Stage3D)。下面是前置摄像头的视频。像平常的 AR 应用程序一样。

这是例子


(来源:augmentedplanet.com


(来源:telepresenceoptions.com

问题

Stage3D 根本不透明,所以我无法使用 StageVideo 来快速显示 Camera 的内容,因为 StageVideo 在 Stage3D 下看不到。

那么

我发现的唯一决定 - 是创建具有动态纹理更新的平坦表面。

这里是 网络摄像头视频与 Starling Framework (Stage3D) 集成的示例。但对于许多普通的移动设备,我们会得到如此大的纹理更新(几乎与屏幕分辨率的大小相同),以至于任何应用程序都会下降到低 fps 甚至崩溃。例如,我在 Galaxy Note 上所做的事情。纹理尺寸为 320x200,它具有相当不错的性能,但在 AR 应用程序中看起来很难看。

那么有什么出色的解决方案可以在 AIR 上创建 AR 吗?有人遇到同样的挑战吗?

mobile webcam augmented-reality stage3d starling-framework
1个回答
3
投票

遗憾的是,AIR 并未很好地支持此用例。您最好的选择实际上是手动上传。在 Adobe 论坛上为透明 Stage3D 的功能请求添加投票可能会有所帮助。

现在解释一下为什么这个功能的优先级较低:如果您正在做 AR,您可能已经在视频上进行 CPU 工作了。这意味着您已经读回相机数据以便在 CPU 上进行处理或作为 Stage3D 纹理进行处理。这是最昂贵的部分,而不是将纹理上传回 Stage3D。

为了使其有用,需要有许多复杂的代码路径完美地协同工作。在所有支持的设备上:

  • 读回低分辨率摄像头以进行 CPU 或 GPU AR 图像处理
  • 显示直通高分辨率相机图像
  • 通过混合叠加 3D

不幸的是,这非常困难。在许多移动芯片组上,视频/摄像头、CPU 和 3D 是非常独立的单元,因此很难在不停止或复制的情况下在它们之间共享数据。如果您针对特定硬件,则可以做得很好。我知道这并不能解决您的问题,但我希望它能解释为什么这个用例在 AIR 中还不能很好地工作。我想你有这些选择:

  • 使用 AIR 并回读/上传。在某些硬件上它会非常慢,但它会可靠地工作。
  • 本土化。在最好的情况下,这将是一个巨大的胜利,但您需要大量的自定义代码并针对每个目标进行测试。
  • 在一个非常狭窄的平台上实现原生。许多非常酷的 AR 演示都这样做。查看 GPU 供应商提供的 AR SDK。大多数人都有一个。
  • 充分利用糟糕的情况:坚持使用低分辨率和上传,但在视频上添加一些有趣的过滤器。一旦你支付了上传费用,用你的纹理做 Stage3D 的东西就非常便宜了。

我希望这会有所帮助。在开发 Stage3D 时,这种确切的用例时不时就会出现。我仍然认为它真的很酷!也许这篇文章解释了为什么它还没有成为列表的顶部。

© www.soinside.com 2019 - 2024. All rights reserved.