Houdini_RBD_刚体约束

本文档介绍了Houdini中的刚体(DOP和RBD)、动力学模拟、ConstraintNetwork节点及其参数,包括锚点属性、不同约束类型(如硬约束、软约束、粘连约束)的使用方法和案例。通过详细的步骤和参数解释,帮助读者理解并掌握Houdini中的物理仿真技术。
摘要由CSDN通过智能技术生成

仍然是看视频的笔记,摸着大佬们过河。
有点杂有点乱,如有错误,多多指教。
原视频链接:rbd_CONSTRAINT01_哔哩哔哩_bilibili

文章/笔记个人推荐:
1、知乎@刘鹏云_RBD
2、感谢R姐的无偿pdf笔记分享——哔哩哔哩@Rosarita_Art

pdf笔记下载链接:https://pan.baidu.com/s/1kMg8TskIGZsFsGK0vTNzPA?pwd=457q 
提取码:457q。

前面四部分主要是参数之类文字解释,可以先过一遍再回头细看,结合工程文件阅读更佳,使用版本Houdini19.5.493,工程文件下载链接:https://pan.baidu.com/s/13HycFLb_oRURzASlUkr_hA?pwd=z5gf 提取码:z5gf

一、什么是刚体/DOP/RBD

知乎老哥@樱桃小嘴拆拆怪 的解释:一起学习Houdini——刚体动力学

以下为【知乎@樱桃小嘴拆拆怪】文章的部分摘抄,详细可点击上方链接去看看。

刚体:物体在外力作用下不发生形变的物体,刚体通常具有固定的形状和大小,不会压缩、伸展或挤压。
DOP:Dynamic OPerators 的缩写,DOP 用于构建模拟。模拟从 SOP 网络读取几何并将数据传输到 DOP 网络,例如用于刚体和热模拟的碰撞或源几何。
RBD: (Rigid Body Dynamics,即刚体动力学) 是 Houdini 中用于物理仿真的一个子系统。它可以模拟刚性物体的碰撞,弹性,重力等物理行为,使用 RBD,可以创建如碰撞,摔倒,破碎,液体等复杂的动态效果。它与 DOP系统配合使用,可以创建出更为真实的动态效果。

二、基本工作流Basic workflow

本小节来自Rosarita_Art的笔记

三、Dopnet动力学模拟部分节点、参数、属性

1、Constraint Network节点
Constraint Network节点位于Dopnet内,属于primitive层级。

第一个输入点:需要处理的对象
第二个输入点:创建约束
第三个输入点:约束解算器/可以加个SOP solvers
        SOP solvers节点:该节点内的最后一个relationship_geometry,默认导入约束,可以试试连这个(工程文件第12个案例)

2、Constraint Network节点参数面板
geometry Source:使用端口选择需要处理的对象更方便
Use Object transform:如果在geo层级有transform变换,则勾选此项
Overwrite with SOP:用 SOP 覆盖。如果为1,则会自动读取dopnet外面的约束(工程文件第14_2实例)
Attach Internal Constraints to Object:勾选前,约束独立;勾选后,(内部)约束附加到刚体/对象;
(详情请看官方文档,具体有啥用暂时看不明白)

3、约束属性
constraint_name:约束的数据name。//需要相同的name才可以创建约束
constraint_type:约束类型/有position、rotation、all,默认position
next_constraint_name:下一个约束的数据name。
next_constraint_type:下一个约束类型
propagate_iteration:粘连约束独有的

4、反馈属性
线性约束(linear constraints): force、distance
旋转约束(angular constraints): torque、angle
Glue约束(glue constraints):impact
反馈属性由dop解算器创建,以提供有关约束在前一个时间步中的行为方式的信息。这些属性可用于控制何时打破约束。
如下图所示,反馈属性在第二帧开始出现,

5、Anchor Attributes锚点属性
可用于控制Anchor如何附加到对象。主要针对旋转约束,锚点的两个属性一般配合使用:
condof_控制约束自由度数(0到3):点属性,Integer 
condir_控制约束方向:点属性,Vector;如果约束自由度是0,则旋转位移自由。如果约束自由度1,这个值定义了一个法向平面,物体可以在其中旋转,位移。如果约束自由度是2,这个值定义了一个axis(轴向),物体可以绕它位移旋转。如果约束自由度是3,那就真约束住,几乎不能动了

6、restlength属性:约束长度
7、注意下工程文件里面,使用Name节点进行命名,是方便对象与约束进行“连接”

8、assemble节点
一般使用assemble节点进行创建name属性(也可以使用name节点),同时对其进行打包Pack。打包后,可以作为一个模板几何体来使用,需要的时候可以直接引用。无需复制那样,生成一个又一个占用内存的副本。(粗暴理解:复制文件与创建快捷方式)
Pack的物体必须在点上。了解更多Pack点这。

9、rigidbodysolver刚体解算器

第一个输入点:需要解算的对象
第二个输入点:在主运算器之前运行
第三个输入点:在主运算器之后运行

10、一些约束节点们
这些节点的的很多参数可以使用VEX修改/提前指定
hardconrel:硬约束;不会断,使刚体一直保持 rest length 的距离
glueconrel:粘连约束;同约束数量,它最快;超过阈值,会自动断开约束
springconrel:弹簧约束
bulletsoftconrel:软约束
conetwistconrel:锥形约束(设定在一个锥形区域内可形变,一般用于汽车刚体绑定、群集 ragdoll 设置,参数较多)
sliderconrel:滑动约束,在范围内旋转、滑动((官方文档解释:约束对象在单个轴上旋转和平移,并限制该轴上的旋转和平移))

注意:
弹簧约束和软约束差不多,推荐使用软约束,计算更快速
锥形约束和滑动约束,主要针对生物,比如手腕、手臂之类等约束;只有旋转,所以s@constraint_type得写旋转Rotation。
关于springconrel弹簧约束:(参数如下图所示:弹簧约束)Goal Hing Axis与constrained Hing Axis、Goal Up Axis与constrained Up Axis,
两组参数一般设置一样(可使用【复制-粘贴引用】使其保持一样 )(conetwistconrel约束也是)

四、几种使用节点创建约束的方式

eg.【使用方法可参看工程文件第2~5个案例】

1、rbd_constraint_properties节点:创建刚体约束属性。
0端连接模型,1端连接约束,2 端连接代理
会自动删除不用的一些属性,节约内存。

2、rbd_constraints_from_lines节点:创建直线约束。
1、可以自定义直线作为约束;
2、也可以在Scene窗口按Enter按提示创建直线。(选择Group Type,即对产生的约束设置个组)

3、rbd_constraints_from_curves节点:创建曲线约束
1、可以自定义曲线作为约束;
2、也可以在Scene窗口按Enter按提示创建曲线线即可(勾选Use Curve Geometry)

4、rbd_constraints_from_rules:按规则创建约束。
默认所有碎块都产生约束。
Groups参数之All:在所有部分之间创建约束。
Groups参数之All to Group:在组Group中的对象和所有其他对象之间创建约束。
Groups参数之Group to Group:组与组对象之间创建约束。
Use Clusters参数:使用cluster浮动属性连接具有给定公差内匹配值的片段。

五、使用VEX创建基本约束

eg.【参看工程文件第6~7个案例】
6和7案例基本一样,都是粘连约束。但第7个案例多了个【next】约束类型—硬约束,

结果:

六、硬约束Hard的约束类型

eg.【参看工程文件第8~11个案例】
硬约束的约束类型有位置【Position】、旋转【Rotation】、位置和旋转【All】,这几个案例可以大致看出硬约束不同约束类型的区别,

(glueconrel、hardconrel、softconrel节点的的很多参数可以使用VEX修改/提前指定)

七、锚点属性condri、condof

eg.【参看工程文件第13~14个案例】
探讨下硬约束下的锚点属性,其它约束类型可自行尝试。

锚点属性可用于控制Anchor锚点如何附加到对象。主要针对旋转约束,锚点的两个属性一般配合使用:
condof_控制约束自由度数(0到3):点属性,Integer 
condir_控制约束方向:点属性,Vector;如果约束自由度是0,则旋转位移自由。如果约束自由度1,这个值定义了一个法向平面,物体可以在其中旋转,位移。如果约束自由度是2,这个值定义了一个axis(轴向),物体可以绕它位移旋转。如果约束自由度是3,那就真约束住,几乎不能动了

1、eg.工程文件第13个案例,在【s@constraint_name = 'Hard';   s@constraint_type = 'position';】 前提下,锚点属性的具体表现,

对应结果为:(加了重力)

2、Position、Rotation可分别设置锚点属性
eg.工程文件第14个案例,前提条件【约束类型Position的锚点属性自由度设为3,仅对约束类型Rotation的锚点属性进行设置】
结果:更改Rotation的锚点属性自由度,在重力影响下,box没有位移,只有按设置的锚点属性进行旋转,

3、感兴趣可以对第14案例的position、rotation的锚点属性设置不同值,看看具体结果。

八、Constraint Network节点参数面板之Overwrte With SOP

如果参数设置为1,则会自动读取dopnet外面的约束(工程文件第14_2实例),

九、初步认识硬、软、粘连、弹簧约束等

hardconrel:硬约束;不会断,使刚体一直保持 restLength 的距离
glueconrel:粘连约束;同约束数量,它最快;超过阈值,会自动断开约束
springconrel:弹簧约束
bulletsoftconrel:软约束;可以旋转,不会恢复(和弹簧约束差不多,推荐使用软约束,计算更快速)
1、【参看工程文件第15案例】,可自行尝试熟悉不同约束的参数
在【s@constraint_name = 'Hard'; s@constraint_type = 'all'; 】且【i@condof = 3;】的前提条件下,各约束的结果为:(下一案例是升级版,结果更直观)

2、【参看工程文件第16案例】
是第15案例升级版,换了个可碎的猪头模型,及多了个【下一个约束】。
两个约束,直接merge一起即可,记得name一致。
结果:无图

十、滑动约束、锥形约束

conetwistconrel:锥形约束。设定在一个锥形区域内可形变,一般用于汽车刚体绑定、群集 ragdoll 设置,参数较多。
sliderconrel:滑动约束,在范围内旋转、滑动。

这两个约束的参数Goal Hing Axis与constrained Hing Axis参数一般设置一样、Goal Up Axis与constrained Up Axis参数一般设置一样;
这两个约束,因为只有旋转,所以s@constraint_type得写旋转Rotation。
【工程文件第17案例】,工程文件案例不大行。
锥形阅读推荐解释很详细的知乎@刘鹏云_锥形约束

十一、案例风吹板子

没啥好说的,看图和【参看工程文件第18案例】吧

十二、hardConrel与Angular Motor

硬约束hardConrel里面还有个AngularMotor,直译过来就是角运动/角电机。
参数主要是轴数量、轴向、角速度、最大旋转力等,其可以做旋转、转动等。
【参看工程文件第19案例】,是一个会动的轮子,
(rotation和position分开做约束,轮子更真实。详细做法参看下一个的小车子案例)

十三、小车车案例

【参看工程文件第20案例】
这个车的轮子是rotation和position分开做约束,注意这里是在移动约束这设置Angular Motor,

十四、小车案例升级版_多车

【参看工程文件第21案例】
视频里在周围加了几根圆柱,暂无法复现,先这样吧。有兴趣的可以试试调下参数复现。

十五、毛发约束

类毛发模拟的约束,【参看工程文件第22案例】。
如果要使用Dopnet解算之后的对象,可以在object下写:rbdp* ,或者点击右边进行选择。

第22案例结果:

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值