2011-12-13 85 views
4

对于我的新应用程序,我希望拥有原生的iOS或Android用户界面,以及显示某些图形的3d视图。虽然我最初的计划是在WebView中使用CSS转换以获得所需的3D效果,但由于性能并没有接近可用,因此我失败了,因此我正在寻找其他解决方案。这里是什么,我觉得我的选择是:嵌入iOS/Android-View的跨平台3D引擎?

1.重新创建的场景在OpenGL ES
我完全重建我们的图形引擎在OpenGL。这当然是可能的,但对于像我这样从未从事3D编程的人来说,这可能很难做到。是否可以将用于iOS的OpenGL代码移植到Android?或者我需要创建两次引擎?像Unity3d

2.使用现成的3D引擎我绊倒在Unity3d,果酱和类似工具,可能会帮助我更轻松地创建的3D场景。但是,乍看之下,我似乎必须在相应的创作系统中创建整个应用程序。除了三维视图之外,我会使用本地控件。这些工具有可能吗?如果是,是否有可能将iOS从iOS移植到Android,反之亦然?

我问了正确的问题;我做了正确的假设吗?有什么事听起来不对吗?我错过了什么?

这些都是我的选择吗?或者还有其他的东西,混合解决方案?

我应该选择哪个选项?为了澄清,我不想在3d视图中显示iOS或Android控件,而是在它周围显示:用户界面应该是原生的,而3d部分将包含在一个视图中。

回答

2

相当复杂的一个;-)

(1)的OpenGL与发动机:

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

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

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

(2)混合与GUI元素

的OpenGL基本上它是不可能的一个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的框架。

+0

为了澄清,我不想在3d视图中显示iOS或Android控件,而是在其周围:用户界面应该是原生的,而3d部分将包含在一个视图中。这将使整合3D引擎更容易吗? – winsmith

+1

复杂的3D世界:是的,因为模型整合。功能图仅用于绘图:取决于3D引擎的学习曲线,它们最适合模拟场景,即它们不是专门绘制绘图区域,尽管它应该是可能的(s。http://forum.unity3d.com/线程/ 40787灿我们绘制,图形功能于统一)。请注意,我只体验过Unity3D和SIO2的一小部分 – Kay

+0

是否可以共享您创建的应用程序的代码?我不会直接使用它,但也许它可以给我一个想法,哪种方式更适合。三维内容除了柱状图以外还有一些线图。 – winsmith