[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20844] trunk/blender/release/scripts: OBJ Import

Campbell Barton ideasman42 at gmail.com
Sat Jun 13 05:54:28 CEST 2009


Revision: 20844
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20844
Author:   campbellbarton
Date:     2009-06-13 05:54:27 +0200 (Sat, 13 Jun 2009)

Log Message:
-----------
OBJ Import
* Wasn't setting the curve 3D option
* The nurbs object name could be None which caused an error, check its set.

OBJ Export
* Off by 1 error on closed nurbs was incorrect, broke other importers but worked with blender.
* Nurbs verts were not adding to the total vert count, scrambling meshes added after (somehow my first test case had all the curve objects last)

Modified Paths:
--------------
    trunk/blender/release/scripts/export_obj.py
    trunk/blender/release/scripts/import_obj.py

Modified: trunk/blender/release/scripts/export_obj.py
===================================================================
--- trunk/blender/release/scripts/export_obj.py	2009-06-13 03:08:58 UTC (rev 20843)
+++ trunk/blender/release/scripts/export_obj.py	2009-06-13 03:54:27 UTC (rev 20844)
@@ -193,6 +193,7 @@
 	return False
 
 def write_nurb(file, ob, ob_mat):
+	tot_verts = 0
 	cu = ob.data
 	
 	# use negative indices
@@ -222,8 +223,8 @@
 			pt = Vector(pt[0], pt[1], pt[2]) * ob_mat
 			file.write('v %.6f %.6f %.6f\n' % (pt[0], pt[1], pt[2]))
 			pt_num += 1
+		tot_verts += pt_num
 		
-		
 		file.write('g %s\n' % (fixName(ob.name))) # fixName(ob.getData(1)) could use the data name too
 		file.write('cstype bspline\n') # not ideal, hard coded
 		file.write('deg %d\n' % DEG_ORDER_U) # not used for curves but most files have it still
@@ -236,7 +237,7 @@
 				pt_num += 1
 				curve_ls.append(-1)
 			else:
-				pt_num += DEG_ORDER_U-1
+				pt_num += DEG_ORDER_U
 				curve_ls = curve_ls + curve_ls[0:DEG_ORDER_U]
 		
 		file.write('curv 0.0 1.0 %s\n' % (' '.join( [str(i) for i in curve_ls] ))) # Blender has no U and V values for the curve
@@ -254,6 +255,8 @@
 		file.write('parm u %s\n' % ' '.join( [str(i) for i in parm_ls] ))
 
 		file.write('end\n')
+	
+	return tot_verts
 
 def write(filename, objects,\
 EXPORT_TRI=False,  EXPORT_EDGES=False,  EXPORT_NORMALS=False,  EXPORT_NORMALS_HQ=False,\
@@ -337,7 +340,6 @@
 	
 	globalNormals = {}
 	
-	
 	# Get all meshes
 	for ob_main in objects:
 		for ob, ob_mat in BPyObject.getDerivedObjects(ob_main):
@@ -347,7 +349,7 @@
 				if EXPORT_ROTX90:
 					ob_mat = ob_mat * mat_xrot90
 				
-				write_nurb(file, ob, ob_mat)
+				totverts += write_nurb(file, ob, ob_mat)
 				
 				continue
 			# end nurbs

Modified: trunk/blender/release/scripts/import_obj.py
===================================================================
--- trunk/blender/release/scripts/import_obj.py	2009-06-13 03:08:58 UTC (rev 20843)
+++ trunk/blender/release/scripts/import_obj.py	2009-06-13 03:54:27 UTC (rev 20844)
@@ -563,6 +563,8 @@
 		return
 	
 	cu = bpy.data.curves.new(name, 'Curve')
+	cu.flag |= 1 # 3D curve
+	
 	nu = None
 	for pt in curv_idx:
 		
@@ -907,7 +909,8 @@
 			context_nurbs['deg']= [int(i) for i in line.split()[1:]]
 		elif line.startswith('end'):
 			# Add the nurbs curve
-			context_nurbs['name'] = context_object
+			if context_object:
+				context_nurbs['name'] = context_object
 			nurbs.append(context_nurbs)
 			context_nurbs = {}
 			context_parm = ''





More information about the Bf-blender-cvs mailing list