2010-10-18 71 views
1

我有兴趣开发一个Android应用程序,该应用程序将显示某种类似Google地球的地球仪。3D引擎对我做什么?

我从来没有用过opengl或者有任何图形编程的经验,所以我在这里学习一些基础知识。现在,我知道有像Unity或Ogre这样的帮助促进图形的东西,但是从使用这些引擎而不是仅仅使用opengl api渲染图形,我究竟得到了什么?你为什么使用Ogre等引擎而不是直接使用opengl?

+0

你可能想使用OpenGL或某些特定的显示地球仪不是3D引擎服务。 – 2010-10-18 03:15:24

+0

你能详细说说为什么我要opengl而不是3d引擎吗? – RandNine 2010-10-18 03:28:40

回答

3

创建图形应用程序不仅仅是一个3D库还有很多。

库,比如OpenGL绘制图形硬件的特定硬件功能(以及仿真软件不支持的功能),但是这仅仅是个开始。

首先,你需要管理你的对象。您需要找到一种方法将它们从您的3D软件(Maya,Max,Blender)转换为您希望将它们存储在应用程序中的任何数据格式,并且您需要使用控制结构以某种方式将它们存储在应用程序中。

您需要转换它们,为它们设置动画效果,为它们蒙上皮。你需要一个场景管理来轻松地剔除锥体外的物体。你需要一个摄像头并移动它。

您需要处理照明,光源。你需要处理渲染过程,比如光线传递,影子传递,反射传递。

然后,你需要一些好着色器,一些支持像漫图,法线图,镜面地图,环境遮挡图,光图,该支承点灯,方向灯,投光灯的特性。

您需要管理纹理,将它们流入和流出并应用到模型中。

所以......这些都是3D引擎包为你做的一些事情。还有更多。

编辑:这就是说,如果你想要的是显示地球,用一个成熟的发动机是矫枉过正。为此,您需要类似OpenGL的东西,创建一个地球模型(=简单的球体),为其应用纹理,设置一两个光线并渲染它。

+0

对于包含3D引擎的优秀书籍或学习材料,您有什么建议吗?我特别感兴趣的是你在上面描述的方面,但没有涉及到游戏,因为我发现大多数3D引擎材料涵盖游戏方面。我想呈现地球仪,让用户轻松导航地球仪,放大和缩小,并将各种标记放置在表面上,以表明地标等不同类型的信息。 – RandNine 2010-10-18 03:26:56

+0

有趣的是,如何在3D引擎中“皮肤化”一个对象与真实世界中的对象*相反。 :) – Arafangion 2010-10-18 03:30:10

+0

@Rand:听起来好像OpenGL是适合你的方式 - 特别是在Android上,你想保持一个小配置文件,并且不要用一个只能使用5% 。至于书籍 - “有那么多”,但我不知道推荐哪些书。我个人建议从简单的OpenGL演示开始。好消息是,您可以使用PC的通用OpenGL示例(因为其中有很多),然后在熟悉OpenGL后再查看Android特定的内容。 – EboMike 2010-10-18 03:50:46

0

一个3D引擎将帮助你一些事情:

  • 他们通常配有预定义的数据格式,所以你不必创建你的。有时候,他们还会提供带有很好界面的工具,帮助您创建3D对象。或者,他们可以加载或转换流行的文件格式,以便您可以使用流行的工具来创建3D。
  • 他们来与渲染循环和事件循环,所以你不必实现这些。这往往比自己做的更容易。
  • 他们提供了已经编写的算法去做隐藏的表面去除。
  • 它们具有高级功能,可以轻松地为您提供的对象执行复杂的操作。