2011-12-13 43 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