[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42273] trunk/blender/source/blender: fix [#29111] Wrong application of delta scale

Campbell Barton ideasman42 at gmail.com
Tue Nov 29 22:13:39 CET 2011


Revision: 42273
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42273
Author:   campbellbarton
Date:     2011-11-29 21:13:37 +0000 (Tue, 29 Nov 2011)
Log Message:
-----------
fix [#29111] Wrong application of delta scale

apply delta scale as a multiplier & do-versions on existing files.

- bumps subversion to 2.60.6

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/object/object_transform.c
    trunk/blender/source/blender/render/intern/source/convertblender.c

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2011-11-29 21:05:18 UTC (rev 42272)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2011-11-29 21:13:37 UTC (rev 42273)
@@ -42,7 +42,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION			260
-#define BLENDER_SUBVERSION		5
+#define BLENDER_SUBVERSION		6
 
 #define BLENDER_MINVERSION		250
 #define BLENDER_MINSUBVERSION	0

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2011-11-29 21:05:18 UTC (rev 42272)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2011-11-29 21:13:37 UTC (rev 42273)
@@ -774,6 +774,7 @@
 	ob->col[3]= 1.0;
 	
 	ob->size[0]= ob->size[1]= ob->size[2]= 1.0;
+	ob->dsize[0]= ob->dsize[1]= ob->dsize[2]= 1.0;
 	
 	/* objects should default to having Euler XYZ rotations, 
 	 * but rotations default to quaternions 
@@ -1441,7 +1442,7 @@
 void object_scale_to_mat3(Object *ob, float mat[][3])
 {
 	float vec[3];
-	add_v3_v3v3(vec, ob->size, ob->dsize);
+	mul_v3_v3v3(vec, ob->size, ob->dsize);
 	size_to_mat3( mat,vec);
 }
 
@@ -1603,7 +1604,11 @@
 	}
 	
 	sub_v3_v3(ob->loc, ob->dloc);
-	sub_v3_v3(ob->size, ob->dsize);
+
+	if (ob->dsize[0] != 0.0f) ob->size[0] /= ob->dsize[0];
+	if (ob->dsize[1] != 0.0f) ob->size[1] /= ob->dsize[1];
+	if (ob->dsize[2] != 0.0f) ob->size[2] /= ob->dsize[2];
+
 	/* object_mat3_to_rot handles delta rotations */
 }
 

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2011-11-29 21:05:18 UTC (rev 42272)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2011-11-29 21:13:37 UTC (rev 42273)
@@ -11967,7 +11967,6 @@
 		}
 	}
 
-	/* put compatibility code here until next subversion bump */
 	if (main->versionfile < 255 || (main->versionfile == 255 && main->subversionfile < 3)) {
 		Object *ob;
 
@@ -11984,8 +11983,6 @@
 		}		
 	}
 
-	/* put compatibility code here until next subversion bump */
-	
 	if (main->versionfile < 256) {
 		bScreen *sc;
 		ScrArea *sa;
@@ -12604,16 +12601,14 @@
 		}
 	}
 
-	/* put compatibility code here until next subversion bump */
+	if (main->versionfile < 260 || (main->versionfile == 260 && main->subversionfile < 6))
 	{
 		Scene *sce;
 		MovieClip *clip;
 		bScreen *sc;
 
 		for(sce = main->scene.first; sce; sce = sce->id.next) {
-			if (sce->r.im_format.depth == 0) {
-				do_versions_image_settings_2_60(sce);
-			}
+			do_versions_image_settings_2_60(sce);
 		}
 
 		for (clip= main->movieclip.first; clip; clip= clip->id.next) {
@@ -12640,8 +12635,31 @@
 				}
 			}
 		}
+
+		{
+			Object *ob;
+			for (ob= main->object.first; ob; ob= ob->id.next) {
+				/* convert delta addition into delta scale */
+				int i;
+				for (i= 0; i < 3; i++) {
+					if ( (ob->dsize[i] == 0.0f) || /* simple case, user never touched dsize */
+					     (ob->size[i]  == 0.0f))   /* cant scale the dsize to give a non zero result, so fallback to 1.0f */
+					{
+						ob->dsize[i]= 1.0f;
+					}
+					else {
+						ob->size[i]= (ob->size[i] + ob->dsize[i]) / ob->size[i];
+					}
+				}
+			}
+		}
 	}
 
+	/* put compatibility code here until next subversion bump */
+	{
+		/* nothing! */
+	}
+
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
 

Modified: trunk/blender/source/blender/editors/object/object_transform.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_transform.c	2011-11-29 21:05:18 UTC (rev 42272)
+++ trunk/blender/source/blender/editors/object/object_transform.c	2011-11-29 21:13:37 UTC (rev 42273)
@@ -188,15 +188,15 @@
 {
 	/* clear scale factors which are not locked */
 	if ((ob->protectflag & OB_LOCK_SCALEX)==0) {
-		ob->dsize[0]= 0.0f;
+		ob->dsize[0]= 1.0f;
 		ob->size[0]= 1.0f;
 	}
 	if ((ob->protectflag & OB_LOCK_SCALEY)==0) {
-		ob->dsize[1]= 0.0f;
+		ob->dsize[1]= 1.0f;
 		ob->size[1]= 1.0f;
 	}
 	if ((ob->protectflag & OB_LOCK_SCALEZ)==0) {
-		ob->dsize[2]= 0.0f;
+		ob->dsize[2]= 1.0f;
 		ob->size[2]= 1.0f;
 	}
 }

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2011-11-29 21:05:18 UTC (rev 42272)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2011-11-29 21:13:37 UTC (rev 42273)
@@ -2391,7 +2391,7 @@
 	/* Object Size with parenting */
 	obt=obr->ob;
 	while(obt){
-		add_v3_v3v3(temp, obt->size, obt->dsize);
+		mul_v3_v3v3(temp, obt->size, obt->dsize);
 		scale[0]*=temp[0]; scale[1]*=temp[1]; scale[2]*=temp[2];
 		obt=obt->parent;
 	}




More information about the Bf-blender-cvs mailing list