2013-03-06 2 views
1

웹에서 발견 된 .obj 파일에서 Processing에서 3d 객체를 가져 오려고합니다. obj를 장면으로 가져 오는 데는 여러 가지 방법이 있다는 것을 알았습니다.3d 객체 처리 .obj import

이 예제에서는 PShape를 사용하고 있고 obj 파일은 here입니다. 텍스쳐가 동작하는 예제> 기본> 도형> LoadDisplayObJ 샘플부터 시작했습니다.

loadShape 함수를 사용하여 obj 파일을 가져올 수 있지만 텍스처와 색상이 표시되지 않았습니다. 내가 놓친 게 있니? .mtl 파일도 가져와야합니까? 여기

코드입니다 :

PShape house; 

float ry; 

public void setup() { 
    size(640, 360, P3D); 

    house = loadShape("huts/huts.obj"); 
} 

public void draw() { 
    background(100); 
    lights(); 

    translate(width/3, height/3, 0); 
    //rotateX(QUARTER_PI * 1.0);    
    rotateZ(-PI); 

    rotateY(map(mouseX, mouseY, width, 2.5, -2.5)); 

    //rotateY(ry); 
    pushMatrix(); 
    translate(1500,-400,0); 
    shape(house); 
    popMatrix(); 
} 
+1

특정 obj 파일은 참조 된 .mtl 파일과 함께 제공되지 않습니다. 그 맞습니까? loadShape가 정상적으로 자료를 정상적으로로드해야한다면, mtl 파일이 누락되어서 단순히 작동하지 않습니다. – Bart

답변

2

예, 당신이 너무 파일 가져 오기를 가지고 있고, 당신이 당신의 질감이 될 것입니다 .jpg 같은이있는 경우.

+0

여기에 예제가 있습니다 –

+0

import processing.opengl. *; import saito.objloader. *; import peasy. *; int detail = 70; color bg = #ffffff; PeasyCam cam; OBJModel 모델; void setup() {size (1000, 600, OPENGL); model = new OBJModel (this, "mol3.obj"); cam = 새로운 PeasyCam (this, 700); model.scale (0.3); model.translateToCenter(); noStroke(); smooth(); } 무효 draw() {lights(); 배경 (200); 부드럽게(); model.draw(); } void lights() { int w = 170, m = -422, p = + 422; ambientLight (w, w, w); directionalLight (w, w, m, m, m); directionalLight (w, w, p, p, p); directionalLight (w, w, m, m, p); directionalLight (w, w, p, p, m); } –

+0

mol3.obj는 데이터 폴더에 있습니다 ... 거기에 3 개의 파일이 있습니다 .the3 ..obj ... mol3.mtl 및 mol3.jpg –