6

快速提问

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


详细问题

关于

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

目的

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

这里是例子


(来源:augmentedplanet.com

问题

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

所以

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

这是webcamvideo 与 Starling Framework (Stage3D) 集成的示例。但是对于许多普通的移动设备,我们会获得如此大的纹理更新(几乎是屏幕分辨率的大小),以至于任何应用程序都会降到低 fps 甚至崩溃。例如,我在 Galaxy Note 上做了什么。它具有 320x200 的纹理大小,具有相当好的性能,但在 AR 应用程序中看起来很难看。

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

4

1 回答 1

3

不幸的是,这个用例在 AIR 中没有得到很好的支持。您最好的选择是手动上传。在 Adob​​e 论坛上为透明 Stage3D 的功能请求添加投票可能会有所帮助。

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

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

  • 回读用于 CPU 或 GPU AR 图像处理的低分辨率相机
  • 显示直通高分辨率相机图像
  • 使用混合叠加 3D

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

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

我希望这能有所帮助。在开发 Stage3D 时,这个确切的用例时不时出现。我还是觉得真的很酷!也许这篇文章解释了为什么它还没有登上榜首。

于 2013-06-10T07:55:17.003 回答