[Bf-extensions-cvs] [27d8e0e] master: Make sure sample and blob locations are in world space.

Lukas Tönne noreply at git.blender.org
Wed Dec 10 14:17:32 CET 2014


Commit: 27d8e0e8c96151d8aae446369d9ff4a02df88a56
Author: Lukas Tönne
Date:   Wed Dec 10 12:18:58 2014 +0100
Branches: master
https://developer.blender.org/rBAC27d8e0e8c96151d8aae446369d9ff4a02df88a56

Make sure sample and blob locations are in world space.

This makes setting object transforms a lot less complicated and ensures
consistency.

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

M	object_physics_meadow/blob.py
M	object_physics_meadow/meadow.py

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

diff --git a/object_physics_meadow/blob.py b/object_physics_meadow/blob.py
index c5b3389..f9ccb1d 100644
--- a/object_physics_meadow/blob.py
+++ b/object_physics_meadow/blob.py
@@ -173,12 +173,14 @@ def make_blobs(context, gridob, groundob, samples, display_radius):
     
     blobtree = KDTree(len(gridob.data.vertices))
     for i, v in enumerate(gridob.data.vertices):
+        co = gridob.matrix_world * v.co
         # note: only using 2D coordinates, otherwise weights get distorted by z offset
-        blobtree.insert((v.co[0], v.co[1], 0.0), i)
+        blobtree.insert((co[0], co[1], 0.0), i)
     blobtree.balance()
     
     for v in gridob.data.vertices:
-        ok, loc, nor, face_index = project_on_ground(groundob, v.co)
+        co = gridob.matrix_world * v.co
+        ok, loc, nor, face_index = project_on_ground(groundob, co)
         blobs.append(Blob(loc, nor, face_index) if ok else None)
     
     for loc, nor, face_index in samples:
diff --git a/object_physics_meadow/meadow.py b/object_physics_meadow/meadow.py
index 39f7b60..1e6fd43 100644
--- a/object_physics_meadow/meadow.py
+++ b/object_physics_meadow/meadow.py
@@ -47,7 +47,8 @@ def make_samples(context, gridob, groundob):
     #gen = best_candidate_gen(gridob.meadow.patch_radius, xmin, xmax, ymin, ymax)
     gen = hierarchical_dart_throw_gen(gridob.meadow.patch_radius, gridob.meadow.sampling_levels, xmin, xmax, ymin, ymax, debug)
     
-    loc2D = [(p[0], p[1]) for p in gen(gridob.meadow.seed, gridob.meadow.max_patches)]
+    mat = groundob.matrix_world
+    loc2D = [(mat * Vector(p[0:3] + (1.0,)))[0:2] for p in gen(gridob.meadow.seed, gridob.meadow.max_patches)]
     #debug.to_object(context)
     
     # project samples onto the ground object



More information about the Bf-extensions-cvs mailing list