RBD —— 简介

Houdini中的预破碎技术:RBDMaterialFractureSOP和相关节点详解
本文详细介绍了Houdini中预破碎工作流程,特别是RBDMaterialFractureSOP的使用方法,包括其控制选项、多级迭代、glue约束和与其他高级及低级别SOP节点的配合。还探讨了如何通过Clustering进行碎片管理以及如何将破碎对象导入DOPs中进行动态处理。

目录

General workflow

Tips

RBD SOP inputs and outputs

Clustering

Importing a fractured object into DOPs

RBD SOP support nodes

Low-level SOPs


        通常在刚体模拟中,希望实体对象会因某些碰撞或力而破碎;Houdini内大多数破碎工具都支持预破碎工作流,可在SOP中破碎并glue约束在一起;预破碎可对破碎外观进行完全的控制;

        高级别预破碎节点RBD Material Fracture SOP,具有对不同类型破碎的大量控制;也有许多低级别的SOPs节点;也可在DOP中动态破碎(Make Breakable工具);

General workflow

RBD Material Fracture SOP,模拟不同材质破碎(concrete, wood, and glass);

  • 可多级迭代破碎;
  • 可对低精度代理模拟,然后驱动高精度;
  • 自动设置glue约束;
  • 更新现有约束;
  • 可输出组和属性;
  • 使用RBD Material Fracture预破碎;
  • RBD Material Fracture会自动创建glue约束,并设置初始强度Primary strength;
  • 既可使用RBD Bullet Solver SOP解算,也可导入DOP解算;

Tips

  • 使用Group打组,可单独破碎;
  • 但模拟中有零件旋转、摆动,可drag;
  • 使用Output for view(右击节点)显示不同输出;
  • 对RBD节点的输出中击(MMB),以单独显示输出数据;对RBD节点的输入中击(MMB),以单独显示输入数据;

RBD SOP inputs and outputs

RBD节点共享一组一致的输入和输出;

  • 第一个输入/输出,高精度几何体;
  • 第二次输入/输出,约束;
  • 第三个输入/输出,低精度代理几何体(与高精度name相同);

Clustering

        对碎块打组以形成更大簇,有两个主要的打簇工作流:

  • 如永久粘在一起,可使用相同名字,将视为同一碎块,对wood splintering有用;
  • 如先是大碎块,后在分解为小碎块,使用glue约束层次;
    • RBD Material Fracture节点的Wood类型,提供了clustering控制(RBD Cluster);

Importing a fractured object into DOPs

Rigid bodies工具架

RBD SOP support nodes

以下节点与RBD Material Fracture节点一起工作,有相同的输入输出;

RBD Paint绘制属性,如绘制density以控制破碎点;
RBD Bullet Solver在SOP级别创建解算器;
RBD Configure SOP可对RBD单独设置属性;
RBD Constraint Properties编辑约束;
RBD Interior Detail对切面添加细节;
RBD Cluster打簇;
RBD Exploded View炸开RBD;
RBD Convert Constraints转化为不同约束;
RBD Connected Faces记录距离以确定是否删除内部面;
RBD Disconnected Faces确定连接的面是否分离;
RBD Pack合并三个输入为单个输出;
RBD Unpack将单个输入三个输出;
RBD Constraints From Lines在视图交互式绘制直线约束;
RBD Constraints From Curves在视图交互式绘制曲线约束;
RBD Constraints From Rules根据规则和条件创建约束;

在RBD Material Fracture节点内部,使用以下低级别节点;

Boolean Fracture切割几何体
Voronoi Fracture通过点破碎几何体
Exploded View基于name炸开几何体

Low-level SOPs

有许多低级别节点,被RBD Material Fracture节点内部使用;

Connect Adjacent Pieces基于连接性和接近性创建约束
Assemble基于连接性赋予name属性
Voronoi Fracture Points生成破碎点
Voronoi Split根据polylines切割几何体
Enumerate对点或面设置连续的数值或字符串属性

Ceph是一个分布式存储系统,包括多个组件,其中包括Librbd块存储库。在Ceph中,Librbd提供了一种将RBD(块设备)映射到客户端的方法,并使客户端能够读写这些设备。在本文中,我们将分析Librbd块存储库的源代码以及RBD的读写过程。 1. Librbd源码分析 Librbd块存储库的源代码位于src/librbd目录下。其中,包括librbd.cc、ImageCtx.cc、ImageWatcher.cc、Journal.cc等多个源代码文件。这些源代码文件组成了Librbd块存储库的核心。 其中,librbd.cc是Librbd块存储库的主要源代码文件。在这个文件中,包括了Librbd的初始化、映射、卸载等方法。ImageCtx.cc则是Image上下文,用于管理Image的状态、锁定、映射等信息。ImageWatcher.cc用于监控Image的状态变化,Journal.cc则是Librbd的Journal日志管理。 2. RBD读写流程源码分析 在Ceph中,RBD由client和server两个部分组成。client在客户端上运行,提供了将RBD映射到客户端的方法。server在存储集群中运行,提供了RBD的存储和管理。 RBD的读写流程如下: 1)客户端向Ceph Monitor请求RBD映射信息,Monitor返回Image ID和Image特性; 2)客户端向Ceph OSD请求RBD数据块,OSD返回数据块内容; 3)客户端将数据写入或读取到本地块设备; 4)客户端向Ceph OSD写入或读取数据块,OSD返回操作结果; 5)客户端向Ceph Monitor请求解除RBD映射,Monitor返回解除结果。 在上述过程中,涉及到的源代码文件有:librbd.cc、ImageCtx.cc、ImageWatcher.cc、Journal.cc等。 总结 Librbd块存储库和RBD读写流程是Ceph存储系统的核心组件之一,通过分析源代码可以更加深入地了解Ceph存储系统的实现原理。同时,对于开发者来说,也有助于在Ceph存储系统上构建更加高效、稳定的存储应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值