[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25996] trunk/blender/source/blender/ editors/space_view3d/drawobject.c: weight paint without shading when in wire view.

Campbell Barton ideasman42 at gmail.com
Fri Jan 15 22:36:59 CET 2010


dont think this is a problem. stippling is used in the UV view for
ages, sequencer and for the active face more recently (stipple poly).
at worst weight painting in wire view will show a white line or none at all.

On Thu, Jan 14, 2010 at 11:16 PM, joe <joeedh at gmail.com> wrote:
> Shouldn't this be an option? Stipple doesn't always work well on all
> cards, iirc.
>
> On Thu, Jan 14, 2010 at 4:51 AM, Campbell Barton <ideasman42 at gmail.com> wrote:
>> Revision: 25996
>>          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25996
>> Author:   campbellbarton
>> Date:     2010-01-14 13:51:17 +0100 (Thu, 14 Jan 2010)
>>
>> Log Message:
>> -----------
>> weight paint without shading when in wire view. use stipple wire to help show where verts are.
>> only way to do this previously was to have a UV layer, be in textured mode, not have any lights or textures and then set weight paint mode.
>>
>> Modified Paths:
>> --------------
>>    trunk/blender/source/blender/editors/space_view3d/drawobject.c
>>
>> Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
>> ===================================================================
>> --- trunk/blender/source/blender/editors/space_view3d/drawobject.c      2010-01-14 10:59:42 UTC (rev 25995)
>> +++ trunk/blender/source/blender/editors/space_view3d/drawobject.c      2010-01-14 12:51:17 UTC (rev 25996)
>> @@ -2360,44 +2360,70 @@
>>                }
>>        }
>>        else if(dt==OB_SOLID) {
>> -               Paint *p;
>> +               if(ob==OBACT && ob && ob->mode & OB_MODE_WEIGHT_PAINT) {
>> +                       /* weight paint in solid mode, special case. focus on making the weights clear
>> +                        * rather then the shading, this is also forced in wire view */
>> +                       GPU_enable_material(0, NULL);
>> +                       dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, me->mface, 1);
>>
>> -               if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt)
>> -                       draw_mesh_object_outline(v3d, ob, dm);
>> +                       bglPolygonOffset(rv3d->dist, 1.0);
>> +                       glDepthMask(0); // disable write in zbuffer, selected edge wires show better
>>
>> -               glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED );
>> +                       glEnable(GL_BLEND);
>> +                       glColor4ub(196, 196, 196, 196);
>> +                       glEnable(GL_LINE_STIPPLE);
>> +                       glLineStipple(1, 0x8888);
>>
>> -               glEnable(GL_LIGHTING);
>> -               glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
>> +                       dm->drawEdges(dm, 1);
>>
>> -               if(ob->sculpt && (p=paint_get_active(scene))) {
>> -                       float planes[4][4];
>> -                       float (*fpl)[4] = NULL;
>> -                       int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING);
>> +                       bglPolygonOffset(rv3d->dist, 0.0);
>> +                       glDepthMask(1);
>> +                       glDisable(GL_LINE_STIPPLE);
>>
>> -                       if(ob->sculpt->partial_redraw) {
>> -                               sculpt_get_redraw_planes(planes, ar, rv3d, ob);
>> -                               fpl = planes;
>> -                               ob->sculpt->partial_redraw = 0;
>> -                       }
>> +                       GPU_disable_material();
>>
>> -                       dm->drawFacesSolid(dm, fpl, fast, GPU_enable_material);
>> +
>>                }
>> -               else
>> -                       dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
>> +               else {
>> +                       Paint *p;
>>
>> -               GPU_disable_material();
>> +                       if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt)
>> +                               draw_mesh_object_outline(v3d, ob, dm);
>>
>> -               glFrontFace(GL_CCW);
>> -               glDisable(GL_LIGHTING);
>> +                       glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED );
>>
>> -               if(base->flag & SELECT) {
>> -                       UI_ThemeColor((ob==OBACT)?TH_ACTIVE:TH_SELECT);
>> -               } else {
>> -                       UI_ThemeColor(TH_WIRE);
>> +                       glEnable(GL_LIGHTING);
>> +                       glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
>> +
>> +                       if(ob->sculpt && (p=paint_get_active(scene))) {
>> +                               float planes[4][4];
>> +                               float (*fpl)[4] = NULL;
>> +                               int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING);
>> +
>> +                               if(ob->sculpt->partial_redraw) {
>> +                                       sculpt_get_redraw_planes(planes, ar, rv3d, ob);
>> +                                       fpl = planes;
>> +                                       ob->sculpt->partial_redraw = 0;
>> +                               }
>> +
>> +                               dm->drawFacesSolid(dm, fpl, fast, GPU_enable_material);
>> +                       }
>> +                       else
>> +                               dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
>> +
>> +                       GPU_disable_material();
>> +
>> +                       glFrontFace(GL_CCW);
>> +                       glDisable(GL_LIGHTING);
>> +
>> +                       if(base->flag & SELECT) {
>> +                               UI_ThemeColor((ob==OBACT)?TH_ACTIVE:TH_SELECT);
>> +                       } else {
>> +                               UI_ThemeColor(TH_WIRE);
>> +                       }
>> +                       if(!ob->sculpt)
>> +                               dm->drawLooseEdges(dm);
>>                }
>> -               if(!ob->sculpt)
>> -                       dm->drawLooseEdges(dm);
>>        }
>>        else if(dt==OB_SHADED) {
>>                int do_draw= 1; /* to resolve all G.f settings below... */
>> @@ -5298,10 +5324,14 @@
>>
>>                        if(ob->mode & OB_MODE_EDIT);
>>                        else {
>> -                               if(dt<OB_SOLID)
>> +                               if(dt<OB_SOLID) {
>>                                        zbufoff= 1;
>> +                                       dt= OB_SOLID;
>> +                               }
>> +                               else {
>> +                                       dt= OB_SHADED;
>> +                               }
>>
>> -                               dt= OB_SHADED;
>>                                glEnable(GL_DEPTH_TEST);
>>                        }
>>                }
>>
>>
>> _______________________________________________
>> Bf-blender-cvs mailing list
>> Bf-blender-cvs at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>



-- 
- Campbell


More information about the Bf-committers mailing list