[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