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

6个月零基础到入职

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

为什么要做点的插补,因为直接拿这些被找到的红色的点做发射源,这些点运动速度太快,会导致烟雾都是一小截一小截的,烟雾有明显的断开,这个问题可以在DOP里解决,提高解算步幅就行,但是这样会带来非常大的计算量,所以还是在进行DOP模拟之前就给点进行插补

 

求点在上一秒的位置,就是当前的位置减去速度,如果求点在上一帧的位置,就是当前的位置减去速度的二十四分之一,这样生成的点只是出现在上一帧的位置,还要再乘一个0.1到1之间的值,这样才能形成一个正确的点插补

 

int adaptive_points = int(fit(length(v@v), 0, chf("max_v_len"), 0, max_point));设置一个这样的变量是根据点的速度来生成点,这样的话运动的快的点生成的点数就多,运动的慢的点生成的点数就少

 

整数与整数相除,得到的还是一个整数,所以需要强制其中一个数为浮点才会得到正确的零到一的结果

 

addpoint函数的作用是添加点,第一空填要要添加点的对象,第二空如果填位置信息,表示添加的点的位置放在哪里,如果填一个整数信息,比如ptnum,表示根据提供的点序号的点,完全添加一个一模一样的点,这个点具备原来的点的所有属性,如果原来的点有组新点也会在组里

[展开全文]

用VEX写forloop:

for后需要三个参数,每个参数用分号隔开

for(创建一个整数变量,设置一个初始条件;forloop迭代多少次;增量){

 

}

for(int idx =1; idx <10 ; idx++){}

循环从1开始,每次迭代+1,一旦等于10就断开

 

addpoint函数:

addpoint(第几个输入接口,什么位置去创建这个点?)

addpoint(0, @P);   在当前点位置创建点

 

每帧多少秒的固定写法:@TimeInc

上一帧的点的位置,等于这一帧的点位置,减去v乘以一帧的时间,所以上一秒的position=@P -@v*@TimeInc;

再乘以forloop中idx/max,可将点均匀分布在一帧中

 

setpointattribute(哪个输入接口的点,哪个属性,哪些点,给这个属性设置什么值,设置的模式)

setpointattribute(0, "Cd", new_pt, @Cd, "set");

[展开全文]