周慶偉,陳衡,高藝
(1.四川旅游學院,四川 成都 610100;2.杭州玳數科技有限公司,浙江 杭州 310000)
非物質文化遺產的數字化保護是當今研究的熱點,隨著數字技術的不斷發展以及十八大以來,黨中央對文化建設高度重視,相關研究逐漸開始將研究傾向于非遺的數字化呈現。作為中國四大菜系之一的川菜,是我國重要的非物質文化遺產,通過虛擬現實相關技術對其進行VR可視化開發具有川菜文化傳承現實意義。并且,目前并沒有相關針對川菜烹飪流程的虛擬現實仿真實現案例,因此具有一定的實踐研究價值。
系統需要實現基于物理的實時渲染模擬,真實地還原川菜烹飪過程的全部流程,并實現沉浸的交互。具備完整的回鍋肉和麻婆豆腐的VR烹飪操作流程節點。
通過3D UI實現外部視頻橋接,并提供VR環境下的視頻教程演示。
需要結合HVC VIVE進行體感設計和模擬,在VR環境下實現菜品的切割、翻炒等烹飪動作,并通過VR空間識別,判斷操作是否合理。
系統設計架構如圖1所示。

圖1 VR川菜烹飪可視化交互系統設計架構
相關研究使用UNITY3D或者UE4進行VR系統開發,本文結合UE4實現VR系統開發,由于模擬環境是室內小空間,且空間要素較為豐富,因此項目對UE4的直接光照著色器模擬、間接光烘焙做烘焙處理,保證模擬幀數。
程序化建模是基于同類別模型及材質的批量化程式處理,并實現計算機自動三維建模,這有助于重復單元的快速建模。系統中烹飪的菜品為可編輯頂點模型,并在烹飪階段呈現出不同的模型狀態,因此在對食材切割、烹煮、反拆過程需要不斷改變三維模型的空間形態、材質狀態等,同時菜品模型為重復單元,因此可以批量化拓撲以提高模型運算速度。
本系統的三維建模包括硬表模型和可編輯頂點模型,其中場景為硬表面模型,菜品和水體為可編輯頂點模型,流體為粒子模擬。
系統包括1個UE4關卡,不同烹飪流程在同一關卡完成,因此只制作1個VR場景,技術流程為CAD平面設計后進行3D MAX模型制作,并結合rizomuv完成uv制作,保證材質的空間映射,最后進行3D MAX材質重繪并輸出FBX,進行UE4導入測試,檢驗并更新模型。步驟如圖2所示,平面布置如圖3所示。

圖2 場景搭建步驟

圖3 VR川菜烹飪場景平面布置
3.2.1 程序化建模
Houdini可以實現非線性過程化生成流程,過程中的幾何物體的各種信息對用戶完全開放,且所有步驟通過邏輯性節點記錄,對上游節點的操作會直接引起下游節點的變化,所以可以做到制作流程的全程可追隨,用戶可以用SOP Node或者VEX語言對幾何物體信息進行讀寫操作,可以服務本項目部分模型的程序化建模。比如“麻婆豆腐”的制作,可以先用BOX Sop制作一個正方體模型,再通過Iso offset Sop將模型轉化為體積,然后通過Scatter Sop對體積范圍內進行隨機撒點。再對每個點進行隨機得屬性賦予,如“tofu”“hot pepper”“Onion”,再根據屬性進行模型代理。關鍵代碼如下:
//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制作紋理。川菜食材本身的材質具有不規則性,可以使用噪波的混合,求出與食材表面近似的高度圖,再通過拾色器拾取現實中食材照片的漫反射顏色,根據高度圖后續計算出的表現Diffuse Color分布的灰度圖,進行0~1的重映射,得到食材表面的漫反射顏色貼圖,最后調整食材的Metallic與Roughness,使其在渲染表現下實現基本的物理正確。圖4為食材程序化紋理制作演示圖。

圖4 食材程序化紋理制作演示
以麻婆豆腐為例將3.2中制作出的基礎模型根據其連接性進行Pack,Pack結果為豆腐加上各種調味料的總數量,并將其導入DOP之中,DOP系統中可以賦予物體以物理效果,最后計算出來的結果就是一個按照物理規則裝盤的“麻婆豆腐”
Vertex Animation Texture技術可以將幾何體動畫信息烘培到一張圖片的每個像素之中,通過RGB的數據結構來存儲動畫,即通過圖片記錄動畫。“虛擬川菜廚房系統”通過了Houdini Labs工具包中Labs Vertex Animation Texture OUT Node將食材在油鍋中的一些頂點抖動動畫烘培成了貼圖。再到引擎中對該貼圖進行采樣,通過Vertex Shader對模型頂點做相應處理,還原動畫。
4.3.1 計時器制作
基于UE4,通過Set Timer By Event節點綁定對于時間處理的Event Function,設置Set Timer By Event間隔為1s,并勾選loop變量,使其每1s執行一次該節點所綁定的Event Function,該Event Function執行內容為對整形變量time以1s為單位遞增,與此同時將改變量附加給UMG模塊之中,使其在世界空間執行渲染,然后使用Get Actor Location獲取到計時器實體的世界空間坐標與HTC VR頭盔的世界空間坐標。再使用Look At函數使計時器在世界空間所渲染的實例始終對準玩家。核心代碼如下:
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 食材切割實現
系統采用模型置換實現食材切割,BP Knife Actor的Box Collision與食材的Collision發成Over Lap事件時,執行Mesh Change Function,在Mesh Array中以切割的次數作為Key那個相應得Mesh Value,再用Set Mesh函數對模型進行替換。
4.3.3 食材材質變化實現
首先將烹飪各個階段的食材材質信息數據導出作為準備數據,再通過Set Scaler Parameter Value On Materials函數來動態控制食材的材質實例參數變化,為保證材質變化的過渡平滑,故使用Lerp算法。
公式為:Lerp Value = Input0* Alpha+Input1*(1-Alpha)。
4.3.4 虛擬設備介入交互
系統橋接HTC VIVE進行VR頭顯與虛擬交互,通過UE4啟動Steam VR工具,并配置房間設置,將VR頭盔和手柄通過UE4藍圖映射功能交互,并在VR房間中配置現實與虛擬環境的1:1空間置換,這樣在“川菜虛擬烹飪系統”中,就會根據用戶的真實身高來配置相關屬性。繼續完成翻炒、倒水等基礎交互,完成最終系統。
基于前文流程,進行了系統開發,筆者使用主流配置PC在win10環境下,可以實現系統的1080P分辨率下90 fps以上運行,1440P分辨率下60 fps以上運行。運行效果良好,各個交互點測試成功,可以實現川菜的烹飪模擬。系統展示如圖5、圖6、圖7所示。

圖5 計時系統展示圖

圖6 廚房操作臺展示圖

圖7 系統實操圖
本文基于VR進行了川菜烹飪流程的模擬實踐,并實現良好,其中對模型數字資產的程序化流程是本系統開發的創新,提升開發效率的同時,增強了UE4的運行效率,從而實現更真實的物理模擬。本文的項目實踐為相關非遺活化研究提供技術參考和方法建議,對相關非遺活化利用與保護具有現實意義。
同時,系統的部分模塊可以進一步改進,回鍋肉的材質并不真實,可以嘗試使用3d掃描建模的方法提取真實的材質。食材的切割交互缺少動態模擬,可以采用UE4的ProceduralMesh實時切割,但這樣對模型的頂點拓撲有較高的要求,這是系統進一步優化的難點。