Houdini bake particle instance otl工具介绍
来源:互联网 发布:删除rom内置软件 编辑:程序博客网 时间:2024/05/01 01:25
otl工具说明,场景测试文件请参考附件,节点的连接,命名以及参数的设置都需要更程序相一致,否则工具无法运行。
详情见附件:http://download.csdn.net/detail/baichuanxiaoove/9300277
所得效果是将粒子替代物bake成关键帧动画的物体,一个Instance物体对应一个Geometry物体
instance节点连接参数设置:
VOP SOP节点创建orient属性:
Python Module代码:
from time import *def bakeInstance(): tstart = time() hou_node = hou.pwd() hou_geo = hou_node.geometry() hou.setFrame(int(hou_node.evalParm('f2'))) points = hou_geo.points() point_loc = hou.node('/obj') group_node = point_loc.createNode('subnet','group') rbd_node = hou_node.node('..') group_node.setPosition(rbd_node.position()) group_node.move([0,-1]) group_node.setSelected(True) rbd_node.setSelected(False) for point in points: frags_node = group_node.createNode('geo','due'+str(point.number())) a_node = hou.node('/obj/group/due'+str(point.number())) b_node = a_node.children() b_node[0].destroy() c_node = a_node.createNode('object_merge','obj'+str(point.number())) obj_num = point.attribValue('instancepath')[-1] obj_path = c_node.parm('objpath1') obj_path.set('/obj/'+rbd_node.name()+'/Obj'+obj_num) for x in range(int(hou_node.evalParm('f1')), int(hou_node.evalParm('f2'))+1, 1): hou.setFrame(x) print str(x) + ' frame' + ',please wait...' points = hou_geo.points() for point in points: pos = point.position() orient_num = point.attribValue('orient') frags_selet_node = hou.node('/obj/group/due'+str(point.number())) orient_qua = hou.Quaternion(orient_num).normalized() matrix3 = orient_qua.extractRotationMatrix3() rot = matrix3.extractRotates() point_tx = frags_selet_node.parm('tx') point_keyframe = hou.Keyframe() point_keyframe.setValue(pos[0]) point_tx.setKeyframe(point_keyframe) point_ty = frags_selet_node.parm('ty') point_keyframe = hou.Keyframe() point_keyframe.setValue(pos[1]) point_ty.setKeyframe(point_keyframe) point_tz = frags_selet_node.parm('tz') point_keyframe = hou.Keyframe() point_keyframe.setValue(pos[2]) point_tz.setKeyframe(point_keyframe) point_rx = frags_selet_node.parm('rx') point_keyframe = hou.Keyframe() point_keyframe.setValue(rot[0]) point_rx.setKeyframe(point_keyframe) point_ry = frags_selet_node.parm('ry') point_keyframe = hou.Keyframe() point_keyframe.setValue(rot[1]) point_ry.setKeyframe(point_keyframe) point_rz = frags_selet_node.parm('rz') point_keyframe = hou.Keyframe() point_keyframe.setValue(rot[2]) point_rz.setKeyframe(point_keyframe) print 'Done' tend = time() t = tend - tstart print 'time use ' + str(int(t)) +" s"
0 0
- Houdini bake particle instance otl工具介绍
- Houdini otl bake fracture animation Python程序
- libgdx粒子工具使用介绍(particle editor)
- OTL介绍
- OTL介绍
- OTL介绍
- UE4 Particle Instance Parameters Tutorial
- Particle designer 粒子工具属性介绍及使用
- OTL资料简单介绍
- OTL 4.0介绍
- OTL资料简单介绍
- Particle Engine介绍
- Particle Filter 介绍
- Particle Playground介绍
- Particle designer 粒子工具中属性对应功能的简单介绍
- Particle designer 粒子工具中属性对应功能的简单介绍
- Particle designer 粒子工具中属性对应功能的简单介绍
- otl介绍及常用接口
- html自制评论功能模块
- 线程核心概念
- 简单邮件传送协议SMTP
- Java比较器的应用
- poj1753
- Houdini bake particle instance otl工具介绍
- R语言数据挖掘
- NandFlash概念
- Android异常总结---type Status report message HTTP method GET is not supported by this URL
- 黑马程序员——Java基础——正则
- Scala学习(一)---入门基础知识
- 性能测试准备——计算pacing值
- 经典排序算法(三)选择排序--C++
- 话题12 移位运算符的真实剖析