Scaleform 与 Stage3d

Posted

技术标签:

【中文标题】Scaleform 与 Stage3d【英文标题】:Scaleform vs Stage3d 【发布时间】:2012-03-29 16:26:51 【问题描述】:

考虑到现在 Flash 同时具有 Stage3D 和对虚幻引擎的本机支持(我的意思是,至少对虚幻引擎游戏),我很好奇未来是否需要 Scaleform(以当前形式) )。

我问这个主要是出于好奇,因为我找不到太多关于 UE 如何与 Flash 一起工作的信息。另外,我没有使用过 Scaleform,只是阅读了它,(Scaleform workflow),他们在任何地方都没有提到 stage3d。

我不确定这是否是询问 Scaleform 的最佳地点(似乎没有 Scaleform 标签),但在我看来,现在它们和 stage3d 之间应该有某种桥梁。

你们觉得呢?

【问题讨论】:

【参考方案1】:

Stage3D 用于渲染 3D 游戏和应用程序。 Scaleform 是一个 2D UI 工具(具有在 3D 空间中渲染 2D UI 元素的扩展),虚幻引擎使用它来为他们的菜单和游戏内 HUD 带来很好的效果。

Stage 3D 将 Unreal 渲染到浏览器窗口,但 Unreal 使用 Scaleform 来渲染其 UI。所以是的,仍然需要 Scaleform。 Scaleform 工作流程使 UI 开发变得非常容易,Scaleform 的 GPU 加速、多线程核心架构和渲染器以及其自定义工具使其成为游戏行业中使用最广泛的 UI 中间件。

大多数开发人员都在使用它来创建控制台和 PC 游戏的 UI,而手机游戏开始使用 Scaleform 作为引擎(请参阅 Globz - TwinSpin - 第一个在 ios 上发布的商业 Flash 游戏,使用 Scaleform)。随着 Unreal 和 Unity 等引擎进入浏览器窗口,借助 Stage3D,Scaleform 无疑也将用于开发基于浏览器的 3D 标题的 UI。

【讨论】:

不错的答案,解决了一些问题。我在想,必须使用非 stage3d flash 和 Scaleform 来制作 UI,然后进入游戏,然后使用 Stage3d 在浏览器中播放,这很奇怪。但是,由于(我假设)Scaleform 将 Flash 代码转换为其他类似 unrealscript 的东西,所以它是有意义的。 -另外,我看到了你提到的 3d 空间中的 2d 接口,但如果它们实际上是 3d 而不仅仅是一堆 2d 层,那就太好了。 Scaleform 并不真正将flash 转换为UnrealScript,但您可以不使用AS 创建UI,并使用Scaleform DirectAccess API 来控制flash 对象的时间轴动画、颜色变换、缩放、旋转、平移、等来自 UnrealScript(或 C++)。 Scaleform 可以在 Flash 文件本身的 3D 空间中渲染 2D Flash 对象(使用 z 深度平移和 x/y/z 旋转)以及将整个 Flash 电影渲染到游戏世界中的 3D 对象上。但它不是像 Stage3D 那样的 3D 渲染引擎。渲染 UI 元素时通常不需要真正的 3D - Scaleform 的核心工作。 有趣。但是,如果 Flash 没有变成其他东西并且 3D 加速,那么它如何在视频游戏中运行呢?游戏引擎是否为 Flash 运行提供了一种类似浏览器的环境?我不知道这不是真正的 3d。【参考方案2】:

Scaleform 与 Stage3D 完全不同。

Stage3D 是用于 Actionscript 的绘图 API,用于在 3D 空间中呈现视觉效果。 Stage3D 是 OpenGL 的抽象层。它还具有有限的功能集,因为 Flash Player 必须保护最终用户免受恶意攻击。 Stage3D 也完全独立于原始 Flash 显示树。

Scaleform 本身就是一个 Flash Player,它更类似于 AIR,而不是 Stage3D。从根本上说,Scaleform 使用 Flash 显示树并通过曲面细分算法将矢量资源转换为多边形。这些多边形由 OpenGL 或 DirectX 渲染,具体取决于您运行的 Scaleform 播放器。作者拥有对绘图数据的完全硬件访问权限。 Scaleform 还能够在舞台上运行解释过的 AS3 代码或更少的 C++ 驱动元素。

一般来说,Stage3D 将淡化 Flash Player 的 3D 访问。 Scaleform 主要用于开发与玩家在网络上的体验相当的丰富 UI 体验。

【讨论】:

【参考方案3】:

渲染 UI 元素时通常不需要真正的 3D

我们在赛车游戏(例如 Dirt Showdown)中使用 3d 菜单,以便在可用时使用它并改进游戏。

我不知道这不是真正的 3d

Scaleform 渲染到纹理。它在内部使用 2.5D,这意味着它可以在平面纹理上伪造视图方向。此纹理用于游戏 3d 世界,即使它在独立相机中渲染以产生叠加感。

渲染本身也是 GPU 加速的,您可以在 youtube 上找到示例,其中显示了它为渲染形状而制作的网格。本机闪存在软件 (CPU) 上执行此操作。它有它的优点和缺点,但除非真的需要这些知识,否则我不想长篇大论。

【讨论】:

以上是关于Scaleform 与 Stage3d的主要内容,如果未能解决你的问题,请参考以下文章

用于游戏开发的 Autodesk Scaleform [关闭]

scaleform 4.4.30 关于opengl的问题

使用 Scaleform 进行游戏资产渲染,而不仅仅是 UI

Havok Vision 游戏引擎:在 Visual Studio 中为 Android 编译 Autodesk Scaleform

Scaleform 现在支持 AS3 吗?

为啥 scaleform 会将单独的影片剪辑上的蒙版合并为一个?