【问题标题】:Processing: Creating two 3D boxes and rotating处理:创建两个 3D 框并旋转
【发布时间】:2014-12-10 14:19:49
【问题描述】:

我需要创建两个盒子,它们都应该以相同的速度以相同的方式旋转,只是它们的位置应该不同。我得到的只是这个:

http://i.stack.imgur.com/JMua9.png

我使用了以下代码:

float rotatevalue;
void setup()
{
  rotatevalue = 0;
    size(500, 500, OPENGL);
  if (frame != null) {
    frame.setResizable(true);
  } 
}

void draw()
{
    background(245, 238, 184);
    fill(246, 225, 65);
    rotatevalue = rotatevalue + 2;
    pushMatrix();
    translate(width/4, height/4);
    rotateX(radians(rotatevalue));
    rotateY(radians(rotatevalue));
    box(50);
    popMatrix();

    pushMatrix();
    translate(3*width/4, height/4);
    rotateX(radians(rotatevalue));
    rotateY(radians(rotatevalue));
    box(50);
    popMatrix();
}

是什么导致它们旋转不同?

【问题讨论】:

  • 我不确定我是否理解这个问题.. 两个盒子似乎以相同的方式旋转。为了证明这一点,试着把盒子放在一起。
  • 由于 opengl 视角和它们之间的大距离,您只是在体验视错觉 :)
  • 各位看截图,这不是错觉。我正在使用 cinemizer 眼镜,当您查看它们时,两张图片“合并”,您会看到不同的动作。
  • 对不起,我应该把视错觉放在引号内......有关更多信息,请参阅我的答案。

标签: opengl rotation processing


【解决方案1】:

我不习惯使用 OpenGL 矩阵堆栈,所以这可能有点离题。我计算自己的模型矩阵以传递给顶点着色器。当我这样做时,我会在平移之前先进行旋转。

【讨论】:

    【解决方案2】:

    如果您想在 2D 草图中绘制 3D 对象,您必须使用某种类型的投影,就像您的眼睛投影现实世界一样。有关更多信息,您应该了解更多关于 perspectiveprojection 的信息。

    所以你的盒子以同样的方式旋转!我将尝试在这个基本示例中进行演示。在这里你可以看到草图中间有 5 个框:

    void setup(){  
        size(500, 500, OPENGL);  
        fill(246, 225, 65);
        //ortho();
    }
    
    void draw(){
        background(245, 238, 184);   
        translate(width/2, height/2);    
    
        draw_box(0);
        draw_box(1);
        draw_box(2);
        draw_box(3);
        draw_box(4);
    }
    
    void draw_box(int pos){
        pushMatrix();       
        switch(pos){
          case 0: translate(   0,   0); break;
          case 1: translate(   0,-100); break;
          case 2: translate(   0, 100); break;
          case 3: translate( 100,   0); break;
          case 4: translate(-100,   0); break;
        }                  
        box(50);
        popMatrix();
    }
    

    没有旋转,所以它们应该是一样的?不!和铁轨一样=它们是平行的,但在很远的地方你几乎可以看到它们接触(img

    您可以尝试正交投影以获得更多类似的框以了解更多信息,请参阅ortho。如果你想要更好的结果,你也应该更加集中。

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多