天天看點

足不出戶,一探古今,打造線上3D數字博物館!

随着3D技術的不斷革新,為了讓更多的使用者領略曆史之美,越來越多的博物館開始舉辦線上展覽。通過模拟不同的環境、燈光投影、360°無死角放大縮小展品,觀衆可以享受到身臨其境的沉浸體驗。不僅如此,給展品加上BGM或者語音解說,幫助觀衆更加了解展品的詳細背景,讓示範場景更有代入感。

足不出戶,一探古今,打造線上3D數字博物館!

看完如此逼真的效果展示,是不是想知道究竟是怎麼實作的呢?

通過Android Studio的Kotlin工程實作 3D場景建構、物品展示以及聲音播放功能,就可以做到。

華為移動服務最新開放的3D物體模組化服務(3D Modeling Kit),助力輕松模組化。我們隻需使用手機相機,通過拍攝物體的不同角度圖像,便可實作物體的3D幾何模型和紋理的自動化生成,為應用提供3D模型建構、預覽等能力。具體操作指導可參考《5分鐘給商品建立3D模型,我是如何做到的?》

足不出戶,一探古今,打造線上3D數字博物館!

接下來我們将準備好的展品3D模型,通過華為圖形引擎服務建立一個可互動的3D物體視圖,如圖所示:

足不出戶,一探古今,打造線上3D數字博物館!

↓↓↓

足不出戶,一探古今,打造線上3D數字博物館!
足不出戶,一探古今,打造線上3D數字博物館!
足不出戶,一探古今,打造線上3D數字博物館!

軟體要求:JDK1.7及以上版本

• minSdkVersion :設定為19或以上

• targetSdkVersion:設定為19或以上

• compileSdkVersion:設定為19或以上

• Gradle 3.5及以上版本

在build.gradle檔案中配置以下内容:

在應用級build.gradle檔案中配置以下内容:

build.gradle檔案同步完成後,就能在工程中使用圖形引擎服務了。

本文中,我們僅需要使用該服務即可展示物品的3D圖像,并且與之進行互動。如果還需要使用其他功能,可以參閱華為圖形引擎服務官方文檔。

建立自定義視圖的目的很簡單,確定視圖初始化完成後,第一個模型能自動加載到視圖裡。通過預設的SceneView手動實作模型加載,如下所示:

展示物品需添加相關模型檔案,打開工程檔案夾,在“src/main”路徑下建立“assets”檔案夾,将3D模型檔案儲存,比如:

足不出戶,一探古今,打造線上3D數字博物館!

surfaceCreated中的loadScene()、loadSpecularEnvTexture()和loadDiffuseEnvTexture()方法用于加載物品。建立surface後,第一個物品将加載到surface中。

接下來,打開用于展示3D模型視圖的XML檔案,本工程中為activity_main.xml。在該檔案中,建立剛才構造的CustomSceneView。下方代碼使用了箭頭圖檔用以在不同的物品模型間切換。

一切準備就緒,應用打開之後就能看到第一個展品:青花瓷花瓶了。

現在,我們通過切換功能來檢視多個展品3D模型。

在MainActivity中,配置如下資訊:

在onCreate()中,建立了一個簡單的邏輯,檢視下一個/上一個模型。物品檔案路徑以字元串的形式儲存于各個寫死清單中。可以自行修改這個邏輯,使模型呈現更富動态。其中selectedId表示正在展示的物品模型ID。

這樣,就實作了利用SceneView來展示3D模型,效果如下:

在加載不同的3D模型時,我們可以通過華為音頻服務播放該展品對應的講解詞,為使用者提供展品詳細介紹。

內建華為音頻服務

軟體要求:

• JDK版本1.8.211及以上版本

• minSdkVersion:設定為21

• targetSdkVersion:設定為29

• compileSdkVersion:設定為29

• Gradle 4.6及以上版本

可以看到,音頻服務相較于圖形引擎服務軟體要求更高,是以我們需要確定滿足音頻服務的使用要求。

首先,打開應用級build.gradle檔案,添加音頻服務的相關配置。

之前在配置圖形引擎服務時,已經添加了必要的庫,是以項目級build.gradle不需要改動。

在activity_main.xml檔案中,添加一個簡單的播放按鈕。

這個按鈕可以用來為展示中的物品播放聲音。

然後,在MainActivity中添加以下配置:

上述配置添加完成後,就能為展品播放講解詞了。本工程使用的聲音音頻為線上資源。如果需要播放本地音頻,可以參考官網指導。這樣,就能導入音頻檔案,為物品播放聲音了。

至此,我們就可以建立一個360°可旋轉、放大縮小、帶有音效的展覽場景了。

最後,除了3D文物展示等應用場景,我們還可以把這些能力應用到很多相關行業,比如:

線上社交領域中的臉萌、視訊表情包、視訊虛拟背景;

電商購物領域的3D商品展示、家裝場景渲染、AR試穿;

影音領域的3D解鎖屏保/手機主題、3D特效渲染、直播表情包;

教育領域的3D教學、3D書籍、VR遠端教學。

欲了解更多詳情,請參閱:

3D物體模組化服務 、 示範DEMO

華為圖形引擎服務官網 、 示範DEMO

華為音頻服務官網 、 示範DEMO

華為HMS Core官方論壇

解決內建問題請到Stack Overflow

點選關注,第一時間了解HMS Core最新技術~