aa develop

開発と成長

openFrameworksで3Dデータを読み込む

openFrameworksで,3Dデータを読み込んでみた.使ったのはつぼみの3Dデータ.以下からダウンロードできる. つぼみを3Dプリントできまっす! | つぼみオフィシャルサイトへようこそ! ダウンロードしたobjデータをprojectのbin/dataに置く.

プログラムを実行すると以下のようになる. f:id:aa_debdeb:20160714110739p:plain

ただ,上手くライトを当てられず顔がはっきりと見えない.ライトの使い方がまだまだ難しい.

ofApp.h

#pragma once

#include "ofMain.h"
#include "ofxAssimpModelLoader.h"

class ofApp : public ofBaseApp{

public:
    void setup();
    void update();
    void draw();
    
    void keyPressed(int key);
    void keyReleased(int key);
    void mouseMoved(int x, int y );
    void mouseDragged(int x, int y, int button);
    void mousePressed(int x, int y, int button);
    void mouseReleased(int x, int y, int button);
    void mouseEntered(int x, int y);
    void mouseExited(int x, int y);
    void windowResized(int w, int h);
    void dragEvent(ofDragInfo dragInfo);
    void gotMessage(ofMessage msg);
    
    ofxAssimpModelLoader model;
    ofEasyCam cam;
    ofLight light;
};
ofApp.cpp

#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    ofBackground(50, 50, 50, 0);
    ofEnableDepthTest();
    ofEnableSmoothing();
    model.loadModel("tsubomi.obj");
}

//--------------------------------------------------------------
void ofApp::update(){

}

//--------------------------------------------------------------
void ofApp::draw(){
    
    light.enable();
    ofEnableSeparateSpecularLight();
    ofEnableLighting();
    
    cam.begin();
    ofSetColor(255, 255, 255, 255);
    
    model.setScale(0.75, 0.75, 0.75);
    model.setPosition(0, 0, 0);
    model.drawFaces();
    cam.end();
    
}

//--------------------------------------------------------------
void ofApp::keyPressed(int key){

}

//--------------------------------------------------------------
void ofApp::keyReleased(int key){

}

//--------------------------------------------------------------
void ofApp::mouseMoved(int x, int y ){

}

//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mouseReleased(int x, int y, int button){

}

//--------------------------------------------------------------
void ofApp::mouseEntered(int x, int y){

}

//--------------------------------------------------------------
void ofApp::mouseExited(int x, int y){

}

//--------------------------------------------------------------
void ofApp::windowResized(int w, int h){

}

//--------------------------------------------------------------
void ofApp::gotMessage(ofMessage msg){

}

//--------------------------------------------------------------
void ofApp::dragEvent(ofDragInfo dragInfo){ 

}

openFrameworks/load3d at master · aa-debdeb/openFrameworks

参考