2015-01-16 3 views
0
void setup() { 
    size(640, 360, P3D); 
    frameRate(10); 
} 

void draw() { 
    cameraRotation(); 
    background(0); 
    lights(); 
    fill(120,10,120); 
    box(40,20,40); 
} 

void cameraRotation() { 
    for (int i=0; i<360; i+=1) { 
    camera(80*cos(i), -25, 80*sin(i), 
    0,0,0, 
    0,1,0); 
    } 
} 

카메라를 중앙 상자 주위로 돌리고 싶습니다. 내 cameraRotation 메서드는 항상 초점을 맞추면서 객체 위의 원으로 카메라를 이동합니다.Processing에서 회전 카메라를 만드는 방법은 무엇입니까?

나는 상자의 정지 이미지를 얻는다. 나는 프레임 속도를 낮추기 위해 노력했다.

답변

0

먼저 프로세싱은 trig 함수에서 라디안을 사용하므로 0 - 360을 0 - TWO_PI로 변환해야합니다.

두 번째로, 모든 프레임마다 360 번 카메라를 변경하려고합니다. cameraRotation 함수에는 for 루프가 없어야합니다. draw 루프에서 변수를 증가시킬 수 있습니다.

int ang = 0; 

void setup() { 
    ... 
} 

void draw() { 
    cameraRotation(ang); 
    ... 
    ang+=1; 
    if (ang > 360) ang = 0; 
} 

void cameraRotation(int a) { 
    camera(80*cos(a), -25, 80*sin(a), 
    0,0,0, 
    0,1,0); 
} 

증가하는 내용도 cameraRotation 함수로 감쌀 수 있습니다.

또는 frameCount 및 모듈러스를 사용하여 숫자를 순환 할 수 있습니다. 이 매우 빠르게 회전 할

void cameraRotation() { 
    int a = frameCount % 360; 
    camera(80*cos(a), -25, 80*sin(a), 
    0,0,0, 
    0,1,0); 
} 

다시 말하지만, 당신은 아마 정수에게 0-360을 사용하지 않습니다. 아마이 수를 실수로 바꾸고 더 부드럽게 회전시키기 위해 더 작게 나누기를 원할 것입니다.

관련 문제