2717 字
14 分钟
基于 nCloth 布料解算实现草叶露珠滚落流体仿真特效

实验概述#

实验目的#

本次实验为商业广告镜头制作清晨露珠从草叶顶端缓慢滑落的写实动态效果,镜头核心画面是阳光照射下的主草叶,水珠滴落撞击草叶后让草叶产生自然回弹晃动,最终水珠顺着弯曲草叶滚落。 常规液体效果一般会选用 Maya 流体模块,但流体操作复杂、参数调试门槛高,本实验改用 nCloth 布料解算模拟水珠形态与物理碰撞,操作更轻量化,同时搭配骨骼绑定控制器做草叶基础动画,再通过顶点权重混合关键帧动画与动力学形变

实验基础场景条件#

配套资源为 Chapter06_project 工程文件,初始场景文件 grass_start.ma 自带一根主体草叶模型、背景批量 Paint Effects 草丛;额外提供控制器曲线文件 controlCurve.ma,不用手动绘制操控器。

通俗化核心原理#

  1. 草叶骨骼绑定控制:给草叶搭建一整条连贯骨骼链,绑定平滑蒙皮后搭配自定义曲线控制器,靠控制器旋转直接驱动草叶弯折,先手动 K 出草叶受撞击回弹的基础动画;
  2. nCloth 模拟水珠:立方体细分平滑后作为水珠模型,套用水气球布料预设,依靠布料拉伸、压缩、质量参数模拟水珠柔软水润的物理质感,不用复杂流体解算就能做出水滴形变效果;
  3. 动画与动力学混合解算:草叶转为 nCloth 布料后,通过绘制「输入网格吸引力」顶点权重,草根部权重拉满固定形态不会乱飞,草尖权重降低保留动力学形变,让草叶同时存在手动关键帧摆动和水珠撞击产生的自然凹陷回弹;
  4. 全局时间变速 + 动力学缓存:全部仿真调试完成后烘焙动力学缓存,关闭实时解算,通过场景时间扭曲曲线统一调整整体播放速度,轻松制作慢镜头、变速镜头效果,大幅节省反复解算的时间。

实验使用软件与配套资源#

软件:Autodesk Maya 资源文件:Chapter06_project 工程包,场景文件 grass_start.ma、控制器素材 controlCurve.ma

完整分步操作流程#

搭建草叶骨骼绑定与自定义动画控制器#

这一步需要连续创建骨骼、批量重命名、蒙皮绑定、节点连线控制器,连线步骤重复繁琐,骨骼数量、绑定参数出错会直接导致草叶扭曲变形。

  1. 打开 Chapter06_project 工程,加载 Scenes 文件夹内 grass_start.ma 场景,视图面板切换至透视图,避免锁定的渲染相机遮挡操作;打开显示层编辑器,关闭 backGroundGrass_DL 背景草丛图层隐藏远景草;视图着色模式开启「线框叠加实体」,同时启用默认灰色材质,骨骼线条看得更清晰;
  2. 切换动画菜单集,开启点吸附功能,调出骨骼工具,沿着草叶中心线条连续点击创建骨骼链,整条草叶从头到尾一共搭建 14 根骨骼,按回车结束创建;大纲展开骨骼层级,选中第一根骨骼 grass_joint1,执行【修改 - 层级名称加前缀】,输入 grass_一键给所有骨骼统一前缀,方便后续区分管理;同时选中首根骨骼与草叶模型,打开【蒙皮 - 绑定平滑蒙皮 - 选项】,绑定设置:绑定对象骨骼层级、绑定方式最近距离、蒙皮模式经典线性,其余参数保持默认,点击完成绑定;
  3. 选中中段到末尾骨骼旋转 Z 轴测试变形,确认草叶弯折顺滑无撕裂,测试完成后把骨骼旋转数值归零恢复初始状态;
  4. 导入配套 controlCurve.ma 控制器曲线素材,曲线默认在坐标原点,缩放 XYZ 全部改为 0.5,执行【修改 - 冻结变换】,重命名控制器 grassCurl_ctrl
  5. 打开窗口 - 节点编辑器,把控制器、草叶412 号骨骼全部拖入编辑面板;从控制器旋转输出通道连线到每一根骨骼的旋转输入通道,逐根完成连线绑定。

创建水珠模型并转换为 nCloth 水滴布料#

模型细分、布料预设、重力参数层层关联,水珠很容易出现直接穿透草叶、形变过度、完全不动等问题,需要反复调试重力与布料基础参数。

  1. 承接上一步场景,切换多边形菜单集,新建标准立方体,命名 waterDrop;选中立方体执行网格平滑,通道框细分等级设为 3,删除模型构建历史提升动力学运算速度;
  2. 水珠整体缩放 XYZ 统一调整为 0.5,控制器旋转全部归零,移动水珠放置在草叶弯折最高点上方,切换渲染相机确认水珠完全出画,不会提前穿帮;
  3. 切换nDynamics动力学菜单集,选中水珠模型执行【n 网格 - 创建 n 布料】,生成的布料节点重命名 nClothWaterDrop
  4. 打开水珠布料形状属性面板,点击预设按钮选择waterBalloon水气球预设一键加载水态物理参数。

给草叶控制器制作撞击回弹关键帧动画#

需要先统一全局动画切线、逐帧记录控制器旋转数值,帧数与旋转角度匹配度直接决定水珠撞击时草叶摆动节奏,帧数错位会出现物理效果完全脱节。

  1. 时间轴总长度调整为100帧,视图关闭骨骼显示避免画面杂乱;逐帧播放动画,观察水珠接触草叶的时间点,标准碰撞帧为第 17 帧;
  2. 打开软件设置偏好面板,动画分类里把默认入切线、出切线统一设置为样条曲线,保证草叶摆动顺滑无生硬顿挫; 选中 grassCurl_ctrl 控制器,快捷键 Shift+E 给 XYZ 旋转通道全部打上关键帧;
  3. 按时间滑块逐帧调整控制器旋转数值;
  4. 播放动画,忽略水珠穿透草叶问题,仅检查草叶是否存在柔和的撞击回弹、小幅晃动效果。

将草叶转为 nCloth 并绘制输入吸引力顶点权重#

本实验难度较高环节,需要切换笔刷模式、分区域绘制权重,权重数值分配失衡会出现草叶整根坠落、水珠撞击后严重穿模、草叶不会回弹等多种故障,反复涂抹调整耗时久。

  1. 动画回退至第 1 帧,选中草叶模型执行【n 网格 - 创建 n 布料】,布料节点重命名 nClothGrass;打开布料属性面板,加载软金属薄板预设,适配草叶柔韧但有支撑力的物理特性;
  2. 初次播放动画会发现草叶受重力直接往下掉落,在布料动力学属性中把「输入网格吸引力」数值拉满 1,草叶会跟随之前骨骼动画固定住,但水珠撞击后会卡住且网格形变严重,看起来就像炸开了一样;
  3. 视图关闭默认灰色材质,按 6 切换纹理显示模式,选中草叶打开【n 网格 - 绘制顶点属性 - 输入吸引力】笔刷工具,草叶初始全白代表权重 100%;笔刷操作模式改为替换,数值设置 0.25,点击填充按钮,整片草叶权重统一变为 25%,画面整体转为深灰色笔刷数值调回 1,在草叶根部区域涂抹纯白色,根部权重 100% 牢牢固定不会下坠;从根部往草尖平缓涂抹过渡区域,按住 Shift 平滑权重渐变,避免根部和草尖出现生硬分界;
  4. 播放动画查看效果,草叶同时存在手动摆动动画和水珠撞击产生的正常凹陷形变。

精细化调节草叶与水珠 nCloth 物理参数#

  1. 切换回实体着色模式,先调整草叶布料全部核心参数: 碰撞板块:厚度0.06,反弹系数0 动力学属性:拉伸阻力 50、弯曲阻力 10、恢复角度 360 加厚碰撞厚度防止模型穿插,降低拉伸弯曲阻力让草叶更柔软,高恢复角度保证撞击凹陷后自动复原平整。
  2. 选中水珠布料调整水滴物理参数: 拉伸阻力 5、压缩阻力 5(维持圆润水滴外形) 质量 5、拖拽 1(减轻重量避免过度压弯草叶,增加拖拽让水珠缓慢顺滑滚落)
  3. 播放动画发现草叶摆动和水珠下落节奏错位,将时间轴拉长至 120 帧,打开动画曲线编辑器,重新调整控制器旋转关键帧位置,匹配水珠撞击、滑落的时间节点;
  4. 再次打开顶点吸引力绘制笔刷,在草叶最尖端涂抹数值 0.1,进一步降低顶端绑定权重,让草尖更柔软,水珠滑落时形变更自然。

烘焙动力学缓存 + 场景时间扭曲制作变速慢镜头#

仿真完成后必须烘焙缓存,否则时间扭曲会持续实时计算布料解算,电脑卡顿严重。

  1. 同时选中水珠、草叶模型,打开【n 缓存 - 新建 n 缓存 - 选项】,缓存设置:文件分发单文件、每个物体独立文件、缓存时间范围匹配时间滑块,点击创建烘焙动力学缓存;
  2. 烘焙完成后选中 nucleus 解算节点,关闭启用实时解算,动画直接读取缓存文件播放,大幅降低视图卡顿;
  3. 切换动画菜单集,执行【动画 - 时间扭曲 - 添加全局场景时间扭曲】,时间轴拉长至 240 帧;
  4. 打开动画曲线编辑器选中场景时间扭曲曲线,拖动曲线末端关键帧向下压低,整体放慢动画速度;

实验技术总结#

本实验跳出传统流体仿真制作液体效果的思路,使用 nCloth 布料解算低成本模拟水滴流体动态,同时结合骨骼绑定动画、顶点权重混合动力学,兼顾手动动画精准可控与物理仿真真实感。整套特效最大优势在于分层可控,草叶基础摆动靠控制器关键帧、物理形变靠顶点权重、整体播放速度靠时间扭曲。

基于 nCloth 布料解算实现草叶露珠滚落流体仿真特效
https://fuwari.vercel.app/posts/notes/maya/waterdrop/
作者
Ruby
发布于
2026-06-19
许可协议
CC BY-NC-SA 4.0