如何在 Processing 中制作旋转相机?

How to make a revolving camera in Processing?

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 设置得较低。

首先,Processing 在其三角函数中使用弧度,因此您应该将 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 之间的整数,因为它旋转得非常快。您可能想将这些数字转换为浮点数并进行一些除法以使它们更小以实现更平滑的旋转。