Revision: 24518
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24518
Author:   campbellbarton
Date:     2009-11-12 12:45:29 +0100 (Thu, 12 Nov 2009)

Log Message:
-----------
Project snapping is too slow for sintel's head at subsurf level 2, ifdef'd out 
per face snapping and added BVH raycasting.

adjust epsilon value for isect_ray_tri_v3()

from the comment...
/* note: these values were 0.000001 in 2.4x but for projection snapping on
 * a human head (1BU==1m), subsurf level 2, this gave many errors */
- 0.000001 -> 0.00000001

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/math_geom.c
    trunk/blender/source/blender/editors/transform/transform_snap.c

Modified: trunk/blender/source/blender/blenlib/intern/math_geom.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_geom.c     2009-11-12 
09:00:04 UTC (rev 24517)
+++ trunk/blender/source/blender/blenlib/intern/math_geom.c     2009-11-12 
11:45:29 UTC (rev 24518)
@@ -433,7 +433,9 @@
        
        cross_v3_v3v3(p, d, e2);
        a = dot_v3v3(e1, p);
-       if ((a > -0.000001) && (a < 0.000001)) return 0;
+       /* note: these values were 0.000001 in 2.4x but for projection snapping 
on
+        * a human head (1BU==1m), subsurf level 2, this gave many errors */
+       if ((a > -0.00000001) && (a < 0.00000001)) return 0;
        f = 1.0f/a;
        
        sub_v3_v3v3(s, p1, v0);

Modified: trunk/blender/source/blender/editors/transform/transform_snap.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_snap.c     
2009-11-12 09:00:04 UTC (rev 24517)
+++ trunk/blender/source/blender/editors/transform/transform_snap.c     
2009-11-12 11:45:29 UTC (rev 24518)
@@ -1224,6 +1224,35 @@
                        {
                                case SCE_SNAP_MODE_FACE:
                                { 
+#if 1                          // Added for durian
+                                       BVHTreeRayHit hit;
+                                       BVHTreeFromMesh treeData;
+
+                                       bvhtree_from_mesh_faces(&treeData, dm, 
0.0f, 4, 6);
+
+                                       hit.index = -1;
+                                       hit.dist = *depth;
+
+                                       if(treeData.tree && 
BLI_bvhtree_ray_cast(treeData.tree, ray_start_local, ray_normal_local, 0.0f, 
&hit, treeData.raycast_callback, &treeData) != -1)
+                                       {
+                                               if(hit.dist<=*depth) {
+                                                       *depth= hit.dist;
+                                                       copy_v3_v3(loc, hit.co);
+                                                       copy_v3_v3(no, hit.no);
+
+                                                       /* back to worldspace */
+                                                       mul_m4_v3(obmat, loc);
+                                                       copy_v3_v3(no, hit.no);
+
+                                                       mul_m3_v3(timat, no);
+                                                       normalize_v3(no);
+
+                                                       retval |= 1;
+                                               }
+                                       }
+                                       break;
+
+#else
                                        MVert *verts = dm->getVertArray(dm);
                                        MFace *faces = dm->getFaceArray(dm);
                                        int *index_array = NULL;
@@ -1293,6 +1322,7 @@
                                        {
                                                EM_free_index_arrays();
                                        }
+#endif
                                        break;
                                }
                                case SCE_SNAP_MODE_VERTEX:


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to