一片夏天。
轻轻颤动。
软得舍不得分享。
示意比例:1 个模拟单位约等于 3.5 厘米,果冻密度为 1.3 克/立方厘米。体积与能量会根据全部四面体及粒子实时累加。
这块西瓜由 608 个粒子与 2,277 个四面体组成,以固定 60 赫兹的 XPBD 步长、每步 10 个子步求解。每个四面体都会以有限柔度拉向经过最佳旋转的静止形状;这种共旋弹性约束也会把翻转的单元推回原位,同时体积约束让果冻接近不可压缩,因此拉伸时会像真实果冻一样收腰。
西瓜皮区域的刚度约为果肉的 3 倍。阻尼只作用于网格边上的相对速度,所以整块果冻依然可以自由下落和翻滚,但颤动会逐渐平息。地面接触会把粒子推回地板以上并加入库仑式摩擦;抓取则是对一片粒子施加有距离限制的柔性附着。
每一块都是西瓜原始静止平面上的凸多边形,并带有圆角。你在表面上画出的轨迹会确定一个竖直刀面;对每个被划过的块,程序会拟合它当前姿态的最佳旋转,把刀面转换回静止空间并切成两半,然后在你松手前预先建立新的四面体网格。随后钢刀落下:刀刃先在果冻上压出凹槽,切穿时新旧块立即替换,同时继承原本果肉的位置和速度;刀身继续把两侧分开,直到案板。埋在果冻内部的部分也会通过折射显示出来。每一块都是独立柔体,可以再次抓取、拉伸和切割,块与块之间也会互相碰撞。
光滑表面、西瓜籽与气泡是独立网格;每个顶点都通过重心坐标绑定到一个四面体,因此西瓜籽会随着周围果肉一起拉伸、旋转和移动。
WGSL 着色器会先渲染地板、西瓜籽和气泡,再绘制西瓜背面来估计每条视线穿过果冻的距离。正面会根据该厚度折射后方景物,并以比尔–朗伯吸收计算颜色;浅色层还会加入乳白散射,薄边产生背光泛红,菲涅耳反射与 GGX 高光共同构成工作室质感。地面会得到染上果冻颜色的柔和主阴影,以及由俯视高度图生成的接触遮挡。