gpt4 book ai didi

c++ - 如何在Processing中制作旋转摄像机?

转载 作者:行者123 更新时间:2023-11-30 17:22:34 24 4
gpt4 key购买 nike

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 - 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 之间的整数,因为它的旋转速度非常快。您可能希望将这些数字转换为 float 并进行一些除法以使它们更小以便更平滑地旋转。

关于c++ - 如何在Processing中制作旋转摄像机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com