计算机图形学 · UW CSE 457 期末作品

布料模拟

一个基于 Unity 的实时质点–弹簧布料求解器,结合了稳定的数值积分、拉伸约束、可配置的固定点、碰撞响应和交互式风场。

交互式风场:船帆场景,可实时调节风向和风力。

求解器

从质点到织物。

我将布料建模为由三类弹簧连接的质点网格:结构弹簧抵抗拉伸,剪切弹簧稳定对角方向的形变,弯曲弹簧抵抗折弯。

每一帧都会累积弹簧力和全局力,用 Verlet 积分推进非固定质点,处理碰撞与过度拉伸约束,再把修正后的位置写回用于渲染的网格。

固定点规则支持多种固定配置。模拟循环还集成了项目提供的碰撞工具和感知表面的风场工具,包括湍流阵风以及风向、风力的实时调节。

开发工具
Unity / C#
核心模型
质点–弹簧粒子系统
积分方法
Verlet 积分
响应
约束 / 碰撞 / 风场

实现

五个系统

01

质点–弹簧拓扑

在整个质点网格上,用结构弹簧抵抗拉伸,剪切弹簧保持对角稳定,弯曲弹簧抵抗折弯。

02

胡克定律受力

根据静止长度、刚度和弹簧方向计算弹簧力:拉伸时将质点拉近,压缩时将其推开。

03

稳定运动与约束

采用 Verlet 积分,并加入过度拉伸约束,在不真实的拉伸破坏布料稳定性之前修正弹簧。

04

三阶段物理循环

逐帧管线:受力累积、积分与碰撞处理、约束求解,最后更新网格顶点。

05

可配置测试场景

通过固定点检测支持多种固定方式,并将课程提供的碰撞和风场辅助工具集成进模拟循环。

模拟场景

一个求解器,四项压力测试。