# [Bf-extensions-cvs] [95fae4c] master: Fix for vertex weighting of samples: the coordinate spaces of sample location and vertex locations have to be consistent.

Tue Dec 16 11:52:04 CET 2014

```Commit: 95fae4c30c9bab12eb4d14c71ee01a090419cc2b
Author: Lukas Tönne
Date:   Tue Dec 16 11:50:24 2014 +0100
Branches: master
https://developer.blender.org/rBAC95fae4c30c9bab12eb4d14c71ee01a090419cc2b

Fix for vertex weighting of samples: the coordinate spaces of sample
location and vertex locations have to be consistent.

When these vectors are in different spaces there is usually a large
offset between them, leading to very uniform weights and interpolation
always in the center of a face.

===================================================================

===================================================================

index 0a918d8..6b23115 100644
@@ -239,6 +239,8 @@ def make_blobs(context, gridob, groundob, samples2D, display_radius):
blob_group_clear(context)
blobs = []

+    imat = groundob.matrix_world.inverted()
+
blobtree = KDTree(len(gridob.data.vertices))
for i, v in enumerate(gridob.data.vertices):
co = gridob.matrix_world * v.co
@@ -256,7 +258,7 @@ def make_blobs(context, gridob, groundob, samples2D, display_radius):
mverts = groundob.data.vertices
for xy in samples2D:
-
+
# note: use only 2D coordinates for weighting, z component should be 0
index = assign_blob(blobtree, (xy[0], xy[1], 0.0), nor)
if index < 0:
@@ -273,7 +275,8 @@ def make_blobs(context, gridob, groundob, samples2D, display_radius):
# calculate barycentric vertex weights on the poly
poly = mpolys[spoly]
sverts = list(poly.vertices)
-            sweights = poly_3d_calc(tuple(mverts[i].co for i in sverts), sloc)
+            # note: coordinate space has to be consistent, use sloc in object space
+            sweights = poly_3d_calc(tuple(mverts[i].co for i in sverts), imat * sloc)