共有回帖数 0 个
-
解算物体,解算器,跟(常用)力场
按着Ctrl点击球形工具(工具架上创建面板里)在原点创建一个球体.选中球体,在创建面板Rigid bodies工具架上点击
点击Houdini窗口底部播放条上的来播放动画
球体会掉落下来,应为他已经是一个解算好了的物体.当你第一次创建一个解算物体时,Houdini会自动在Object级别下创建一个解算网络.在Object模块下network编辑里有一个节点叫做 AutoDopNetwork
特别提示:你可以手动去创建N多个你想要的解算网络,但是工具架上的按钮还是会在 AutoDopNetwork这个网络里面创建节点,除非你从Simulation菜单下的Current Simulation子菜单里选择了一个不一样的网络
如果你双击AutoDopNetwork就会进入节点里面,你可以看到Houdini是如何来为一个模拟解算创建网络的.(你可以按L键来重新排布Houdini的网络节点)
当前网络是相当简单的,一切都是有工具架创建,展示了Houdini动力学的几项基本概念,基本构成:物体object,解算器solver,力场force
一个动力学物体(dynamics object)有几项必要参数表明了哪些是已经被解算了的.在网格中(英文版里说的是在上图网络中,但是这里未配图,所以改译为在网格中,不影响理解,下同),sphere object的节点有几项参数会被读取进来并解算,物体的密度density,温度temperature,摩擦friction ,他的初始位置initial position,旋转rotation,速度velocity,还有其他一些属性.这同时也表明了解算物体的几何体来自哪来.(会references参考你之前创建的球体)
Solver解算器是用来计算模拟物体该如何运动的.他们会去查看模拟的状态并且在每一个时间步数上去使用他们自己的内部规则来修改它.在网格中,RBD解算器模拟的的是球形刚体的运动跟碰撞
Force力场就是一些你能够赋予给物体的信息(场景中所以的物体,或者独立的物体),如是说,例如,”一个物体被风场wind所作用”或者”这个物体的运动受拖拽力drag影响变慢了”.在网格中,重力节点给在他上游的所以物体都添加了”Force Data力场数据”(也就是当前的球体).当解算器在物体上检测到力场数据的时候,一旦解算到重力,他就知道应该在每个时间步数的时候把球体往下拉.Drive Simulation工具架标签,允许你给一个解算去添加力场
Houdini不同类型的解算器
These are the main这些是主要的
Rigid bodies.Houdini自带的解算器是跟所有的DOPs完全交互的,就跟Bullet还有ODE解算器一样,对于特定的几何体形态而言解算速度是更加快的
Particle systems - 让你的粒子系统(POPs)跟动力学模拟去产生交互.
要想让两个物体碰撞,你必须把他们merge到一起
在其他种类的网络中,Merge 节点把连接到他们的节点的输出端都合并在一起.在动力学网络中,Merge节点创建的是关系relationships.关系是数据的一种特殊类型,这种关系描述的是哪些物体跟哪些物体产生作用
动力学中关系的主要类型就是碰撞关系,意思就是说当物体跟其他物体碰撞到一起的时候会改变他们的形态/运动/行为.在RBD里面也有约束constraint 关系(例如pins跟springs),wire跟cloth解算.
有一点非常重要的事情需要记住,关系relationships 需要时间去计算,所以为了优化解算,你应该只在需要交互的物体之间建立关系,并且去使用单方向的作用关系(一个物体去影响另外的物体,但是不要到处都影响)
细节details 窗口有一个作用矩阵,去让你去查看哪个物体影响了哪个物体

Dops有一个Bypass(忽视)那样你就可以关闭或者打开某个节点去查看解算状态,通常都是在细节窗口里调试创建的数据来用如果你想要给已经存在的物体或者数据来做动画的话,给你想要做动画的节点上的Activation 参数上K帧就行了.当Activation 是非零时,节点是激活的并且影响网络.当Activation 为零时,节点是没有效果的,类似于打开了bypass的标签细节窗口让你去查看解算的内部状态details view细节窗口是让你深入潜在物体并且查看解算数据.你可以在一个面板上创建新的细节窗口或者在Windows Desktop Technical选择切换到一个已经有细节窗口打开的布局左侧的树状图表示的是场景里面的物体还有他们的组别,例如关系.分支表示的是作用到每个物体的数据层级.右边显示的是左边树状里面选择的物体的每个fields 场数据跟他们的数值

对于检察解算的结构而言这个面板是非常有用的.你可以看到在当前的显示节点当前帧上哪个数据被赋予到哪个了(数据包的名字跟独一无二的ID),还有数值来一起组成了数据Data
在你播放解算的时候细节窗口会动态的更新.当你想要去查看数据是如何根据时间来改变时这是非常有用的,但是这会降低解算的播放.当你不需要他并且想要解算回放更加流畅的话,你也可以去使用切割面板上的箭头来”关闭”细节窗口
多个物体跟多个解算器
RBD 物体 - 物体的数量 $OBJID
物体碎块
Dop如何建立解算网络的
网络是由上往下,由左往右执行.对于节点有多个输入端的,从第一个输入开始,先由上往下,然后再从第二个输入开始由上往下.
子步数
为了让解算器的碰撞检测更加精准,提高解算器的最大子步数Maximum substeps.这通常都会让解算花费更多的时间去计算
你也可以使用DOP Network上的Timestep 时间步数去提高解算的全局精度
动力学引擎计算模拟的时间步数:当Houdini停止并且再次计算模拟状态的时候,这两个之间的时间点就是时间步数.正常来讲这是多个时间帧数(Houdini的每帧显示时间长度,也就是1/24th,24帧每秒),这是这没有必要.长的时间步数会让Houdini模拟的时候变得的很轻松,但是解算结果却比较不精确.小的时间步数会花费更多的时间来计算,但是结果会更加精准
为一个动力学网络设置时间步数的话去打开DOP Network object的参数,点击Simulation 面板,然后去设置Time step时间步数参数
你可以控制动力学网络里面每个单独的解算器节点的子步数,他们会覆盖默认的时间步数.这让你单独去提高解算器的时间步数.如果没去调节的话没走一个时间步数整个解算都会去做每一个计算
控制解算器的子采样,设置Minimum substeps最小子采样跟Maximum substeps 最大子采样参数.提高Minimum substeps最小子采样数值让解算器把每一个帧步数打碎切割刀更多的解算步数.确保限制住Maximum substeps 最大子采样参数来保证解算在一个合理的时间内最终能够解算完.
Tip:
如果你在回放属性里面关闭了帧数帧,并且把step值设置为你的子步数,你可以使用箭头来在子帧数间移动
解算网络跟物体的数据传递
当你转换球体到解算的刚体物体时,Houdini会创建动力学设置,动力学网络会把球体从Geometry网络中拉出然后导入到动力学网络里(在动力学网络的最上游节点RBD Object节点里),然后解算他的运动
然后原始的球体Geometry网络会把解算好的运动在导入到物体上去(在Geometry网络最下游的DOP Import里)
在读取了他被动力学网络修改后的的几何体,位置信息等,之后你便可以去渲染你的原始物体了.AutoDopNetwork物体他自己的显示标签(节点右边的按钮)默认是关闭的,意思就是说他不会被渲染了
这其实就是因为Mantra没有真的去设置去渲染物体,所以你需要导入模拟好的运动到之前的物体上,这会给你当前物体的全部渲染可控性.当然,技术上来讲,你可以在Obj级别下直接渲染动力学网络,他的几何体会包含很多可能你不想要渲染的各种参考和用户用来显示的几何体.
特别提示:一些个解算工具,例如PyroFX工具,会创建一个新的物体然后把模拟的结果保存住来给渲染用,而不是把结果在倒回到原始物体上.例如,你使用了Flames工具来从原始几何体上创建火焰,工具会在Object级别下创建一个新的import_pyro_build物体来导入解算的结果
Houdini动力学使用的单位:kilograms 公斤,meters 米,seconds 秒
既然解算器用来解算真实世界的物理程序,那么在场景中他们就需要一个相对的真实世界的单位尺寸.Houdini动力学系统的设计者们就决定使用简单的国际标准单位:一个Houdini单位等于一米,重量一直都是规定用公斤来表示的,时间一直都是以秒来表示的.其他的单位也一直都是以米,公斤,秒为基础的(例如,密度是用公斤/立方米来规定的)
楼主 2015-10-13 18:09 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知