[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35329] trunk/blender/source/blender/ editors/mesh/editmesh_tools.c: Fix #26261: blend from shape operator "add" option was not working correct.
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Mar 3 14:26:55 CET 2011
Revision: 35329
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35329
Author: blendix
Date: 2011-03-03 13:26:55 +0000 (Thu, 03 Mar 2011)
Log Message:
-----------
Fix #26261: blend from shape operator "add" option was not working correct.
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2011-03-03 13:23:40 UTC (rev 35328)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2011-03-03 13:26:55 UTC (rev 35329)
@@ -5204,8 +5204,8 @@
Key *key= me->key;
EditMesh *em= BKE_mesh_get_editmesh(me);
EditVert *eve;
- KeyBlock *kb;
- float *data, co[3];
+ KeyBlock *kb, *refkb= NULL;
+ float *data, *refdata= NULL, co[3];
float blend= RNA_float_get(op->ptr, "blend");
int shape= RNA_enum_get(op->ptr, "shape");
int add= RNA_boolean_get(op->ptr, "add");
@@ -5214,17 +5214,28 @@
if(key && (kb= BLI_findlink(&key->block, shape))) {
data= kb->data;
+ if(add) {
+ refkb= BLI_findlink(&key->block, kb->relative);
+ if(refkb)
+ refdata = refkb->data;
+ }
+
for(eve=em->verts.first; eve; eve=eve->next){
if(eve->f & SELECT) {
if(eve->keyindex >= 0 && eve->keyindex < kb->totelem) {
- VECCOPY(co, data + eve->keyindex*3);
+ copy_v3_v3(co, data + eve->keyindex*3);
if(add) {
- mul_v3_fl(co, blend);
- add_v3_v3(eve->co, co);
+ /* in add mode, we add relative shape key offset */
+ if(refdata && eve->keyindex < refkb->totelem)
+ sub_v3_v3v3(co, co, refdata + eve->keyindex*3);
+
+ madd_v3_v3fl(eve->co, co, blend);
}
- else
+ else {
+ /* in blend mode, we interpolate to the shape key */
interp_v3_v3v3(eve->co, eve->co, co, blend);
+ }
blended= 1;
}
More information about the Bf-blender-cvs
mailing list