[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