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

6个月零基础到入职

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

static object节点导入碰撞物,如果使用的是volume sample这种碰撞方式,并且碰撞几何上没有速度这些属性,也不需要计算烟火受碰撞物体的速度影响,那么SOP path这个参数仅仅只是导入碰撞物的几何体外形,便于在时口中进行观察,真正进行碰撞的还是proxy volume这个参数栏指定的路径,所以如果说为了节省计算资源,SOP path参数栏可以不填,只是不方便进行观察,只要proxy volume参数栏指定了碰撞物,那么碰撞依然是有效的。

[展开全文]

根据age属性来设置pscale属性,在Dop中(或者volume rasterize attributes节点)点进行采样的时候,pscale属性就是点采样的半径

[展开全文]

time blend节点,time参数栏只有一个作用,把input frame range参数栏输入的动画帧范围重新适配到某一个帧范围。  evaluation mode估算方式,有五种,by  frame,by time这两种方式很鸡肋,不用也罢。 shift range模式,shift range参数栏决定输入的动画帧范围从哪一帧开始运动; fit range模式,很简单,把input frame range参数栏输入的动画帧范围fit到output frame range参数栏指定的帧范围; by speed模式,这个经常用做慢动作处理,可以根据物体的速度,重新把物体的动画时间拉长,或者压短一半(拉长或者压短多少由speed这个参数来决定)

 

interpolation参数栏是用来生成插补的,比如说一个缓存的动画时间被拉长一倍,这中间就需要一个对缓存的插补,就要用到这些参数了,已知对点的插补需要点上有v属性,还有每个点有唯一的id属性值,这样才能进行准确的插补,其他关于volume的我还不知道

[展开全文]

这一节课讲的是制作塔的碎块产生的烟雾的源,因为我用的RBD模拟,我还是愿意用最经典的那个方法制作碎块烟雾的发射源

[展开全文]

在vop里面如果已经给v做了一个操作,比如此案例中的随机,那么v值以输出的v的数值为准

 

luminance节点提取粒子的亮度信息,粒子越亮的地方数值越大,亮度值最大是1,最小是0,粒子的颜色在pop里面是根据粒子的年龄设定的,所以粒子年龄越大,亮度越大

 

如果直接亮度信息作为temperature density fuel属性的数值,那么就是越亮的地方,这些pyro属性值越大,所以还乘一个速度值,在这个亮度的基础上还加一个速度标准,速度越小的地方,pyro属性的值相应越小,速度越大的地方,pyro属性的值相应越大

 

为什么要给速度做一个clamp,因为density temperature fuel这些属性的值都不宜超过1,这样方便在Dop里面控制

[展开全文]

length函数是返回向量的长度
length2函数是返回向量的平方距离,比如该向量的值是(1,2,3),length2返回的值是1的平方,加上2的平方,加上3的平方
len函数是返回数组的长度

[展开全文]

整个solid看下来,solid破碎的时间太长了,实际应用中是不会允许这么长的解算时间和更长的调试时间的,所以我决定还是用泰森多边形的破碎和bullet进行解算

[展开全文]

solid fracture节点只会对三边面的polygon和tetrahedron进行破碎,三边面的polygon碎成一片一片的面,tetrahedron会碎成一个一个的碎块

 

solid fracture节点只会对三边面的polygon和tetrahedron进行破碎,三边面的polygon碎成一片一片的面,tetrahedron会碎成一个一个的碎块

Part Scale  断开的比例,该参数越大,断裂部位越大

Pattern Offset 移动用于进行分割碎块的的阵列的位置

Split Primitives 用fracturepart属性分割基本体,创建单独的几何体碎块,要想弄清楚到底碎了多少碎块,就必须要勾上这个

Original Point Group创建一个这样的组存储分割之前所有的原始点

New Point Group创建一个这样的组存储分割过程中产生的新点

[展开全文]

sop geo节点能够把SOP中的几何体导入Dop中,这个几何体的数据当然也相应的被导入,这些数据被导入之后,可以利用gas particle to field节点进行采样,并且用来当做pyro发射源,两个地方需要注意,第一个是default operation参数栏,如果导入的几何体有动画,那么需要勾选set always,默认的set initial只会导入动画的初始状态,第二个如果是有多个sop geo节点进行数据的导入,那么打data name参数栏需要给这些数据改一下名字,不然后期gas particle to field进行数据读取的时候,读取会不正确
Re-evaluate SOPs to Interpolate Geometry 参数栏 当Dop中有子帧的模拟,并且导入的点也有子帧的数据,那么就需要勾选这个选项,才能够有准确的进行子帧的导入和模拟


这些导入sop层级的节点还包括sop scalar filed,sop vector field等节点都只能和object节点放到一起,因为在DOP中,object节点才是用来存储数据的,通过一个apply data节点连接在一起

 

gas particle to field节点其实就是volume source节点的底层原理   particle参数栏,读取哪个数据(通常就是sop geo节点导进Dop里的sop的数据);particle  group参数栏,如果导入的点上有组的话,那么这个参数可以指定对哪些组里的点进行采样; attribute参数栏,从读取的数据里面选择哪一个属性;  destination field,把选择到的属性的值采样给哪一个场;

  这些参数都是用来指定点的采样半径的,总共是四种方法,第一种Accumulated累积方式,单纯的给点周围八个体素进行采样;  Assume Uniform Radius假设均匀半径方式,假设每一个点的采样半径都是一样的,这样会大大的提高效率,  Extrapolation Index    field外推索引场,如果有点编号的场,填写场名,那么这个场的值可以用作外推值,具体有什么优势我还不知道,一般情况下,这一空不填;    Extrapolated外推法,这种方法是定好了点采样的半径,也就是说点上有pscale属性,如果体素单元在任何点的半径之外,它将使用最近点的值;有两种外推模式,一个是Use Max Extrapolate Cells使用最大外推单元,指的是外推几个体素单元,  Max Extrapolation Cells最大外推单元,要外推的体素单元数,该值乘以最大单元尺寸,并用作距离上限; 另一个是Use Max Extrapolate Distance使用最大外推距离,往外推多少距离,  Max Extrapolation Distance最大外推距离;     第四种方法是这四个都不用,直接使用threshold和bandwidth这两个参数进行调整,这个方法可控性太差,不推荐使用
calculation 和 source pre mult这两个参数就相当于volume source节点的operation 和scale这两个参数

[展开全文]

timeshift的clamp其实就是clamp函数,指定的中间范围不会有变化,小于这个范围的,全部按指定范围的最小值处理,大于这个范围的,全部按指定范围的最大值处理

[展开全文]

debris source这个节点也就只能在这种小型破碎里面用,如果遇上了大型的破碎,需要挑选出边面做烟雾或者碎渣的发射源,那么还是要用到之前做砖塔破碎的的时候用到的vex代码,不然这个节点计算时间过长很有可能卡死

 

popinteract在粒子与粒子之间施加交互力,这可以用来保持粒子之间的距离或使它们匹配速度

Position Force,粒子之间的相互作用力有多大。

Velocity Force,粒子试图匹配彼此速度的强度。

Core Radius,内半径,其中相互作用力将达到最大强度

Falloff Radius,与核心半径的额外距离指定了交互力将在何处降至零

[展开全文]

stash节点强烈不建议使用,这个节点是把缓存储存在hip这个文件本身里边,这样方便是方便,但是会加大hip文件本身的大小,这样每次打开,保存文件都会很慢很慢,不如直接使用filecache节点,把缓存储存进硬盘里面

 

节点与节点之间的关联性,在节点面板的菜单view,dependency links里面可以选择显示或者不显示

 

bullet solve和RBD solve都是最底层的solve节点,两者都是刚体引擎,用来设置和配置刚体动力学(仅此而已,两者都没法接入pop节点来控制刚体的动态,如果需要pop节点来控制刚体动态的话,必须和multisolve节点结合使用才行)bullet相对来说对刚体的解算更快,RBD solve相对来说已经被淘汰掉了,因为解算速度过慢,优势是可以增加解算步幅,提高解算的精度,但是这个优势可以用别的节点来代替。

rigid body solve是集成了 bullet solve和RBD solve的一个solve,也包含了multisolve节点在里面
rigid body solve第一个输入接口是object,要解算的刚体对象; 第二个输入接口是pre solve,预解算,可以在正式解算刚体动态之前,对要解算的刚体对象进行一些属性上的控制,并且可以加pop节点加以控制刚体的动态,所以一样可以通过popwrangle节点来对碎块进行自定义的激活,速度,角速度等控制(这就是集成的multisolve节点在起作用);  第三个接口是post solve,这里接入的是刚体对象被解算完之后,在对这些刚体对象加入一个什么样的操作

 

当进行刚体解算的时候,static object物体的碰撞外形由bullet data决定,RBD solve里的碰撞外形不管有没有,都不会对刚体的碰撞产生影响

[展开全文]

布尔运算相减是这样的,A减B,那么AB相交的部分会消失,被减的B也会消失,反之一样

shatter piexes of A,保留A输入端,B输入端作为辅助切割物,反之一样。布尔破碎需要的是一个完整的模型,如果模型有不连贯的地方,那么碎完之后会出现一些冗余的,突出的面,不过貌似houdini17.5.529的版本修复了这个问题

 

attribute节点都是针对每一个点进行的操作
inside sphere,在一个单位球体内均匀的产生长度小于1,方向随机的向量,除非使用cone angle参数来指定生成的向量方向

 

 

[展开全文]

lage属性的值是点从树根到树尖的增量

 

这几行表达式是这样的,第一行是使用一个fit函数,根据i@id属性,求出一个i@objectID属性,i@object属性的值在0到50之间(其实只能取到0到49,因为强制取整数并不是四舍五入,而只是单纯的去掉小数部分取整数部分);

第二行是本人自己写的,因为老胡是直接跳过了这一步骤,虽然不会有问题,不过对新手来说不是很好理解,第二行就是创建一个字符串类型s@instancefile属性,给s@instancefile属性赋值,这个就是s@instancefile属性的初始值;

第三行是对s@instancefile属性再进行赋值,会覆盖掉第二行的初始值, sprintf函数是格式化字符串中的某个字符,并将结果返回整个字符串,第一空填要格式化的字符串的值,%s符号替换掉某个字符即是对某个字符做格式化;第二空填要对选定的那个字符做格式化的方式。

 

法线的方向设置成X轴是因为实例化的物体Z轴和点的法线对齐,所以法线设置成(0,0,1)也行

 

height field scatter节点第三个输入端是实例化物

density参数控制撒点的数量;

variability参数栏,控制点的pscale属性,这个不同于平时设置pscale属性,在这里pscale值越大,那么生成的点与点之间的间距越大,点的数量也就越少,这样是防止第三个输入端进来的实例物体有穿插;

keep inconming terrain,不用勾选,勾选会保留地形,大部分时候要的其实就是点而已;
match normals with terrain,勾选之后,点的法线方向会跟随地形的起伏指向,不勾选的话,点的法线方向全部向上


randomize up,randomize yaw两个参数是当match normals with terrain去选的时候,这两个参数可以调节实力物体的随机指向性和随机水平旋转
这两个参数调节之后最终决定的是orient属性的值,当点上同时具备N属性和orient属性的时候,物体进行实例化进行方向对齐的时候会优先考虑orient属性
 

[展开全文]

这一步操作的目的是要把低地处和建筑物的mask给消除掉

两种方法,都是先通过第三个接口接入一个mask场,这是限定一个范围,所有的合成全部在这个范围内做,这个范围之外的地方保持第一个输入端的数据。   第一种是在限定的范围内自身和自身相减,相减后mask场的值为0;第二种是在限定的范围内,拿第二个输入端去替换掉第一个输入端的数值,恰好第三个输入端mask指定的范围是建筑的形态,而且第二个输入端的在指定的范围内全是空白,这样正好得到一个建筑物的空白地方,  其实第二种方法并不好,要求比较苛刻,不如就直接全部第一种方法来做,只是第二种方法用作参考

[展开全文]

heightfield isolatelayer节点,layer to isolate参数孤立某一个场出来; overwrite height,overwrite mask这两个如果被勾选,那么这个被孤立出来的场会替换掉原来的height场,mask场

[展开全文]

noise layer参数栏是给指定的场赋值,mask layer参数栏是读取某个场的值,并且与noise layer参数栏指定赋值的场相乘,起到一个遮罩的作用

 

height field layer clean节点,清除layer参数栏指定的场的数值

 

height field mask by feature节点工作原理是通过读取height场的某些特征来对mask场进行赋值

 

height field layer节点,当使用第三个接口进行mask的时候,那么第一个第二个接口连接的信息只在mask有值的区域进行合成,而在mask值为零的地方,保持第一个输入端口不变

mask strength参数,对读取到的mask场的值进行一个倍增

[展开全文]

地形工具的工作原理是对一个2D的volume进行操作,然后让这个2D的volume和几何体进行置换

 

height field节点是创建了一个2D的volume,并且带两个初始场,height场和mask场,两个场的初始值默认都是0  

 

heightfield_noise的参数和mountain节点的参数差不多,该节点最主要的作用是可以对heightfield形成一个大体的山脉形态。noise layer参数对哪个场进行一个扰乱,同时也是给这个场赋值
 

heightfield distort by noiseheightfieldnoise,节点形成的大体地形都还是横平竖直的的线,这个节点对这些直线做出一个扰乱和扭曲,不要使用默认的参数,调大amplitude和element size,这样底线的线条更加自然好看一些,这个节点拿turbulence拿对比的话,像是turbulence的roughness
 

heightfield layer节点是一个合并节点,把1号输入端和0号输入端输入的数据进行一个合并计算,比如替换,相加,相减,相乘等。layer参数栏表示要进行计算的场,默认是全部,不过一般来说就是height场

 

heightfield erode节点是一个解算节点,会解算出地形的风化程度,这样的地形更贴近真实自然,解算的帧数越多,最后一帧的结果也就越好,一般就把最后一帧缓存出去

[展开全文]

打湿贴图的特点在于物体被打湿的地方颜色更深,高光更强,这两个特征分别对应两个参数,diffuse和roughness,这两个参数又@color和@rough两个属性的值来控制;   如果在几何体中设置了相关的属性变量,那么这些属性变量会覆盖掉材质中的相关属性变量,比如该案例中设置的颜色,粗糙度,另外包括A通道,阴影等

[展开全文]

emission发射 选项卡
emission source参数,导入白水粒子的发射源;

limit emission参数,勾选之后会降低已存在的白水密集区域的生成的白水粒子的数量;

emission amount参数,翻倍发射已有的白水粒子的发射量;

velocity offset参数,沿着流体粒子速度矢量的位置创建白水粒子;

velocity mutiplier参数,白水粒子继承原来流体粒子的速度的倍增值; 

maximum initial speed参数,新产生的白水粒子的速度不允许超过这个值;

lifespan参数,白水粒子的平均寿命;

advanced高级 卷展览
seed参数,白水粒子的发射和死亡的所有随机方面的种子值;

aging rate老化率,当勾选add state attribute选项的时候,可控制白水粒子在bubble,spray,foam三个状态下的存活时间,数值越大,老化的速度越快,死亡的概率也越大

velocity noise,对新出生的白水粒子的速度做一个扰乱
 

 

limit选项卡

collision SOP参数,导入需要与白水粒子碰撞的体积,在这里导入的碰撞体积,白水粒子解算的时候会考虑白水粒子撞上物体后,白水粒子在碰撞物体上的附着效果;

SDF name参数,写入与白水粒子碰撞的体积的场名称;要注意的是,碰撞体积必须是一个SDF,不过不用担心,在SOP里面导入进Dop里进行碰撞的体积都是SDF;

closed boundaries,可单独调控白水粒子解算框的边界是否与白水粒子发生碰撞;

limit size,limit center,白水粒子解算框的大小和位置;

visualize limit,白水粒子解算框的显示;

 

force选项卡  
gravity buoyancy参数,白水粒子受到的重力和浮力的大小和方向;
base advection strength,白水粒子的对流力的强度
base velocity multiplier,白水粒子的对流力依然是根据流体粒子的速度场来进行计算的,这个就是白水粒子在应用对流前流体粒子的速度场的倍增值

 

foam选项卡
clumping参数栏,通过给相邻的白水粒子增加一个约束,来控制白水粒子的密度,我只看过官方的演示视频,各个参数之间到底是什么样的一个关系还弄不清楚

 

erosion参数栏,启用此功能可以在较稠密的区域保留白水粒子,在较稀疏的区域腐蚀白水粒子;   Depth Range 液体表面此距离内的颗粒将受到腐蚀;    Erosion Strength密度较小的白水粒子区域的侵蚀强度。 此参数的值越高,白水粒子消失越快;   Preservation Strength控制防止白水粒子被侵蚀的密度范围

 

repellant,白水粒子之间的排斥力,工作原理是在白水粒子之间生成一些repellant粒子,这些repellant粒子对白水粒子产生一个排斥力,使白水粒子形成一个个的多孔泡沫结构;

reseeding frame,这个参数帮助文档上并没有解释

feature size range,repellant粒子的size范围;注意,当在Whitewaterobject里面对repellant进行可视化的时候,改变这个值,repellant粒子会变少是因为repellant粒子的半径变大,而repellant粒子不会游戏穿插,所以可视化的时候repellant粒子数量会变少

strength range,repellant粒子的排斥力强度范围

noise range,repellant粒子的扰乱强度,0代表repellant粒子表面完全是圆的,1代表repellant表面完全是噪波;

pulse frequency range,repellant粒子噪波形状演化的周期速率。值越大,一个噪波的演化周期越长,0代表没有周期变化,噪波会一直是一种无规律的演化;

life range,repellant粒子的寿命,启用后,repellant粒子会老化并且死亡

density threshold,启用后,repellant粒子限制生成在已包含白水粒子的区域。如果白水粒子的密度高于指定的阈值,这个区域才会生成repellant粒子;

advanced高级选项里面是根据repellant粒子的半径,速度,加速度和液体深度来控制repellant粒子的作用

 

adhesion粘附栏,使白水粒子粘附在液体表面
 

[展开全文]