diff options
author | Ton Roosendaal <ton@blender.org> | 2004-11-05 15:58:12 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-11-05 15:58:12 +0300 |
commit | b169abb4cfd675ccf1eed2bcb441797d06fa3abc (patch) | |
tree | 3e5d0198cd45afc3da7abda854d477cbe324ceda /source/blender/src/drawobject.c | |
parent | 5ffb4cb338b42a339720b730de0f2564abe50723 (diff) |
Bug fix #1678
Deformed meshes (by armature for example) didn't get drawn correctly
for vertex paint, weightpaint, UV faceselect. Was OK in 2.34 :)
Additional to that I found out vertex paint doesn't correctly use the
'Area' option, when a mesh was deformed. That was an oldie.
Plus; made tooltips for 'Area' and 'Normals' in Paint Panel clear.
Diffstat (limited to 'source/blender/src/drawobject.c')
-rw-r--r-- | source/blender/src/drawobject.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index 4184026acbb..4a5b54d25fc 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -4600,6 +4600,8 @@ static int bbs_mesh_solid(Object *ob, int facecol) MVert *mvert; MFace *mface; TFace *tface; + DispList *dl; + float *extverts=NULL; int a, totface, hastface, i; mvert= me->mvert; @@ -4607,6 +4609,9 @@ static int bbs_mesh_solid(Object *ob, int facecol) tface= me->tface; hastface = (me->tface != NULL); totface= me->totface; + + dl= find_displist(&ob->disp, DL_VERTS); + if(dl) extverts= dl->verts; glBegin(GL_QUADS); glmode= GL_QUADS; @@ -4622,10 +4627,18 @@ static int bbs_mesh_solid(Object *ob, int facecol) if(mface->v4) {if(glmode==GL_TRIANGLES) {glmode= GL_QUADS; glEnd(); glBegin(GL_QUADS);}} else {if(glmode==GL_QUADS) {glmode= GL_TRIANGLES; glEnd(); glBegin(GL_TRIANGLES);}} - glVertex3fv( (mvert+mface->v1)->co ); - glVertex3fv( (mvert+mface->v2)->co ); - glVertex3fv( (mvert+mface->v3)->co ); - if(mface->v4) glVertex3fv( (mvert+mface->v4)->co ); + if(extverts) { + glVertex3fv( extverts+3*mface->v1 ); + glVertex3fv( extverts+3*mface->v2 ); + glVertex3fv( extverts+3*mface->v3 ); + if(mface->v4) glVertex3fv( extverts+3*mface->v4 ); + } + else { + glVertex3fv( (mvert+mface->v1)->co ); + glVertex3fv( (mvert+mface->v2)->co ); + glVertex3fv( (mvert+mface->v3)->co ); + if(mface->v4) glVertex3fv( (mvert+mface->v4)->co ); + } } } glEnd(); |