在处理中围绕三维球体动态观察

Orbit Around 3D Sphere in Processing

本文关键字:动态 观察 三维 处理      更新时间:2023-09-26

我正在尝试构建一个正在处理中的无限飞行模拟器。我想像卫星一样在第一人称视野中飞越球体(行星),并用箭头键控制方向。我不知道如何在没有万向节锁的情况下设置相机。

这正是我想要做的:

在3D球体上移动

知道如何做到这一点吗?

飞行模拟器应该比这更难,因为在你链接的视频中,角色(以及"跟随"它的相机)似乎并没有真正移动,代表行星的球体只是绕着自己的中心旋转,所以相机没有移动,我认为这只是球体定位好并简单地旋转

如果你想要一个在行星上方有固定高度的"飞行模拟器",这似乎是实现它的最简单方法

你说得对。我希望球体旋转。这就是我目前所掌握的:

float rotationX = 0;
float rotationY = 0;
float velocityX = 0;
float velocityY = 0;
boolean[] keys = new boolean[255];
void setup(){
  size(500, 500, P3D);
}
void draw() {
  background(150);
  if(keys[LEFT]) {
    velocityY += 0.04;
  }
  if(keys[RIGHT]) {
    velocityY -= 0.04;
  }
  if(keys[UP]) {
    velocityX += 0.04;
  }
  if(keys[DOWN]) {
    velocityX -= 0.04;
  }
  translate(width/2, height/2 + 160, 325);
  rotateX( radians(-rotationX) );
  rotateY( radians(-rotationY) );
  sphere(150);
  rotationX += velocityX;
  rotationY += velocityY;
  velocityX *= 0.95;
  velocityY *= 0.95;
}
void keyPressed() {
  keys[keyCode] = true;
}
void keyReleased() {
  keys[keyCode] = false;
}

所以主要的问题是X,Y,Z轴和球体一起旋转。在我的球体上四处走动,并将其与本例中球体的行为进行比较:

collinhover.github.io/kaiopua/

本例中的轴始终是固定的。我不知道如何更好地解释它。