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