[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15178] trunk/blender/source/blender/ blenkernel: Revision 14929 partial merged from apricot

Martin Poirier theeth at yahoo.com
Mon Jun 9 19:50:21 CEST 2008


Revision: 15178
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15178
Author:   theeth
Date:     2008-06-09 19:50:21 +0200 (Mon, 09 Jun 2008)

Log Message:
-----------
Revision 14929 partial merged from apricot 
(partial because I'll merge all snap code in one fell swoop after the libs are done)
----------------------------------
object: ray - boundbox intersection test

Revision Links:
--------------
    http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14929

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_object.h
    trunk/blender/source/blender/blenkernel/intern/object.c

Modified: trunk/blender/source/blender/blenkernel/BKE_object.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_object.h	2008-06-09 17:22:38 UTC (rev 15177)
+++ trunk/blender/source/blender/blenkernel/BKE_object.h	2008-06-09 17:50:21 UTC (rev 15178)
@@ -108,6 +108,7 @@
 void minmax_object(struct Object *ob, float *min, float *max);
 void minmax_object_duplis(struct Object *ob, float *min, float *max);
 void solve_tracking (struct Object *ob, float targetmat[][4]);
+int ray_hit_boundbox(struct BoundBox *bb, float ray_start[3], float ray_normal[3]);
 
 void object_handle_update(struct Object *ob);
 

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2008-06-09 17:22:38 UTC (rev 15177)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2008-06-09 17:50:21 UTC (rev 15178)
@@ -2380,3 +2380,31 @@
 	}
 	return 1;
 }
+
+/*
+ * Test a bounding box for ray intersection
+ * assumes the ray is already local to the boundbox space
+ */
+int ray_hit_boundbox(struct BoundBox *bb, float ray_start[3], float ray_normal[3])
+{
+	static int triangle_indexes[12][3] = {{0, 1, 2}, {0, 2, 3},
+										  {3, 2, 6}, {3, 6, 7},
+										  {1, 2, 6}, {1, 6, 5}, 
+										  {5, 6, 7}, {4, 5, 7},
+										  {0, 3, 7}, {0, 4, 7},
+										  {0, 1, 5}, {0, 4, 5}};
+	int result = 0;
+	int i;
+	
+	for (i = 0; i < 12 && result == 0; i++)
+	{
+		float lambda;
+		int v1, v2, v3;
+		v1 = triangle_indexes[i][0];
+		v2 = triangle_indexes[i][1];
+		v3 = triangle_indexes[i][2];
+		result = RayIntersectsTriangle(ray_start, ray_normal, bb->vec[v1], bb->vec[v2], bb->vec[v3], &lambda, NULL);
+	}
+	
+	return result;
+}





More information about the Bf-blender-cvs mailing list