[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57213] trunk/blender/source/blender/ editors/physics/particle_object.c: fix [#35477] Clicking "Connect Hair" button translates a mesh by it's object location.
Campbell Barton
ideasman42 at gmail.com
Mon Jun 3 05:47:43 CEST 2013
Revision: 57213
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57213
Author: campbellbarton
Date: 2013-06-03 03:47:41 +0000 (Mon, 03 Jun 2013)
Log Message:
-----------
fix [#35477] Clicking "Connect Hair" button translates a mesh by it's object location.
Modified Paths:
--------------
trunk/blender/source/blender/editors/physics/particle_object.c
Modified: trunk/blender/source/blender/editors/physics/particle_object.c
===================================================================
--- trunk/blender/source/blender/editors/physics/particle_object.c 2013-06-03 01:28:59 UTC (rev 57212)
+++ trunk/blender/source/blender/editors/physics/particle_object.c 2013-06-03 03:47:41 UTC (rev 57213)
@@ -633,7 +633,8 @@
HairKey *key;
BVHTreeFromMesh bvhtree= {NULL};
BVHTreeNearest nearest;
- MFace *mface;
+ MFace *mface, *mf;
+ MVert *mvert;
DerivedMesh *dm = NULL;
int numverts;
int i, k;
@@ -646,21 +647,27 @@
edit= psys->edit;
point= edit ? edit->points : NULL;
- if (psmd->dm->deformedOnly)
+ if (psmd->dm->deformedOnly) {
/* we don't want to mess up psmd->dm when converting to global coordinates below */
- dm= CDDM_copy(psmd->dm);
- else
- dm= mesh_get_derived_deform(scene, ob, CD_MASK_BAREMESH);
+ dm = psmd->dm;
+ }
+ else {
+ dm = mesh_get_derived_deform(scene, ob, CD_MASK_BAREMESH);
+ }
+ /* don't modify the original vertices */
+ dm = CDDM_copy(dm);
/* BMESH_ONLY, deform dm may not have tessface */
DM_ensure_tessface(dm);
-
numverts = dm->getNumVerts(dm);
+ mvert = dm->getVertArray(dm);
+ mface = dm->getTessFaceArray(dm);
+
/* convert to global coordinates */
for (i=0; i<numverts; i++)
- mul_m4_v3(ob->obmat, CDDM_get_vert(dm, i)->co);
+ mul_m4_v3(ob->obmat, mvert[i].co);
bvhtree_from_mesh_faces(&bvhtree, dm, 0.0, 2, 6);
@@ -678,13 +685,13 @@
continue;
}
- mface = CDDM_get_tessface(dm, nearest.index);
+ mf = &mface[nearest.index];
- copy_v3_v3(v[0], CDDM_get_vert(dm, mface->v1)->co);
- copy_v3_v3(v[1], CDDM_get_vert(dm, mface->v2)->co);
- copy_v3_v3(v[2], CDDM_get_vert(dm, mface->v3)->co);
- if (mface->v4) {
- copy_v3_v3(v[3], CDDM_get_vert(dm, mface->v4)->co);
+ copy_v3_v3(v[0], mvert[mf->v1].co);
+ copy_v3_v3(v[1], mvert[mf->v2].co);
+ copy_v3_v3(v[2], mvert[mf->v3].co);
+ if (mf->v4) {
+ copy_v3_v3(v[3], mvert[mf->v4].co);
interp_weights_poly_v3(pa->fuv, v, 4, nearest.co);
}
else
More information about the Bf-blender-cvs
mailing list