跨平台3d引擎要嵌入iOS / Android-View?

win*_*ith 5 3d android cross-platform unity-game-engine ios

对于我的新应用,我想要一个本机iOS或Android UI,以及一个显示一些图形的3d视图。尽管我最初在WebView中使用CSS变换来实现所需3d效果的计划失败了,因为性能几乎无法使用,但我正在寻找其他解决方案。我认为这是我的选择:

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

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

我问正确的问题了吗?我做出了正确的假设吗?您听起来有什么毛病吗?我错过了什么?

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

我应该选择哪个选项?

编辑:为澄清起见,我不想在3d视图内显示iOS或android控件,而是围绕它:用户界面是本机的,而3d部分将包含在一个视图内。

Kay*_*Kay 2

相当复杂的一个;-)

(1) OpenGL vs. 引擎:

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

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

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

(2) OpenGL与GUI元素混合

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

因此,一方面,您需要在您选择的工具中创建 3D 内容,然后集成本机 UI 代码。对于 Unity 和 iOS,有一些资源 如何操作如何在 Android 或 iPhone 上本地访问 Unity 资源?或者在 iOS 中将 Unity 生成的代码与 Objective-C 混合?

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