Processing 在处理过程中实现类似Google Earth的三维运动控制

Processing 在处理过程中实现类似Google Earth的三维运动控制,processing,Processing,我正在设计一个处理模型,需要实现类似的用户控制,以便将相机移动到Google Earth,但在透视方面存在问题。底部的示例代码为摄影机x/y位置提供箭头键功能,为高程提供“q/a”键。初始屏幕如下所示: 当相机向右平移时,透视图如下所示: 正如你所看到的,飞机看起来是倾斜的,但我们需要看起来是平的-更像这样: 谢谢你给我的建议,我错过了什么。是否需要进行一些额外的旋转操作?我搜索了处理示例,但没有找到合适的,所以我将在这里发布任何解决方案。这就是模型。非常感谢 // camera posi

我正在设计一个处理模型,需要实现类似的用户控制,以便将相机移动到Google Earth,但在透视方面存在问题。底部的示例代码为摄影机x/y位置提供箭头键功能,为高程提供“q/a”键。初始屏幕如下所示:

当相机向右平移时,透视图如下所示:

正如你所看到的,飞机看起来是倾斜的,但我们需要看起来是平的-更像这样:

谢谢你给我的建议,我错过了什么。是否需要进行一些额外的旋转操作?我搜索了处理示例,但没有找到合适的,所以我将在这里发布任何解决方案。这就是模型。非常感谢

// camera position and focus variables
float campx = 300;
float campy = 400;
float campz = 400;

// mouse control variables
float   mDifX = 0;
float   mDifY = 0;
boolean mLocked = false;
boolean kLocked = false;

void setup() {
  size(600, 400, P3D);
  fill(200);
  stroke(0);
}

void draw() {
  camera(campx, campy, campz, width/2, height/2, 0, 0, 1, 0);

  background(255);
  rect(0, 0, 600, 400);
  for(int i=0; i<10; i++){
    line(0, i*40, width, i*40);
    line(i*60, 0, i*60, height);
  }
}

void mousePressed() {
  if (!mLocked) mLocked = true;
  mDifX = mouseX - campx;
  mDifY = mouseY - campy;
}

void mouseDragged() {
  if (mLocked) {
    campx = mouseX - mDifX;
    campy = mouseY - mDifY;
  }
}

void mouseReleased() {
  mLocked = false;
}

void keyPressed() {
  if (key == 'q') {            // zoom out
    campz += 50;
  } else if (key == 'a') {     // zoom in
    campz -= 50;
  } else if (keyCode == 37) {  // camera LEFT
    campx -= 20;
  } else if (keyCode == 38) {  // camera UP
    campy -= 10;
  }  else if (keyCode == 39) { // camera RIGHT
    campx += 20;
  } else if (keyCode == 40) {  // camera DOWN
    campy += 10;
  }
}
//摄像机位置和焦距变量
浮点数x=300;
浮子坎比=400;
浮点数z=400;
//鼠标控制变量
浮动mDifX=0;
浮动mDifY=0;
布尔值mLocked=false;
布尔kLocked=false;
无效设置(){
尺寸(600、400、P3D);
填充(200);
冲程(0);
}
作废提款(){
摄像机(campx、campy、campz、宽度/2、高度/2、0、0、1、0);
背景(255);
rect(0,060400);

对于(int i=0;i摄像机设置需要是
摄像机(campx,campy,campz,width/2,height/2,0,0,0,-1);

任何感兴趣的人都可以选择最终型号。@v.k.是的,这是一个方便的库,但控件设置并不真正符合我的要求。