Houdini17全新破碎系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▌包含三种预设形态的破碎节点
这个节点可以让你生成混泥土、玻璃、木头三种破碎形态。
它有四个输入口:模型(geometry)、约束(constraint geometry)、代理物体(proxy geometry),还有一个可选输入,可以连接自定义点(extra points)来控制破碎形态。
你可以直接在Material Type那里选择三种破碎的预设。
如果连接了约束物体(constraint geometry),它会自动为你在碎块间生成约束。
▌使用不同的显示模式
Guide Geometry选项可以控制不同的显示模式。
Fractured Geometry是三种预设里都有的模式,顾名思义显
示破碎后的形态
Constraint Network也是所有预设都有的模式,它会显示碎块间的约束网络(按w键切换线框显示)。
Primary Volume和Edge Detail是concrete特有的模式,分别代表每个破碎层级(primary fracture level)的分布以及布尔运算切割物体所使用的切割面
Concentric Noise和Edge Detail是glass特有的模式,显示用来生成玻璃破碎所使用的切割纹路。
至于wood特有的三种显示模式,分别代表木头破碎的三种形态:颗粒感的(grains)、切割的(cuts)、细碎的(splinters)。
▌生成混凝土(concrete)形态
Fracture Level参数控制切割层级。
有点像PS里的图层,增大这个值将增加碎块层级和数量,在碎块上生成更小的碎块。
把Edge Detail打开将在破碎面上增加noise。
使用RBD Paint节点可以先在物体上绘制易碎区域,然后再连到RBD Material Fracture上。
它会使用一个density属性,来控制易碎区域生成更多的碎块。
对了,需要在Scatter From选项卡选中Attribute并在Attribute Name那里填入density。
▌生成玻璃(glass)形态
注意!该功能暂时只支持面片!不支持多边形几何体,而且不支持nurbs曲线。
当你输入端连进来的是好几个面片的时候,Fracture per Piece是一个非常有用的参数,它会分别在所有的面片上生成破碎。
这个参数可以根据piece属性区分不同的物体,如果没有piece属性,就会根据物体与物体之间的连接性来区分。
这个参数三种形态的预设都适用哦。
Cracks选项卡下面的参数控制玻璃破碎生成的数量。
在Chipping选项卡下的Enable Chipping会让碎块增加更多细节。
它可以让碎块与碎块之间产生进一步的裂痕。
▌生成木头(wood)形态
木片破碎方向默认为以物体最长的那个轴为方向。
Cut Spacing用来调整切割次数,从而控制碎块的数量。
Cluster选项卡用来将小块的木片“粘连”到一起形成较大块的木片。
给你的破碎形态更多变化。
glass只支持有一定厚度的物体。
在这里举个极端化的例子,如果你的输入物体是一个长宽高相等的正方体或是一个面片,由于无法计算厚度信息,因此产生的破碎将会改变原始物体的形状,如下图:
当我将它压扁,一切就都正常了:
因此,glass目前只支持具有明确厚度的物体。
这样说大家理解了把~
OK。
我们今天继续来聊新刚体系统的破碎流程。
▌H17破碎工作流程初探
通常,在刚体解算中,物体是由于一些外力的碰撞或力场的影响产生破碎。
举个例子,地震摧毁房屋,混凝土墙、木制门、玻璃窗户等等不同材质的物体都会破碎。
或者你直接拿一个“球”去撞击墙面,同样产生破碎的效果。
我们都知道,Houdini中的破碎流程是预破碎(pre-fracturing)。
也就是进入DOP解算前,先在SOP中,将物体切割成小碎块,并在碎块之间生成约束(constraint)将它们相连。
预破碎流程给予用户最大化的对破碎艺术形态的控制(比如你可以生成大块的碎块并夹杂一些细小形态的碎块等等)。
当遇到外力,超过了约束(constraint)所能承受的范围,预破碎物体就会产生碎裂。
或者你可以手动打破约束(比如K帧),控制物体什么时候碎掉。
现在,预破碎迎来了新的工具——RBD Material Fracture节点。
也就是昨天我们讲的。
这个工具有着诸多的参数控制预破碎形态。
当然了,这个节点是“高层级”的(其实就是很多节点封装成的HDA,可以理解为节点大集合),如果你想要更多的控制,可以使用SOP里较低层级的其他节点。
有别于预破碎,你还可以在DOP里实现动态破碎。
使用Make Breakable工具,不过不推荐。
这种方法进行大型破碎的时候会非常难受。
▌新流程的实现方法
RBD Material Fracture节点有三种不同的预设形态,它可以像PS图层一样进行层级化的破碎;可以模拟
低精度的代理物体,模拟完成后传递动画到高精度原始模型上;可以自动生成glue约束;可以在现有约束网络
上生成新约束;可以输出一些有关破碎的属性或组,有利于用户进一步的控制。
使用RBD Material Fracture节点在SOP中预破碎你的模型。
该节点自动生成glue约束。
你可以在Constraint选项卡里面的Primary strength参数设置约束强度。
当进入到DOP解算后,你可以退回到RBD Material Fracture节点来调整约束强度,从而控制破碎形态。
约束值的大小取决于碎块的大小,也取决于你想实现什么样的效果。
约束值设为1通常会直接断掉。
如果你想让模型在被其他物体碰撞之前保持“粘连”,就需要调整约束值,让它处于一个合适的大小,从而在没
有外力影响下不会被打断,碰到外力后又可以碎掉。
RBD Material Fracture节点后,可以直接点工具架上的RBD Objects,回到物体层级选择你的预破碎模型,然后回车,就可以一键生成DOP解算。
➤使用Group节点来给不同材质的物体打组。
例如,门、玻璃窗、墙。
这样你可以分别对它们进行破碎。
➤如果在解算时看到有碎块乱晃,可以使用POP节点的drag来让它们变稳定一些。
▌预破碎约束
如果你已经有了一些物体,你可以选择(不是必须的步骤)在进入RBD Material Fracture节点之前,使用Connect Adjacent Pieces节点设置glue约束。
比如,破碎一栋房子,需要先将门、窗户和墙约束到一起。
由于RBD Material Fracture节点对物体进行了破碎,因此会基于原有约束生成新的约束。
例如,一扇窗户与窗框约束在一起,当进入RBD Material Fracture节点进行破碎并生成约束后,原先窗户与窗框的约束仍然存在。
▌输入与输出
RBD Material Fracture节点与其他SOP中的破碎节点都有一套几乎一样的输入与输出,就像毛发节点网络一样,可以让数据顺畅的自上往下传递。
第一个输入/输出口连接原始物体。
第二个有颜色的输入/输出口连接的是约束。
第三个输入/输出口连接的是代理物体(低精度物体)。
▌约束网络
Houdini的约束网络是由一些含有属性的线(polywire)组成,它们代表碎块之间的约束关系。
它们在进入DOP解算中时会被相应DOP中处理约束的节点(Constraint Network)继承。
每一条约束都是两个点组成的直线(polywire)。
每条线含有一个constraint_type属性(面属性)代表约束的类型。
常见的约束类型有glue和soft。
Glue约束在外力没有超过约束强度前,始终保持两个碎块粘连在一起。
soft约束有点像弹簧,不过没有弹力,在被打断前会变弯。
约束线可以有其他面属性,比如strength代表glue约束的强度,stiffness和dampening代表soft约束的强度。
约束线上的两个点含有一个name属性,代表它们连接的碎块的名称。
就像上面所说,可以使用Connect Adjacent Pieces节点来设置初始约束网络,然后使用RBD Material Fracture节点来进一步生成约束。
▌低精度代理物体
RBD Material Fracture节点处理低精度物体非常快。
你需要让高精度和低精度物体的name属性保持一致(比如,将高精度物体进行预破碎,每个碎块生成一个name属性,然后通过复制并减面来创建代理物体)。
▌Cluster
Cluster意为簇,指将小碎块结合成大碎块。
有下面两种工作流程:
如果你只是想让一些小碎块永久性“粘合”,只要给它们相同的name属性即可。
对于一些要求较高的场景,比如刚开始的镜头只有大碎块破碎,之后的镜头大碎块进一步碎成小碎块,可以用多层级的约束网络,然后控制不同层级的约束断裂时间。
RBD Material Fracture节点下的wood预设里包含cluster的设置。
你也可以使用RBD Cluster节点手动设置cluster。
▌将预破碎物体导入DOP解算
Rigid bodies工具架包含诸多工具来导入预破碎物体到DOP。
RBD Objects:使用这个工具架来将预破碎导入DOP。
它会分析name属性识别不同的碎块,并将约束导入Bullet约束网络。
RBD Hero objects:用来导入单一的、不会破碎的刚体。
不要用它导入预破碎物体。
RBD Glued Objects:导入不带约束的碎块并自动添加约束。
这是一个过时的工具架,所以不要用它导入RBD Material Fracture节点预破碎后的物体,否则会引起约束冲突。
Make Breakable:让物体变成动态破碎物体,在解算时自动计算破碎(不推荐这种方式)。
Debris 工具架:在碎块边缘生成粒子,你可以使用这些粒子进一步生成烟雾、灰尘、碎屑等二次效果。
▌RBD SOP支持的节点
以下这些节点支持RBD Material Fracture。
它们与RBD Material Fracture节点拥有一样的输入和输出端口。
RBD Paint:可以让你在原始模型上绘制属性,比如绘制碎块密集区域。
有以下几点注意:将这个节点放置于RBD Material Fracture之前;使用它绘制density属性来控制碎块密集区域;在RBD Material Fracture里,设置Scatter from为Attribute。
RBD Constraint Properties:编辑约束网络。
与RBD Material Fracture节点里的Constraints选项卡很像。
你可以使用它来编辑约束网络以实现更复杂的控制。
RBD Interior Detail:给内部破碎面增加noise。
与RBD Material Fracture节点里的Detail选项卡很像。
RBD Cluster:簇。
与RBD Material Fracture节点里的Cluster选项卡很像(只有wood模式才有)。
RBD Pack:合并三个输入(几何体、约束、代理物体)为一个输出。
RBD Unpack:与上面的正好相反,将几何体、约束、代理物体分离为不同的输出。
▌相关的SOP节点
RBD Material Fracture节点内部是由下面这些节点组成,你可以手动使用它们:Boolean Fracture
(Boolean升级版)、Voronoi Fracture、Exploded View。
还有一些更低层级的节点运用在RBD Material Fracture中,同样可以手动使用:Connect Adjacent
Pieces、Assemble、Voronoi Fracture Points、Voronoi Split。
▌RBD Convex Proxy
在H17的刚体工具架上,你可以看到RBD Convex Proxy这个新增的工具。
它的作用是生成原始物体的代理物体,运用convex分解技术,将复杂模型简化而又不丢失细节,生成对解算友好的代理模型。
它用的是Convex Decomposition这个SOP节点来生成代理物体。
这个工具跟它旁边的RBD Sphere Proxy原理非常像,只不过后者是使用球体简化模型,会丢失很多细节,不如前者精准。
但后者的生成速度非常快,适用于远景等对运动形态要求不高的场景,而Convex Decomposition 这个节点适用于更加复杂的硬表面物体。
▌RBD Convex Proxy使用方法
1.选择需要生成代理物体的模型。
2.你可以预先对模型进行预破碎处理,比如使用RBD Material Fracture。
3.点击RBD Convex Proxy工具架。
4.可以适当调整Convex Decomposition节点的参数,可以通过concavity threshold参数微调。
5.通过查看Transform Pieces这个节点来查看通过代理物体解算驱动的原始物体。
简单的来说,如果你要解算的刚体模型比较复杂,有较多的棱角,这时候你就需要使用这个工具来生成合适的代理物体,从而得到完美的解算效果。
大家可以用Houdini自带的test geometry试一下,有一个章鱼的模型。
▌RBD soft constraint
这是一个H17中新增的专属刚体系统的新型soft约束。
它与spring弹簧约束非常像,只不过被撞击后不会反弹回原型,从而实现封面图上的类似车子撞瘪的刚体效果。
soft约束是众多约束类型之一。
约束关系在DOP中作为数据节点连接到Constraint Network节点,从而实现对约束的控制。
像弹簧约束(spring)一样,soft约束施加一种力作用于物体约束点之间,距离越大力就越大。
但这两种约束类型存在一些差异。
soft约束明显更稳定,弹簧约束有时容易崩(例如非常硬的弹簧或质量小的物体)。
不过,在较大的timesteps下会产生一些抖动的情况,因此需要把substep调大来得到比较好的模拟。
与弹簧约束不同,soft约束无视物体质量(mass),因此在具有不同质量的物体的模拟中,可以更游刃有余。
这个soft约束仅仅只能被刚体解算器使用。
使用方法非常简单,创建好预破碎后,点击刚体工具架的RBD Objects。
系统会自动为你创建Soft约束。