【问题标题】:Orbit Around 3D Sphere in Processing在处理中围绕 3D 球体运行
【发布时间】:2015-04-07 04:29:22
【问题描述】:

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

这正是我想做的:

Moving on 3D Sphere

知道如何实现吗?

【问题讨论】:

    标签: javascript 3d processing orbit


    【解决方案1】:

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

    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/

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        • 2017-02-21
        相关资源
        最近更新 更多