我是unity3d的新手,我想为动画对象制作一条路径。路径必须是#椭圆形路径#或者#弹簧形状路径#我认为有一种方法可以根据数学方程来绘制这条路径是真的吗?或者我应该使用 3dmax 绘制它。这个问题的任何帮助或相关教程?
谢谢
这是在游戏中用鼠标绘制路径的有用链接。
如果您想以编程方式绘制弹簧,可以使用 Catmullrom 或 Bezier 样条:
double bezier(double t, double p0,double p1,double p2,double p3){
double t2 = t*t;
double t3 = t2 * t;
return (0.16667 *( t3 * (-p0 + 3 * p1 + -3 * p2 + p3) + \
t2 * (3 * p0 + -6 * p1 + 3 * p2) + \
t * (-3*p0 + 3*p2) + \
1 * (p0 + 4*p1 + p2)));
}
double catmullrom(double t, double p0,double p1,double p2,double p3){
double t2 = t*t;
double t3 = t2 * t;
return (0.5 *( (2 * p1) + (-p0 + p2) * t +(2*p0 - 5*p1 + 4*p2 - p3) * t2 +(-p0 + 3*p1- 3*p2 + p3) * t3));
}
输入 p0,p1,p2,p3 是特定段的 4 个控制点。要查看螺旋构建示例,可以在我的 Github 页面上找到此代码的其余部分。特别查看BuildPath()以了解如何使用这些函数来构建连续路径。我不喜欢链接到外部帐户,但我的使用示例对于 SO 答案来说有点太大了。
如果你想画一个椭圆,我能想到的最简单的方法是求解基本方程并建立一个点环:
List<Vector3> pts = new List<Vector3>();
for(float x=-2.0f; x<2.0f;x+=0.1){
y = sqrt( (1-x^2/a^2) * b^2 );//from eq. x^2/a^2 + y^2/b^2=1;
pts.Add(new Vector3(x,y,0));
}
该代码假设您有一个水平主轴,其中“a”是水平主轴的半径,“b”是垂直短轴的半径。首先沿 X/Y 轴构建椭圆,然后应用您希望定位椭圆的任何变换。
或者,我没有这方面的代码,您可以使用一般参数方程来生成一个已经偏离原点的旋转椭圆。