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

6个月零基础到入职

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

if(i@splash > -1 && @Frame % 1 == 0){
    i@splash += 1;
}
if(i@splash == 10){
    i@splash == -1;
}

这里表示产生了水花的流体粒子,在经过十帧会重新变成普通的流体粒子。   其实i@splash+1这个操作也可以在vop里做,很简单,去掉那个子if就行,但是因为流体解算会有子帧的计算,i@splash在第一帧会加1,在第一点五帧也会加1,这并不是我们需要的,我们只需要每帧加1就行,所以拿到一个新wangle里做,% 符号代表取余数,帧数除以1,如果帧数是整数,余数都为0,如果有子帧,帧数不是整数,余数就不是0,加上这个判定条件,i@splash的值才是每帧加1

 

if(i@splash > -1){
    v@v *= 0.97;
} else{
    float v_len = length(v@v);
    vector v_dir = normalize(v@v);
    v@v = v_dir * clamp(v_len, 0, chf("max_v_clamp"));
    if(v_len > chf("v_threshold")){
        float drag = fit01(rand(i@id), chf("min_drag"), chf("max_drag"));
        v@v *= drag;
    }
}

头一个if很简单,产生水花的流体粒子每帧的速度乘等一个0.97,其实就是给它添加一个拖拽力;第二个if首先把流体粒子速度给拆分,分别拆分成速度大小和速度方向,然后再合并流体粒子的速度大小和方向,方向保持不变,流体粒子的速度大小前置一下,当流体粒子的速度大小超出某个值的时候,便强制使超出这个值的流体粒子的速度大小等于这个值,作用是防止有四处飞溅的流体粒子;子if里边是说当流体粒子的速度大小超出某个值的时候,便对这些超出这个值的流体粒子施加一个拖拽力

 

 

这是自定义的水花粒子系统,关于这个我是这么理解的,这是非常高级的应用,除非是那种导演要求的特写镜头,不然其实用不到,如果只是单纯的要加水花的话,直接打开flipsolve节点,particlemotion选项卡的droplets子选项卡就行

[展开全文]