Revision: 17732
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17732
Author:   campbellbarton
Date:     2008-12-06 20:19:54 +0100 (Sat, 06 Dec 2008)

Log Message:
-----------
* added an option not to use projection painting (use existing 3D paint)
* further tweak limits to get rid of some face clipping problems.

Modified Paths:
--------------
    branches/projection-paint/source/blender/makesdna/DNA_scene_types.h
    branches/projection-paint/source/blender/src/buttons_editing.c
    branches/projection-paint/source/blender/src/imagepaint.c

Modified: branches/projection-paint/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/projection-paint/source/blender/makesdna/DNA_scene_types.h 
2008-12-06 18:23:38 UTC (rev 17731)
+++ branches/projection-paint/source/blender/makesdna/DNA_scene_types.h 
2008-12-06 19:19:54 UTC (rev 17732)
@@ -803,10 +803,11 @@
 #define IMAGEPAINT_DRAW_TOOL_DRAWING   4
 
 /* projection painting only */
-#define IMAGEPAINT_PROJECT_XRAY                        8
-#define IMAGEPAINT_PROJECT_BACKFACE            16
-#define IMAGEPAINT_PROJECT_CLONE_LAYER 32
-#define IMAGEPAINT_PROJECT_FLAT                        64
+#define IMAGEPAINT_PROJECT_DISABLE             8       /* Non projection 3D 
painting */
+#define IMAGEPAINT_PROJECT_XRAY                        16
+#define IMAGEPAINT_PROJECT_BACKFACE            32
+#define IMAGEPAINT_PROJECT_CLONE_LAYER 64
+#define IMAGEPAINT_PROJECT_FLAT                        128
 
 /* toolsettings->uvcalc_flag */
 #define UVCALC_FILLHOLES                       1

Modified: branches/projection-paint/source/blender/src/buttons_editing.c
===================================================================
--- branches/projection-paint/source/blender/src/buttons_editing.c      
2008-12-06 18:23:38 UTC (rev 17731)
+++ branches/projection-paint/source/blender/src/buttons_editing.c      
2008-12-06 19:19:54 UTC (rev 17732)
@@ -6337,15 +6337,17 @@
                yco= 160;
 
                uiBlockBeginAlign(block);
-               //uiDefButS(block, ROW, B_BRUSHCHANGE, "Draw",          0  
,yco,108,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw 
brush");
-               //uiDefButS(block, ROW, B_BRUSHCHANGE, "Soften",                
108 ,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, 
"Soften brush");
-               //uiDefButS(block, ROW, B_BRUSHCHANGE, "Smear",         
214,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear 
brush");  
+               if ((settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0) {
+                       uiDefButS(block, ROW, B_SIMABRUSHCHANGE, "Draw",        
        0  ,yco,108,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, 
"Draw brush");
+                       uiDefButS(block, ROW, B_SIMABRUSHCHANGE, "Smear",       
        108 ,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, 
"Smear brush"); 
+                       uiDefButS(block, ROW, B_SIMABRUSHCHANGE, "Clone",       
        214,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_CLONE, 0, 0, 
"Clone brush, use RMB to drag source image");
+               }
+               else { 
+                       uiDefButS(block, ROW, B_BRUSHCHANGE, "Draw",            
0  ,yco,108,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw 
brush");
+                       uiDefButS(block, ROW, B_BRUSHCHANGE, "Soften",          
108 ,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, 
"Soften brush");
+                       uiDefButS(block, ROW, B_BRUSHCHANGE, "Smear",           
214,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear 
brush");  
+               }       
                
-               uiDefButS(block, ROW, B_SIMABRUSHCHANGE, "Draw",                
0  ,yco,108,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw 
brush");
-               //uiDefButS(block, ROW, B_SIMABRUSHCHANGE, "Soften",            
80 ,yco,80,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, "Soften 
brush");
-               uiDefButS(block, ROW, B_SIMABRUSHCHANGE, "Smear",               
108 ,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear 
brush"); 
-               uiDefButS(block, ROW, B_SIMABRUSHCHANGE, "Clone",               
214,yco,106,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_CLONE, 0, 0, "Clone 
brush, use RMB to drag source image");    
-               
                uiBlockEndAlign(block);
                yco -= 30;
 
@@ -6368,19 +6370,25 @@
                        uiDefButF(block, NUM, B_NOP, "Rate ", 
xco+10,yco-45,butw,19, &brush->rate, 0.01, 1.0, 0, 0, "Number of paints per 
second for Airbrush");
                        uiBlockEndAlign(block);
                        
-                       yco -= 25;
+                       uiDefButBitS(block, TOGN|BIT, 
IMAGEPAINT_PROJECT_DISABLE, B_REDR, "Project Paint",      
xco+10,yco-70,butw,19, &settings->imapaint.flag, 0, 0, 0, 0, "Use projection 
painting for improved consistency in the brush strokes");
                        
-                       /* Projection Painting */
-                       uiBlockBeginAlign(block);
-                       uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_XRAY, 
B_NOP, "Occlude",        xco+10,yco-45,butw/2,19, &settings->imapaint.flag, 0, 
0, 0, 0, "Only paint onto the faces directly under the brush (slower)");
-                       uiDefButBitS(block, TOGN|BIT, 
IMAGEPAINT_PROJECT_BACKFACE, B_NOP, "Cull",       
xco+10+butw/2,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Ignore 
faces pointing away from the view (faster)");
+                       yco -= 50;
                        
-                       uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_FLAT, 
B_NOP, "Normal", xco+10,yco-65,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, 
"Paint most on faces pointing towards the view");
-                       uiDefButC(block, NUM, B_NOP, "", xco+10 
+(butw/2),yco-65,butw/2,19, &settings->imapaint.normal_angle, 10.0, 90.0, 0, 0, 
"Paint most on faces pointing towards the view acording to this angle)");
+                       if ((settings->imapaint.flag & 
IMAGEPAINT_PROJECT_DISABLE)==0) {
+                               //uiDefButBitS(block, TOG|BIT, BRUSH_TORUS, 
B_BRUSHCHANGE, "Wrap",      xco+10,yco-25,butw,19, &brush->flag, 0, 0, 0, 0, 
"Enables torus wrapping");
+                               
+                               /* Projection Painting */
+                               uiBlockBeginAlign(block);
+                               uiDefButBitS(block, TOGN|BIT, 
IMAGEPAINT_PROJECT_XRAY, B_NOP, "Occlude",        xco+10,yco-45,butw/2,19, 
&settings->imapaint.flag, 0, 0, 0, 0, "Only paint onto the faces directly under 
the brush (slower)");
+                               uiDefButBitS(block, TOGN|BIT, 
IMAGEPAINT_PROJECT_BACKFACE, B_NOP, "Cull",       
xco+10+butw/2,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Ignore 
faces pointing away from the view (faster)");
+                               
+                               uiDefButBitS(block, TOGN|BIT, 
IMAGEPAINT_PROJECT_FLAT, B_NOP, "Normal", xco+10,yco-65,butw/2,19, 
&settings->imapaint.flag, 0, 0, 0, 0, "Paint most on faces pointing towards the 
view");
+                               uiDefButC(block, NUM, B_NOP, "", xco+10 
+(butw/2),yco-65,butw/2,19, &settings->imapaint.normal_angle, 10.0, 90.0, 0, 0, 
"Paint most on faces pointing towards the view acording to this angle)");
+                               
+                               uiDefButC(block, NUM, B_NOP, "Bleed: ", 
xco+10,yco-85,butw,19, &settings->imapaint.seam_bleed, 0.0, 8.0, 0, 0, "Extend 
paint beyond the faces UVs to reduce seams (in pixels, slower)");
+                               uiBlockEndAlign(block);
+                       }
                        
-                       uiDefButC(block, NUM, B_NOP, "Bleed: ", 
xco+10,yco-85,butw,19, &settings->imapaint.seam_bleed, 0.0, 8.0, 0, 0, "Extend 
paint beyond the faces UVs to reduce seams (in pixels, slower)");
-                       uiBlockEndAlign(block);
-
                        uiBlockBeginAlign(block);
                        uiDefButF(block, COL, B_VPCOLSLI, "",                   
                0,yco,200,19, brush->rgb, 0, 0, 0, 0, "");
                        uiDefButF(block, NUMSLI, B_NOP, "Opacity ",             
0,yco-20,180,19, &brush->alpha, 0.0, 1.0, 0, 0, "The amount of pressure on the 
brush");

Modified: branches/projection-paint/source/blender/src/imagepaint.c
===================================================================
--- branches/projection-paint/source/blender/src/imagepaint.c   2008-12-06 
18:23:38 UTC (rev 17731)
+++ branches/projection-paint/source/blender/src/imagepaint.c   2008-12-06 
19:19:54 UTC (rev 17732)
@@ -159,7 +159,7 @@
 
 //#define PROJ_DEBUG_PAINT 1
 //#define PROJ_DEBUG_NOSEAMBLEED 1
-#define PROJ_DEBUG_PRINT_CLIP 1
+//#define PROJ_DEBUG_PRINT_CLIP 1
 #define PROJ_DEBUG_WINCLIP 1
 
 /* projectFaceSeamFlags options */
@@ -185,7 +185,7 @@
 // #define PROJ_BUCKET_CLONE_INIT      1<<1
 
 /* used for testing doubles, if a point is on a line etc */
-#define PROJ_GEOM_TOLERANCE 0.00001f
+#define PROJ_GEOM_TOLERANCE 0.0002f
 
 /* vert flags */
 #define PROJ_VERT_CULL 1
@@ -1935,18 +1935,18 @@
        /* use IsectPT2Df_limit here so we catch points are are touching the 
tri edge (or a small fraction over) */
        bucket_bounds_ss[0][0] = bucket_bounds->xmax;
        bucket_bounds_ss[0][1] = bucket_bounds->ymin;
-       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[0], v1coSS, 
v2coSS, v3coSS, 0.001f) ? ISECT_1 : 0);
+       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[0], v1coSS, 
v2coSS, v3coSS, 0.01f) ? ISECT_1 : 0);
        bucket_bounds_ss[1][0] = bucket_bounds->xmax;
        bucket_bounds_ss[1][1] = bucket_bounds->ymax;
-       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[1], v1coSS, 
v2coSS, v3coSS, 0.001f) ? ISECT_2 : 0);
+       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[1], v1coSS, 
v2coSS, v3coSS, 0.01f) ? ISECT_2 : 0);
 
        bucket_bounds_ss[2][0] = bucket_bounds->xmin;
        bucket_bounds_ss[2][1] = bucket_bounds->ymax;
-       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[2], v1coSS, 
v2coSS, v3coSS, 0.001f) ? ISECT_3 : 0);
+       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[2], v1coSS, 
v2coSS, v3coSS, 0.01f) ? ISECT_3 : 0);
 
        bucket_bounds_ss[3][0] = bucket_bounds->xmin;
        bucket_bounds_ss[3][1] = bucket_bounds->ymin;
-       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[3], v1coSS, 
v2coSS, v3coSS, 0.001f) ? ISECT_4 : 0);
+       inside_face_flag |= (IsectPT2Df_limit(bucket_bounds_ss[3], v1coSS, 
v2coSS, v3coSS, 0.01f) ? ISECT_4 : 0);
        
        if (inside_face_flag == ISECT_ALL4) {
                /* bucket is totally inside the screenspace face, we can safely 
use weights */
@@ -4377,7 +4377,11 @@
        if(!settings->imapaint.brush)
                return;
        
-       project = texpaint;
+       if (texpaint) { /* are we painting in the 3D view ? */
+               if ((settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0) {
+                       project= 1;
+               }
+       }
        
        
        if (G.qual & LR_CTRLKEY) {


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

Reply via email to