围绕处理中的3D球体轨道运行

时间:2015-02-06 22:19:46

标签: javascript 3d processing orbit

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

这正是我想要做的事情:

Moving on 3D Sphere

知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

飞行模拟器应该比这更难,因为在您链接的视频中,似乎角色(以及相机"跟随"它)实际上并不移动,球体代表这个星球只围绕它自己的中心旋转,所以我觉得相机并不移动,只是球体位置很好并且只是旋转

如果你想要一个"飞行模拟器"在地球上方有一个固定的高度,它似乎是完成它的最简单的方法

答案 1 :(得分:0)

你是对的。我希望球体旋转。这是我到目前为止所得到的:

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/

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