Camera 处理-更改相机方向和固定文本位置

Camera 处理-更改相机方向和固定文本位置,camera,orientation,processing,Camera,Orientation,Processing,我希望能够在固定位置显示文本时更改相机方向。相机角度应随鼠标在窗口上的位置而变化 让我们考虑这个例子: int sizeX = 600; int sizeY = 600; void setup() { size(sizeX, sizeY, P3D); } void draw() { background(204); stroke(0, 0, 0); //camera(mouseX, height/2.0, (height/2.0) / tan(PI*30.0 / 180.0

我希望能够在固定位置显示文本时更改相机方向。相机角度应随鼠标在窗口上的位置而变化

让我们考虑这个例子:

int sizeX = 600;
int sizeY = 600;

void setup()
{
  size(sizeX, sizeY, P3D);
}

void draw()
{
  background(204);

  stroke(0, 0, 0);
  //camera(mouseX, height/2.0, (height/2.0) / tan(PI*30.0 / 180.0), width/2.0, height/2.0, 0, 0, 1, 0);
  place();
  stroke(0);
  displayInfos();
}

void displayInfos()
{
  stroke(0, 200, 200);
  line (0,20,sizeX,20); // monitor bar
  fill(0);
  textSize(10);
  text ("TEXT 1:", sizeX*0.05,sizeY*0.1-20);
  textSize(12);
  text ("TEXT 2", sizeX*0.7,sizeY*0.95);
}

void place()
{
  pushMatrix();
  translate(sizeX/2, sizeY/2, 0); 
  noFill();
  rotateX(-PI/6);
  rotateY(PI/3);
  box(150);   
  popMatrix();
}
<> >代码> DePosifIfSoSo(<代码>函数)绘制一行A,在固定位置写入一些文本,而<代码>位置()/代码>函数在屏幕中间绘制一个框。

如果在
draw()
函数中取消对摄影机命令的注释,则整个场景将旋转。我想文本和酒吧被固定在屏幕上,并根据鼠标位置旋转框


如何在处理过程中实现这一点?

只需将对camera()函数的调用放在pushMatrix()函数之后:

void place()
{
  pushMatrix();
  camera(mouseX, height/2.0, (height/2.0) / tan(PI*30.0 / 180.0), width/2.0, height/2.0, 0, 0, 1, 0);
  translate(sizeX/2, sizeY/2, 0); 
  noFill();
  rotateX(-PI/6);
  rotateY(PI/3);
  box(150);   
  popMatrix();
}
调用pushMatrix()基本上是说“记住当前的旋转和平移”,然后你可以做任何你想要的旋转和平移,画一些东西,然后调用popMatrix(),基本上是说“回到我告诉你要记住的其他设置”


现在,您记住(按下)默认旋转,执行旋转和平移(通过摄影机函数),绘制长方体,然后通过popMatrix()函数返回默认旋转。然后,当您绘制文本时,它将再次使用默认的旋转和平移。

非常感谢。简洁明了的回答