Processingでテクスチャ付きのOBJファイルを表示する


はじめに

 Processingでは、外部ライブラリを使わず、OBJファイルを表示できる。OBJLoader.jarもいらないし、openGLも不要。
 Photogrametryした3Dデータを表示する手順をメモする。

準備

 objファイルとテクスチャファイルはpdeと同じか、dataフォルダにいれる。
トラブルの元なので、マテリアルファイルは捨て、obj内のmtllib関連の行もコメントアウト。

コード

 要点はPShape.setTexture(PImage);
 ambientLightは255以上、認識しなかったので、2行書いたら、2倍の明るさになった。

faceAngleRecognition.pde
PShape model;
PImage tex;

void setup() {
  size(512, 512, P3D);
  
  model = loadShape("face.obj");
  model.translate(0,300,0);
  model.scale(1);
  tex = loadImage("matFace.jpg");
  model.setTexture(tex);
}

void draw() {
  background(128);
  //lights();
  ambientLight(255, 255, 255);
  ambientLight(255, 255, 255);

  translate(width/2, height/2, 0);
  camera(0,0,300,
         0,0,0,
         0,1,0);
  rotateX(map(mouseY,0,width,0,2*PI));
  rotateY(map(mouseX,0,width,0,2*PI));
  rotateZ(0);
  shape(model);
}