[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19725] trunk/blender: [#7789] 3DS Import , Mesh not correct since Blender 2.44

Campbell Barton ideasman42 at gmail.com
Wed Apr 15 09:00:11 CEST 2009


Revision: 19725
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19725
Author:   campbellbarton
Date:     2009-04-15 09:00:11 +0200 (Wed, 15 Apr 2009)

Log Message:
-----------
[#7789] 3DS Import , Mesh not correct since Blender 2.44

There is a problem importing 3ds files where I cant find a way to check if the transforms are applied to the vertex locations or not.
Since 2.44 I made the importer assume they were not since you can manually remove transformations, but not reverse.

Nevertheless most 3ds files have the matrix applied, better not give a bad import by default.
Did some research and other 3ds importers (lib3ds for eg), have the same problem and just assume the transformations applied.

3dsMax imports both correctly so there must be a way to tell but I could not link it to the 3ds version or other mesh options.
Added an option to workaround this problem in rare cases where its needed.

- KX_GameObject.cpp & KX_Scene.cpp, clear the dict before removing the reference in case there is a circular reference.

Modified Paths:
--------------
    trunk/blender/release/scripts/3ds_import.py
    trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp

Modified: trunk/blender/release/scripts/3ds_import.py
===================================================================
--- trunk/blender/release/scripts/3ds_import.py	2009-04-15 04:34:27 UTC (rev 19724)
+++ trunk/blender/release/scripts/3ds_import.py	2009-04-15 07:00:11 UTC (rev 19725)
@@ -844,11 +844,13 @@
 	# IMPORT_AS_INSTANCE= Blender.Draw.Create(0)
 	IMPORT_CONSTRAIN_BOUNDS= Blender.Draw.Create(10.0)
 	IMAGE_SEARCH= Blender.Draw.Create(1)
+	APPLY_MATRIX= Blender.Draw.Create(0)
 	
 	# Get USER Options
 	pup_block= [\
 	('Size Constraint:', IMPORT_CONSTRAIN_BOUNDS, 0.0, 1000.0, 'Scale the model by 10 until it reacehs the size constraint. Zero Disables.'),\
 	('Image Search', IMAGE_SEARCH, 'Search subdirs for any assosiated images (Warning, may be slow)'),\
+	('Transform Fix', APPLY_MATRIX, 'Workaround for object transformations importing incorrectly'),\
 	#('Group Instance', IMPORT_AS_INSTANCE, 'Import objects into a new scene and group, creating an instance in the current scene.'),\
 	]
 	
@@ -861,6 +863,7 @@
 	IMPORT_CONSTRAIN_BOUNDS= IMPORT_CONSTRAIN_BOUNDS.val
 	# IMPORT_AS_INSTANCE= IMPORT_AS_INSTANCE.val
 	IMAGE_SEARCH = IMAGE_SEARCH.val
+	APPLY_MATRIX = APPLY_MATRIX.val
 	
 	if IMPORT_CONSTRAIN_BOUNDS:
 		BOUNDS_3DS[:]= [1<<30, 1<<30, 1<<30, -1<<30, -1<<30, -1<<30]
@@ -887,6 +890,8 @@
 		if ob.type=='Mesh':
 			me= ob.getData(mesh=1)
 			me.verts.delete([me.verts[0],])
+			if not APPLY_MATRIX:
+				me.transform(ob.matrixWorld.copy().invert())
 	
 	# Done DUMMYVERT
 	"""

Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp	2009-04-15 04:34:27 UTC (rev 19724)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp	2009-04-15 07:00:11 UTC (rev 19725)
@@ -143,6 +143,7 @@
 	}
 	
 	if (m_attrlist) {
+		PyDict_Clear(m_attrlist); /* incase of circular refs or other weired cases */
 		Py_DECREF(m_attrlist);
 	}
 }

Modified: trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp	2009-04-15 04:34:27 UTC (rev 19724)
+++ trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp	2009-04-15 07:00:11 UTC (rev 19725)
@@ -250,6 +250,7 @@
 	{
 		delete m_bucketmanager;
 	}
+	PyDict_Clear(m_attrlist);
 	Py_DECREF(m_attrlist);
 }
 





More information about the Bf-blender-cvs mailing list