[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