new view option, SolidTex, to draw textures in solid mode.

In the view panel as well as the shortcut Shift+T

this works in editmode as well as object mode

giving results like this
http://members.optusnet.com.au/cjbarton/temp1.jpg

where before you could only see textures in textured draw type like this
http://members.optusnet.com.au/cjbarton/temp2.jpg
This commit is contained in:
Campbell Barton
2007-09-15 18:12:16 +00:00
parent b2a8199d4b
commit 3a90f211d2
10 changed files with 36 additions and 28 deletions

View File

@@ -1793,7 +1793,7 @@ CustomDataMask get_viewedit_datamask()
/* this includes normals for mesh_create_shadedColors */
mask |= CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_NORMAL;
}
if(view->drawtype == OB_TEXTURE) {
if((view->drawtype == OB_TEXTURE) || ((view->drawtype == OB_SOLID) && (view->flag2 & V3D_SOLID_TEX))) {
mask |= CD_MASK_MTFACE | CD_MASK_MCOL;
}
}

View File

@@ -461,24 +461,25 @@ typedef struct SpaceImaSel {
#define SI_SHOW 1
/* SpaceImage->flag */
#define SI_BE_SQUARE 1
#define SI_EDITTILE 2
#define SI_CLIP_UV 4
#define SI_DRAWTOOL 8
#define SI_STICKYUVS 16
#define SI_DRAWSHADOW 32
#define SI_SELACTFACE 64
#define SI_DEPRECATED 128
#define SI_LOCALSTICKY 256
#define SI_COORDFLOATS 512
#define SI_PIXELSNAP 1024
#define SI_LIVE_UNWRAP 2048
#define SI_USE_ALPHA 0x1000
#define SI_SHOW_ALPHA 0x2000
#define SI_SHOW_ZBUF 0x4000
#define SI_BE_SQUARE 1<<0
#define SI_EDITTILE 1<<1
#define SI_CLIP_UV 1<<2
#define SI_DRAWTOOL 1<<3
#define SI_STICKYUVS 1<<4
#define SI_DRAWSHADOW 1<<5
#define SI_SELACTFACE 1<<6
#define SI_DEPRECATED 1<<7
#define SI_LOCALSTICKY 1<<8
#define SI_COORDFLOATS 1<<9
#define SI_PIXELSNAP 1<<10
#define SI_LIVE_UNWRAP 1<<11
#define SI_USE_ALPHA 1<<12
#define SI_SHOW_ALPHA 1<<13
#define SI_SHOW_ZBUF 1<<14
/* next two for render window dislay */
#define SI_PREVSPACE 0x8000
#define SI_FULLWINDOW 0x10000
#define SI_PREVSPACE 1<<15
#define SI_FULLWINDOW 1<<16
#define SI_SYNC_UVSEL 1<<17
/* SpaceText flags (moved from DNA_text_types.h) */

View File

@@ -164,10 +164,12 @@ typedef struct View3D {
#define V3D_CLIPPING 16384
#define V3D_DRAW_CENTERS 32768
/* View3d->flag2 (short) */
#define V3D_OPP_DIRECTION_NAME 1
#define V3D_FLYMODE 2
#define V3D_TRANSFORM_SNAP 4
#define V3D_SOLID_TEX 8
/* View3d->snap_target */
#define V3D_SNAP_TARGET_CLOSEST 0

View File

@@ -993,7 +993,6 @@ static PyObject *M_Window_ViewLayers( PyObject * self, PyObject * args )
}
if (winid==-1) {
printf("Doing WINIID NOT!!!\n");
/* set scene and viewport */
G.scene->lay = layer;
if (G.vd) {

View File

@@ -2424,7 +2424,6 @@ static void object_panel_draw(Object *ob)
uiDefButBitC(block, TOG, OB_DRAWTRANSP, REDRAWVIEW3D, "Transp", 120, 40, 90, 20, &ob->dtx, 0, 0, 0, 0, "Enables transparent materials for the active object (Mesh only)");
uiDefButBitC(block, TOG, OB_DRAWXRAY, REDRAWVIEW3D, "X-ray", 210, 40, 90, 20, &ob->dtx, 0, 0, 0, 0, "Makes the active object draw in front of others");
}
void object_panel_constraint(char *context)

View File

@@ -1201,7 +1201,7 @@ void draw_mesh_textured(Object *ob, DerivedMesh *dm, int faceselect)
#endif
/* draw game engine text hack - but not if we are editing the mesh */
if (get_property(ob, "Text") && me->mtface) {
if (me->mtface && get_property(ob, "Text")) {
if(ob==G.obedit)
editing= 1;
else if(ob==OBACT)

View File

@@ -1947,9 +1947,9 @@ static void draw_em_fancy(Object *ob, EditMesh *em, DerivedMesh *cageDM, Derived
EM_init_index_arrays(1, 1, 1);
if(dt>OB_WIRE) {
if(G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID) {
draw_mesh_textured(ob, finalDM, 0);
} else if(G.vd->drawtype==OB_SHADED && dt>OB_SOLID) {
if( (G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID) ||
(G.vd->drawtype==OB_SOLID && G.vd->flag2 & V3D_SOLID_TEX)
) {
draw_mesh_textured(ob, finalDM, 0);
} else {
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED);
@@ -2257,7 +2257,10 @@ static void draw_mesh_fancy(Base *base, int dt, int flag)
else if(dt==OB_WIRE || totface==0) {
draw_wire = 1;
}
else if( (ob==OBACT && (G.f & G_TEXTUREPAINT || FACESEL_PAINT_TEST)) || (G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID)) {
else if( (ob==OBACT && (G.f & G_TEXTUREPAINT || FACESEL_PAINT_TEST)) ||
(G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID) ||
(G.vd->drawtype==OB_SOLID && G.vd->flag2 & V3D_SOLID_TEX))
{
int faceselect= (ob==OBACT && FACESEL_PAINT_TEST);
if ((G.vd->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !(G.f&G_PICKSEL || FACESEL_PAINT_TEST) && !draw_wire) {
@@ -4239,7 +4242,7 @@ void draw_object(Base *base, int flag)
BMF_DrawString(G.font, ob->id.name+2);
}
}
if(dtx & OB_DRAWIMAGE) drawDispListwire(&ob->disp);
/*if(dtx & OB_DRAWIMAGE) drawDispListwire(&ob->disp);*/
if((dtx & OB_DRAWWIRE) && dt>=OB_SOLID) drawWireExtra(ob);
}

View File

@@ -2474,6 +2474,7 @@ static void view3d_panel_properties(short cntrl) // VIEW3D_HANDLER_SETTINGS
uiDefButBitS(block, TOG, V3D_SELECT_OUTLINE, REDRAWVIEW3D, "Outline Selected", 10, 30, 140, 19, &vd->flag, 0, 0, 0, 0, "Highlight selected objects with an outline, in Solid, Shaded or Textured viewport shading modes");
uiDefButBitS(block, TOG, V3D_DRAW_CENTERS, REDRAWVIEW3D, "All Object Centers", 10, 10, 140, 19, &vd->flag, 0, 0, 0, 0, "Draw the center points on all objects");
uiDefButBitS(block, TOGN, V3D_HIDE_HELPLINES, REDRAWVIEW3D, "Relationship Lines", 10, -10, 140, 19, &vd->flag, 0, 0, 0, 0, "Draw dashed lines indicating Parent, Constraint, or Hook relationships");
uiDefButBitS(block, TOG, V3D_SOLID_TEX, REDRAWVIEW3D, "Solid Tex", 10, -30, 140, 19, &vd->flag2, 0, 0, 0, 0, "Display textures in Solid draw type (Shift T)");
uiBlockEndAlign(block);
uiDefBut(block, LABEL, 1, "View Locking:", 160, 50, 150, 19, NULL, 0.0, 0.0, 0, 0, "");

View File

@@ -1240,7 +1240,7 @@ void image_buttons(void)
/* draw LOCK */
uiDefIconButS(block, ICONTOG, 0, ICON_UNLOCKED, xco,0,XIC,YIC, &(G.sima->lock), 0, 0, 0, 0, "Updates other affected window spaces automatically to reflect changes in real time");
/* Always do this last */
curarea->headbutlen= xco+2*XIC;

View File

@@ -2327,7 +2327,10 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
break;
case TKEY:
if(G.obedit){
if(G.qual == LR_SHIFTKEY) { /* toggle texture in solid draw mode */
G.vd->flag2 ^= V3D_SOLID_TEX;
allqueue(REDRAWVIEW3D, 0);
} else if(G.obedit){
if((G.qual & LR_CTRLKEY) && G.obedit->type==OB_MESH) {
convert_to_triface(G.qual & LR_SHIFTKEY);
allqueue(REDRAWVIEW3D, 0);