I have loaded a model using Asimp and have been able to select a mesh that is included in the fbx file. However when I call mesh.drawFaces() nothing renders. When I do this for the model it renders correctly and it is textured on all the meshes. If I use a texture bind the selected mesh does not appear either.
void ofApp::setup(){
ofDisableArbTex(); //Need in order to get proper texture loading.
NDIlib_initialize(); //Self Explanatory
ofBackground(0); //Sets an empty background
ofSetFrameRate(60); //Self Explanatory
//model.loadModel("/Users/djevanclark/Downloads/of_v0.11.0_osx_release/apps/myApps/NDIModel2/247_House 15_obj.obj");
model.loadModel("/Users/djevanclark/Downloads/geom.fbx");
//works // model.loadModel("/Users/djevanclark/Downloads/of_v0.11.0_osx_release/apps/myApps/NDIModel2/247_House 15_obj.obj");
//model.loadModel("/Users/djevanclark/Downloads/skull-obj/skull.obj");
//model.loadModel("/Users/djevanclark/Downloads/tonemapping-replication-dae/tonemapping-replication.dae");
// model.loadModel("/Users/djevanclark/Downloads/Weaving Flag.fbx");
model.disableMaterials();
// model.setPosition(ofGetWidth() * 0.5, (float)ofGetHeight() * 500 , 0);
model.setPosition(0, 0, 0);
model.setRotation(0,90,0,1,0); //Rotates the model on the y axis 90 degrees.
model.setScale(1.0, 1.0, 1.0);
easyCam.setTarget(model.getSceneCenter());
mesh = model.getMesh("Video");
// model.setLoopStateForAllAnimations(OF_LOOP_NORMAL);
// model.playAllAnimations();
std::cout << "Scene Center: " << model.getSceneCenter() << "\n";
// model.disableMaterials();
//model.loadModel("/Users/djevanclark/Documents/untitled.dae");
if(model.hasMeshes()) {
std::cout << "Number of meshes: " << model.getMeshCount() << "\n";
for (int i = 0; i< model.getMeshCount(); i++) {
std::cout << "Meshes: " << model.getMeshNames()[i] << "\n";
}
meshCount = model.getMeshCount();
}
auto findSource = [](const string &name_or_url) {
auto sources = ofxNDI::listSources();
if(name_or_url == "") {
return make_pair(ofxNDI::Source(), false);
}
auto found = find_if(begin(sources), end(sources), [name_or_url](const ofxNDI::Source &s) {
return ofIsStringInString(s.p_ndi_name, name_or_url) || ofIsStringInString(s.p_url_address, name_or_url);
});
if(found == end(sources)) {
ofLogWarning("ofxNDI") << "no NDI source found by string:" << name_or_url;
return make_pair(ofxNDI::Source(), false);
}
return make_pair(*found, true);
};
string name_or_url = ""; // Specify name or address of expected NDI source. In case of blank or not found, receiver will grab default(which is found first) source.
auto result = findSource(name_or_url);
if(result.second ? receiver_.setup(result.first) : receiver_.setup()) {
video_.setup(receiver_);
}
}
//--------------------------------------------------------------
void ofApp::update(){
model.update();
if(receiver_.isConnected()) {
video_.update();
if(video_.isFrameNew()) {
video_.decodeTo(pixels_);
}
}
float rta = model.getRotationAngle(1) + 1;
// model.setRotation(1, rta, 0, 1, 0);
mesh = model.getCurrentAnimatedMesh(0);
}
//--------------------------------------------------------------
void ofApp::draw(){
ofColor(255,255);
model.setPosition(ofGetWidth()/2, (float)ofGetHeight() * 0.75 , 0);
if(pixels_.isAllocated()) {
ofTexture tex = ofImage(pixels_).getTexture();
//ofImage(pixels_).draw(0,0);
// tex.setTextureWrap(GL_REPEAT, GL_REPEAT);
// tex.generateMipmap();
// tex.setTextureMinMagFilter(GL_LINEAR_MIPMAP_LINEAR, GL_NEAREST);
//tex.bind();
//model.drawFaces();
// tex.unbind();
// ofMesh m = model.getMesh("Video");
// cout << "tex coords count: " << m.getNumTexCoords() << " : " << endl;
tex.bind();
mesh.drawFaces();
tex.unbind();
}
//model.drawWireframe();
}