[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20842] trunk/blender/release/scripts/ import_obj.py: X90 Rotate option so you can export without rotation and import, keeping the same orientation.

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


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

Log Message:
-----------
X90 Rotate option so you can export without rotation and import, keeping the same orientation.

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

Modified: trunk/blender/release/scripts/import_obj.py
===================================================================
--- trunk/blender/release/scripts/import_obj.py	2009-06-13 01:30:47 UTC (rev 20841)
+++ trunk/blender/release/scripts/import_obj.py	2009-06-13 03:05:20 UTC (rev 20842)
@@ -2,7 +2,7 @@
  
 """
 Name: 'Wavefront (.obj)...'
-Blender: 248
+Blender: 249
 Group: 'Import'
 Tooltip: 'Load a Wavefront OBJ File, Shift: batch import all dir.'
 """
@@ -40,7 +40,7 @@
 # ***** END GPL LICENCE BLOCK *****
 # --------------------------------------------------------------------------
 
-from Blender import *
+from Blender import Mesh, Draw, Window, Texture, Material, sys, Mathutils
 import bpy
 import BPyMesh
 import BPyImage
@@ -614,7 +614,15 @@
 	ob = scn.objects.new(cu)
 	new_objects.append(ob)
 	
+def transform_tuples(verts_loc, matrix):
+	vec = Mathutils.Vector(0.0,0.0,0.0)
+	def rotvec(v):
+		vec[:] = v
+		return tuple(vec * matrix)
+	
+	verts_loc[:] = [rotvec(v) for v in verts_loc]
 
+
 def strip_slash(line_split):
 	if line_split[-1][-1]== '\\':
 		if len(line_split[-1])==1:
@@ -651,6 +659,7 @@
 						 SPLIT_OBJECTS= True, 
 						 SPLIT_GROUPS= True, 
 						 SPLIT_MATERIALS= True, 
+						 ROTATE_X90= True, 
 						 IMAGE_SEARCH=True,
 						 POLYGROUPS=False):
 	'''
@@ -921,6 +930,8 @@
 	print '%.4f sec' % (time_new-time_sub)
 	time_sub= time_new
 	
+	if not ROTATE_X90:
+		transform_tuples(verts_loc, Mathutils.RotationMatrix(-90, 3, 'x'))
 	
 	# deselect all
 	scn = bpy.data.scenes.active
@@ -962,6 +973,11 @@
 		for ob in new_objects:
 			ob.setSize(scale, scale, scale)
 	
+	# Better rotate the vert locations
+	#if not ROTATE_X90:
+	#	for ob in new_objects:
+	#		ob.RotX = -1.570796326794896558
+	
 	time_new= sys.time()
 	
 	print '%.4f sec' % (time_new-time_sub)
@@ -975,7 +991,7 @@
 	if BPyMessages.Error_NoFile(filepath):
 		return
 	
-	global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER
+	global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90
 	
 	CREATE_SMOOTH_GROUPS= Draw.Create(0)
 	CREATE_FGONS= Draw.Create(1)
@@ -987,6 +1003,7 @@
 	IMAGE_SEARCH= Draw.Create(1)
 	POLYGROUPS= Draw.Create(0)
 	KEEP_VERT_ORDER= Draw.Create(1)
+	ROTATE_X90= Draw.Create(1)
 	
 	
 	# Get USER Options
@@ -1073,7 +1090,7 @@
 			ui_x -= 165
 			ui_y -= 90
 			
-			global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER
+			global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90
 			
 			Draw.Label('Import...', ui_x+9, ui_y+159, 220, 21)
 			Draw.BeginAlign()
@@ -1084,14 +1101,16 @@
 			
 			Draw.Label('Separate objects by OBJ...', ui_x+9, ui_y+110, 220, 20)
 			Draw.BeginAlign()
-			SPLIT_OBJECTS = Draw.Toggle('Object', EVENT_REDRAW, ui_x+9, ui_y+89, 70, 21, SPLIT_OBJECTS.val, 'Import OBJ Objects into Blender Objects', do_split)
-			SPLIT_GROUPS = Draw.Toggle('Group', EVENT_REDRAW, ui_x+79, ui_y+89, 70, 21, SPLIT_GROUPS.val, 'Import OBJ Groups into Blender Objects', do_split)
-			SPLIT_MATERIALS = Draw.Toggle('Material', EVENT_REDRAW, ui_x+149, ui_y+89, 70, 21, SPLIT_MATERIALS.val, 'Import each material into a seperate mesh (Avoids > 16 per mesh error)', do_split)
+			SPLIT_OBJECTS = Draw.Toggle('Object', EVENT_REDRAW, ui_x+9, ui_y+89, 55, 21, SPLIT_OBJECTS.val, 'Import OBJ Objects into Blender Objects', do_split)
+			SPLIT_GROUPS = Draw.Toggle('Group', EVENT_REDRAW, ui_x+64, ui_y+89, 55, 21, SPLIT_GROUPS.val, 'Import OBJ Groups into Blender Objects', do_split)
+			SPLIT_MATERIALS = Draw.Toggle('Material', EVENT_REDRAW, ui_x+119, ui_y+89, 60, 21, SPLIT_MATERIALS.val, 'Import each material into a seperate mesh (Avoids > 16 per mesh error)', do_split)
 			Draw.EndAlign()
 			
 			# Only used for user feedback
-			KEEP_VERT_ORDER = Draw.Toggle('Keep Vert Order', EVENT_REDRAW, ui_x+229, ui_y+89, 110, 21, KEEP_VERT_ORDER.val, 'Keep vert and face order, disables split options, enable for morph targets', do_vertorder)
+			KEEP_VERT_ORDER = Draw.Toggle('Keep Vert Order', EVENT_REDRAW, ui_x+184, ui_y+89, 113, 21, KEEP_VERT_ORDER.val, 'Keep vert and face order, disables split options, enable for morph targets', do_vertorder)
 			
+			ROTATE_X90 = Draw.Toggle('-X90', EVENT_REDRAW, ui_x+302, ui_y+89, 38, 21, ROTATE_X90.val, 'Rotate X 90.')
+			
 			Draw.Label('Options...', ui_x+9, ui_y+60, 211, 20)
 			CLAMP_SIZE = Draw.Number('Clamp Scale: ', EVENT_NONE, ui_x+9, ui_y+39, 130, 21, CLAMP_SIZE.val, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)')
 			POLYGROUPS = Draw.Toggle('Poly Groups', EVENT_REDRAW, ui_x+144, ui_y+39, 90, 21, POLYGROUPS.val, 'Import OBJ groups as vertex groups.', do_polygroups)
@@ -1145,6 +1164,7 @@
 			  SPLIT_OBJECTS.val,\
 			  SPLIT_GROUPS.val,\
 			  SPLIT_MATERIALS.val,\
+			  ROTATE_X90.val,\
 			  IMAGE_SEARCH.val,\
 			  POLYGROUPS.val
 			)
@@ -1158,6 +1178,7 @@
 		  SPLIT_OBJECTS.val,\
 		  SPLIT_GROUPS.val,\
 		  SPLIT_MATERIALS.val,\
+		  ROTATE_X90.val,\
 		  IMAGE_SEARCH.val,\
 		  POLYGROUPS.val
 		)
@@ -1176,7 +1197,7 @@
 	else:
 		Window.FileSelector(load_obj_ui, 'Import a Wavefront OBJ', '*.obj')
 
-# For testing compatibility
+	# For testing compatibility
 '''
 else:
 	# DEBUG ONLY
@@ -1197,7 +1218,7 @@
 			print 'Importing', obj_file, '\nNUMBER', i, 'of', len(files)
 			newScn= bpy.data.scenes.new(os.path.basename(obj_file))
 			newScn.makeCurrent()
-			load_obj(obj_file, False)
+			load_obj(obj_file, False, IMAGE_SEARCH=0)
 
 	print 'TOTAL TIME: %.6f' % (sys.time() - TIME)
 '''





More information about the Bf-blender-cvs mailing list