2013-01-08 2 views
0

unity3d를 처음 사용했습니다. 움직이는 물체의 경로를 만들고 싶습니다. 경로는 # 타원 원형 또는 # 스프링 모양 경로 여야합니다 # 수학 공식에 따라이 경로를 그릴 수있는 방법이 있다고 생각합니까? 또는 3dmax를 사용하여 그려야합니까? 이 문제에 대한 도움말이나 관련 자습서가 있습니까?unity3d에서 아래쪽 타원 원 경로를 만드는 방법은 무엇입니까?

감사

답변

1

이 게임에서 마우스 승/경로를 그리기위한 helpful link입니다. 의 입력 P0, P1, P2, P3가 특정 세그먼트의 4 개 제어 점이다

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)); 
} 

: 당신이 봄을 그리려면

프로그래밍 당신은 Catmullrom 또는 베 지어 스플라인을 사용할 수 있습니다. 나선형 건물의 예를 보려면 나머지는 this code can be found on my Github page입니다. BuildPath() 특히 이러한 함수를 사용하여 연속 경로를 만드는 방법을 보려면을보십시오. 나는 외부 계정에 연결하는 것을 싫어하지만 나의 사용 예는 SO 대답에 비해 너무 크다. 'A는'어디가 horizontal major axis

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)); 
} 

그 코드는 가정이 타원을 그리려면

는, 내가 생각할 수있는 가장 간단한 방법은 기본 방정식을 해결하고 점의 반지를 구축하는 것입니다 수평 장축의 반지름, 'b'는 수직 단축의 반지름입니다. 우선 X/Y 축을 따라 타원을 작성한 다음 타원 방향을 지정하려는 변형을 적용하십시오.

또한 코드가 없으므로 general parametric equations을 사용하여 이미 원점을 벗어난 회전 된 타원을 생성 할 수 있습니다.

+0

C에서 빌드 경로가 있습니까 – Mohammed

+0

@Mohammed 슬프게도 아니오,하지만 내가하는 일은 특히 공상입니다. 변환하는 것이 간단해야합니다. – Jerdak

관련 문제