周慶偉,陳衡,高藝
(1.四川旅游學院,四川 成都 610100;2.杭州玳數(shù)科技有限公司,浙江 杭州 310000)
非物質文化遺產的數(shù)字化保護是當今研究的熱點,隨著數(shù)字技術的不斷發(fā)展以及十八大以來,黨中央對文化建設高度重視,相關研究逐漸開始將研究傾向于非遺的數(shù)字化呈現(xiàn)。作為中國四大菜系之一的川菜,是我國重要的非物質文化遺產,通過虛擬現(xiàn)實相關技術對其進行VR可視化開發(fā)具有川菜文化傳承現(xiàn)實意義。并且,目前并沒有相關針對川菜烹飪流程的虛擬現(xiàn)實仿真實現(xiàn)案例,因此具有一定的實踐研究價值。
系統(tǒng)需要實現(xiàn)基于物理的實時渲染模擬,真實地還原川菜烹飪過程的全部流程,并實現(xiàn)沉浸的交互。具備完整的回鍋肉和麻婆豆腐的VR烹飪操作流程節(jié)點。
通過3D UI實現(xiàn)外部視頻橋接,并提供VR環(huán)境下的視頻教程演示。
需要結合HVC VIVE進行體感設計和模擬,在VR環(huán)境下實現(xiàn)菜品的切割、翻炒等烹飪動作,并通過VR空間識別,判斷操作是否合理。
系統(tǒng)設計架構如圖1所示。
圖1 VR川菜烹飪可視化交互系統(tǒng)設計架構
相關研究使用UNITY3D或者UE4進行VR系統(tǒng)開發(fā),本文結合UE4實現(xiàn)VR系統(tǒng)開發(fā),由于模擬環(huán)境是室內小空間,且空間要素較為豐富,因此項目對UE4的直接光照著色器模擬、間接光烘焙做烘焙處理,保證模擬幀數(shù)。
程序化建模是基于同類別模型及材質的批量化程式處理,并實現(xiàn)計算機自動三維建模,這有助于重復單元的快速建模。系統(tǒng)中烹飪的菜品為可編輯頂點模型,并在烹飪階段呈現(xiàn)出不同的模型狀態(tài),因此在對食材切割、烹煮、反拆過程需要不斷改變三維模型的空間形態(tài)、材質狀態(tài)等,同時菜品模型為重復單元,因此可以批量化拓撲以提高模型運算速度。
本系統(tǒng)的三維建模包括硬表模型和可編輯頂點模型,其中場景為硬表面模型,菜品和水體為可編輯頂點模型,流體為粒子模擬。
系統(tǒng)包括1個UE4關卡,不同烹飪流程在同一關卡完成,因此只制作1個VR場景,技術流程為CAD平面設計后進行3D MAX模型制作,并結合rizomuv完成uv制作,保證材質的空間映射,最后進行3D MAX材質重繪并輸出FBX,進行UE4導入測試,檢驗并更新模型。步驟如圖2所示,平面布置如圖3所示。
圖2 場景搭建步驟
圖3 VR川菜烹飪場景平面布置
3.2.1 程序化建模
Houdini可以實現(xiàn)非線性過程化生成流程,過程中的幾何物體的各種信息對用戶完全開放,且所有步驟通過邏輯性節(jié)點記錄,對上游節(jié)點的操作會直接引起下游節(jié)點的變化,所以可以做到制作流程的全程可追隨,用戶可以用SOP Node或者VEX語言對幾何物體信息進行讀寫操作,可以服務本項目部分模型的程序化建模。比如“麻婆豆腐”的制作,可以先用BOX Sop制作一個正方體模型,再通過Iso offset Sop將模型轉化為體積,然后通過Scatter Sop對體積范圍內進行隨機撒點。再對每個點進行隨機得屬性賦予,如“tofu”“hot pepper”“Onion”,再根據(jù)屬性進行模型代理。關鍵代碼如下:
//run over point
Float seed = rand(chf(“attrbseed”)+@ptnum);
If(seed<0.25){s@type = “tofu”;}
Else if(seed>=0.25&&seed<0.5){s@type = “Onion”;}
Else if(seed>=0.5&&seed<0.75){s@type = “pepper”;}
Else if(seed>=0.75){s@type = “other”};
// run over detail
3.2.2 程序化紋理
使用Substance Designer制作紋理。川菜食材本身的材質具有不規(guī)則性,可以使用噪波的混合,求出與食材表面近似的高度圖,再通過拾色器拾取現(xiàn)實中食材照片的漫反射顏色,根據(jù)高度圖后續(xù)計算出的表現(xiàn)Diffuse Color分布的灰度圖,進行0~1的重映射,得到食材表面的漫反射顏色貼圖,最后調整食材的Metallic與Roughness,使其在渲染表現(xiàn)下實現(xiàn)基本的物理正確。圖4為食材程序化紋理制作演示圖。
圖4 食材程序化紋理制作演示
以麻婆豆腐為例將3.2中制作出的基礎模型根據(jù)其連接性進行Pack,Pack結果為豆腐加上各種調味料的總數(shù)量,并將其導入DOP之中,DOP系統(tǒng)中可以賦予物體以物理效果,最后計算出來的結果就是一個按照物理規(guī)則裝盤的“麻婆豆腐”
Vertex Animation Texture技術可以將幾何體動畫信息烘培到一張圖片的每個像素之中,通過RGB的數(shù)據(jù)結構來存儲動畫,即通過圖片記錄動畫?!疤摂M川菜廚房系統(tǒng)”通過了Houdini Labs工具包中Labs Vertex Animation Texture OUT Node將食材在油鍋中的一些頂點抖動動畫烘培成了貼圖。再到引擎中對該貼圖進行采樣,通過Vertex Shader對模型頂點做相應處理,還原動畫。
4.3.1 計時器制作
基于UE4,通過Set Timer By Event節(jié)點綁定對于時間處理的Event Function,設置Set Timer By Event間隔為1s,并勾選loop變量,使其每1s執(zhí)行一次該節(jié)點所綁定的Event Function,該Event Function執(zhí)行內容為對整形變量time以1s為單位遞增,與此同時將改變量附加給UMG模塊之中,使其在世界空間執(zhí)行渲染,然后使用Get Actor Location獲取到計時器實體的世界空間坐標與HTC VR頭盔的世界空間坐標。再使用Look At函數(shù)使計時器在世界空間所渲染的實例始終對準玩家。核心代碼如下:
FTimerHandle Timer; void EvnetFunction;GetWorldTimerManager() . SetTimer(Timer, this,&ATimerFunction: :EventFunction, 1.0f, true,10. 0f);template<class UserClass> void SetTimer
(FTimerHandle & InOutHandle,
UserClass * InObj,
typename FTimerDelegate: :TUobjectMethodDelegate<UserClass >: : FMethodPtr InTimerMethod,
float InRate
bool InbLoop,
float InFirstDelay)
void ClearTimer(FTimerHandle & InHandle)
4.3.2 食材切割實現(xiàn)
系統(tǒng)采用模型置換實現(xiàn)食材切割,BP Knife Actor的Box Collision與食材的Collision發(fā)成Over Lap事件時,執(zhí)行Mesh Change Function,在Mesh Array中以切割的次數(shù)作為Key那個相應得Mesh Value,再用Set Mesh函數(shù)對模型進行替換。
4.3.3 食材材質變化實現(xiàn)
首先將烹飪各個階段的食材材質信息數(shù)據(jù)導出作為準備數(shù)據(jù),再通過Set Scaler Parameter Value On Materials函數(shù)來動態(tài)控制食材的材質實例參數(shù)變化,為保證材質變化的過渡平滑,故使用Lerp算法。
公式為:Lerp Value = Input0* Alpha+Input1*(1-Alpha)。
4.3.4 虛擬設備介入交互
系統(tǒng)橋接HTC VIVE進行VR頭顯與虛擬交互,通過UE4啟動Steam VR工具,并配置房間設置,將VR頭盔和手柄通過UE4藍圖映射功能交互,并在VR房間中配置現(xiàn)實與虛擬環(huán)境的1:1空間置換,這樣在“川菜虛擬烹飪系統(tǒng)”中,就會根據(jù)用戶的真實身高來配置相關屬性。繼續(xù)完成翻炒、倒水等基礎交互,完成最終系統(tǒng)。
基于前文流程,進行了系統(tǒng)開發(fā),筆者使用主流配置PC在win10環(huán)境下,可以實現(xiàn)系統(tǒng)的1080P分辨率下90 fps以上運行,1440P分辨率下60 fps以上運行。運行效果良好,各個交互點測試成功,可以實現(xiàn)川菜的烹飪模擬。系統(tǒng)展示如圖5、圖6、圖7所示。
圖5 計時系統(tǒng)展示圖
圖6 廚房操作臺展示圖
圖7 系統(tǒng)實操圖
本文基于VR進行了川菜烹飪流程的模擬實踐,并實現(xiàn)良好,其中對模型數(shù)字資產的程序化流程是本系統(tǒng)開發(fā)的創(chuàng)新,提升開發(fā)效率的同時,增強了UE4的運行效率,從而實現(xiàn)更真實的物理模擬。本文的項目實踐為相關非遺活化研究提供技術參考和方法建議,對相關非遺活化利用與保護具有現(xiàn)實意義。
同時,系統(tǒng)的部分模塊可以進一步改進,回鍋肉的材質并不真實,可以嘗試使用3d掃描建模的方法提取真實的材質。食材的切割交互缺少動態(tài)模擬,可以采用UE4的ProceduralMesh實時切割,但這樣對模型的頂點拓撲有較高的要求,這是系統(tǒng)進一步優(yōu)化的難點。