[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28571] trunk/blender: merging revisions 28564-28569 from render branch into trunk

Joseph Eagar joeedh at gmail.com
Tue May 4 14:31:24 CEST 2010


Revision: 28571
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28571
Author:   joeedh
Date:     2010-05-04 14:31:24 +0200 (Tue, 04 May 2010)

Log Message:
-----------
merging revisions 28564-28569 from render branch into trunk

Modified Paths:
--------------
    trunk/blender/intern/guardedalloc/MEM_guardedalloc.h
    trunk/blender/intern/guardedalloc/intern/mallocn.c
    trunk/blender/release/scripts/ui/properties_data_mesh.py
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/object/object_intern.h
    trunk/blender/source/blender/editors/object/object_ops.c
    trunk/blender/source/blender/editors/object/object_vgroup.c
    trunk/blender/source/blender/editors/render/render_internal.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/makesdna/DNA_action_types.h
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/makesdna/DNA_object_types.h
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/intern/guardedalloc/MEM_guardedalloc.h
===================================================================
--- trunk/blender/intern/guardedalloc/MEM_guardedalloc.h	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/intern/guardedalloc/MEM_guardedalloc.h	2010-05-04 12:31:24 UTC (rev 28571)
@@ -144,6 +144,12 @@
 	uintptr_t MEM_get_mapped_memory_in_use(void);
 	int MEM_get_memory_blocks_in_use(void);
 
+	/*reset the peak memory statistic to zero*/
+	void MEM_reset_peak_memory(void);
+
+	/*get the peak memory usage in bytes, including mmap allocations*/
+	uintptr_t MEM_get_peak_memory(void);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/blender/intern/guardedalloc/intern/mallocn.c
===================================================================
--- trunk/blender/intern/guardedalloc/intern/mallocn.c	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/intern/guardedalloc/intern/mallocn.c	2010-05-04 12:31:24 UTC (rev 28571)
@@ -138,7 +138,7 @@
 	
 
 static volatile int totblock= 0;
-static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0;
+static volatile uintptr_t mem_in_use= 0, mmap_in_use= 0, peak_mem = 0;
 
 static volatile struct localListBase _membase;
 static volatile struct localListBase *membase = &_membase;
@@ -293,6 +293,8 @@
 	
 	totblock++;
 	mem_in_use += len;
+
+	peak_mem = mem_in_use > peak_mem ? mem_in_use : peak_mem;
 }
 
 void *MEM_mallocN(size_t len, const char *str)
@@ -377,6 +379,7 @@
 		make_memhead_header(memh, len, str);
 		memh->mmap= 1;
 		mmap_in_use += len;
+		peak_mem = mmap_in_use > peak_mem ? mmap_in_use : peak_mem;
 		mem_unlock_thread();
 #ifdef DEBUG_MEMCOUNTER
 		if(_mallocn_count==DEBUG_MEMCOUNTER_ERROR_VAL)
@@ -802,6 +805,24 @@
 	return(name);
 }
 
+uintptr_t MEM_get_peak_memory(void)
+{
+	uintptr_t _peak_mem;
+
+	mem_lock_thread();
+	_peak_mem = peak_mem;
+	mem_unlock_thread();
+
+	return _peak_mem;
+}
+
+void MEM_reset_peak_memory(void)
+{
+	mem_lock_thread();
+	peak_mem = 0;
+	mem_unlock_thread();
+}
+
 uintptr_t MEM_get_memory_in_use(void)
 {
 	uintptr_t _mem_in_use;

Modified: trunk/blender/release/scripts/ui/properties_data_mesh.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_mesh.py	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/release/scripts/ui/properties_data_mesh.py	2010-05-04 12:31:24 UTC (rev 28571)
@@ -155,6 +155,9 @@
         col.operator("object.vertex_group_add", icon='ZOOMIN', text="")
         col.operator("object.vertex_group_remove", icon='ZOOMOUT', text="")
         col.menu("MESH_MT_vertex_group_specials", icon='DOWNARROW_HLT', text="")
+        if group:
+            col.operator("object.vertex_group_move", icon='TRIA_UP', text="").direction = 'UP'
+            col.operator("object.vertex_group_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
 
         if group:
             row = layout.row()

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c	2010-05-04 12:31:24 UTC (rev 28571)
@@ -2950,7 +2950,7 @@
 	float birthtime = 0.0, dietime = 0.0;
 	float t, time = 0.0, keytime = 0.0, frs_sec;
 	float hairmat[4][4], rotmat[3][3], prev_tangent[3];
-	int k,i;
+	int k, i;
 	int steps = (int)pow(2.0, (double)pset->draw_step);
 	int totpart = edit->totpoint, recalc_set=0;
 	float sel_col[3];
@@ -3097,17 +3097,26 @@
 
 			/* selection coloring in edit mode */
 			if(pset->brushtype==PE_BRUSH_WEIGHT){
-				if(k==0)
+				float t2;
+
+				if(k==0) {
 					weight_to_rgb(pind.hkey[1]->weight, ca->col, ca->col+1, ca->col+2);
-				else if(k >= steps - 1)
-					weight_to_rgb(pind.hkey[0]->weight, ca->col, ca->col+1, ca->col+2);
-				else
-					weight_to_rgb((1.0f - keytime) * pind.hkey[0]->weight + keytime * pind.hkey[1]->weight, ca->col, ca->col+1, ca->col+2);
+				} else {
+					float w1[3], w2[3];
+					keytime = (t - (*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time));
 
+					weight_to_rgb(pind.hkey[0]->weight, w1, w1+1, w1+2);
+					weight_to_rgb(pind.hkey[1]->weight, w2, w2+1, w2+2);
+
+					interp_v3_v3v3(ca->col, w1, w2, keytime);
+				}
+
 				/* at the moment this is only used for weight painting.
 				 * will need to move out of this check if its used elsewhere. */
-				pind.hkey[0] = pind.hkey[1];
-				pind.hkey[1]++;
+				t2 = birthtime + ((float)(k+1)/(float)steps) * (dietime - birthtime);
+
+				while (pind.hkey[1]->time < t2) pind.hkey[1]++;
+				pind.hkey[0] = pind.hkey[1] - 1;
 			}
 			else {
 				if((ekey + (pind.ekey[0] - point->keys))->flag & PEK_SELECT){

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-05-04 12:31:24 UTC (rev 28571)
@@ -2221,6 +2221,12 @@
 	/* always rebuild to match proxy or lib changes */
 	rebuild= ob->proxy || (ob->id.lib==NULL && arm->id.lib);
 
+	if (ob->proxy && pose->proxy_act_bone[0]) {
+		Bone *bone = get_named_bone(arm, pose->proxy_act_bone);
+		if (bone)
+			arm->act_bone = bone;
+	}
+
 	for (pchan = pose->chanbase.first; pchan; pchan=pchan->next) {
 		lib_link_constraints(fd, (ID *)ob, &pchan->constraints);
 		
@@ -11579,7 +11585,6 @@
 	PartEff *paf;
 	int a;
 
-
 	expand_doit(fd, mainvar, ob->data);
 	
 	for (md=ob->modifiers.first; md; md=md->next) {

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c	2010-05-04 12:31:24 UTC (rev 28571)
@@ -1266,6 +1266,14 @@
 			write_sensors(wd, &ob->sensors);
 			write_controllers(wd, &ob->controllers);
 			write_actuators(wd, &ob->actuators);
+
+			if (ob->type == OB_ARMATURE) {
+				bArmature *arm = ob->data;
+				if (arm && ob->pose && arm->act_bone) {
+					strcpy(ob->pose->proxy_act_bone, arm->act_bone->name);
+				}
+			}
+
 			write_pose(wd, ob->pose);
 			write_defgroups(wd, &ob->defbase);
 			write_constraints(wd, &ob->constraints);

Modified: trunk/blender/source/blender/editors/object/object_intern.h
===================================================================
--- trunk/blender/source/blender/editors/object/object_intern.h	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/editors/object/object_intern.h	2010-05-04 12:31:24 UTC (rev 28571)
@@ -196,6 +196,7 @@
 void OBJECT_OT_vertex_group_mirror(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_set_active(struct wmOperatorType *ot);
 void OBJECT_OT_vertex_group_sort(struct wmOperatorType *ot);
+void OBJECT_OT_vertex_group_move(struct wmOperatorType *ot);
 
 void OBJECT_OT_game_property_new(struct wmOperatorType *ot);
 void OBJECT_OT_game_property_remove(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/editors/object/object_ops.c	2010-05-04 12:31:24 UTC (rev 28571)
@@ -176,6 +176,7 @@
 	WM_operatortype_append(OBJECT_OT_vertex_group_mirror);
 	WM_operatortype_append(OBJECT_OT_vertex_group_set_active);
 	WM_operatortype_append(OBJECT_OT_vertex_group_sort);
+	WM_operatortype_append(OBJECT_OT_vertex_group_move);
 
 	WM_operatortype_append(OBJECT_OT_game_property_new);
 	WM_operatortype_append(OBJECT_OT_game_property_remove);

Modified: trunk/blender/source/blender/editors/object/object_vgroup.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_vgroup.c	2010-05-04 12:26:00 UTC (rev 28570)
+++ trunk/blender/source/blender/editors/object/object_vgroup.c	2010-05-04 12:31:24 UTC (rev 28571)
@@ -122,6 +122,72 @@
 	}
 }
 
+int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot)
+{
+	if(id) {
+		switch(GS(id->name)) {
+			case ID_ME:
+			{
+				Mesh *me = (Mesh *)id;
+				*dvert_tot= me->totvert;
+
+				if (!me->edit_mesh) {
+					int i;
+
+					*dvert_arr= MEM_mallocN(sizeof(void*)*me->totvert, "vgroup parray from me");
+
+					for (i=0; i<me->totvert; i++) {
+						(*dvert_arr)[i] = me->dvert + i;
+					}
+				} else {
+					EditMesh *em = me->edit_mesh;
+					EditVert *eve;
+					int i;
+
+					if (!CustomData_has_layer(&em->vdata, CD_MDEFORMVERT)) {
+						*dvert_tot = 0;
+						*dvert_arr = NULL;
+						return 0;
+					}
+
+					i = 0;
+					for (eve=em->verts.first; eve; eve=eve->next) i++;
+
+					*dvert_arr= MEM_mallocN(sizeof(void*)*i, "vgroup parray from me");
+					*dvert_tot = i;
+
+					i = 0;
+					for (eve=em->verts.first; eve; eve=eve->next, i++) {
+						(*dvert_arr)[i] = CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT);
+					}
+
+				}
+				return 1;
+			}
+			case ID_LT:
+			{
+				int i=0;
+
+				Lattice *lt= (Lattice *)id;
+				lt= (lt->editlatt)? lt->editlatt: lt;
+
+				*dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw;
+				*dvert_arr= MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me");
+
+				for (i=0; i<*dvert_tot; i++) {
+					(*dvert_arr)[i] = lt->dvert + i;
+				}
+
+				return 1;
+			}
+		}
+	}
+
+	*dvert_arr= NULL;
+	*dvert_tot= 0;
+	return 0;
+}
+
 /* returns true if the id type supports weights */
 int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot)
 {
@@ -153,20 +219,22 @@
 /* matching index only */
 int ED_vgroup_copy_array(Object *ob, Object *ob_from)
 {
-	MDeformVert *dvert_array_from, *dvf;
-	MDeformVert *dvert_array, *dv;
-
+	MDeformVert **dvert_array_from, **dvf;
+	MDeformVert **dvert_array, **dv;
 	int dvert_tot_from;
 	int dvert_tot;
 	int i;
 	int totdef_from= BLI_countlist(&ob_from->defbase);
 	int totdef= BLI_countlist(&ob->defbase);
 
-	ED_vgroup_give_array(ob_from->data, &dvert_array_from, &dvert_tot_from);
-	ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot);
+	ED_vgroup_give_parray(ob_from->data, &dvert_array_from, &dvert_tot_from);
+	ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot);
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list