[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14866] branches/apricot: Apricot Branch: svn merge -r 14842:HEAD

Brecht Van Lommel brechtvanlommel at pandora.be
Fri May 16 13:05:50 CEST 2008


Revision: 14866
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14866
Author:   blendix
Date:     2008-05-16 13:05:50 +0200 (Fri, 16 May 2008)

Log Message:
-----------
Apricot Branch: svn merge -r 14842:HEAD

Modified Paths:
--------------
    branches/apricot/release/scripts/flt_export.py
    branches/apricot/release/scripts/flt_import.py
    branches/apricot/release/scripts/uvcalc_lightmap.py
    branches/apricot/source/blender/blenkernel/BKE_mball.h
    branches/apricot/source/blender/blenkernel/intern/customdata.c
    branches/apricot/source/blender/blenkernel/intern/mball.c
    branches/apricot/source/blender/blenkernel/intern/modifier.c
    branches/apricot/source/blender/include/butspace.h
    branches/apricot/source/blender/makesdna/intern/SConscript
    branches/apricot/source/blender/render/intern/include/render_types.h
    branches/apricot/source/blender/render/intern/source/initrender.c
    branches/apricot/source/blender/render/intern/source/rendercore.c
    branches/apricot/source/blender/render/intern/source/renderdatabase.c
    branches/apricot/source/blender/render/intern/source/shadeinput.c
    branches/apricot/source/blender/src/buttons_editing.c
    branches/apricot/source/blender/src/buttons_object.c
    branches/apricot/source/blender/src/buttons_scene.c
    branches/apricot/source/blender/src/editarmature.c
    branches/apricot/source/blender/src/filesel.c
    branches/apricot/source/blender/src/sculptmode.c
    branches/apricot/source/blender/src/space.c
    branches/apricot/source/blender/src/toolbox.c
    branches/apricot/source/gameengine/Ketsji/KX_GameObject.h
    branches/apricot/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
    branches/apricot/source/gameengine/Ketsji/KX_TrackToActuator.cpp
    branches/apricot/source/gameengine/SceneGraph/SG_Node.cpp
    branches/apricot/source/gameengine/SceneGraph/SG_Node.h
    branches/apricot/source/gameengine/SceneGraph/SG_ParentRelation.h

Modified: branches/apricot/release/scripts/flt_export.py
===================================================================
--- branches/apricot/release/scripts/flt_export.py	2008-05-16 10:43:49 UTC (rev 14865)
+++ branches/apricot/release/scripts/flt_export.py	2008-05-16 11:05:50 UTC (rev 14866)
@@ -44,6 +44,8 @@
 from flt_filewalker import FileFinder
 from flt_properties import *
 import shutil
+import trace
+import sys
 
 FF = FileFinder()
 records = process_recordDefs()
@@ -639,20 +641,37 @@
 		#first pass: do open faces
 		for vert in wireverts:
 			if not visited[vert] and vertuse[vert.index][1] == 1:
-				visited[vert] = True
-				loop = [vert]
-				othervert = edge_get_othervert(vert, disk[vert][0])
-				self.vertwalk(othervert, loop, disk, visited)
+				loop = list()
+				done = 0
+				startvert = vert
+				while not done:
+					done = 1
+					visited[startvert] = True
+					loop.append(startvert)
+					for edge in disk[startvert]:
+						othervert = edge_get_othervert(startvert, edge)
+						if not visited[othervert]:
+							done = 0
+							startvert = othervert
+							break
 				if len(loop) > 2: loops.append( ('Open', loop) )
-
 		for vert in wireverts:
 			if not visited[vert]:
-				visited[vert] = True
-				loop = [vert]
-				othervert = edge_get_othervert(vert,disk[vert][0])
-				self.vertwalk(othervert, loop, disk, visited)
+				loop = list()
+				done = 0
+				startvert = vert
+				while not done:
+					done = 1
+					visited[startvert] = True
+					loop.append(startvert)
+					for edge in disk[startvert]:
+						othervert = edge_get_othervert(startvert,edge)
+						if not visited[othervert]:
+							done = 0
+							startvert = othervert
+							break
 				if len(loop) > 2: loops.append( ('closed', loop) )
-				
+		
 		#now go through the loops and append.
 		for l in loops:
 			(ftype, loop) = l
@@ -666,6 +685,8 @@
 				face_desc.color_index = 227
 			self.face_lst.append(face_desc)
 
+
+
 	def sortFLTFaces(self,a,b):
 		aindex = a.getProperty("FLT_ORIGINDEX")
 		bindex = b.getProperty("FLT_ORIGINDEX")
@@ -1441,6 +1462,9 @@
 
 FLTAttrib = None
 
+
+FLTWarn = None
+
 def setshadingangle(ID,val):
 	global options
 	options.state['shading_default'] = val
@@ -1504,6 +1528,8 @@
 
 	global FLTAttrib
 	
+	global FLTWarn
+	
 	#choose base path for export
 	if evt == 4:
 		Blender.Window.FileSelector(setBpath, "DB Root", options.state['basepath'])
@@ -1538,8 +1564,13 @@
 	
 	#Export DB
 	if evt == 1:
-		dbexport()
-	
+		try:
+			dbexport()		
+		except Exception, inst:
+			import traceback
+			FLTWarn = Draw.PupBlock("Export Error", ["See console for output!"])
+			traceback.print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)
+
 	#exit
 	if evt == 2:
 		Draw.Exit()

Modified: branches/apricot/release/scripts/flt_import.py
===================================================================
--- branches/apricot/release/scripts/flt_import.py	2008-05-16 10:43:49 UTC (rev 14865)
+++ branches/apricot/release/scripts/flt_import.py	2008-05-16 11:05:50 UTC (rev 14866)
@@ -61,6 +61,7 @@
 FLTScale = None
 FLTShadeImport = None
 FLTAttrib = None
+FLTWarn = None
 
 Vector= Blender.Mathutils.Vector
 FLOAT_TOLERANCE = 0.01
@@ -890,6 +891,17 @@
 		return weldmesh 		
 
 	def weldFuseFaces(self,weldmesh):
+
+		#retain original loose vertices
+		looseverts = dict()
+		for vert in self.mesh.verts:
+			looseverts[vert] = 0
+		for edge in self.mesh.edges:
+			looseverts[edge.v1] += 1
+			looseverts[edge.v2] += 1
+
+
+
 		#slight modification here: we need to walk around the mesh as many times as it takes to have no more matches
 		done = 0
 		while not done:
@@ -937,7 +949,7 @@
 				vertuse[vert] += 1
 		delverts = list()
 		for vert in self.mesh.verts:
-			if not vertuse[vert] and vert.index != 0:
+			if not vertuse[vert] and vert.index != 0 and looseverts[vert]:
 				delverts.append(vert)
 		
 		self.mesh.verts.delete(delverts)	
@@ -2405,6 +2417,10 @@
 
 def event(evt,val):
 	pass
+
+from Blender.BGL import *
+from Blender import Draw
+
 def but_event(evt):
 	
 	global FLTBaseLabel
@@ -2418,6 +2434,8 @@
 	global FLTShadeImport
 	global FLTAttrib
 	
+	global FLTWarn
+	
 	#Import DB
 	if evt == 1:
 		if global_prefs['verbose'] >= 1:
@@ -2429,7 +2447,14 @@
 			print
 		
 		GRR = GlobalResourceRepository()
-		select_file(global_prefs['fltfile'], GRR)
+		
+		try:
+			select_file(global_prefs['fltfile'], GRR)
+		except:
+			import traceback
+			FLTWarn = Draw.PupBlock("Export Error", ["See console for output!"])
+			traceback.print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)
+	
 	#choose base path for export
 	if evt == 4:
 		Blender.Window.FileSelector(setBpath, "DB Root", global_prefs['fltfile'])
@@ -2450,10 +2475,7 @@
 	for key in global_prefs:
 		d[key] = global_prefs[key]
 		Blender.Registry.SetKey('flt_import', d, 1) 
-	
 
-from Blender.BGL import *
-from Blender import Draw
 def gui():
 	
 	global FLTBaseLabel

Modified: branches/apricot/release/scripts/uvcalc_lightmap.py
===================================================================
--- branches/apricot/release/scripts/uvcalc_lightmap.py	2008-05-16 10:43:49 UTC (rev 14865)
+++ branches/apricot/release/scripts/uvcalc_lightmap.py	2008-05-16 11:05:50 UTC (rev 14866)
@@ -538,7 +538,7 @@
 			return
 		meshes = [ ob.getData(mesh=1) ]
 	else:
-		meshes = dict([ (me.name, me) for ob in scn.objects.context for me in (ob.getData(mesh=1),) if not me.lib if len(me.faces)])
+		meshes = dict([ (me.name, me) for ob in scn.objects.context if ob.type == 'Mesh' for me in (ob.getData(mesh=1),) if not me.lib if len(me.faces)])
 		meshes = meshes.values()
 		if not meshes:
 			Draw.PupMenu('Error%t|No mesh objects selected.')

Modified: branches/apricot/source/blender/blenkernel/BKE_mball.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_mball.h	2008-05-16 10:43:49 UTC (rev 14865)
+++ branches/apricot/source/blender/blenkernel/BKE_mball.h	2008-05-16 11:05:50 UTC (rev 14866)
@@ -150,7 +150,7 @@
 void find_first_points(PROCESS *mbproc, struct MetaBall *mb, int a);
 
 void fill_metaball_octal_node(octal_node *node, struct MetaElem *ml, short i);
-void subdivide_metaball_octal_node(octal_node *node, float *size, short depth);
+void subdivide_metaball_octal_node(octal_node *node, float size_x, float size_y, float size_z, short depth);
 void free_metaball_octal_node(octal_node *node);
 void init_metaball_octal_tree(int depth);
 void polygonize(PROCESS *mbproc, struct MetaBall *mb);

Modified: branches/apricot/source/blender/blenkernel/intern/customdata.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/customdata.c	2008-05-16 10:43:49 UTC (rev 14865)
+++ branches/apricot/source/blender/blenkernel/intern/customdata.c	2008-05-16 11:05:50 UTC (rev 14866)
@@ -1242,7 +1242,8 @@
 		if(dest_i >= dest->totlayer) return;
 
 		/* if we found a matching layer, copy the data */
-		if(dest->layers[dest_i].type == source->layers[src_i].type) {
+		if(dest->layers[dest_i].type == source->layers[src_i].type &&
+			strcmp(dest->layers[dest_i].name, source->layers[src_i].name) == 0) {
 			char *src_data = (char*)src_block + source->layers[src_i].offset;
 			char *dest_data = (char*)*dest_block + dest->layers[dest_i].offset;
 

Modified: branches/apricot/source/blender/blenkernel/intern/mball.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/mball.c	2008-05-16 10:43:49 UTC (rev 14865)
+++ branches/apricot/source/blender/blenkernel/intern/mball.c	2008-05-16 11:05:50 UTC (rev 14866)
@@ -1709,15 +1709,13 @@
  *  +------+------+
  *  
  */
-void subdivide_metaball_octal_node(octal_node *node, float *size, short depth)
+void subdivide_metaball_octal_node(octal_node *node, float size_x, float size_y, float size_z, short depth)
 {
 	MetaElem *ml;
 	ml_pointer *ml_p;
 	float x,y,z;
 	int a,i;
 
-	if(depth==0) return;
-
 	/* create new nodes */
 	for(a=0;a<8;a++){
 		node->nodes[a]= MEM_mallocN(sizeof(octal_node),"octal_node");
@@ -1731,45 +1729,71 @@
 		node->nodes[a]->pos= 0;
 	}
 
-	size[0]/=2; size[1]/=2; size[2]/=2;
+	size_x /= 2;
+	size_y /= 2;
+	size_z /= 2;
 	
 	/* center of node */
-	node->x= x= node->x_min + size[0];
-	node->y= y= node->y_min + size[1];
-	node->z= z= node->z_min + size[2];
+	node->x = x = node->x_min + size_x;
+	node->y = y = node->y_min + size_y;
+	node->z = z = node->z_min + size_z;
 
 	/* setting up of border points of new nodes */
-	node->nodes[0]->x_min= node->x_min;
-	node->nodes[0]->y_min= node->y_min;
-	node->nodes[0]->z_min= node->z_min;
+	node->nodes[0]->x_min = node->x_min;
+	node->nodes[0]->y_min = node->y_min;
+	node->nodes[0]->z_min = node->z_min;
+	node->nodes[0]->x = node->nodes[0]->x_min + size_x/2;
+	node->nodes[0]->y = node->nodes[0]->y_min + size_y/2;
+	node->nodes[0]->z = node->nodes[0]->z_min + size_z/2;
 	
-	node->nodes[1]->x_min= x;
-	node->nodes[1]->y_min= node->y_min;
-	node->nodes[1]->z_min= node->z_min;
+	node->nodes[1]->x_min = x;
+	node->nodes[1]->y_min = node->y_min;
+	node->nodes[1]->z_min = node->z_min;
+	node->nodes[1]->x = node->nodes[1]->x_min + size_x/2;
+	node->nodes[1]->y = node->nodes[1]->y_min + size_y/2;
+	node->nodes[1]->z = node->nodes[1]->z_min + size_z/2;
 
-	node->nodes[2]->x_min= x;
-	node->nodes[2]->y_min= y;
-	node->nodes[2]->z_min= node->z_min;
+	node->nodes[2]->x_min = x;
+	node->nodes[2]->y_min = y;
+	node->nodes[2]->z_min = node->z_min;
+	node->nodes[2]->x = node->nodes[2]->x_min + size_x/2;
+	node->nodes[2]->y = node->nodes[2]->y_min + size_y/2;
+	node->nodes[2]->z = node->nodes[2]->z_min + size_z/2;
 
-	node->nodes[3]->x_min= node->x_min;
-	node->nodes[3]->y_min= y;
-	node->nodes[3]->z_min= node->z_min;
+	node->nodes[3]->x_min = node->x_min;
+	node->nodes[3]->y_min = y;
+	node->nodes[3]->z_min = node->z_min;
+	node->nodes[3]->x = node->nodes[3]->x_min + size_x/2;
+	node->nodes[3]->y = node->nodes[3]->y_min + size_y/2;
+	node->nodes[3]->z = node->nodes[3]->z_min + size_z/2;
 
-	node->nodes[4]->x_min= node->x_min;
-	node->nodes[4]->y_min= node->y_min;
-	node->nodes[4]->z_min= z;
+	node->nodes[4]->x_min = node->x_min;
+	node->nodes[4]->y_min = node->y_min;
+	node->nodes[4]->z_min = z;
+	node->nodes[4]->x = node->nodes[4]->x_min + size_x/2;
+	node->nodes[4]->y = node->nodes[4]->y_min + size_y/2;
+	node->nodes[4]->z = node->nodes[4]->z_min + size_z/2;
 	
-	node->nodes[5]->x_min= x;
-	node->nodes[5]->y_min= node->y_min;
-	node->nodes[5]->z_min= z;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list