Android 3D引擎能为我做什么?

Android 3D引擎能为我做什么?,android,graphics,opengl-es,3d,Android,Graphics,Opengl Es,3d,我对开发一个android应用程序感兴趣,它将显示一个类似谷歌地球的地球仪 我从未使用过opengl,也没有任何图形编程的经验,所以我来这里学习一些基础知识。现在,我知道有些东西像Unity或Ogre有助于简化图形,但与仅使用opengl api渲染图形相比,使用这些引擎究竟能带来什么好处呢?为什么要使用像Ogre这样的引擎而不是直接使用opengl?创建图形应用程序要比创建3D库多得多 像OpenGL这样的库映射图形硬件的硬件特定功能(以及模拟软件中不支持的功能),但这只是开始 首先,您需要管

我对开发一个android应用程序感兴趣,它将显示一个类似谷歌地球的地球仪


我从未使用过opengl,也没有任何图形编程的经验,所以我来这里学习一些基础知识。现在,我知道有些东西像Unity或Ogre有助于简化图形,但与仅使用opengl api渲染图形相比,使用这些引擎究竟能带来什么好处呢?为什么要使用像Ogre这样的引擎而不是直接使用opengl?

创建图形应用程序要比创建3D库多得多

像OpenGL这样的库映射图形硬件的硬件特定功能(以及模拟软件中不支持的功能),但这只是开始

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

您需要对它们进行变换、设置动画和蒙皮。您需要一个场景管理来轻松剔除平截体外部的对象。你需要一个照相机,把它移开

你需要处理照明,光源。您需要处理渲染过程,例如灯光过程、阴影过程、反射过程

然后需要一些好的着色器,一些着色器支持漫反射贴图、法线贴图、镜面反射贴图、环境光遮挡贴图、灯光贴图等功能,这些着色器支持点光源、平行光和聚光灯

你需要管理纹理,将它们流进流出,并将它们应用到你的模型中

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


编辑:也就是说,如果你只想显示一个地球仪,那么使用一个成熟的引擎就太过分了。为此,您需要类似OpenGL的东西,创建一个球体模型(=简单球体),对其应用纹理,设置一两盏灯,然后进行渲染。

3D引擎将在许多方面帮助您:

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

您可能想使用OpenGL或某些特定于显示地球仪的服务,而不是3D引擎。您能否详细说明我为什么想要OpenGL而不是3D引擎?您对涵盖3D引擎的好书或学习材料有何建议?我特别感兴趣的方面,你上面描述的,但不是那么多的游戏一般,因为我发现大多数三维引擎材料涵盖了游戏方面。我想渲染一个地球仪,让用户轻松导航地球仪,放大和缩小,并在表面上放置各种标记,这些标记可以指示不同种类的信息,如地标。有趣的是,在3D引擎中“蒙皮”对象与真实世界中的意思相反。:)@兰德:听起来OpenGL仍然是一条适合你的路——尤其是在Android上,在Android上,你希望保持一个小的配置文件,而不是让你的应用程序负担一个只需使用5%的引擎。至于书——“外面的书太多了”,但我不知道该推荐哪一本。就个人而言,我建议从简单的OpenGL演示开始。好消息是,你可以在PC上使用一个通用的OpenGL示例(因为有这么多),然后在你熟悉OpenGL后再看看Android特定的东西。要详细说明更多内容,你需要做的主要事情是了解3D渲染的基础知识(视口、矩阵、模型)。请参见如何在OpenGL中进行操作(设置视口、渲染三角形、变换三角形)。Android也有很多很好的例子(甚至有一个应用程序可以演示基本功能!)。