1.在制作一个场景特效时,比如我们有很多个悬挂的壁炉需要制作燃烧的火焰,而这些壁炉又有移动旋转存在,我们拆开去做解算会比较费时费力,我这里是直接在原点模拟了一个火焰,最直接的方式是给每个需要燃烧的物体计算一个中心点 copy to point 上去就行,但是这样没有继承旋转信息,效果看起来会比较奇怪,这里就需要用在每个点上计算一个矩阵信息:
1.新建一个 extracttransform 节点 计算得到矩阵
- 新建一个attribwrangle 读取计算得到矩阵 ,并给到pyro解算的 位置内在属性上:


这里只用最简单的场景做一个演示如果有多个物体的话:需要for 循环去做:

// 从输入1拿到点上的 matrix 属性
matrix myMatrix = point(1, "transform", 0);
// 获取当前体积的 transform intrinsic
float srcMatrix[] = primintrinsic(0, "transform", @primnum);
int length = len(srcMatrix);
if(length == 16){
//如果是 4x4 矩阵,就把 myMatrix 的逆矩阵作用到 primitive intrinsic 上
setprimintrinsic(0, "transform", @ptnum, invert(myMatrix), "multiply");
}
else{
// 如果是 3x3 矩阵,只把旋转部分(matrix3)应用到 primitive intrinsic 上
setprimintrinsic(0, "transform", @ptnum, matrix3(myMatrix), "multiply");
//平移部分单独用矩阵作用到点的位置
@P = myMatrix*@P;

(提示这里如果物体很多的话 直接用位置拿过去物体会很卡 这就需要用到Instance实列化 也就是需要计算得到每个点上带有矩阵属性的Instance点 这里只截图 记录一下步骤 )



文章作者:Luo7758
文章标题:Houdini 小技巧将原点解算的pyro 附加到运动的物体上
文章链接:https://cfxer.cn/?post=47
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自Luo7758 !
文章标题:Houdini 小技巧将原点解算的pyro 附加到运动的物体上
文章链接:https://cfxer.cn/?post=47
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自Luo7758 !
设备上扫码阅读
版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!