[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11442] branches/soc-2007-joeedh: Merge with trunk at revision 11440.

Joseph Eagar joeedh at gmail.com
Tue Jul 31 07:30:33 CEST 2007


Revision: 11442
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11442
Author:   joeedh
Date:     2007-07-31 07:30:32 +0200 (Tue, 31 Jul 2007)

Log Message:
-----------
Merge with trunk at revision 11440.

For some reason the merge clonked out when it got to the language stuff, something
about the folder being locked :/  Not sure how that could happen, I've never
touched the locale po file stuff.

But it compiled, and everything *seems* to be ok.

Revision Links:
--------------
    http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11440

Modified Paths:
--------------
    branches/soc-2007-joeedh/intern/opennl/extern/ONL_opennl.h
    branches/soc-2007-joeedh/intern/opennl/intern/opennl.c
    branches/soc-2007-joeedh/release/scripts/lightwave_import.py
    branches/soc-2007-joeedh/release/scripts/uv_export.py
    branches/soc-2007-joeedh/source/blender/blenkernel/BKE_DerivedMesh.h
    branches/soc-2007-joeedh/source/blender/blenkernel/BKE_action.h
    branches/soc-2007-joeedh/source/blender/blenkernel/BKE_constraint.h
    branches/soc-2007-joeedh/source/blender/blenkernel/BKE_lattice.h
    branches/soc-2007-joeedh/source/blender/blenkernel/BKE_modifier.h
    branches/soc-2007-joeedh/source/blender/blenkernel/intern/DerivedMesh.c
    branches/soc-2007-joeedh/source/blender/blenkernel/intern/action.c
    branches/soc-2007-joeedh/source/blender/blenkernel/intern/armature.c
    branches/soc-2007-joeedh/source/blender/blenkernel/intern/constraint.c
    branches/soc-2007-joeedh/source/blender/blenkernel/intern/modifier.c
    branches/soc-2007-joeedh/source/blender/blenkernel/intern/object.c
    branches/soc-2007-joeedh/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/soc-2007-joeedh/source/blender/blenlib/BLI_arithb.h
    branches/soc-2007-joeedh/source/blender/blenlib/intern/arithb.c
    branches/soc-2007-joeedh/source/blender/blenloader/intern/readfile.c
    branches/soc-2007-joeedh/source/blender/blenloader/intern/writefile.c
    branches/soc-2007-joeedh/source/blender/ftfont/FTF_Api.h
    branches/soc-2007-joeedh/source/blender/ftfont/SConscript
    branches/soc-2007-joeedh/source/blender/ftfont/intern/FTF_Api.cpp
    branches/soc-2007-joeedh/source/blender/ftfont/intern/Makefile
    branches/soc-2007-joeedh/source/blender/include/BIF_editconstraint.h
    branches/soc-2007-joeedh/source/blender/include/BIF_interface.h
    branches/soc-2007-joeedh/source/blender/include/BIF_poseobject.h
    branches/soc-2007-joeedh/source/blender/include/BIF_resources.h
    branches/soc-2007-joeedh/source/blender/include/butspace.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_action_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_constraint_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_curve_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_group_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_image_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_ipo_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_lamp_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_mesh_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_meshdata_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_modifier_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_nla_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_object_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_scene_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_space_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_texture_types.h
    branches/soc-2007-joeedh/source/blender/makesdna/DNA_world_types.h
    branches/soc-2007-joeedh/source/blender/nodes/intern/CMP_nodes/CMP_math.c
    branches/soc-2007-joeedh/source/blender/python/BPY_extern.h
    branches/soc-2007-joeedh/source/blender/python/BPY_interface.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Constraint.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Curve.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Draw.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Draw.h
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Object.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Scene.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/SurfNurb.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Texture.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/Window.c
    branches/soc-2007-joeedh/source/blender/python/api2_2x/doc/Constraint.py
    branches/soc-2007-joeedh/source/blender/python/api2_2x/doc/Draw.py
    branches/soc-2007-joeedh/source/blender/python/api2_2x/sceneSequence.h
    branches/soc-2007-joeedh/source/blender/render/SConscript
    branches/soc-2007-joeedh/source/blender/render/intern/include/render_types.h
    branches/soc-2007-joeedh/source/blender/render/intern/include/rendercore.h
    branches/soc-2007-joeedh/source/blender/render/intern/source/convertblender.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/envmap.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/pipeline.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/rendercore.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/shadbuf.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/shadeoutput.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/texture.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/zbuf.c
    branches/soc-2007-joeedh/source/blender/src/blenderbuttons.c
    branches/soc-2007-joeedh/source/blender/src/buttons_editing.c
    branches/soc-2007-joeedh/source/blender/src/buttons_object.c
    branches/soc-2007-joeedh/source/blender/src/buttons_shading.c
    branches/soc-2007-joeedh/source/blender/src/drawaction.c
    branches/soc-2007-joeedh/source/blender/src/drawarmature.c
    branches/soc-2007-joeedh/source/blender/src/drawscript.c
    branches/soc-2007-joeedh/source/blender/src/editaction.c
    branches/soc-2007-joeedh/source/blender/src/editarmature.c
    branches/soc-2007-joeedh/source/blender/src/editconstraint.c
    branches/soc-2007-joeedh/source/blender/src/editipo.c
    branches/soc-2007-joeedh/source/blender/src/editobject.c
    branches/soc-2007-joeedh/source/blender/src/filesel.c
    branches/soc-2007-joeedh/source/blender/src/header_filesel.c
    branches/soc-2007-joeedh/source/blender/src/header_view3d.c
    branches/soc-2007-joeedh/source/blender/src/interface_draw.c
    branches/soc-2007-joeedh/source/blender/src/poseobject.c
    branches/soc-2007-joeedh/source/blender/src/space.c
    branches/soc-2007-joeedh/source/blender/src/transform.c
    branches/soc-2007-joeedh/source/blender/src/transform_conversions.c
    branches/soc-2007-joeedh/source/gameengine/Converter/BL_ActionActuator.cpp
    branches/soc-2007-joeedh/source/gameengine/Converter/BL_SkinDeformer.cpp

Added Paths:
-----------
    branches/soc-2007-joeedh/source/blender/include/BIF_meshlaplacian.h
    branches/soc-2007-joeedh/source/blender/render/extern/include/RE_raytrace.h
    branches/soc-2007-joeedh/source/blender/render/intern/source/rayshade.c
    branches/soc-2007-joeedh/source/blender/render/intern/source/raytrace.c
    branches/soc-2007-joeedh/source/blender/src/meshlaplacian.c

Removed Paths:
-------------
    branches/soc-2007-joeedh/bin/.blender/locale/pt_br/
    branches/soc-2007-joeedh/bin/.blender/locale/zh_cn/
    branches/soc-2007-joeedh/source/blender/render/intern/source/ray.c

Modified: branches/soc-2007-joeedh/intern/opennl/extern/ONL_opennl.h
===================================================================
--- branches/soc-2007-joeedh/intern/opennl/extern/ONL_opennl.h	2007-07-31 05:27:41 UTC (rev 11441)
+++ branches/soc-2007-joeedh/intern/opennl/extern/ONL_opennl.h	2007-07-31 05:30:32 UTC (rev 11442)
@@ -131,10 +131,12 @@
 void nlEnd(NLenum primitive);
 void nlCoefficient(NLuint index, NLfloat value);
 
-/* Setting random elements matrix/vector - not for least squares! */
+/* Setting random elements matrix/vector - not supported for
+   least squares! */
 
 void nlMatrixAdd(NLuint row, NLuint col, NLfloat value);
 void nlRightHandSideAdd(NLuint index, NLfloat value);
+void nlRightHandSideSet(NLuint index, NLfloat value);
 
 /* Solve */
 

Modified: branches/soc-2007-joeedh/intern/opennl/intern/opennl.c
===================================================================
--- branches/soc-2007-joeedh/intern/opennl/intern/opennl.c	2007-07-31 05:27:41 UTC (rev 11441)
+++ branches/soc-2007-joeedh/intern/opennl/intern/opennl.c	2007-07-31 05:30:32 UTC (rev 11442)
@@ -441,6 +441,7 @@
 	NLfloat  value;
 	NLboolean locked;
 	NLuint	index;
+	__NLRowColumn *a;
 } __NLVariable;
 
 #define __NL_STATE_INITIAL				0
@@ -453,13 +454,13 @@
 
 typedef struct {
 	NLenum		   state;
+	NLuint		   n;
 	__NLVariable*	variable;
-	NLuint		   n;
+	NLfloat*		b;
 	__NLSparseMatrix M;
 	__NLRowColumn	af;
 	__NLRowColumn	al;
 	NLfloat*		x;
-	NLfloat*		b;
 	NLfloat		 right_hand_side;
 	NLuint		   nb_variables;
 	NLuint		   current_row;
@@ -472,8 +473,8 @@
 	NLboolean		alloc_variable;
 	NLboolean		alloc_x;
 	NLboolean		alloc_b;
-	NLfloat		 error;
-	__NLMatrixFunc   matrix_vector_prod;
+	NLfloat			error;
+	__NLMatrixFunc	matrix_vector_prod;
 
 	struct __NLSuperLUContext {
 		NLboolean alloc_slu;
@@ -503,6 +504,8 @@
 
 void nlDeleteContext(NLContext context_in) {
 	__NLContext* context = (__NLContext*)(context_in);
+	int i;
+
 	if(__nlCurrentContext == context) {
 		__nlCurrentContext = NULL;
 	}
@@ -516,14 +519,19 @@
 		__nlRowColumnDestroy(&context->al);
 	}
 	if(context->alloc_variable) {
-		__NL_DELETE_ARRAY(context->variable);
+		for(i=0; i<context->nb_variables; i++) {
+			if(context->variable[i].a) {
+				__nlRowColumnDestroy(context->variable[i].a);
+				__NL_DELETE(context->variable[i].a);
+			}
+		}
 	}
+	if(context->alloc_b) {
+		__NL_DELETE_ARRAY(context->b);
+	}
 	if(context->alloc_x) {
 		__NL_DELETE_ARRAY(context->x);
 	}
-	if(context->alloc_b) {
-		__NL_DELETE_ARRAY(context->b);
-	}
 	if (context->slu.alloc_slu) {
 		__nlFree_SUPERLU(context);
 	}
@@ -727,8 +735,10 @@
 
 static void __nlVariablesToVector() {
 	NLuint i;
+
 	__nl_assert(__nlCurrentContext->alloc_x);
 	__nl_assert(__nlCurrentContext->alloc_variable);
+
 	for(i=0; i<__nlCurrentContext->nb_variables; i++) {
 		__NLVariable* v = &(__nlCurrentContext->variable[i]);
 		if(!v->locked) {
@@ -740,8 +750,10 @@
 
 static void __nlVectorToVariables() {
 	NLuint i;
+
 	__nl_assert(__nlCurrentContext->alloc_x);
 	__nl_assert(__nlCurrentContext->alloc_variable);
+
 	for(i=0; i<__nlCurrentContext->nb_variables; i++) {
 		__NLVariable* v = &(__nlCurrentContext->variable[i]);
 		if(!v->locked) {
@@ -760,8 +772,8 @@
 		__nlTransition(__NL_STATE_INITIAL, __NL_STATE_SYSTEM);
 
 		__nlCurrentContext->variable = __NL_NEW_ARRAY(
-			__NLVariable, __nlCurrentContext->nb_variables
-		);
+			__NLVariable, __nlCurrentContext->nb_variables);
+		
 		__nlCurrentContext->alloc_variable = NL_TRUE;
 	}
 }
@@ -771,69 +783,93 @@
 }
 
 static void __nlBeginMatrix() {
-	NLuint i;
+	NLuint i, j;
 	NLuint n = 0;
 	NLenum storage = __NL_ROWS;
+	__NLContext *context = __nlCurrentContext;
 
 	__nlTransition(__NL_STATE_SYSTEM, __NL_STATE_MATRIX);
 
-	if (!__nlCurrentContext->solve_again) {
-		for(i=0; i<__nlCurrentContext->nb_variables; i++) {
-			if(!__nlCurrentContext->variable[i].locked)
-				__nlCurrentContext->variable[i].index = n++;
+	if (!context->solve_again) {
+		for(i=0; i<context->nb_variables; i++) {
+			if(context->variable[i].locked) {
+				context->variable[i].index = ~0;
+				context->variable[i].a = __NL_NEW(__NLRowColumn);
+				__nlRowColumnConstruct(context->variable[i].a);
+			}
 			else
-				__nlCurrentContext->variable[i].index = ~0;
+				context->variable[i].index = n++;
 		}
 
-		__nlCurrentContext->n = n;
+		context->n = n;
 
 		/* a least squares problem results in a symmetric matrix */
-		if(__nlCurrentContext->least_squares)
-			__nlCurrentContext->symmetric = NL_TRUE;
+		if(context->least_squares)
+			context->symmetric = NL_TRUE;
 
-		if(__nlCurrentContext->symmetric)
+		if(context->symmetric)
 			storage = (storage | __NL_SYMMETRIC);
 
 		/* SuperLU storage does not support symmetric storage */
 		storage = (storage & ~__NL_SYMMETRIC);
 
-		__nlSparseMatrixConstruct(&__nlCurrentContext->M, n, n, storage);
-		__nlCurrentContext->alloc_M = NL_TRUE;
+		__nlSparseMatrixConstruct(&context->M, n, n, storage);
+		context->alloc_M = NL_TRUE;
 
-		__nlCurrentContext->x = __NL_NEW_ARRAY(NLfloat, n);
-		__nlCurrentContext->alloc_x = NL_TRUE;
-		
-		__nlCurrentContext->b = __NL_NEW_ARRAY(NLfloat, n);
-		__nlCurrentContext->alloc_b = NL_TRUE;
+		context->b = __NL_NEW_ARRAY(NLfloat, n);
+		context->alloc_b = NL_TRUE;
+
+		context->x = __NL_NEW_ARRAY(NLfloat, n);
+		context->alloc_x = NL_TRUE;
 	}
 	else {
 		/* need to recompute b only, A is not constructed anymore */
-		__NL_CLEAR_ARRAY(NLfloat, __nlCurrentContext->b, __nlCurrentContext->n);
+		__NL_CLEAR_ARRAY(NLfloat, context->b, context->n);
 	}
 
 	__nlVariablesToVector();
 
-	__nlRowColumnConstruct(&__nlCurrentContext->af);
-	__nlCurrentContext->alloc_af = NL_TRUE;
-	__nlRowColumnConstruct(&__nlCurrentContext->al);
-	__nlCurrentContext->alloc_al = NL_TRUE;
+	__nlRowColumnConstruct(&context->af);
+	context->alloc_af = NL_TRUE;
+	__nlRowColumnConstruct(&context->al);
+	context->alloc_al = NL_TRUE;
 
-	__nlCurrentContext->current_row = 0;
+	context->current_row = 0;
 }
 
 static void __nlEndMatrix() {
+	__NLContext *context = __nlCurrentContext;
+	__NLVariable *variable;
+	__NLRowColumn *a;
+	NLfloat *b;
+	NLuint i, j;
+
 	__nlTransition(__NL_STATE_MATRIX, __NL_STATE_MATRIX_CONSTRUCTED);	
 	
-	__nlRowColumnDestroy(&__nlCurrentContext->af);
-	__nlCurrentContext->alloc_af = NL_FALSE;
-	__nlRowColumnDestroy(&__nlCurrentContext->al);
-	__nlCurrentContext->alloc_al = NL_FALSE;
+	__nlRowColumnDestroy(&context->af);
+	context->alloc_af = NL_FALSE;
+	__nlRowColumnDestroy(&context->al);
+	context->alloc_al = NL_FALSE;
 	
+	b = context->b;
+
+	for(i=0; i<__nlCurrentContext->nb_variables; i++) {
+		variable = &(context->variable[i]);
+
+		if(variable->locked) {
+			a = variable->a;
+
+			for(j=0; j<a->size; j++) {
+				b[a->coeff[j].index] -= a->coeff[j].value*variable->value;
+			}
+		}
+	}
+
 #if 0
-	if(!__nlCurrentContext->least_squares) {
+	if(!context->least_squares) {
 		__nl_assert(
-			__nlCurrentContext->current_row == 
-			__nlCurrentContext->n
+			context->current_row == 
+			context->n
 		);
 	}
 #endif
@@ -895,26 +931,61 @@
 
 void nlMatrixAdd(NLuint row, NLuint col, NLfloat value)
 {
-	__NLSparseMatrix* M  = &__nlCurrentContext->M;
+	__NLContext *context = __nlCurrentContext;
+
 	__nlCheckState(__NL_STATE_MATRIX);
-	__nl_range_assert(row, 0, __nlCurrentContext->n - 1);
-	__nl_range_assert(col, 0, __nlCurrentContext->nb_variables - 1);
-	__nl_assert(!__nlCurrentContext->least_squares);
+	__nl_assert(!context->least_squares);
 
-	__nlSparseMatrixAdd(M, row, col, value);
+	if (context->variable[row].locked);
+	else if (context->variable[col].locked) {
+		row = context->variable[row].index;
+		__nlRowColumnAppend(context->variable[col].a, row, value);
+	}
+	else {
+		__NLSparseMatrix* M  = &context->M;
+
+		row = context->variable[row].index;
+		col = context->variable[col].index;
+		
+		__nl_range_assert(row, 0, context->n - 1);
+		__nl_range_assert(col, 0, context->n - 1);
+
+		__nlSparseMatrixAdd(M, row, col, value);
+	}
 }
 
 void nlRightHandSideAdd(NLuint index, NLfloat value)
 {
-	NLfloat* b = __nlCurrentContext->b;
+	__NLContext *context = __nlCurrentContext;
+	NLfloat* b = context->b;
 
 	__nlCheckState(__NL_STATE_MATRIX);
-	__nl_range_assert(index, 0, __nlCurrentContext->n - 1);
-	__nl_assert(!__nlCurrentContext->least_squares);
+	__nl_assert(!context->least_squares);
 
-	b[index] += value;
+	if(!context->variable[index].locked) {
+		index = context->variable[index].index;
+		__nl_range_assert(index, 0, context->n - 1);
+
+		b[index] += value;
+	}
 }
 
+void nlRightHandSideSet(NLuint index, NLfloat value)
+{
+	__NLContext *context = __nlCurrentContext;
+	NLfloat* b = context->b;
+
+	__nlCheckState(__NL_STATE_MATRIX);
+	__nl_assert(!context->least_squares);
+
+	if(!context->variable[index].locked) {
+		index = context->variable[index].index;
+		__nl_range_assert(index, 0, context->n - 1);
+
+		b[index] = value;
+	}
+}
+
 void nlCoefficient(NLuint index, NLfloat value) {
 	__NLVariable* v;
 	unsigned int zero= 0;
@@ -1049,7 +1120,7 @@
 	/* Cleanup */
 
 	Destroy_SuperMatrix_Store(&At);
-	Destroy_SuperMatrix_Store(&AtP);
+	Destroy_CompCol_Permuted(&AtP);
 
 	__NL_DELETE_ARRAY(etree);
 	__NL_DELETE_ARRAY(xa);

Modified: branches/soc-2007-joeedh/release/scripts/lightwave_import.py
===================================================================
--- branches/soc-2007-joeedh/release/scripts/lightwave_import.py	2007-07-31 05:27:41 UTC (rev 11441)
+++ branches/soc-2007-joeedh/release/scripts/lightwave_import.py	2007-07-31 05:30:32 UTC (rev 11442)
@@ -693,7 +693,7 @@
 		i = i + 6 + subchunklen
 	#end loop on surf chunks
 	###if DEBUG: print "read image:%s" % clip_dict
-	if clip_dict.has_key('XREF'):
+	if 'XREF' in clip_dict: # has_key
 		###if DEBUG: print "Cross-reference: no image pre-allocated."
 		return clip_dict
 	#look for images
@@ -985,7 +985,8 @@
 					
 			if uvname: # != "":
 				my_dict['UVNAME'] = uvname                            #theoretically there could be a number of them: only one used per surf
-			if not(my_dict.has_key('g_IMAG')) and (rr.has_key('CHAN')) and (rr.has_key('OPAC')) and (rr.has_key('IMAG')):
+			# all are dictionaries - so testing keys 
+			if not('g_IMAG' in my_dict) and ('CHAN' in rr) and ('OPAC' in rr) and ('IMAG' in rr):
 				if (rr['CHAN'] == 'COLR') and (rr['OPAC'] == 0):
 					my_dict['g_IMAG'] = rr['IMAG']                 #do not set anything, just save image object for later assignment
 			subchunklen = 0 #force ending
@@ -1008,11 +1009,15 @@
 
 
 def reduce_face(verts, face):
-	TriangleArea= Blender.Mathutils.TriangleArea

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list