2013-01-08 77 views
0

我是新来unity3d我想为动画对象的路径。 路径必须是#椭圆形圆圈#或#弹簧形状路径# 我觉得有一种方法来绘制基于数学方程这条路是真的吗? 或者我应该使用3dmax绘制它。 任何有关此问题的帮助或相关教程?如何创建unity3d向下椭圆形圈的道路?

感谢

回答

1

这是绘制路径瓦特/游戏中的鼠标helpful link

如果要绘制的弹簧编程可以使用Catmullrom或贝塞尔样条:

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个控制点。看到一个螺旋建筑的例子,其余的this code can be found on my Github page。看看构建路径()特别是了解如何使用这些功能来构建一个连续的路径。我不喜欢链接到外部帐户,但我的用法示例对于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)); 
} 

该代码假定你有一个horizontal major axis,其中“A”是水平长轴的半径,'b'是垂直短轴的半径。先沿着X/Y轴构建椭圆,然后应用任何想要定向椭圆的变换。

另外,我没有代码这一点,你可以使用general parametric equations生成一个椭圆形旋转已经关闭的起源。

+0

你有没有建立在C# – Mohammed

+0

@Mohammed路径可悲的是没有,但没有我特别看中的,它应该是微不足道的转换。 – Jerdak