diff options
author | Ton Roosendaal <ton@blender.org> | 2005-04-13 18:03:10 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2005-04-13 18:03:10 +0400 |
commit | c3221bac833af3cfbbb1936160a466191d1cf545 (patch) | |
tree | 0c53d094dfb991c5a43597485bff8f1d4d9fd08b /source/blender/renderconverter | |
parent | 84359bf9965adb118aff17d4e7ae22606cfebd3f (diff) |
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
Diffstat (limited to 'source/blender/renderconverter')
-rw-r--r-- | source/blender/renderconverter/intern/convertBlenderScene.c | 56 |
1 files 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; a1<end; a1++, medge++) { - 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); + 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->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; } } } |