標籤:
原文: 增強現實 colAR Mix 淺析
在論壇上看到大家對於 colAR Mix 這款增強現實應用是如何?的高度興趣。我就從我理解的角度為大家淺析一下。 大家對增強現實的實現原理一定不陌生,利用演算法定位環境或物料。這是技術基礎,想要將虛擬資訊疊加到現實環境或物體上少不了這步。然後我們會試圖用許多方式來增強物料與疊加資訊的聯絡,這部分屬於互動。比如,視頻的第一幀與物料相同,給物體添加陰影,從物料中鑽出來等等。再則就是從環境與物料中擷取資訊與虛擬資訊產生互動,比如識別手勢。colAR Mix 就屬於從物料中提取資訊。下面我們就來看看如何?這一效果吧。
基礎知識紋理座標與貼圖
盜來一張圖來簡單說明一下,3D 模型在製作貼圖的時候都需要將模型展開到平面,在平面上模型每個頂點所對應的座標就是紋理座標了。而紋理貼圖就是給這個平面上完顏色畫完畫所產生的圖片。那麼問題來了,模型展開到平面後樣子是不是一定會很糾結呢?答案是紋理座標是可以調整的,而且在各類 3D 建模軟體中展開的方式有許多種。所以 colAR Mix 中得物料圖很可能就是物料圖片。
Camera-target-patch
翻譯過來不知道是不是叫相機物料遮罩,但目的就是想使用相機捕獲的畫面來做為紋理。這個方法在 AR 中使用的還是很普遍的,比如 Taggar 中的水波紋效果,《東京新聞》中的翻轉效果等等。在 vuforia 上翻了翻,以前有一篇文章專門講這個技術的實現的,現在文章的連結斷了看不了,所以只能通過網上零零碎碎的資訊弄了。
製作模型
我這裡做模型使用了 Blender,這是一款免費的軟體,國外用的人比較多。
關於 Blender 的基本操作大家可以到 Youtube 上找視頻來看。中一個是物體的編輯介面,一個是紋理座標的編輯介面。為了簡單我這邊只展開了三個面,並改變成了右面的樣子。最後將模型匯出成 fbx 檔案。
為了不弄錯頂點相對應的位置,我弄了一張貼圖做測試。這裡應該有更方便的方法,不過我 3D 設計沒怎麼做過,所以只能用笨辦法了。
物料製作
由於我們的立方體實在是太簡單了(colAR 中的填色圖片複雜度足夠),如果直接把它作為物料圖的話一定識別不了,所以我為它增加了一張圖片。
Unity 配置
將我們製作的 fbx 模型匯入 Unity 工程,可以把它的 Material 改為 Diffuse,然後把貼圖換成我們的物料圖試試,看看是否正確。除了我們的模型之外我們還要添加一個透明的平面來標記物料圖在哪裡,我們將它設定成位置大小與物料圖一樣。最後的配置如。
代碼
首先我們修改一下 vuforia 官網上 CameraImageAccess 的代碼
========
這裡是代碼,特喵的複製不過來
========
其中 mPlane 使用配置中的 Quad。這個指令碼的作用是擷取相機捕捉到的圖片並把它作為紋理傳給我們的著色器。而我們需要的紋理並不是整個相機捕捉到得畫面,所以我們需要用一個 shader 來計算真正的紋理座標從而擷取到正確的紋理。
========
這裡是Shader "Custom/CameraTargetPatch"
========
建立一個 material ,將 shader 應用到上面。最後把指令碼和 material 都使用到我們的 Cube 上運行代碼,看看效果是不是很棒~。
[轉] 增強現實 colAR Mix 淺析