Skip to content

曼妙的羽毛

H20 SplashScreen 项目启发,以更可控的方式重构了作者的代码。

设定 Root & Tip 的朝向和一个曲线 Ramp,就能控制羽毛不同部分的旋转。

image-20260322163454708

代码:

c
int prevpt = primpoint(0, @primnum, max(vertexprimindex(0, @vtxnum)-1, 0));
int nextpt = primpoint(0, @primnum, min(vertexprimindex(0, @vtxnum)+1, @numvtx-1));

vector prevP = point(0, "P", prevpt);
vector nextP = point(0, "P", nextpt);

// Define the feather tip & root direction. 
vector dirTipFace = chv('dirTipFace');
vector dirRootFace = chv('dirRootFace');

// Make Lerp along the curve with a ramp. 
vector dirLerp = lerp(dirRootFace, dirTipFace, chramp('ramp', @curveu));

matrix3 rot = lookat(prevP, nextP, dirLerp);
p@barborient = quaternion(rot);