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

6个月零基础到入职

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

这两节课讲的是模型跟随一个面的运动,我更偏向于直接使用matrix矩阵来做,不想使用channel通道来做,因为我对三维的通道概念还没理解到底是个什么

这是我的节点图

 

接下来是每一个wrangle节点里面的vex代码,我不做解释了,因为要从矩阵的概念开始讲,太长了,帮助文档上会有详细的讲解

 

第一个wrangle     v@center = getbbox_center(0);

第二个wrangle   

int goalprim;
vector goaluv;
xyzdist(1, v@center, goalprim, goaluv);

i@goalprim = goalprim;
v@goaluv = goaluv;

第三个wrangle

v@goalN = primuv(1, "N", i@goalprim, v@goaluv); 
v@goalP = primuv(1, "P", i@goalprim, v@goaluv); 

vector prim_center_uv = set(0.5, 0.5, 0);
vector prim_offset_uv = set(0.51, 0.5, 0);
vector prim_center_P = primuv(1, "P", i@goalprim, prim_center_uv);
vector prim_offset_P = primuv(1, "P", i@goalprim, prim_offset_uv);

v@tangent_U = prim_offset_P - prim_center_P;
v@tangent_U = normalize(v@tangent_U);
v@goalN = normalize(v@goalN);

v@tangent_V = cross(v@goalN, v@tangent_U);

v@tangent_U = -cross(v@goalN, v@tangent_V);

第四个wrangle 

4@m = set(v@tangent_U.x, v@tangent_U.y, v@tangent_U.z, 0,
          v@tangent_V.x, v@tangent_V.y, v@tangent_V.z, 0,
          v@goalN.x,     v@goalN.y,     v@goalN.z,     0,
          v@goalP.x,     v@goalP.y,     v@goalP.z,     1);
          

4@m = invert(4@m);

 

第五个wrangle v@P = v@P * 4@m;

 

第六个wrangle 

v@goalN = primuv(1, "N", i@goalprim, v@goaluv); 
v@goalP = primuv(1, "P", i@goalprim, v@goaluv); 

vector prim_center_uv = set(0.5, 0.5, 0);
vector prim_offset_uv = set(0.51, 0.5, 0);
vector prim_center_P = primuv(1, "P", i@goalprim, prim_center_uv);
vector prim_offset_P = primuv(1, "P", i@goalprim, prim_offset_uv);

v@tangent_U = prim_offset_P - prim_center_P;
v@tangent_U = normalize(v@tangent_U);
v@goalN = normalize(v@goalN);

v@tangent_V = cross(v@goalN, v@tangent_U);

v@tangent_U = -cross(v@goalN, v@tangent_V);
 

第七个wrangle  

4@m = set(v@tangent_U.x, v@tangent_U.y, v@tangent_U.z, 0,
          v@tangent_V.x, v@tangent_V.y, v@tangent_V.z, 0,
          v@goalN.x,     v@goalN.y,     v@goalN.z,     0,
          v@goalP.x,     v@goalP.y,     v@goalP.z,     1);
          

第八个wrangle  v@P = v@P * 4@m;

 

这样就可以让船跟随洋面运动

[展开全文]