曼妙的羽毛
受 H20 SplashScreen 项目启发,以更可控的方式重构了作者的代码。
设定 Root & Tip 的朝向和一个曲线 Ramp,就能控制羽毛不同部分的旋转。

代码:
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);