Possibly related to bug #1851:

orco coordinates were assumed to be valid when pointers were non-null,
this seems to have been a wrong assumption, pointers were probably unitialized
(but only for some objects like surfaces?), so when the export code tried to
access them, it crashed.
Now the rendermaterial texco flag is tested instead, which probably is how
it should have been done in the first place...
This commit is contained in:
Alfredo de Greef 2004-11-23 06:10:03 +00:00
parent f3c8c47adb
commit 88b556fd57
2 changed files with 10 additions and 4 deletions

@ -985,9 +985,10 @@ void yafrayFileRender_t::writeObject(Object* obj, const vector<VlakRen*> &VLR_li
ostr << "\t</attributes>\n";
xmlfile << ostr.str();
// if any face in the Blender mesh uses an orco texture, every face has orco coords,
// so only need to check the first facevtx.orco in the list if they need to be exported
bool EXPORT_ORCO = (face0->v1->orco!=NULL);
// Export orco coords test.
// Previously was done by checking orco pointer, however this can be non-null but still not initialized.
// Test the rendermaterial texco flag instead.
bool EXPORT_ORCO = ((face0mat->ren->texco & TEXCO_ORCO)!=0);
string has_orco = "off";
if (EXPORT_ORCO) has_orco = "on";

@ -1123,7 +1123,12 @@ void yafrayPluginRender_t::writeObject(Object* obj, const vector<VlakRen*> &VLR_
tr = face0mat->ray_mirror;
caus_rcolor.set(face0mat->mirr*tr, face0mat->mirg*tr, face0mat->mirb*tr);
}
bool has_orco = (face0->v1->orco!=NULL);
// Export orco coords test.
// Previously was done by checking orco pointer, however this can be non-null but still not initialized.
// Test the rendermaterial texco flag instead.
bool has_orco = ((face0mat->ren->texco & TEXCO_ORCO)!=0);
bool no_auto = true; //in case non-mesh, or mesh has no autosmooth
float sm_angle = 0.1f;
if (obj->type==OB_MESH)