2010-10-18 35 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。
  • 他們來與渲染循環和事件循環,所以你不必實現這些。這往往比自己做的更容易。
  • 他們提供了已經編寫的算法去做隱藏的表面去除。
  • 它們具有高級功能,可以輕鬆地爲您提供的對象執行復雜的操作。