文章目录
一、前言
二、遇到的问题
- 结算慢
- 怎么忽略碰撞
- 新节点学习
三、节点参数解释
- stretch抗拉伸
- bend 抗弯曲
- 计算方式
- solve
- Target
- vellumio
- 帧更新)
- 迭代---3种
- 软硬约束
- plasticity
- sliding
- 四面体约束
- distance 约束 和 triangle stretch 区别
- match animation
5.Tip
四. 小技巧总结
1.关于解决穿插
2.layer
3.案例分析
4.总结
5.遗留问题
一、前言
场景转布料学习Staring
布料 材质:丝绸/牛仔/皮革
区别:软 ,褶皱小/ 褶皱锋利 /橡胶相比牛仔更软。
1.丝绸
厚度 0.001 bend 0.0001 刚度压缩 100000(保留皱纹)、
2.牛仔
褶皱锋利:——可以通过bend plasticity变形 (只要弯曲低于值域,马上硬化形成锋利的边)
3.皮革
因为比牛仔更加软 所以我们通过改刚度压缩 获得更多的塌陷
二、遇到的问题
1.结算慢
- 缓存
- 衣服有重叠的部分
- 面一直在变
2.怎么忽略碰撞
先前我们可以在碰撞体下面命名,碰撞体的名字为s@collisiongroup=“dis_grp”;
后续结算s@collisionignore=“dis_grp”;就可以忽略掉。在解算前设置
3.新节点学习
vellumframe 在solver 结算器之前使用
vellumfframe 保证子步骤和结算一样
vellum constraints (Bend Across Triangles)
vellum constraints (Bend Across Triangles)可以单独设置布料的bend数值。
作用 对于快速移动的物体可以通过 矫正来抵消位移带来的cloth惯性移动。
0不影响保持结算动态 1矫正 抵消掉惯性带来的延后
compute Angular Vel 矫正旋转的
delatmmesh 光滑面平滑面
三、节点参数解释
damping Ratio=velocity Damp { 大 拉伸小 不抖
小 拉伸大 抖
damping Ratio | velocity Damp | |
---|---|---|
大 | 小 | 拉伸小 不抖 |
小 | 大 | 拉伸大 抖 |
mass 质量 区别不同布料?? 加大质量 布料会变软 (待补充)
thickness 厚度 会影响褶皱 /包括穿插之类的
重要的2个参数
1.stretch抗拉伸 (越大 越防止拉伸)**
-
stiffness
强度值 1e+10(最大了所以永远不拉升)————如果拉伸表示精度和cons值太小计算错误 -
Damping Ratio
动能消耗 小——消耗慢——抖 大——消耗快——不抖 不要大于0.1 -
restLength Scale
小于1 约束距离变小——收缩
大于1 约束距离变大——拉伸开来 -
compression Stiffness
获得高分辨率高细节{是否保留褶皱
------eg: 皮革 牛仔 丝绸—————数值:低 中 高
原理就是收缩空间有多少 越大细节越多
StiffnessDropoff
2.bend 抗弯曲 (越大越 防止弯曲)
strength
3.2种计算方式 1stOrder 2stOrder
1-计算时间长— 反弹少
2-计算时间短—反弹多
second order 获得的细节丰富——受sub影响 越大能量消耗越小,预测越准确
second order 获得的细节丰富——受sub影响 越大能量消耗越小,预测越准确
实际案例:衣服迎风吹,second细节更加丰富 实际案例:衣服迎风吹,second细节更加丰富
1.第二种反弹多
2.第一种反弹少
可以通过maxacc来解决弹的问题
加速度>20l 在碰撞的时候切换到第一个算法上面,<20用第二个 同时有2个的算法优势
所以如果加速度太大——无法切换回来——导致还是会弹的问题
4.solve
Collision passes 碰撞检测 越大越精细 碰撞过渡就自然
post Collision Passes 在多层布料结算时候可以防止穿插
5.Target Path
6.vellumio
缓存可以删除属性
7.尽量选择帧更新 (效率块)子步骤更新准确但是慢
8.迭代
1. 约束迭代
情况下增加子步骤 会比迭代好些,(可以通过更多的预测精准的找到位置变化。)
2. 碰撞迭代**
处理碰撞中会出现的问题///处理高速的or碰撞次数较多的物体开高比较精准。。
很吃资源,运行方式是 约束迭代:碰撞迭代 100:10 —— 也就可以得出如果1:1的话会得到更加精准的结算。
光开smooth iteration 会出现抖的情况 (一直在聚拢) 所以可搭配着来 约束迭代+光滑迭代——快速平稳。
结算人物运动时候会出现不想要的错误 就可以通过加大光滑迭代去处理。
3.光滑迭代
9.软硬约束
hard pin welds 直接更新点的位置 可打断约束
soft pin stitches 约束结算之后更新点的位置 可打断约束/可塑性
weld 硬约束——效果——布和布直接直接贴合没有缝隙
weld
stitches 软约束——效果——布和布直接有约束线连接
eg: 衣服缝合的时候 weld 缝合没有空隙 stitches 会有缝隙;
10.plasticity 可塑性
threshold 大于多少就形变
rate 多快
hard 《1约束变软 、、、、、 》1约束变硬
参考牛仔 全变硬——速度快—硬度高
直白的说就是碰撞之后是否保留形变!!!
stiffness 和bend 都有 1. 一旦拉伸强度超过多少就 2.一旦弯曲度超过多少就
11.sliding 滑动
作用
颜色可以控制强度(红色移动的快,蓝色慢)
12.四面体约束
Tetrahedral Volume 四面体约束 ——作用保持四面体体积存在/ eg
前面缩放了——此约束可以让物体返回缩放前的体积 tip:但是不会返回measure大小
13.distance 约束 和 triangle stretch 区别
一个不会保持四边面
一个维持四边面
Stretch Type(拉伸类型)
当约束类型设置为布料时,此参数选择使用哪种类型的拉伸约束。在更高的布料分辨率下,线性的Triangle Stretch(三角形绷紧)比Distance Along Edges(保持边的距离)更快地收敛到其适当的刚度,但不能通过启用Enable Warp/Weft参数来支持各向异性。
三角stress可视化更加平滑?
14. match animation
勾上会生成一个 gluetoanimation 属性
控制约束点是否有动画 tip:注意这里是glue to!!animation
Tip
软约束 不要在当前节点设置参数 eg cloth下pin了物体就别设置参数 ,会对模型造成变化
- 错误
- 正确
四、小技巧总结
相机锁定区域发现布料问题
模拟后,解决问题区域的一个方便技巧是将相机作为遵循几何形状的铆钉的父级。使用这种方法,任何问题都会更容易发现和解决。
脚步:
在要关注的几何部分上创建一个点组;在这里,我在腰带的一部分上做了一个点组选择。该组可以称为“for_rivet”
在名为“OUT_rivet”的组之后附加一个 Null
在 obj 级别,创建铆钉节点并指定铆钉几何的路径;这将是新创建的 Null ‘OUT_rivet’
指定点组“for_rivet”
在相机的变换部分选中“保持位置”
将相机作为铆钉的父级
链接: link
如果人物有大幅反转,裙子容易歇起来,可以通过k attach的强度过渡
五、关于解决穿插
1.sdf push
穿插处理
1.勾选fill interior
2.@surface -= .005;
wrangle 这一不会把 实心变空心(其他节点会的)
3.
float dist = volumesample(1, 0, @P);
vector grad = normalize(volumegradient(1, 0, @P));
@smooth=0;
if (dist<0)
@P -= dist*grad;
@smooth=1;
后续可以用expand -grouppromote——smooth优化
这个办法没办法完全解决掉大的穿插
可以用detangle解决;
穿插面拉出来
通过结算解决穿插
2.穿插混合
3.官方參數對比
4.看得见的衣服精度高些/其他区域低一些
meshsize 为自己画的区域;
float min = ch("min_length");
float max = ch("max_length");
f@minmeshsize = min;
f@maxmeshsize = max;
f@targetmeshsize = fit(f@meshsize, 0,1, max,min);
画图画的是meshsize
官方視頻圖
1.高低分辨率混合
2.attach出錯——collision對象名字問題
3.彎曲手臂布料跟隨——可以通過手臂動畫跟隨
layer 意思
设置一块布为1 另一块为2 solver中layer Shock为4 第一块布 4
第二块布 8
————也就是layer越底布越轻
案例分析
1.eg肩带滑落,我们可以通过颜色去读取之前的动画
2.衣服还原回去(poi
ntdeform)出现拉伸——起因是三角面和四边面的问题??——解决办法 可以分区在expand-2 在exand出去
这样零散的点就被移除了
3.
4.蝴蝶结(遇到一个比较好用的办法,可以舒展开布料)
线resample0.05——表示点点之间为0.05米
我们定义约束线restlength=0.05 这里注意不是0.05的大小而是0.05米
这样布的面就成正方形也就缩放开了!!!!
结算出现这种情况
1.检查碰撞面数 /衣服面数 是否每帧都在变化。
2.头发拉伸——扭曲会炸——我把pin约束改为attac就行了具体原因???
3.出现类似拉伸情况-可以通过smoothiterations 去解决 如果加大smoothiteration也无法解决——可能是碰撞的问题 加大collision pass去修复 或者说加大子步骤去解决
solve 结算器中的 Secondary Constraint Pass
约束组中的所有约束都将在一个单独的、交错的传递给其余约束
2个作用
有一些昂贵的约束类型不需要像其他约束那样频繁地求解,因此启用此选项并选择低求解频率可以提高性能
丝绸或棉花 可以使用 因为布料的弯曲很低所以可以启用提高性能。但是不适用于皮革等较硬的材料。
拓扑结构频繁变化的约束
通过将Constraint Group设置为@type=ptprim并将Solve Frequency增加到 1 将 Stitch 约束移动到另一个通道将保持相同的刚度,但会消除由于求解顺序的变化而导致的四面体抖动。
4.丝绸/皮革
attach point之后加distance约束是为了保持边缘不会缩太紧凑
总结
牛仔裤
尺寸越大——布料越稳定——不抖
三角面//四边面——四边面纵线拉扯比三角的要多、
collision group=
官方 vellum atribute 可以查属性
遗留问题
1.velocity 没办法读取动画的v?
2.头发的约束 会产生很多的弯曲 约束不住头发?
3.头发结算会炸开?
4.约束点应该约束在哪里?
5.怎么快速迭代参数,得到布料的确定数值呢?
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
说道:图片没了大佬
说道:@feWTkd6X:图床有问题,可以在CSDN搜索作者名字"JACKLONGFX"查看原文