【问题标题】:Cross-Platform 3d-Engine to embed in iOS/Android-View? [closed]跨平台 3d 引擎嵌入 iOS/Android 视图? [关闭]
【发布时间】:2011-12-13 09:29:34
【问题描述】:

对于我的新应用,我希望拥有原生 iOS 或 Android UI,以及显示一些图表的 3d 视图。虽然我最初计划在 WebView 中使用 CSS 转换来实现所需的 3d 效果但由于性能无法使用而失败,但我正在寻找另一种解决方案。以下是我认为我的选择:

1.在 OpenGL ES 中重新创建场景
我会完全在 OpenGL 中重新创建我们的图形引擎。这当然是可能的,但对于像我这样实际上从未做过 3d 编程的人来说可能很难做到。是否可以将为 iOS 编写的 OpenGL 代码移植到 Android?还是我必须创建两次引擎?

2。使用现成的 3d 引擎,如 Unity3d
我偶然发现了 Unity3d、Marmalade 和类似的工具,它们可能会帮助我更轻松地创建 3d 场景。但是,乍一看,我似乎必须在各自的创作系统中创建整个应用程序。除了 3d 视图,我想对任何东西使用本机控件。这些工具有可能吗?如果是,是否可以将 3d 从 iOS 移植到 Android,反之亦然?

我是否问对了问题?我做了正确的假设吗?你觉得有什么不对吗?我错过了什么?

这些是我所有的选择吗?还是有其他什么东西,某种混合解决方案?

我应该选择哪个选项?

编辑:澄清一下,我不想在 3d 视图中显示 iOS 或 android 控件,而是在它周围显示:用户界面将是原生的,3d 部分将包含在其中一个视图。

【问题讨论】:

    标签: android ios 3d cross-platform unity3d


    【解决方案1】:

    相当复杂的一个;-)

    (1) OpenGL 与引擎:

    我认为有可能以可移植的方式编写 OpenGL 代码的主要部分,例如在 C++ 中使用 iOS 上的 Objective-C++ 和 Android 上的 NDK(只是一个想法,从未使用过 NDK)。现在它取决于图形部分的去向。如果你说图表,你的意思是你“只”需要在屏幕上绘制函数图吗?或者您是否有更多对象(例如游戏或建筑应用程序中的对象)要在 OpenGL 中显示?

    如果是后者,更大的问题似乎是模型的无缝集成。每个包含多个立方体的场景都是在建模工具中设计的,并且可以导出为多种格式(obj、dae、fbx、...)。但是你需要将它导入到你的应用程序中。这就是游戏引擎发挥作用的地方,无论是 Unity、SIO2、Bork、Unreal、Oolong,......

    如果您需要绘制图形,手动 OpenGL 解决方案可能值得考虑。尽管即便如此,对现有引擎的一些研究也可能有用,因为 OpenGL 不是那么直观,您需要一些时间来结交朋友。我确实在 iPhone 应用程序中直接使用 OpenGL 绘制了多个带有缩放、着色等功能的图形,但这是一个纯粹的研究项目,可移植性不太重要。

    (2) 将 OpenGL 与 GUI 元素混合

    基本上不可能在 OpenGL 视图中显示标准 UIButton。但是您可以拥有 OpenGL 视图和常规 UI 视图并在它们之间切换。我不知道有任何工具可以让您同时进行基于 OpenGL 的工作和常规的 GUI 编程,并进一步独立于平台。

    因此,一方面您需要在您选择的工具中创建您的 3D 内容,然后集成原生 UI 代码。对于 Unity 和 iOS,有一些资源如何做到这一点 How to access Unity assets natively on Android or iPhone?Mixing Unity generated code with Objective-C in iOS?

    另一方面,您将需要一个独立于平台的框架来完成常规的 GUI 编程,以便您可以在 Android 和 iOS 上运行它。我不熟悉这个主题,但我听说过基于 Mono 的框架。

    【讨论】:

    • 澄清一下,我不想在 3d 视图中显示 iOS 或 android 控件,而是在它周围显示:用户界面将是原生的,3d 部分将包含在一个视图中。这会让集成 3d 引擎更容易吗?
    • 复杂的 3D 世界:是的,因为模型集成。仅绘制函数图:视情况而定,因为即使 3D 引擎也有学习曲线,它们最适合建模场景,即它们不是专门用于绘图区域,尽管应该是可能的(s.forum.unity3d.com/threads/40787-Can-we-draw-graph-in-unity)。请注意,我只使用过 Unity3D 和一点点 SIO2
    • 是否可以共享您创建的应用程序的代码?我不会直接使用它,但也许它可以让我知道哪种方式更适合。 3d 内容仅由柱状图的圆柱体和一些折线图组成。
    • 有关内容的研究与 NDA 相关。但我要看看纯图形部分,也许我可以提取一些类(本机 Obj-C)。有一个样本 developer.apple.com/library/ios/#samplecode/AccelerometerGraph/… 。它不使用 OpenGL,而是使用 Quartz2D
    • 我认为这对你来说几乎没用dl.dropbox.com/u/658954/GLGraphClasses.zip 但是方法渲染中正确的步骤顺序可能很有趣。请注意,我有传感器数据的持续输入和对性能的强烈需求,这就是我使用这种滚动数组方法的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多