Как сделать револьверную камеру в обработке?

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 Метод должен перемещать камеру по кругу над объектом, всегда фокусируясь на нем.

Я получаю неподвижное изображение коробки, хотя. Я попытался установить frameRate ниже.

0

Решение

Во-первых, обработка использует радианы в своих функциях триггера, поэтому вы должны перевести 0 — 360 в 0 — TWO_PI.

Во-вторых, вы меняете камеру 360 раз за каждый кадр. Функция cameraRotation не должна содержать цикл for. Вы можете увеличить значение переменной в цикле рисования:

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, поскольку они вращаются очень быстро. Вы, вероятно, хотите превратить эти числа в числа с плавающей точкой и сделать некоторое деление, чтобы сделать их меньше для более плавного вращения.

0

Другие решения


По вопросам рекламы [email protected]