[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