技术美术Demo集合 (个人)2024-10-07 速写本
Water System
Water System
Water System
Statue Destruction Effect
Bird Flock System
Interactive Bottled Liquid Material
Glass Bottle Material
Procedural Ice Cream Cone
技术美术Demo集合,涵盖程序化、材质、着色器、粒子系统及实时交互等,应用于Unreal、Unity、Houdini。

  • 水:在UE中开发的水系统,涵盖水面表现、水下效果,以及与环境和角色的交互。

  • 雕塑破碎特效:使用Houdini的程序化破碎和UE的顶点动画,制作了一个定向雕像破碎效果,配合打光,尝试不用物理模拟实现电影感的破碎表现。

  • 鸟集群运动:基于Niagara创建的鸟群系统。鸟的个体动画通过顶点动画纹理实现,行为及个体间距通过多种力和Neighbor Grid 3D模块控制。  

  • 交互式瓶装水材质:在Unity URP中设计的交互式瓶装液体材质。液体会根据瓶子的运动动态反应,模拟晃动与波浪效果,并展现折射与反射等视觉效果。

  • 玻璃瓶材质:在Unity URP中创建的真实感玻璃瓶材质,具备折射、反射、表面细节及半透明阴影等特征。

  • 交互式蝴蝶特效:在Unity中开发的交互式蝴蝶特效。蝴蝶围绕灯笼飞舞,并会被接近的玩家吸引。与玩家接触后,蝴蝶会在梦幻的声音中化为柔和的光点并逐渐消失。

  • 程序化冰淇淋甜筒:在Houdini中制作的程序化冰激凌甜筒,可在甜筒上合理放置不同数量不同种类的冰激凌球。


软件: Unreal, Unity, Houdini, Blender, Photoshop




水系统 (UE)    More Details
一个综合水系统,涵盖水面表现、水下效果以及与环境和角色的交互。

水面
  • 波浪
    • 大规模波动:通过基于噪声的位移应用于Virtual Heightfield Mesh实现。
    • 细表面波纹:叠加法线贴图,并结合可调节的UV缩放与速度,增强细节真实感。
  • 反射
    • 屏幕空间反射 (SSR):通过HLSL实现自定义SSR,提供更精确的衰减和边缘控制。
    • HDR反射:叠加HDR环境反射,用于补充屏幕空间外的反射区域,确保无缝的环境效果。
  • 折射: 通过噪声扭曲屏幕空间UV坐标生成折射效果,并由深度控制折射强度。
  • 深度渐变: 绝对深度渐变用于根据水深计算明暗变化,增加水下视觉层次感;场景深度渐变用于在水线附近创建平滑的过渡效果。
  • 菲涅尔效应:添加菲涅耳项,模拟视角与折射反射的自然关系。
  • 高光反射:手动计算高光反射,模拟真实的水面光斑效果,同时避免默认Lit材质的性能开销。

水下效果
  • 暗角:使用椭圆形渐晕遮罩暗化屏幕边缘,增强沉浸感并引导视觉焦点。
  • 扭曲与模糊:屏幕空间扭曲模拟水体运动引起的视觉偏移;高斯模糊柔化水下视觉,呈现自然效果。
  • 深度雾:基于场景深度计算深度雾效果,逐渐遮挡远处物体,模拟光衰减。
  • 水线过渡:使用动态的基于模板的遮罩分隔水上与水下视角,随摄像机移动生成平滑过渡区域。
  • 水下视角的水面:自定义渲染水下视角的水面效果,动态调整法线与位移,与水面材质匹配。

水体交互
  • 环境交互
    • 焦散效果:通过基于贴花的焦散效果,结合噪声扭曲采样模拟光线折射;RGB偏移添加色散效果,模拟光的颜色分离。
    • 泡沫:根据深度计算生成泡沫,增强浅水区与障碍物的细节表现。
    • 湿润效果:基于贴花的湿润效果模拟附近及浸没物体的表面湿痕,可调节透明度与衰减范围,实现自然过渡。
  • 角色交互
    • 波浪模拟:通过Render Target捕捉角色运动,动态更新水面高度与法线,生成逼真的涟漪与水花效果。
    • 摄像机水滴:当从水下浮出时,镜头上出现程序生成的水滴。水滴会逐渐蒸发,其形状与拖尾效果通过基于噪声的算法动态生成。
雕塑破碎特效 (Houdini, UE)   More Details
使用Houdini的程序化破碎和UE的顶点动画,制作了一个定向雕像破碎效果,配合打光,尝试不用物理模拟实现电影感的破碎表现。

模型处理、破碎与数据存储
  • 模型预处理:将原始雕像简化为半身胸像;调整UV映射,并通过VDB转换重新网格化模型,确保几何体闭合并优化拓扑以适应破碎需求。
  • 非均匀破碎:基于爆炸点的距离进行非均匀破碎,靠近中心的碎片更小且更密集;使用PyroSource节点在爆炸球体范围内散布点,移除雕像外的点后,将剩余点用作RBD Material Fracture的指导点。
  • 数据存储:将质心坐标和距离存储在UV通道中:UV1—X和Y质心坐标;UV2—Z质心坐标和距离到爆炸中心的值。

顶点动画
  • 数据读取:在UE中从UV通道解压质心坐标和距离数据,并修正Houdini与UE坐标系统的差异。
  • 碎片动画包含两种位移:
    • 轴向位移:沿爆炸轴的运动,位移大小由破碎进度缩放,并使用噪声和正弦波形模拟重力效果。
    • 径向位移:从爆炸轴向外扩散,位移大小由破碎进度与噪声控制。
  • 旋转:碎片围绕质心旋转,旋转轴随机,速度与破碎进度挂钩;较小的碎片旋转速度更快,增强动态效果。
  • 破碎进度控制:使用标量参数控制破碎进度,基于碎片到爆炸中心的距离决定其位置和旋转状态。

打光与调色
  • 调整体积雾与灯光参数,增加深度与氛围感;放置多个立方体遮挡方向光,创造特定形状的丁达尔效应;使用两个矩形灯从特定角度微妙地突出雕塑。
  • 在后处理中进行调色,微调整体的色调与情感氛围。

动画与渲染
  • 动画控制:在UE的Sequencer中为破碎进度添加关键帧,使用材质参数集合(Material Parameter Collection)同步动画时间轴。
  • 渲染输出:使用Movie Render Queue进行最终动画渲染,确保高质量输出。
鸟集群运动 (UE)   More Details
一个基于Niagara的程序化鸟类集群运动系统,通过顶点动画纹理 (VAT) 动画驱动静态网格,并使用多种力和Neighbor Grid 3D模块控制行为及个体间距。

静态网格的顶点动画
  • 转换:使用Unreal的AnimToTexture插件将骨骼动画转换为顶点动画纹理 (VAT);动画数据存储在纹理中,并通过自定义材质应用于静态网格。通过VAT减少绘制调用,并利用实例化技术提高性能。
  • 翅膀拍动随机化:动态材质参数AnimationTimeOffset为每个粒子分配随机起始帧,避免动画同步,呈现更自然的效果。

Niagara系统
  • 鸟群行为模拟
    • Vortex Force增加旋转运动,模拟动态的鸟群飞行模式。
    • Drag Force模拟空气阻力,保持运动的平稳性与控制感。
    • Repulsion and Attraction确保鸟群维持队形,同时避免碰撞。
    • Curl Noise引入随机混乱的运动,增强自然感。
  • 维持粒子间距: 使用 Neighbor Grid 3D 模块跟踪每只鸟与其邻居的距离,维持合理的间距。
    • 网格初始化:设置每个网格单元的最大邻居数量限制。
      • 填充网格 (Fill Grid):将粒子分布到网格单元中。
      • 查询网格 (Query Grid):计算粒子间的距离,并调整速度以实现逼真的分离效果。
    • 调试:使用立方体网格和文本可视化网格及邻居计数,辅助优化鸟群行为。
    交互式瓶装水材质 (Unity)   More Details
    一个交互性的欺骗性瓶装液体材质,能动态响应瓶子运动,模拟液体的倾斜与波动,同时展现真实感的折射和反射效果。

    波动、波浪与裁剪
    • 倾斜与波动:顶点围绕液体中心的 x 和 z 轴旋转,方向向量调整动态模拟液体的倾斜与晃动效果。
    • 波浪:通过对波动调整后的方向向量应用正弦函数,生成相互交叠的波浪模式。
    • 裁剪:使用Step节点将单位方向向量的y分量与从0~1映射到的-1~1的液面高度参数进行比较,通过alpha裁剪呈现预期的液体液面高度。

    侧表面
    • 折射:通过屏幕空间采样结合高斯模糊实现真实感折射效果。
    • 视差效果:通过计算虚拟折射方向的UV偏移,模拟液体内漂浮粒子的深度效果,增强真实感。
    • 菲涅耳:叠加一层菲涅耳边缘颜色。

    上表面 (主要挑战)
    • 表面投影:根据晃动倾斜角度与液面高度计算,将背面顶点投影到液体表面。
    • 法线扰动:通过波浪计算生成的法线变化,增强液面动态效果。
    • 漂浮粒子:使用扰动的UV采样贴图模拟随液面起伏的粒子。
    • 反射:根据法线变化,用反射探针捕捉动态反射效果,并通过脚本实时更新探针位置与液体位移同步。

    Output Switching
    • 使用Switch by Face节点切换侧表面和上表面效果输出,并用alpha裁剪液面高度。
    玻璃瓶材质 (Unity)   More Details
    一个在Unity URP中实现的真实感玻璃瓶材质,结合折射、反射、表面细节和半透明阴影效果。

    模型处理
    • 在Blender中处理玻璃瓶模型,将内壁与外壁分离,便于更好地控制材质属性并解决透明度排序问题。

    Shader Graph
    • 厚度与折射:基于法线与视角方向计算厚度,模拟玻璃边缘的自然暗化效果;使用屏幕空间采样偏移实现折射,并通过alpha调整增强光线折弯的真实感。
    • 反射与高光:利用Unity自带的Lit Shader,启用“Preserve Specular Lighting”选项。
    • 表面细节:使用粗糙度贴图模拟指纹和污迹等细微表面纹理;添加法线贴图,刻画玻璃表面微小划痕,提升材质真实感。

    HLSL Shader
    • 半透明阴影:自定义阴影投射行为,使用抖动(Dither)方法生成半透明阴影;将alpha裁剪与阴影投射结合,创建真实的光影过渡效果。

    渲染顺序
    • 按以下顺序解决透明度排序问题:内壁2998,液体2999,外壁3000

    后处理
    • 调整HDR天空盒以改善光照与反射的整体效果。添加了后期处理效果来校正 HDR 天空盒的过度曝光,并应用泛光效果来增强玻璃表面反射光泽。
    交互式蝴蝶特效 (Unity, Photoshop, Blender)   More Details
    在Unity中制作的交互式蝴蝶特效。蝴蝶围绕灯笼飞舞,并会被接近的玩家吸引。与玩家接触后,蝴蝶会在梦幻的声音中化为柔和的光点并逐渐消失。

    粒子系统
    • 粒子设置
      • 配置粒子的大小、生命周期以及球形发射区域。
      • 使用粒子系统的Noise、Limit Velocity over Lifetime、Lights等模块模拟蝴蝶的自然运动。
    • 自定义贴图与动画
      • 在Photoshop中设计蝴蝶尾迹贴图和动画图集(Sprite Sheet),并使用 Stretched Billboard渲染模式应用贴图与动画。
      • 最初尝试通过mesh旋转实现翅膀拍动,但因碰撞问题弃用,改用Texture Sheet Animation实现更流畅的效果。
    • 外力与碰撞
      • 添加球形风场,模拟蝴蝶自然飞行以及被玩家吸引的运动效果。
      • 启用碰撞功能,并设置粒子在碰撞时减少生命周期,同时使用子发射器生成发光粒子,粒子逐渐缩小并消失,增强视觉效果。
    交互机制
    • 玩家吸引:在玩家身上添加碰撞体与风场,当蝴蝶进入一定范围时被吸引。
    • 声音效果:使用脚本在蝴蝶碰撞时触发随机音高与音量的风铃声,营造动态的听觉体验。

    程序化冰淇淋甜筒 (Houdini)   More Details
    在Houdini中制作的程序化冰激凌甜筒,可在甜筒上合理放置不同数量不同种类的冰激凌球。

    华夫甜筒
    • 基础形状:使用PolyExtrude创建甜筒的基本华夫结构。
    • 破损效果:使用PointWrangle和CopyToPoints散布点并添加表面凹凸,模拟自然破损感。
    • 华夫格纹理:将网格与粒子结合,使用 VDB 创建纹理结构并加入噪声;使用PointVOP添加颜色变化,增强纹理细节。
    • 锥形调整:通过Bend和Lineartaper节点完成甜筒的最终形状调整。
    冰淇淋球
    • 基础形状:使用Mountain和颜色节点制作不规则冰淇淋球。
    • 变体:
      • 巧克力酱:添加噪声后散布点,通过 VDB 细化形状,模拟融化的巧克力酱。
      • 糖针:散布点并复制多种大小和方向的糖屑模型。
      • 水果块及咬痕:使用布尔操作创建咬痕效果,并填充散布的水果模型,与冰淇淋球融合。
    装饰性饼干棒
    • 使用管状模型建模,通过 VEX 脚本生成条纹装饰,增加甜筒的视觉吸引力。
    球体摆放 (主要挑战)
    • 范围限定:使用球体和IsoOffset定义冰淇淋球的摆放体积范围。
    • VEX 调整:应用 VEX 脚本,将冰淇淋球的位置分布调整为向上螺旋的模式。
    • 位置分配:分配几何索引,并通过CopyToPoints节点将冰淇淋球按逻辑排列到甜筒上。
    ©Shijia Liu
    Technical  Art
    Fantasyland