【问题标题】:Local Axis Rotation OBJ import Processing局部轴旋转OBJ导入处理
【发布时间】:2016-08-14 09:02:11
【问题描述】:

我正在尝试围绕 Maya 中的轴旋转来自 Maya 的 OBJ。它适用于球体,但适用于我自己的对象 - 它遵循轨道。也许我不明白形状(参数)。

PShape s;
float theta = 0;

void setup() {
  size(500, 500, P3D);
  shapeMode(CENTER);
  s = loadShape("obj2.obj");
}

void draw() {
  background(32);
  lights();
  float z = 0;
  pushMatrix();
  translate(0,height*1/4);
  rotateY(theta);
  theta += .01;
  scale(4.0);
  box(100);
  //shape(s, 0,0);
  popMatrix();
}

这里是对象:https://drive.google.com/open?id=0B3ddDpsAjuqPYUR6RHd0OFBfVU0

【问题讨论】:

    标签: processing


    【解决方案1】:

    取出这行代码:

    shapeMode(CENTER);
    

    由于某种原因,这行代码导致您看到的偏移量。我不确定这会导致偏移的确切原因,但摆脱它似乎可以解决您的问题。

    在处理编辑器附带的示例中有一个加载和显示 3d 形状的简单示例。只需转到File > Examples,然后转到Basics > Shape > LoadDisplayOBJ

    【讨论】:

      【解决方案2】:

      Kevin 是对的,部分问题在于 shapeMode(CENTER)。 此外,您可能需要仔细检查网格是否在您的编辑器中居中。 我已经在 Blender 中导入了你的网格,虽然比例不同,但你的几何图形的原点不在 0,0,0

      这是从 Blender 导出的 .obj 和 .mtl 的调整版本,在手动平移网格后使其更靠近中心:

      PShape s;
      float theta = 0;
      
      void setup() {
        size(500, 500, P3D);
        s = loadShape("coral.obj");
      }
      
      void draw() {
        background(32);
        lights();
        float z = 0;
        pushMatrix();
        translate(width * .5,height* .5);
        rotateY(theta);
        theta += .01;
        scale(50.0);
        shape(s, 0,0);
        popMatrix();
      }
      

      此外,您可以手动计算网格边界框和质心以围绕该位置运行,或者查看提供此功能的库。

      【讨论】:

        猜你喜欢
        • 2016-10-06
        • 2012-08-05
        • 2012-03-30
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        • 2013-02-21
        • 2018-02-16
        • 1970-01-01
        相关资源
        最近更新 更多