最新布料系统NCLOTH
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
布料系统N C L O T H
nCloth 简化一览
仅供学习与交流,如有侵权请联系网站删除谢谢36
仅供学习与交流,如有侵权请联系网站删除 谢谢36
观察效果,交互进行
nCloth 支持多边形,可能不支持nurbs 。
一些相关的菜单如下图:nMesh : 创建 nCloth
nConstraint : 创建约束
nCache: 创建缓存
nSolver:可以进行一些操作
Fields:里面有一些场
仅供学习与交流,如有侵权请联系网站删除谢谢36
仅供学习与交流,如有侵权请联系网站删除谢谢36
创建 nCloth 前要注意一点:首先要删除模型的历史记录,冻结物体。
接下来,选择旗子,点击nMesh > Create nCloth
Tips: 点击 Display Input Mesh 会显示物体本身的shaper节点,但是也失去了布料的效果。
点击Display Current Mesh 就切换回布料节点了。
Tips: Nucleus 是nCloth 的核心。
基本概念就跟引擎是一样的。
Nucleus中的参数都是以“米”为单位的。
如何使布料物体,忽视默认的重力和风力?就在nClothShape 节点下的 Dynamic Properties 栏,勾选 Ignore Solver Gravity 和 Ignore Solver Wind 。
勾选上这两个就会忽略掉默认的重力以及风力了。
如下图:
仅供学习与交流,如有侵权请联系网站删除谢谢36
仅供学习与交流,如有侵权请联系网站删除谢谢36
Nucleus 的 Space Scale
Nucleus 中的 Scale Attributes 栏中的 Space Scale 值,拖动它会对最终的模拟效果有很大影响。
它的属性值与模型的大小有关。
如果你的模型是以厘米为单位的。
那么你就要把它的属性值调整为0.01。
如果模型是以分米为单位的,那么它的属性值为0.1。
以此类推。
如下图:
仅供学习与交流,如有侵权请联系网站删除谢谢36
仅供学习与交流,如有侵权请联系网站删除谢谢36
当你给布料所跟随的物体K动画时,为了节省资源可以先把布料效果暂时无效化,等K完动画以后再来看布料效果。
方法是:Modify 菜单下Evaluate Node栏中的 nCloths 勾选去掉即可。
如下图:
仅供学习与交流,如有侵权请联系网站删除谢谢36
Nucleus 的 Time Attributes
Nucleus 中的 Time Attributes 栏中的 Start Frame 控制着布料解算的起始时间。
如果需要开始静止一段时间的话可以使用这个参数。
如下图:
36
36
Nucleus 的重力和风
首先看图:
36
下面,详细讲解参数。
这里边的参数每个都会对布料的模拟产生影响。
36
●Gravity :主要属性重力值默认为9.8米/每秒。
(因为布料模拟的默认单位为米),如果为0重力将失去作用
●Gravity Direction
0,那么重力也将失去作用。
如
果大于1就会强化重力效果。
●Air Density : 主要属性空气的密度。
风的主要参数,如果为0,风力就失去作用。
调大它会增加风的效果。
●Wind Speed: 风速。
越大风力越强,为0。
风力失去作用。
●Wind Direction: 风力的方向。
分为3个方向,为0,风力也将失去作用。
它也是风力的倍增器。
●WindNoise: 为风的方向添加随机性。
●Lift: 这个参数在 nClothShape中,后图有标示。
这个参数与风力中的 Air Density 有关联性。
●Drag:这个参数在 nClothShape中,后图有标示。
这个参数与风力中的 Air Density 有关联性。
36
36
布料的碰撞1
Tips: MAYA中按住 H + 鼠标左键调出热盒可以快速切换功能模块。
首先,要注意圆布的制作要点:面数要均匀,如下图:第一个是标准的POLY圆柱所有的顶点集中在了一起,这就是个很糟糕的选择。
使用这个做布料运算就会在中心出现奇怪的褶皱。
第2个是使用NURBS圆环曲线生成平面并转换为POLY生成的圆形桌布,注意生成完了以后要进行一次Clean Up使它规整。
这个模型面数分布平均,是个理想的模型。
36
接下来就可以进行正式的制作了。
首先,把圆桌布做成布料。
具体就不说了。
接下来,要把墙壁做成被动刚体,让它与布料产生碰撞。
如下图:
36
36
点击红色标识的命令即可把墙壁变为被动刚体。
注意在 Solver 下拉列表中要选择跟布料一样的nucleus1 系统,否则它们就不在一个引擎下工作,自然就无法进行碰撞了。
布料的碰撞2
这里主要讲了Display Input Mesh 和 Display Current Mesh 以及 Convert nCloth Output Space 这三个命令。
如图:
36
前两个就是显示基础网格还是显示布料的切换命令。
最后一个就是切换布料的坐标系。
布料有两种坐标系:局部坐标系和世界坐标系。
两者区别简单来说局部坐标系就是基础网格和布料共享一个transfrom 节点即移动旋转放缩都在一起。
而世界坐标系就是布料拥有了独立的坐标系,它可以有自己的移动旋转放缩,同时也受到基础网格的影响。
下面的图A 和图B就是表明这两种影响的不同:图A局部坐标系:
36
36
图B世界坐标系:
36
36
布料的碰撞3
如何在不减缓模拟速度的情况下,增加布料的面数?答案是:在布料物体上进行SMOOTH操作,而不是在原始物体上。
Exturde 命令也是这样。
如何删除布料的历史?答案在下图:
36
要注意:这里删除的历史是指的原始物体上的历史,而不是布料本身的历史。
如果删除了布料本身的历史,那么布料也就不存在了。
建立和使用nSlover
要学习如何建立解算以及如何切换解算器。
Substeps 和 Max Collision Iterations
首先要将两个很重要的属性。
在nucleus中的 Solver Attributes 栏中的 Substeps 和 Max Collision Iterations。
这两个数值是控制布料解算精度的数值。
Substeps 是说在每一帧的布料的解算次数,数值越高,精度越高,速度也越慢。
Max Collision Iterations 是说在每一次Substeps中,布料的最大碰撞次数,数值越高,精度越高,速度也越慢。
如下图:
36
36
建立新的解算器:
建立方法是: nSlover > Assign Solver > New Solver 。
如图:
你会看到有两个选项: New Solver 和 nucleus1 。
nucleus1是建立布料时默认的引擎(解算器)。
因为我们要新建一个解算器,所以点击New Solver。
点击完以后,你会看到大纲视图里多了一个nucleus2。
如图:
36
36
播放动画,会发现布料穿过了墙壁。
这是当然的啦!因为它们不在一个解算器里了,因此没有了交互。
因此,如果要发生碰撞,物体就必须要在一个解算器里。
解决方法就是,选中墙壁,为它标记解算器nucleus2。
如图:
36
36
再次播放动画,发现一切正常了。
//引申一下,如果场景复杂,穿插物体较多就可以使用这个不同解算器的方法使布料本体可以“穿透”一些物体,达到神奇的效果。
//
使用两个解算器,还可以提高解算的精度以及优化计算时间。
具体思路的这样的。
先用一个较低解算值的nucleus1来进行场景的预览,用来调节布料和碰撞物体的位置啦,布料的基本属性啦等等。
如果满意了,可以保存一个预设。
保存预设方法如下图:
然后,在把这个保存的预设导入nucleus2中,并且增大Substeps 和 Max Collision Iterations,来提升解算精度,例子中使用了 6 和32。
增大精度也意味着计算时间会延长,这里我们要意识到Substeps 和 Max Collision Iterations的数值是可以K帧的。
因此,在物体碰撞前我们用一个很小的值来节约计算时间,在碰撞的前一帧调大数值来提高精度,达到更好的效果。
这就是鱼和熊掌兼得的法子。
36
AE Display菜单和Interactive
AE Display 菜单其实就是一个显示菜单,但它不是用来在视图中显示分类的,而是在物体的属性编辑器里来显示相关的栏。
而 Interactive Playback 就不一样了,它的功能很有趣也很实用。
点击它就会播放动作,神奇的是在播放时你还可以移动墙壁来观察它与布料之间的交互影响。
(实测在播放过程中无法移动布料)(有时候点击命令不执行,这时你先直接点击播放动画让时间条走一下,然后再点击 Interactive Playback 往往就会起作用了)。
这种交互会让你很方便的去调整布料和碰撞物体中的关系或者修改布料的属性。
碰撞厚度
播放动画,会发现例子中布料和碰撞物体之间有着很大的缝隙。
选择碰撞物体,按Ctrl+A 进入属性编辑器的nRigid节点,在Collisions栏下的Solver Display 下拉菜单中,选择Collision Thickness ,此时,视图中碰撞物体会被一个黄色的线框所包裹,这个黄色线框就是碰撞物体的厚度了。
如图:
36
如果,我增大 Thickness 的值会看到黄色线框也跟着增大,此时播放动画就会发现布料离碰撞物体更远了。
这说明黄色区域就是MAYA计算碰撞时的“外壳”,也就是所谓的“厚度”。
36
我们再来看布料,会发现它也有Collisions栏,从Solver Display 下拉菜单中,选择Collision Thickness 也可以看到布料也有个黄色区域。
注:碰撞厚度的黄色物体不会被渲染。
如果加大它的Thickness值再播放,也会发现布料离碰撞体更远了。
这就说明MAYA的布料碰撞是计算黄色物体之间的碰撞而不是布料本身。
所以,调整Thickness值的大小就可以控制碰撞之间的间隙。
36
36
接下来,要讲讲下边的3个数值:Bounce(弹力) , Friction(摩擦力),Stickiness (粘性)。
Bounce 顾名思义就是弹力的意思,这里要注意不要将Bounce值调的大于1,否则会造成不稳定。
如果你非要调整的话,你可以调节碰撞物体的Bounce值。
Friction(摩擦力)这个值也很好理解,麻布的摩擦力肯定要大于丝绸很多。
要注意的是,这个值往往会和Stickiness (粘性)相关联。
两个值很相似,不同在于 Friction(摩擦力)是在物体切线方向上的力而Stickiness (粘性)则是物体在法线方向上的力。
Stickiness (粘性)这个值在场景上的作用实际上是双方Stickiness (粘性)的和,也就是它们之间相互作用的关系。
其实Friction (摩擦力)也是这种关系。
举个例子来说:布料的Friction(摩擦力)和Stickiness (粘性)为1 所产生的效果和布料以及墙壁的Friction(摩擦力)和Stickiness (粘性)值各为0.5 所产生的效果是一样的。
碰撞层1
发生碰撞的三个条件:
1.nCloth、passive object要具有相同的nucleus solver;
36
2.碰撞层之间的差值(即布料和碰撞物体之间的差值)小于等于Collision Layer Range ;
3.nCloth的碰撞层大于等于被动碰撞物体的碰撞层;
注意:碰撞层小的拥有优先权(低层级影响高层级)
个人理解:
1)低层级的相当于被动物体;
2)低层级的对高层级的具有作用力;
3)高层级的不对低层级的具有作用力;
碰撞层的位置如图:
36
Collision Layer Range 的位置如图:
36
36
精品好文档,推荐学习交流
碰撞层2
主要是讲述各层级之间的关系。
举例来说,例如人穿衬衣外套夹克。
那么把人设为0 级,衬衣设为1 级,夹克设为 2 级,并把Collision Layer Range设为1 。
那么皮肤将会对衬衣起作用,而对夹克不起作用。
衬衣将会对夹克起作用,夹克被衬衣所驱动而衬衣不会被夹克所影响。
它们之间的关系就是人物>衬衣>夹克。
通过设置碰撞层,我们减少了不必要的碰撞,节约了资源节省了计算时间。
仅供学习与交流,如有侵权请联系网站删除谢谢36。