ETH官方钱包

前往
大廳
主題

[AI應用&Unity]AI相關的研究筆記-AR Foundation與VRM和Vtuber-part3

狂戎 | 2024-11-13 20:31:34 | 巴幣 0 | 人氣 11

接續之前的研究筆記~


從上次的筆記中,我們已經可以做到臉部辨識的功能

只是我發現有個東西漏講了


要把朝向的方向改成User

原本預設是World是給AR比較方便使用的

我們要用臉部辨識的話還是自拍鏡頭比較合適(不然操作+看不到畫面會有些困擾)

之後透過AR Foundation內建的AR Default Face來顯示出辨識的臉型

當然只是要偵測的話AR Default Face並不是必須的,這只是方便驗證實際的顯示結果

那研究到這邊之後,可能就可以開始發想一下能做什麼應用

畢竟很多東西都是實際使用時去遇到問題然後解決,透過這個循環來更熟悉各種技術

首先,先前有個問題,就是假設不顯示攝影機的背景後,臉部辨識會相反的狀況

相反的意思主要就是你現實中往,在APP中的臉部辨識卻是往的狀況

這邊提供幾個思路,首先第一個方案是找到臉部辨識中輸入影像的位置

然後將輸入的像素左右顛倒,那輸出的影像自然左右就會對調,就能生成正確的結果

第二個方案找到輸出辨識後結果的地方,並將輸出結果左右對調,這樣也能得到想要的結果

第三個方案呢...雖然是我這邊使用的,算是有點偷懶的方式

只是好處就是完全不用去找第一個跟第二個方案的輸入或輸出口(因為包在插件內,要找應該要花些時間,甚至可能無法修改)


我們先回到AR Camera

上次說過,預設AR Camera Background是開啟的狀態

那主要功能是提供攝影機照到的背景,他還有額外的功能就是對影像對位有輔助功能

也就是說他會處理自拍鏡頭造成的左右相反(為了要符合真實影像的位置)

所以會讓我們臉部辨識的位置設定正確

而我們想要的臉部辨識,並不希望顯示攝影機的真實影像

這時候就可以觀察到AR Camera Background腳本有提供了自定義材質的功能


首先打勾看一下,可以吃材質球

這邊想必大家也能想到無數種解答方式了

我是直接使用了一個透明的Shader來讓影像消失

這邊提供語法

生成步驟在專案的地方滑鼠右鍵選Create>Shader>選哪一種都可以反正內容會全刪掉

準備好Shader後準備材質球,一樣步驟Create>Material

選擇剛剛生成的材質球,把Shader設定上去


這樣就大功告成,把這顆材質球拉上去


這樣就能達到效果了,這就是方案3的部分

當然AR Foundation的腳本並沒有包在dll中,所以是可以輕鬆修改的,所以相關方案也一併提供

那也許三個方案還不夠,這邊繼續提供其他的方案

第四方案,直接把你要操作的模型的Scale的X改成-1,針對某些狀況就能直接有效的把左右相反(如果無效可以嘗試其他方案)

第五方案,如果把臉部辨識的模型單獨使用一個攝影機,就能對攝影機加上鏡像的效果,也能解決問題

當然如果UI不分開的話就會連UI一起被鏡像,效果就不好了,所以要拆分

這邊畢竟牽扯到程式碼邏輯了,所以解決方案可說是千千百百種,可以挑一個想要的去實作。

臉部辨識的專案可以說是暫時告一段落

經過簡單的應用發想後,首先自然是想到各種惡搞臉部辨識的圖形APP

只是覺得這塊還缺點什麼,所以改成也相當熱門的Vtuber相關APP呢?

這塊的目標就比較明確了

首先,這邊就可以先建立第三專案(新的空專案)

因為預想中的設計,第一專案這個臉部辨識功能是靠手機去辨識

之後資訊可以傳回PC做處理的,那PC端的接收我們就建立一個第三專案來處理

而既然牽扯到Vtuber相關的設計,首先查找相關資料是必須的

先準備一些Vtubre使用的資源

首先是模型需要的話VRoid studio使用這個

當然有很多其他軟體也能使用,這款是因為免費,而且也算是有不少推薦


官方網站,下載後可以直接使用,並且看起來他本身應該也是Unity寫的


簡單的研究一下操作方式

生成角色的方式也相當簡單

當然這塊都只是在準備Vtuber使用的"模型"

所以任何可以達到此方法的手段都可以,包含可以直接去Asset Store下載(購買)一個3D模型也可以


製作好模型後可以輸出成VRM模型

這個就是你角色模型的資料

那這邊為了讓接下來的演示稍微好看一點

直接使用了Booth販售(也有免費)的模型

Booth網址

那畢竟這邊使用的是VRM格式,要匯入到Unity中使用必須有額外的插件

這邊提供一個UniVRM


這邊是其Github網頁,點選右邊的Release

找到符合自己的版本跟URL

如果URL匯入方式不行的話就直接下載Package包匯入

我使用的版本是VRM-0.127.2_e16c


在剛剛創建的第三專案中匯入

匯入好插件後,就可以把角色模型也丟進專案了



這樣Unity內就能正確的加載模型資料了


接著就能測試的把模型拖到場景內


在場景中觀察一下

那因為VRM本身沒有包含動畫資訊,所以播放也會維持T Pose

那為了測試角色是否能正常動作,簡單的找個動畫來播放

這邊也是可以使用任意方式,有非常多方法都能找到動畫來播放

簡單的提供一個從Asset Store上找任意有3D模型的插件,免費的就有很多可以選了


這個裡面就有提供了一些動畫

又或是使用Unity的AI動畫生成器Unity Muse Animate生成一個屬於自己的動畫


這邊有動畫之後,可以發現角色預設上是沒有Animator

可以透過點右鍵Create>Animator這樣建立

那我是用另一種偷懶的方式,直接拖曳這個Animation,拖曳到你的模型上層後放開

這樣就會自動建立一個Animator在角色身上,檔案名稱會跟你角色名稱相同


可以看到這邊就冒出來了,而且動畫也會幫你自動接上

這時候在Unity中play就能看到角色會idle動作了(或是你們自己放的任何動畫)


那此時這個模型就已經可以在Unity中做到許多事情了

對模型進行一些操作的設計就能研究很久了

像是做各種動畫,或是對表情進行一些操作


要對表情進行操作,我們可以先選到Face


接著展開BlandShapes,底下就有各種預設的表情參數

可以調整一下觀察場景中的角色表情的變化


例如我把這個ALL_Joy的選項調整到60


角色臉部就會有明顯的變化

不過此時大家應該也會發現,假如按下Unity的Play

角色的表情數值可能會有一部分程度的重設,並且某些數值都無法從編輯器中調整

那這塊的話就留到下次的筆記之中

這次的筆記就先到這邊告一段落

因為從這邊就開始會進入稍微多一點的程式碼了

從程式碼中控制表情

最後補充:

如果想要臉部辨識,方法的確很多,而且也有不少直接透過外接攝影機的辨識方案

但是這邊是想用手機上的輔助,手機都有對臉部辨識有加強的輔助設計,相對透過外接攝影機能消耗更少的效能

當然有輔助就會有限制,像是Android相對有更多的限制,精度上也不如IOS的輔助

算是個使用上能注意的點,如果是有什麼特殊需求,不妨先看看網路上一些使用後的效果分享再決定要使用哪種方式
送禮物贊助創作者 !
0
留言

創作回應

更多創作