From c3221bac833af3cfbbb1936160a466191d1cf545 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Wed, 13 Apr 2005 14:03:10 +0000 Subject: [PATCH] Two small corrections for subsurf + wire render; - when edges data exists, it skips adding faces to renderlist - edges are rendered according to "Optimal" subsurf setting --- .../intern/convertBlenderScene.c | 56 +++++++++++-------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/source/blender/renderconverter/intern/convertBlenderScene.c b/source/blender/renderconverter/intern/convertBlenderScene.c index cbb3239dd67..7331033f877 100644 --- a/source/blender/renderconverter/intern/convertBlenderScene.c +++ b/source/blender/renderconverter/intern/convertBlenderScene.c @@ -1437,6 +1437,12 @@ static void init_render_mesh(Object *ob) } } } + + /* if wire material, and we got edges, don't do the faces */ + if(ma->mode & MA_WIRE) { + end= dlm?dlm->totedge:me->totedge; + if(end) ok= 0; + } if(ok) { TFace *tface= NULL; @@ -1560,32 +1566,36 @@ static void init_render_mesh(Object *ob) if(end && (ma->mode & MA_WIRE)) { MEdge *medge; medge= dlm?dlm->medge:me->medge; + for(a1=0; a1v1]; - MVert *v1 = &mvert[vertofs+medge->v2]; + + if( (me->flag & ME_OPT_EDGES)==0 || (medge->flag & ME_EDGEDRAW)) { + MVert *v0 = &mvert[vertofs+medge->v1]; + MVert *v1 = &mvert[vertofs+medge->v2]; - vlr= RE_findOrAddVlak(R.totvlak++); - vlr->ob= vlr_set_ob(ob); - vlr->v1= RE_findOrAddVert(vertofs+medge->v1); - vlr->v2= RE_findOrAddVert(vertofs+medge->v2); - vlr->v3= vlr->v2; - vlr->v4= NULL; - - xn= (v0->no[0]+v1->no[0]); - yn= (v0->no[1]+v1->no[1]); - zn= (v0->no[2]+v1->no[2]); - if(do_puno==0) { - /* transpose ! */ - vlr->n[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn; - vlr->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn; - vlr->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn; - Normalise(vlr->n); + vlr= RE_findOrAddVlak(R.totvlak++); + vlr->ob= vlr_set_ob(ob); + vlr->v1= RE_findOrAddVert(vertofs+medge->v1); + vlr->v2= RE_findOrAddVert(vertofs+medge->v2); + vlr->v3= vlr->v2; + vlr->v4= NULL; + + xn= (v0->no[0]+v1->no[0]); + yn= (v0->no[1]+v1->no[1]); + zn= (v0->no[2]+v1->no[2]); + if(do_puno==0) { + /* transpose ! */ + vlr->n[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn; + vlr->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn; + vlr->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn; + Normalise(vlr->n); + } + + vlr->mat= ma; + vlr->flag= 0; + vlr->ec= ME_V1V2; + vlr->lay= ob->lay; } - - vlr->mat= ma; - vlr->flag= 0; - vlr->ec= ME_V1V2; - vlr->lay= ob->lay; } } }