Google ARCore 突破次元壁
最近 Google 發布了 ARCore,雖然好久不做 AR ( 增強現實 )方面的工作了,看著 ARKit 和 ARCore 接連發布不免有些手癢,所以抽空玩(折)耍(騰)一下。
構想
需求很簡單,就是能夠在短時間內完成並且能夠體現 AR 效果的作品。就目前來講,AR 在手機上的交互體驗並不理想,手機畫面在動,另一隻手還要戳中移動畫面中的物體實在是太反人類了。所以通常 AR 應用會做成 多觀察 少交互 的方式,其中 3D 動畫與 AR 結合是最常見的展現手法( 比如 Apple ARKit 發布會 中的效果 )。
https://www.zhihu.com/video/888208142792536064要自己做出酷炫的 3D 動畫是不可能了,但我之前接觸過在 3D 動畫中比較有表現力的 MMD( MikuMikuDance )。而且印象中只需要在 Unity 中做一些簡單的編輯就可以,感覺一兩小時應該就能搞定吧。然而現實是總是比想像不給力。。。
站在大神的肩膀上
關於 MMD 的信息網上很多,是一款 3D 動畫編輯軟體,強大的網友們藉助它完成了很多的作品( B站自尋 )。但是 MMD 編輯器使用的文件格式都比較特殊,所以要把模型和動作搬到 Android 上運行我們需要 Nora 大神開發的 Unity 插件 MMD4Mecanim。插件的主要功能是把 MMD 中的模型與動畫文件轉換成 Unity 可以使用的 fbx 格式,加上一些控制面部表情、骨骼、動畫、物理效果的腳本。
然而可能是由於一些人把更改過的模型用作商業用途,作者在最新版本的插件中做了限制,不讓你在 Android 環境導出工程。估計應該可以 Hack,但不會,所以只能使用比較老的版本( 這時候論保留版本的重要性~ )。
下一個坑就是 ARCore 需要最新版本的 Unity 的支持,而老版本的 MMD4Mecanim ( 我用的是 20150405 的版本 )在新版本的 Unity 上會報錯。大致上要做以下三個修改:
// 文件 MMD4MecanimEditorCommonn// return modelImporter.globalScale * modelImporter.fileScale;nreturn modelImporter.globalScale * 1;nn// 文件 MMD4MecanimImporter 兩處錯誤直接注釋掉n
當然在最後能夠正常顯示模型前還是遇到不少問題,最後能夠在 Unity 2017 版本上正常運行動畫時真是。。。
成果展示
上圖為截取畫面,下面的視頻比較大最好在 Wi-Fi 下觀賞~
https://www.zhihu.com/video/888512769127755776後續想法
- 這個 Demo 只使用了 ARCore 提供的平面信息。之後可以看看對 Point Cloud 還能夠有什麼操作。
- 按照 MMD 不同的人物組合、配飾組合,加上不同的現實場景可以組合出很多 AR 作品。而製作成本相對於從頭做模型來得低很多,當然製作的東西很多是不能商用的。
- 觀賞性質的作品,虛擬物體 與 現實 的融合度很重要。可以調整的元素包括 陰影、光照角度。如果預先知道場景的話,可以放置透明的遮擋物來模擬現實物體。
- 可以加入適當的 AR 特效,目前 AR 特效中比較有表現力的是利用上攝像頭捕捉到的畫面。比如透明模型折射後面的場景,或者將場景扭曲變化。
- 自從 ARKit 發布以後出現了不少相關的點子,虛擬米尺、任意門、虛擬寵物等等作品,在 這裡 你也能看到一些關於 ARCore 的實驗性項目。個人覺得在 AR 的新載體和交互還沒有突破之前,AR 的功能大多還是以展示為主。
====================================================================
ARKit 發布會:https://www.youtube.com/watch?v=S14AVwaBF-Y
MikuMikuDance:MikuMikuDance - Wikipedia
MMD4Mecanim:http://stereoarts.jp/
ARCore 實驗項目:https://experiments.withgoogle.com/ar
推薦閱讀:
※如何評價 Lumia 830 被刷上 Android?
※如何理解Context?
※Skia圖片解析流程與圖片編碼原理初探
※[譯] 網路請求框架 Retrofit 2 使用入門