From 6cd3355bebe1b55fb49ec658faa01c7c33ea3fc3 Mon Sep 17 00:00:00 2001
From: Campbell Barton <ideasman42@gmail.com>
Date: Tue, 9 Aug 2011 10:25:05 +0000
Subject: [PATCH] fix for applying scatter to objects with transformation

---
 object_grease_scatter.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/object_grease_scatter.py b/object_grease_scatter.py
index 867d68d61..4d6aeddb0 100644
--- a/object_grease_scatter.py
+++ b/object_grease_scatter.py
@@ -112,10 +112,15 @@ def _main(self,
     ray = obj.ray_cast
     closest_point_on_mesh = obj.closest_point_on_mesh
 
+    obj_mat = obj.matrix_world.copy()
+    obj_mat_inv = obj_mat.inverted()
+    # obj_quat = obj_mat.to_quaternion()
+    # obj_quat_inv = obj_mat_inv.to_quaternion()
+
     DEBUG = False
 
     def fix_point(p):
-        hit, no, ind = closest_point_on_mesh(p)
+        hit, no, ind = closest_point_on_mesh(obj_mat_inv * p)
         if ind != -1:
             if DEBUG:
                 return [p, no, None]
@@ -294,8 +299,8 @@ def _main(self,
                     inst_ob.location = 0.0, 0.0, 0.0
                     inst_ob.parent = obj_new
 
-                    # important to set last
-                    obj_new.matrix_world = obj.matrix_world
+                    # align the object with worldspace
+                    obj_new.matrix_world = obj_mat
 
                     # BGE settings for testiing
                     '''
-- 
GitLab