Fix for failing ray cast projection onto flat ground surfaces.
authorLukas Tönne <lukas.toenne@gmail.com>
Tue, 9 Dec 2014 09:53:44 +0000 (10:53 +0100)
committerLukas Tönne <lukas.toenne@gmail.com>
Tue, 9 Dec 2014 09:53:44 +0000 (10:53 +0100)
This was failing because the ray_cast object method assumes that the
ray is limited by its end point. For a flat mesh this end point
coincides exactly with the mesh faces (using the bounding box limit),
so all the rays are rejected. Adding an offset to the ray length solves
this issue (although it should possibly be fixed in the API with an
optional parameter).

object_physics_meadow/duplimesh.py

index f7694ec..2bf9fed 100644 (file)
@@ -25,8 +25,8 @@ def project_on_ground(groundob, co):
     groundmat4 = groundob.matrix_world
     groundmat3 = groundmat4.to_3x3()
     
-    zmin = min(p[2] for p in groundob.bound_box)
-    zmax = max(p[2] for p in groundob.bound_box)
+    zmin = min(p[2] for p in groundob.bound_box) - 1.0
+    zmax = max(p[2] for p in groundob.bound_box) + 1.0
     
     ray_start = (co[0], co[1], zmax)
     ray_end = (co[0], co[1], zmin)