基于VR的川菜烹饪可视化交互系统的设计与实现

2022-08-26 03:37周庆伟陈衡高艺
现代信息科技 2022年9期
关键词:程序化川菜顶点

周庆伟,陈衡,高艺

(1.四川旅游学院,四川 成都 610100;2.杭州玳数科技有限公司,浙江 杭州 310000)

0 引 言

非物质文化遗产的数字化保护是当今研究的热点,随着数字技术的不断发展以及十八大以来,党中央对文化建设高度重视,相关研究逐渐开始将研究倾向于非遗的数字化呈现。作为中国四大菜系之一的川菜,是我国重要的非物质文化遗产,通过虚拟现实相关技术对其进行VR可视化开发具有川菜文化传承现实意义。并且,目前并没有相关针对川菜烹饪流程的虚拟现实仿真实现案例,因此具有一定的实践研究价值。

1 VR川菜烹饪可视化交互系统分析

1.1 功能需求分析

系统需要实现基于物理的实时渲染模拟,真实地还原川菜烹饪过程的全部流程,并实现沉浸的交互。具备完整的回锅肉和麻婆豆腐的VR烹饪操作流程节点。

通过3D UI实现外部视频桥接,并提供VR环境下的视频教程演示。

需要结合HVC VIVE进行体感设计和模拟,在VR环境下实现菜品的切割、翻炒等烹饪动作,并通过VR空间识别,判断操作是否合理。

1.2 系统设计架构

系统设计架构如图1所示。

图1 VR川菜烹饪可视化交互系统设计架构

2 关键技术分析

2.1 基于UE4的VR技术

相关研究使用UNITY3D或者UE4进行VR系统开发,本文结合UE4实现VR系统开发,由于模拟环境是室内小空间,且空间要素较为丰富,因此项目对UE4的直接光照着色器模拟、间接光烘焙做烘焙处理,保证模拟帧数。

2.2 程序化建模流程

程序化建模是基于同类别模型及材质的批量化程式处理,并实现计算机自动三维建模,这有助于重复单元的快速建模。系统中烹饪的菜品为可编辑顶点模型,并在烹饪阶段呈现出不同的模型状态,因此在对食材切割、烹煮、反拆过程需要不断改变三维模型的空间形态、材质状态等,同时菜品模型为重复单元,因此可以批量化拓扑以提高模型运算速度。

3 VR数字三维建模

本系统的三维建模包括硬表模型和可编辑顶点模型,其中场景为硬表面模型,菜品和水体为可编辑顶点模型,流体为粒子模拟。

3.1 场景建模

系统包括1个UE4关卡,不同烹饪流程在同一关卡完成,因此只制作1个VR场景,技术流程为CAD平面设计后进行3D MAX模型制作,并结合rizomuv完成uv制作,保证材质的空间映射,最后进行3D MAX材质重绘并输出FBX,进行UE4导入测试,检验并更新模型。步骤如图2所示,平面布置如图3所示。

图2 场景搭建步骤

图3 VR川菜烹饪场景平面布置

3.2 数字资产程序化流程

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 食材程序化纹理制作演示

4 系统实现

4.1 模型物理模拟

以麻婆豆腐为例将3.2中制作出的基础模型根据其连接性进行Pack,Pack结果为豆腐加上各种调味料的总数量,并将其导入DOP之中,DOP系统中可以赋予物体以物理效果,最后计算出来的结果就是一个按照物理规则装盘的“麻婆豆腐”

4.2 顶点动画烘培

Vertex Animation Texture技术可以将几何体动画信息烘培到一张图片的每个像素之中,通过RGB的数据结构来存储动画,即通过图片记录动画。“虚拟川菜厨房系统”通过了Houdini Labs工具包中Labs Vertex Animation Texture OUT Node将食材在油锅中的一些顶点抖动动画烘培成了贴图。再到引擎中对该贴图进行采样,通过Vertex Shader对模型顶点做相应处理,还原动画。

4.3 关键交互实现

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空间置换,这样在“川菜虚拟烹饪系统”中,就会根据用户的真实身高来配置相关属性。继续完成翻炒、倒水等基础交互,完成最终系统。

5 系统实例

基于前文流程,进行了系统开发,笔者使用主流配置PC在win10环境下,可以实现系统的1080P分辨率下90 fps以上运行,1440P分辨率下60 fps以上运行。运行效果良好,各个交互点测试成功,可以实现川菜的烹饪模拟。系统展示如图5、图6、图7所示。

图5 计时系统展示图

图6 厨房操作台展示图

图7 系统实操图

6 结 论

本文基于VR进行了川菜烹饪流程的模拟实践,并实现良好,其中对模型数字资产的程序化流程是本系统开发的创新,提升开发效率的同时,增强了UE4的运行效率,从而实现更真实的物理模拟。本文的项目实践为相关非遗活化研究提供技术参考和方法建议,对相关非遗活化利用与保护具有现实意义。

同时,系统的部分模块可以进一步改进,回锅肉的材质并不真实,可以尝试使用3d扫描建模的方法提取真实的材质。食材的切割交互缺少动态模拟,可以采用UE4的ProceduralMesh实时切割,但这样对模型的顶点拓扑有较高的要求,这是系统进一步优化的难点。

猜你喜欢
程序化川菜顶点
程序化镇静镇痛护理干预对颅脑损伤术后护理的临床效果
程序化操作在调度运行中的应用
“川菜”的由来
第二道 川菜资格人
川菜资格人
“图形的认识”复习专题
删繁就简三秋树
数学问答
一个人在顶点