[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41000] trunk/blender/source: fix [#28909] OpenCollada export / import sintel lite v2.1 crashes on import.
Campbell Barton
ideasman42 at gmail.com
Fri Oct 14 04:31:04 CEST 2011
Revision: 41000
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41000
Author: campbellbarton
Date: 2011-10-14 02:31:04 +0000 (Fri, 14 Oct 2011)
Log Message:
-----------
fix [#28909] OpenCollada export / import sintel lite v2.1 crashes on import.
Modified Paths:
--------------
trunk/blender/source/blender/collada/AnimationImporter.cpp
trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner.py
trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
Modified: trunk/blender/source/blender/collada/AnimationImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/AnimationImporter.cpp 2011-10-14 02:30:58 UTC (rev 40999)
+++ trunk/blender/source/blender/collada/AnimationImporter.cpp 2011-10-14 02:31:04 UTC (rev 41000)
@@ -962,30 +962,32 @@
for (unsigned int j = 0; j < matBinds.getCount(); j++) {
const COLLADAFW::UniqueId & matuid = matBinds[j].getReferencedMaterial();
const COLLADAFW::Effect *ef = (COLLADAFW::Effect *) (FW_object_map[matuid]);
- const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
- COLLADAFW::EffectCommon *efc = commonEffects[0];
- if((animType->material & MATERIAL_SHININESS) != 0){
- const COLLADAFW::FloatOrParam *shin = &(efc->getShininess());
- const COLLADAFW::UniqueId& listid = shin->getAnimationList();
- Assign_float_animations( listid, AnimCurves , "specular_hardness" );
- }
+ if (ef != NULL) { /* can be NULL [#28909] */
+ const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
+ COLLADAFW::EffectCommon *efc = commonEffects[0];
+ if((animType->material & MATERIAL_SHININESS) != 0){
+ const COLLADAFW::FloatOrParam *shin = &(efc->getShininess());
+ const COLLADAFW::UniqueId& listid = shin->getAnimationList();
+ Assign_float_animations( listid, AnimCurves , "specular_hardness" );
+ }
- if((animType->material & MATERIAL_IOR) != 0){
- const COLLADAFW::FloatOrParam *ior = &(efc->getIndexOfRefraction());
- const COLLADAFW::UniqueId& listid = ior->getAnimationList();
- Assign_float_animations( listid, AnimCurves , "raytrace_transparency.ior" );
- }
+ if((animType->material & MATERIAL_IOR) != 0){
+ const COLLADAFW::FloatOrParam *ior = &(efc->getIndexOfRefraction());
+ const COLLADAFW::UniqueId& listid = ior->getAnimationList();
+ Assign_float_animations( listid, AnimCurves , "raytrace_transparency.ior" );
+ }
- if((animType->material & MATERIAL_SPEC_COLOR) != 0){
- const COLLADAFW::ColorOrTexture *cot = &(efc->getSpecular());
- const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
- Assign_color_animations( listid, AnimCurves , "specular_color" );
- }
+ if((animType->material & MATERIAL_SPEC_COLOR) != 0){
+ const COLLADAFW::ColorOrTexture *cot = &(efc->getSpecular());
+ const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
+ Assign_color_animations( listid, AnimCurves , "specular_color" );
+ }
- if((animType->material & MATERIAL_DIFF_COLOR) != 0){
- const COLLADAFW::ColorOrTexture *cot = &(efc->getDiffuse());
- const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
- Assign_color_animations( listid, AnimCurves , "diffuse_color" );
+ if((animType->material & MATERIAL_DIFF_COLOR) != 0){
+ const COLLADAFW::ColorOrTexture *cot = &(efc->getDiffuse());
+ const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList();
+ Assign_color_animations( listid, AnimCurves , "diffuse_color" );
+ }
}
}
}
@@ -1051,14 +1053,16 @@
for (unsigned int j = 0; j < matBinds.getCount(); j++) {
const COLLADAFW::UniqueId & matuid = matBinds[j].getReferencedMaterial();
const COLLADAFW::Effect *ef = (COLLADAFW::Effect *) (FW_object_map[matuid]);
- const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
- if(!commonEffects.empty()) {
- COLLADAFW::EffectCommon *efc = commonEffects[0];
- types->material = setAnimType(&(efc->getShininess()),(types->material), MATERIAL_SHININESS);
- types->material = setAnimType(&(efc->getSpecular().getColor()),(types->material), MATERIAL_SPEC_COLOR);
- types->material = setAnimType(&(efc->getDiffuse().getColor()),(types->material), MATERIAL_DIFF_COLOR);
- // types->material = setAnimType(&(efc->get()),(types->material), MATERIAL_TRANSPARENCY);
- types->material = setAnimType(&(efc->getIndexOfRefraction()),(types->material), MATERIAL_IOR);
+ if (ef != NULL) { /* can be NULL [#28909] */
+ const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects();
+ if(!commonEffects.empty()) {
+ COLLADAFW::EffectCommon *efc = commonEffects[0];
+ types->material = setAnimType(&(efc->getShininess()),(types->material), MATERIAL_SHININESS);
+ types->material = setAnimType(&(efc->getSpecular().getColor()),(types->material), MATERIAL_SPEC_COLOR);
+ types->material = setAnimType(&(efc->getDiffuse().getColor()),(types->material), MATERIAL_DIFF_COLOR);
+ // types->material = setAnimType(&(efc->get()),(types->material), MATERIAL_TRANSPARENCY);
+ types->material = setAnimType(&(efc->getIndexOfRefraction()),(types->material), MATERIAL_IOR);
+ }
}
}
}
@@ -1067,10 +1071,10 @@
int AnimationImporter::setAnimType ( const COLLADAFW::Animatable * prop , int types, int addition)
{
- const COLLADAFW::UniqueId& listid = prop->getAnimationList();
- if (animlist_map.find(listid) != animlist_map.end())
- return types|addition;
- else return types;
+ const COLLADAFW::UniqueId& listid = prop->getAnimationList();
+ if (animlist_map.find(listid) != animlist_map.end())
+ return types|addition;
+ else return types;
}
// Is not used anymore.
Modified: trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner.py
===================================================================
--- trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner.py 2011-10-14 02:30:58 UTC (rev 40999)
+++ trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner.py 2011-10-14 02:31:04 UTC (rev 41000)
@@ -1,4 +1,4 @@
-#! /usr/bin/env python3.1
+#! /usr/bin/env python3
"""
This script is used to help cleaning RNA api.
Modified: trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
===================================================================
--- trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py 2011-10-14 02:30:58 UTC (rev 40999)
+++ trunk/blender/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py 2011-10-14 02:31:04 UTC (rev 41000)
@@ -1,4 +1,4 @@
-#! /usr/bin/env python3.1
+#! /usr/bin/env python3
import sys
Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp 2011-10-14 02:30:58 UTC (rev 40999)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp 2011-10-14 02:31:04 UTC (rev 41000)
@@ -1596,7 +1596,7 @@
objprop.m_boundclass = KX_BOUNDPOLYTOPE;
break;
}
- // Object is not a mesh... fall through OB_BOUND_POLYH to
+ // Object is not a mesh... fall through OB_BOUND_TRIANGLE_MESH to
// OB_BOUND_SPHERE
case OB_BOUND_TRIANGLE_MESH:
if (blenderobject->type == OB_MESH)
More information about the Bf-blender-cvs
mailing list