diff options
author | Daniel Dunbar <daniel@zuster.org> | 2005-04-13 16:06:59 +0400 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2005-04-13 16:06:59 +0400 |
commit | 48c5b10ea127251468c83cbb924a8ddb8b130569 (patch) | |
tree | 0b045f8d0a7660c18ad096996c6707a68911de67 /source/blender/renderconverter | |
parent | 9b354599e04af6a9e203df23f6b3f6c6f04783f2 (diff) |
- quick fix for bug #2412, render normal was not initialized for mesh
edges. fix by average two edge endpoint vertex normals.
Diffstat (limited to 'source/blender/renderconverter')
-rw-r--r-- | source/blender/renderconverter/intern/convertBlenderScene.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/renderconverter/intern/convertBlenderScene.c b/source/blender/renderconverter/intern/convertBlenderScene.c index eb69ab601c3..cbb3239dd67 100644 --- a/source/blender/renderconverter/intern/convertBlenderScene.c +++ b/source/blender/renderconverter/intern/convertBlenderScene.c @@ -1555,11 +1555,15 @@ static void init_render_mesh(Object *ob) /* exception... we do edges for wire mode. potential conflict when faces exist... */ end= dlm?dlm->totedge:me->totedge; + mvert= dlm?dlm->mvert:me->mvert; ma= give_render_material(ob, 1); 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); @@ -1567,7 +1571,16 @@ static void init_render_mesh(Object *ob) vlr->v3= vlr->v2; vlr->v4= NULL; - vlr->n[0]=vlr->n[1]=vlr->n[2]= 0.0; + 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; |