首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

​Blender渐变膨胀布料系统设计解读

熟悉Blender的读者朋友应该知道,布料系统有一个非常重要的功能就是“膨胀”,通过不同的膨胀值,可以获得不同的材料效果,比如沙发、羽绒服、气球等等,那么有没有方法可以对膨胀区域进行控制,以实现渐变膨胀的效果呢?答案是肯定的,本期我们就来教大家如何操作吧!

01

设计模型并设置布料系统

既然是膨胀布料系统,那自然就需要建立在模型基础之上,这里需要注意一点,因为布料系统的计算是根据顶点而来,所以我们一定要避免顶点分布不均的问题,如果使用第三方模型,最好是用“重构网格”修改器来重新计算顶点,如果是复杂模型,就需要联动第三方插件来进行重构,这一步很重要,大家不要忽视了。

教程为了方便演示,就直接使用内置网格模型来处理了,但注意,即便是Blender内置网格模型也不能随便选择,以球型为例,最好不要直接用经纬球和棱角球来进行操作,经纬球的分布是两极密中间疏,棱角球的面都是三角形,容易出现边缘过于锐利的问题,最好的方法就是用立方体,在添加“表面细分”修改器之后,再用“铸型”修改器将系数设定为1,就能得到一个如图1所示,顶点全是四边形构成的标准球型了。       

图1

在这个基础上,我们就能开始进行布料系统设计了,但在此之前,需要应用全部修改器,然后进入球体的编辑模式,全选所有顶点后为它们单独分配一个顶点组,接下来就为球体添加布料系统,有几个关键参数需要注意,第一是各种质量步数,步数越多,帧间计算迭代就越多,拟真度就越高。

第二是顶点质量,这里指的是每个顶点的质量,所以数量越多,这个值就要往低调,否则物体的感觉会“变重”。第三是“压力”,也就是膨胀值,压力越大,膨胀的速度就越快,越容易被充满气。第四是形状,也就是钉固顶点组,我们需要选择刚刚为球体添加的顶点组,也就是所有的顶点,它的意义就是让选中顶点不受布料系统影响,保持在原位,而其他顶点则正常模拟,同时非常关键的一点,就是要如图2那样把缩放因子设置为-1,设置为0时弹性会很低,设置为正数是向内缩,设置为负数就是向外碰撞,负值越大膨胀越多。

第五是碰撞,主要是开启自碰撞功能,这样自身的顶点之间也有物理计算,不会穿模。第六是力场权重,如果不想要球体随重力往下落,就需要把重力改为0。

图2

完成这些设置后,我们还需要布置一个额外的力场,来让膨胀变得更无序化,建议设置一个“紊流”,这个系统就是每一帧都在随机方向产生力场,可以让球体的不同顶点向不同方向膨胀,但强度/力度一定要设置得够大才行,本教程设置为10000。     

02

利用额外物体,重新定义钉固组权重

第一步的设计我们搭建了球体碰撞的基本参数,但这时候播放视频你会发现什么事情都不会发生,这是因为钉固组全选了所有顶点,而我们的渐变膨胀效果,就是要让这个钉固组产生实时变化,那么具体要如何操作呢?方法也很简单,就是利用权重绘制来进行控制。

所谓的权重绘制,就是给每个顶点在0和1之间赋值,0为不选中,1为选中,对于一些具备浮点调整的参数,比如色彩里的饱和度,就可以在0和1之间取一个浮点值,对于我们的膨胀布料系统来说也是如此,我们可以通过权重绘制在每一帧都画一个不同的区域,进而实现渐变膨胀效果,所以此时最重要的操作就是确定绘制权重的“画笔”,我们使用的是一个沿Z轴方向压扁的立方体,当然你也可以直接用平面。

将立方体与球体相交,这时候回到球体,为它添加一个“顶点权重邻近”修改器,选中钉固顶点组,目标物体为立方体,邻近模式选择为“几何数据”并选择“面”,这时候切换到权重绘制模式,调整“最低”“最高”值,就可以看到如图3所示的权重绘制样式了,记得要将立方体和球体相交的区域绘制为蓝色,也就是0,也就是在告诉Blender“这个区域可以进行膨胀效果”,而其他红色的区域就是1,依然是钉固状态。       

图3

接下来就只需要调整立方体的位置,并在不同的帧给位置信息打上关键帧,比如第一帧在最下方,第100帧来到最上方,然后回到球体的布料系统烘焙数据再播放视频,就能如图4 那样,实现布料系统从下往上渐变膨胀的效果了。 

图4

03

实现材质渐变效果

虽然完成了渐变膨胀,但如果是渲染模式,就会发现它除了膨胀就没有别的特点了,那我们能不能通过一定的节点设计,让它碰撞区域呈现不一样的材质呢?比如就像气球,膨胀幅度越大的区域,就会因为材质拉伸变薄而颜色变浅且透明度增强,不过在Blender里应该怎么操作呢?

因为膨胀区域其实是由咱们的权重绘制决定的,所以我们只要找到这个区域的属性,就能将其作为系数,来连接两个不同的材质进行控制,问题的关键就是如何找到这个属性,虽然已经有现成的顶点组,但你会发现在着色器编辑器里其实是无法直接导入顶点组属性的,这时候就需要开动脑筋了,咱们的几何节点不就可以“捕捉属性”么?通过这个方法能不能捕捉顶点组权重呢?实际操作一下吧!

图5

为球体添加几何节点,并在组输入和组输出之间加入“捕捉属性”,捕捉的对象就是“已命名属性”,这时候直接点击名称,在弹出的菜单里就能找到咱们的顶点组权重了,将它连接到“捕捉属性”,并将“属性”连接至“组输出”,具体设置可参考图5。然后在右侧的修改器界面找到“输出属性”并重命名,比如我们命名为“1”,它就是材质节点所需要的关键系数了。

回到球体的着色器编辑器,我们为它添加两个“原理化BSDF”,一个是膨胀区域,透明度高一点,颜色浅一点,糙度低一点,而另一个就是正常的区域,透明度低一点,颜色深一点,糙度高一点,具体的参数大家可以自行调整,最关键是用“混合着色器”节点,导入“属性”,名称填写为“1”,也就是刚刚咱们从几何节点里捕捉到的顶点组属性,将其连接到“混合着色器”的系数再输出,你就会发现它以最正确的方式进行显示了,如果需要调节范围,可以在系数之前接一个“颜色渐变”,最终效果参考图6。 

图6

04

巧妙的联动是成功的关键

严格来说本期内容属于点通了就很简单,但如果没想明白就要花不少心思的类型,主要考验大家对Blender功能联动的了解程度,比如布料系统与权重绘制邻近,以及几何节点捕捉并输出属性的联动,这些功能其实都很基础,但在具体的设计项目里又需要经常使用,所以掌握这些联动技巧对于每个想要学好Blender的读者朋友来说都至关重要。

编辑|张毅

审核|吴新

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OVHHJ7CMhHW8i9pMY0kfcoZA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券