1-4期
195人加入学习
(33人评价)
Houdini 影视特效实验班

6个月零基础到入职

价格 ¥ 6198.00
教学计划
承诺服务

在SOPsolve节点里面,第四个节点objectmerge节点是导入约束线,  第一个节点dop import是导入在DOP网络中进行模拟的碎块,每一个作为碰撞的节点都会有一个objid的编号,在geometry spreadsheet面板进行查看,如果创建了地面,那么地面编号为零号,剩下RBDpackedobject节点按照merge的左右顺序进行编号 

objectmask这个参数表示按照编号选择导入哪一个RBDpackedobject节点

约束是不参与动力学模拟的,是永远不动的,如果希望约束跟随碎块的运动而运动,那么需要借助参与刚体模拟中的碎块所产生的一个属性packedfulltransform,这是一个3*3的矩阵,包含参与刚体模拟中的碎块的scale transform rotation信息,可以利用这个信息使约束线随着碎块的运动而运动,而约束线获取碎块的运动依赖的则是name属性 name属性是字符串形式的属性,用s来表示

nametopoint函数是获取点序号,第一空是查找的对象,第二空是具体查找哪些点,在这里,哪一些点有name属性,那么就被查找到,并且把该点所对应的点序号存储起来   

primintrinsic函数是获取参与刚体模拟中的碎块信息,第一空是查找的对象,第二空是查找对象上哪一个属性,第三空是具体哪一些点

因为packedfulltransform是一个矩阵信息,所以需要用一个matrix的变量储存起来

约束线在DOP里边是作为primtive来进行识别的,所以要把@break_me属性从点级别推送到面级别上

 

removeprim函数是删除prim,第一空是要删除的对象,第二空是具体删除哪些面,第三空是如果说这个prim上连接有点,这些点是否删除,1代表删除,0代表不删除

[展开全文]

nametoprim函数:

nametoprim(哪个输入接口,字符串名),返回面编号,

例 int my_pt = nametoprim(1, s@name);查看第二个输入接口的name属性,返回他的面编号,储存到my_pt中,因为本例中打包的几何体每个几何体就是一个面,所以返回的面编号就是几何体的编号。

 

matrix矩阵

primintrinsic函数,在prim级别下有特殊的属性,有个名为packedfulltransform的属性,是个三阶矩阵,存储着位置变换等信息。

primintrinsic(哪个输入接口, "哪个属性", 抓取哪个primitive的信息?)

matrix fulltransform = primintrinsic(1, "packedfulltransform", my_pt)

因为本例中打包的几何体每个几何体就是一个面,所以primitive就是my_pt这个面编号就行了

v@P *= fulltransform; 这样就可以更新约束连线的位置,来跟随物体运动了

 

!!约束连线在dop网络中是作为prim来识别的,所以点级别的attrib需要promote到面级别

[展开全文]