[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12496] branches/cloth/blender: svn merge -r 12478:12495 https://svn.blender.org/svnroot/bf-blender/trunk/ blender

Daniel Genrich daniel.genrich at gmx.net
Tue Nov 6 13:10:59 CET 2007


Revision: 12496
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12496
Author:   genscher
Date:     2007-11-06 13:10:59 +0100 (Tue, 06 Nov 2007)

Log Message:
-----------
svn merge -r 12478:12495 https://svn.blender.org/svnroot/bf-blender/trunk/blender

Modified Paths:
--------------
    branches/cloth/blender/CMakeLists.txt
    branches/cloth/blender/extern/bFTGL/src/FTVectoriser.cpp
    branches/cloth/blender/projectfiles_vc7/blender/nodes/nodes.vcproj
    branches/cloth/blender/source/blender/blenkernel/intern/armature.c
    branches/cloth/blender/source/blender/blenkernel/intern/material.c
    branches/cloth/blender/source/blender/blenkernel/intern/modifier.c
    branches/cloth/blender/source/blender/include/BIF_transform.h
    branches/cloth/blender/source/blender/makesdna/DNA_modifier_types.h
    branches/cloth/blender/source/blender/src/buttons_editing.c
    branches/cloth/blender/source/blender/src/editaction.c
    branches/cloth/blender/source/blender/src/editnla.c
    branches/cloth/blender/source/blender/src/editseq.c
    branches/cloth/blender/source/blender/src/header_action.c
    branches/cloth/blender/source/blender/src/header_nla.c
    branches/cloth/blender/source/blender/src/transform.c
    branches/cloth/blender/source/blender/src/transform_conversions.c
    branches/cloth/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp

Modified: branches/cloth/blender/CMakeLists.txt
===================================================================
--- branches/cloth/blender/CMakeLists.txt	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/CMakeLists.txt	2007-11-06 12:10:59 UTC (rev 12496)
@@ -240,7 +240,11 @@
   SET(OPENEXR ${LIBDIR}/openexr)
   SET(OPENEXR_INC ${OPENEXR}/include ${OPENEXR}/include/IlmImf ${OPENEXR}/include/Iex ${OPENEXR}/include/Imath)
   SET(OPENEXR_LIB Iex Half IlmImf Imath IlmThread)
+  IF (MSVC80)
+  SET(OPENEXR_LIBPATH ${OPENEXR}/lib_vs2005)
+  ELSE (MSVC80)
   SET(OPENEXR_LIBPATH ${OPENEXR}/lib_msvc)
+  ENDIF(MSVC80)
   
   SET(QUICKTIME ${LIBDIR}/QTDevWin)
   SET(QUICKTIME_INC ${QUICKTIME}/CIncludes)

Modified: branches/cloth/blender/extern/bFTGL/src/FTVectoriser.cpp
===================================================================
--- branches/cloth/blender/extern/bFTGL/src/FTVectoriser.cpp	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/extern/bFTGL/src/FTVectoriser.cpp	2007-11-06 12:10:59 UTC (rev 12496)
@@ -5,8 +5,12 @@
 #define CALLBACK
 #endif
 
-#ifdef __APPLE_CC__    
-    typedef GLvoid (*GLUTesselatorFunction)(...);
+#if defined(__APPLE_CC__) 
+    #if __APPLE_CC__ >= 5465
+        typedef GLvoid (*GLUTesselatorFunction)();
+    #else
+        typedef GLvoid (*GLUTesselatorFunction)(...);
+    #endif
 #elif defined( __mips ) || defined( __linux__ ) || defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __sun ) || defined (__CYGWIN__)
     typedef GLvoid (*GLUTesselatorFunction)();
 #elif defined ( WIN32)

Modified: branches/cloth/blender/projectfiles_vc7/blender/nodes/nodes.vcproj
===================================================================
--- branches/cloth/blender/projectfiles_vc7/blender/nodes/nodes.vcproj	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/projectfiles_vc7/blender/nodes/nodes.vcproj	2007-11-06 12:10:59 UTC (rev 12496)
@@ -240,6 +240,9 @@
 					RelativePath="..\..\..\source\blender\nodes\intern\CMP_nodes\CMP_composite.c">
 				</File>
 				<File
+					RelativePath="..\..\..\source\blender\nodes\intern\CMP_nodes\CMP_crop.c">
+				</File>
+				<File
 					RelativePath="..\..\..\source\blender\nodes\intern\CMP_nodes\CMP_curves.c">
 				</File>
 				<File

Modified: branches/cloth/blender/source/blender/blenkernel/intern/armature.c
===================================================================
--- branches/cloth/blender/source/blender/blenkernel/intern/armature.c	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/source/blender/blenkernel/intern/armature.c	2007-11-06 12:10:59 UTC (rev 12496)
@@ -411,12 +411,31 @@
 	Mat4 *result_array= (rest)? bbone_rest_array: bbone_array;
 	bPoseChannel *next, *prev;
 	Bone *bone= pchan->bone;
-	float h1[3], h2[3], length, hlength1, hlength2, roll1=0.0f, roll2;
-	float mat3[3][3], imat[4][4];
+	float h1[3], h2[3], scale[3], length, hlength1, hlength2, roll1=0.0f, roll2;
+	float mat3[3][3], imat[4][4], posemat[4][4], scalemat[4][4], iscalemat[4][4];
 	float data[MAX_BBONE_SUBDIV+1][4], *fp;
-	int a;
+	int a, doscale= 0;
+
+	length= bone->length;
+
+	if(!rest) {
+		/* check if we need to take non-uniform bone scaling into account */
+		scale[0]= VecLength(pchan->pose_mat[0]);
+		scale[1]= VecLength(pchan->pose_mat[1]);
+		scale[2]= VecLength(pchan->pose_mat[2]);
+
+		if(fabs(scale[0] - scale[1]) > 1e-6f || fabs(scale[1] - scale[2]) > 1e-6f) {
+			Mat4One(scalemat);
+			scalemat[0][0]= scale[0];
+			scalemat[1][1]= scale[1];
+			scalemat[2][2]= scale[2];
+			Mat4Invert(iscalemat, scalemat);
+
+			length *= scale[1];
+			doscale = 1;
+		}
+	}
 	
-	length= bone->length;
 	hlength1= bone->ease1*length*0.390464f;		// 0.5*sqrt(2)*kappa, the handle length for near-perfect circles
 	hlength2= bone->ease2*length*0.390464f;
 	
@@ -432,8 +451,14 @@
 		first point = (0,0,0)
 		last point =  (0, length, 0) */
 	
-	if(rest)
+	if(rest) {
 		Mat4Invert(imat, pchan->bone->arm_mat);
+	}
+	else if(doscale) {
+		Mat4CpyMat4(posemat, pchan->pose_mat);
+		Mat4Ortho(posemat);
+		Mat4Invert(imat, posemat);
+	}
 	else
 		Mat4Invert(imat, pchan->pose_mat);
 	
@@ -527,8 +552,15 @@
 	for(a=0, fp= data[0]; a<bone->segments; a++, fp+=4) {
 		VecSubf(h1, fp+4, fp);
 		vec_roll_to_mat3(h1, fp[3], mat3);		// fp[3] is roll
+
 		Mat4CpyMat3(result_array[a].mat, mat3);
 		VECCOPY(result_array[a].mat[3], fp);
+
+		if(doscale) {
+			/* correct for scaling when this matrix is used in scaled space */
+			Mat4MulSerie(result_array[a].mat, iscalemat, result_array[a].mat,
+				scalemat, NULL, NULL, NULL, NULL, NULL);
+		}
 	}
 	
 	return result_array;
@@ -849,7 +881,7 @@
 	for(i = 0; i < numVerts; i++) {
 		MDeformVert *dvert;
 		DualQuat sumdq, *dq = NULL;
-		float *co = vertexCos[i];
+		float *co = vertexCos[i], dco[3];
 		float sumvec[3], summat[3][3];
 		float *vec = NULL, (*smat)[3] = NULL;
 		float contrib = 0.0f;
@@ -938,7 +970,17 @@
 		if(contrib > 0.0001f) {
 			if(use_quaternion) {
 				DQuatNormalize(dq, contrib, armature_weight);
-				DQuatMulVecfl(dq, co, (defMats)? summat: NULL);
+
+				if(armature_weight != 1.0f) {
+					VECCOPY(dco, co);
+					DQuatMulVecfl(dq, dco, (defMats)? summat: NULL);
+					VecSubf(dco, dco, co);
+					VecMulf(dco, armature_weight);
+					VecAddf(co, co, dco);
+				}
+				else
+					DQuatMulVecfl(dq, co, (defMats)? summat: NULL);
+
 				smat = summat;
 			}
 			else {

Modified: branches/cloth/blender/source/blender/blenkernel/intern/material.c
===================================================================
--- branches/cloth/blender/source/blender/blenkernel/intern/material.c	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/source/blender/blenkernel/intern/material.c	2007-11-06 12:10:59 UTC (rev 12496)
@@ -757,9 +757,9 @@
 /* ****************** */
 
 char colname_array[125][20]= {
-"Black","DarkRed","HalveRed","Red","Red",
+"Black","DarkRed","HalfRed","Red","Red",
 "DarkGreen","DarkOlive","Brown","Chocolate","OrangeRed",
-"HalveGreen","GreenOlive","DryOlive","Goldenrod","DarkOrange",
+"HalfGreen","GreenOlive","DryOlive","Goldenrod","DarkOrange",
 "LightGreen","Chartreuse","YellowGreen","Yellow","Gold",
 "Green","LawnGreen","GreenYellow","LightOlive","Yellow",
 "DarkBlue","DarkPurple","HotPink","VioletPink","RedPink",
@@ -767,7 +767,7 @@
 "SeaGreen","PaleGreen","GreenKhaki","LightBrown","LightSalmon",
 "SpringGreen","PaleGreen","MediumOlive","YellowBrown","LightGold",
 "LightGreen","LightGreen","LightGreen","GreenYellow","PaleYellow",
-"HalveBlue","DarkSky","HalveMagenta","VioletRed","DeepPink",
+"HalfBlue","DarkSky","HalfMagenta","VioletRed","DeepPink",
 "SteelBlue","SkyBlue","Orchid","LightHotPink","HotPink",
 "SeaGreen","SlateGray","MediumGrey","Burlywood","LightPink",
 "SpringGreen","Aquamarine","PaleGreen","Khaki","PaleOrange",

Modified: branches/cloth/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/cloth/blender/source/blender/blenkernel/intern/modifier.c	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/source/blender/blenkernel/intern/modifier.c	2007-11-06 12:10:59 UTC (rev 12496)
@@ -5310,7 +5310,28 @@
 	}
 
 	/* do deformation */
+	fac= 1.0f;
+
 	for(b=0; b<totvert; b++) {
+		if(dvert) {
+			for(dw=NULL, a=0; a<dvert[b].totweight; a++) {
+				if(dvert[b].dw[a].def_nr == defgrp_index) {
+					dw = &dvert[b].dw[a];
+					break;
+				}
+			}
+
+			if(mmd->flag & MOD_MDEF_INVERT_VGROUP) {
+				if(!dw) fac= 1.0f;
+				else if(dw->weight == 0.0f) continue;
+				else fac=1.0f-dw->weight;
+			}
+			else {
+				if(!dw) continue;
+				else fac= dw->weight;
+			}
+		}
+
 		totweight= 0.0f;
 		co[0]= co[1]= co[2]= 0.0f;
 
@@ -5323,20 +5344,6 @@
 		}
 
 		if(totweight > 0.0f) {
-			if(dvert) {
-				for(dw=NULL, a=0; a<dvert[b].totweight; a++) {
-					if(dvert[b].dw[a].def_nr == defgrp_index) {
-						dw = &dvert[b].dw[a];
-						break;
-					}
-				}
-				if(!dw) continue;
-
-				fac= dw->weight;
-			}
-			else
-				fac= 1.0f;
-
 			VecMulf(co, fac/totweight);
 			Mat3MulVecfl(icmat, co);
 			VECADD(vertexCos[b], vertexCos[b], co);
@@ -5354,15 +5361,15 @@
 {
 	DerivedMesh *dm;
 
-	if(derivedData) dm = CDDM_copy(derivedData);
-	else dm = CDDM_from_mesh(ob->data, ob);
+	if(!derivedData && ob->type==OB_MESH)
+		dm= CDDM_from_mesh(ob->data, ob);
+	else
+		dm= derivedData;
 
-	CDDM_apply_vert_coords(dm, vertexCos);
-	CDDM_calc_normals(dm);
-
 	meshdeformModifier_do(md, ob, dm, vertexCos, numVerts);
 
-	dm->release(dm);
+	if(dm != derivedData)
+		dm->release(dm);
 }
 
 static void meshdeformModifier_deformVertsEM(
@@ -5371,15 +5378,15 @@
 {
 	DerivedMesh *dm;
 
-	if(derivedData) dm = CDDM_copy(derivedData);
-	else dm = CDDM_from_editmesh(editData, ob->data);
+	if(!derivedData && ob->type == OB_MESH)
+		dm = CDDM_from_editmesh(editData, ob->data);
+	else
+		dm = derivedData;
 
-	CDDM_apply_vert_coords(dm, vertexCos);
-	CDDM_calc_normals(dm);
-
 	meshdeformModifier_do(md, ob, dm, vertexCos, numVerts);
 
-	dm->release(dm);
+	if(dm != derivedData)
+		dm->release(dm);
 }
 
 

Modified: branches/cloth/blender/source/blender/include/BIF_transform.h
===================================================================
--- branches/cloth/blender/source/blender/include/BIF_transform.h	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/source/blender/include/BIF_transform.h	2007-11-06 12:10:59 UTC (rev 12496)
@@ -58,6 +58,7 @@
 #define TFM_TIME_TRANSLATE	19	
 #define TFM_TIME_SLIDE		20
 #define	TFM_TIME_SCALE		21
+#define TFM_TIME_EXTEND		22
 
 /* TRANSFORM CONTEXTS */
 #define CTX_NONE			0

Modified: branches/cloth/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- branches/cloth/blender/source/blender/makesdna/DNA_modifier_types.h	2007-11-06 12:08:39 UTC (rev 12495)
+++ branches/cloth/blender/source/blender/makesdna/DNA_modifier_types.h	2007-11-06 12:10:59 UTC (rev 12496)
@@ -374,6 +374,8 @@
 	int operation, pad;
 } BooleanModifierData;
 
+#define MOD_MDEF_INVERT_VGROUP (1<<0)
+
 typedef struct MeshDeformModifierData {
 	ModifierData modifier;
 
@@ -382,7 +384,7 @@
 
 	float *bindweights, *bindcos;	/* computed binding weights */
 	short gridsize, needbind;
-	int pad;
+	short flag, pad;
 
 	int totvert, totcagevert;
 } MeshDeformModifierData;

Modified: branches/cloth/blender/source/blender/src/buttons_editing.c
===================================================================

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list