[Bf-committers] Knife tool and perspective mode -- incorrect results

Bart bart at neeneenee.de
Sun Nov 7 11:46:42 CET 2004


This is not the only problem:
http://www.neeneenee.de/blender/features/#10


-- 
|\/\/\/|
|      |
| (O)(O)        Bart.
C      _)       bart at neeneenee.de
|   ,_/
|   /    - Ich bin nicht berechtigt Aushilfslehrer zu feuern -
/   \
                 http://www.neeneenee.de



Matthew H. Plough wrote:
> Hi everyone --
> 
> Last night I was playing around with 
> http//www.princeton.edu/~mplough/tmp/optical.blend .  I was trying to 
> use the knife tool to cut the pieces of the model in order to make one 
> of those boxes where the back leg is drawn in front of the front one.  
> Since this must be done only from the camera angle, I switched to the 
> camera view and tried to cut.  However, the cut occurs quite far from my 
> desired location.  Further investigation reveals that the knife tool 
> produces incorrect results in any perspective mode.
> I present an overview of the current functionality of the seg_intersect 
> function in blender/source/blender/src/editmesh_loop.c .  This function 
> calculates the location of an intersection (if any) between a curve 
> drawn by the user and an edit edge.
> 
> When KnifeSubdivide calls seg_intersect, it provides the curve and the 
> current edge.
> 
> seg_intersect then copies the coordinates of the edge's two end 
> vertices, and projects them onto the screen.  Then a huge mess happens, 
> which accomplishes several things.  The function checks if an 
> intersection occurs.
> If one does occur:
> The function finds where along the edge (*IN SCREEN COORDINATES*) the 
> intersection occurs, and returns this as a percentage.  Thus, if the cut 
> happens halfway between e->v1->co and e->v2->co , the function returns a 
> representation of 50%.
> 
> This is not valid in perspective mode.  In 
> http://www.princeton.edu/~mplough/tmp/problem.png, the cursor is placed 
> at the midpoint of an edge.  On screen, the edge is 831.5 pixels long.  
> The screen distance from the cursor to the left edge is 320.7 pixels; 
> the distance to the right edge is 509.7 pixels.
> 509.7 is 61% of 831.5.
> 
> When I performed a cut at the cursor, the cut occurred as shown.  
> Debugging output showed that isect (in seg_intersect) was a 
> representation of 61%, so the cut occurred 61% of the way *in scene 
> coordinates* from the right vertex the left vertex.  This is obviously 
> incorrect.
> I am currently working on fixing seg_intersect to make this work properly.
> 
> Matt
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at projects.blender.org
> http://projects.blender.org/mailman/listinfo/bf-committers
> 




More information about the Bf-committers mailing list