Trouble with materials and light with loading 3d models

It appears I have a choice, using of ofx3DModelLoader and have randomly perfectly lit models amongst almost completely black and completely white models, or I can use ofxAssimpModelLoader and get pretty terrible light on the objects (poor changes in shading, and never the original material colour I specify in blender). what makes the ofx3DModelLoader strange is no drawing certain models will cause some poorly lit models to have good lighting, as though the model just removed were somehoe blocking the light(dark model) or giving it too much (light model).

So far I have tried loading the example squirrel model which works fine, but if I load it in blender, take off the texture, then load it back into my program, I get the random white/black/perfectly shaded thing. I have tried different kinds of light, moving light, light positioned and oriented the same as the camera, different material values in blender, nothing is happening. I would rather ofx3DModelLoader would work as I’m getting good shading with the few models that get adequate light.

the randomness is truly ranom, each tie I open the program, different models will be properly lit. I can rotate the models and they show that the light is remaining where I want it, so it’s not like some models are just permanently in shadow.

this is how ofx3DModelLoader looks at the moment.

ofx3DModelLoader m_letter;    
ofLight pointLight;
ofLight pointLight2;
ofLight pointLight3;


m_letter.loadModel("letters/b.3ds", 1);
pointLight.setDiffuseColor( ofFloatColor(.5, .5, 0.5) );
pointLight.setSpecularColor( ofFloatColor(1.f, 1.f, 1.f));

pointLight2.setDiffuseColor( ofFloatColor( 238.f/255.f, 57.f/255.f, 135.f/255.f ));
pointLight2.setSpecularColor(ofFloatColor(.8f, .8f, .9f));

pointLight3.setDiffuseColor( ofFloatColor(19.f/255.f,94.f/255.f,77.f/255.f) );
pointLight3.setSpecularColor( ofFloatColor(18.f/255.f,150.f/255.f,135.f/255.f) );

ofSetColor(255, 255, 255);


pointLight.setPosition((ofGetWidth()*.5)+ cos(ofGetElapsedTimef()*.5)*(ofGetWidth()*.3), ofGetHeight()/2, 500);
pointLight2.setPosition((ofGetWidth()*.5)+ cos(ofGetElapsedTimef()*.15)*(ofGetWidth()*.3), ofGetHeight()*.5 + sin(ofGetElapsedTimef()*.7)*(ofGetHeight()), -300);
pointLight3.setPosition( cos(ofGetElapsedTimef()*1.5) * ofGetWidth()*.5,
                        sin(ofGetElapsedTimef()*1.5f) * ofGetWidth()*.5,
                        cos(ofGetElapsedTimef()*.2) * ofGetWidth() );

//some transformations