Revision: 36301
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36301
Author: nazgul
Date: 2011-04-23 15:27:35 +0000 (Sat, 23 Apr 2011)
Log Message:
-----------
Fix #27048: text + SimpleDeform modifier = weird render result!
It's not real fix, just patch which makes things better by using average
normal for each displist separately. There are still some artifacts with
quite highly deformed letters "O" or "g", but correct fix would need
to calculate derivative of modifiers, which isn't implemented yet.
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/convertblender.c
Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c
2011-04-23 12:57:03 UTC (rev 36300)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c
2011-04-23 15:27:35 UTC (rev 36301)
@@ -2868,17 +2868,10 @@
startvert= obr->totvert;
data= dl->verts;
- n[0]= ob->imat[0][2];
- n[1]= ob->imat[1][2];
- n[2]= ob->imat[2][2];
- normalize_v3(n);
-
for(a=0; a<dl->nr; a++, data+=3) {
ver= RE_findOrAddVert(obr,
obr->totvert++);
VECCOPY(ver->co, data);
- negate_v3_v3(ver->n, n);
-
mul_m4_v3(mat, ver->co);
if (orco) {
@@ -2888,21 +2881,41 @@
}
if(timeoffset==0) {
+ float tmp[3];
+ const int startvlak= obr->totvlak;
+
+ zero_v3(n);
index= dl->index;
for(a=0; a<dl->parts; a++, index+=3) {
-
vlr= RE_findOrAddVlak(obr,
obr->totvlak++);
vlr->v1= RE_findOrAddVert(obr,
startvert+index[0]);
vlr->v2= RE_findOrAddVert(obr,
startvert+index[1]);
vlr->v3= RE_findOrAddVert(obr,
startvert+index[2]);
vlr->v4= NULL;
- negate_v3_v3(vlr->n, n);
+ normal_tri_v3(tmp, vlr->v3->co,
vlr->v2->co, vlr->v1->co);
+ add_v3_v3(n, tmp);
vlr->mat= matar[ dl->col ];
vlr->flag= 0;
vlr->ec= 0;
}
+
+ normalize_v3(n);
+
+ /* vertex normals */
+ for(a= startvlak; a<obr->totvlak; a++) {
+ vlr= RE_findOrAddVlak(obr, a);
+
+ copy_v3_v3(vlr->n, n);
+ add_v3_v3(vlr->v1->n, vlr->n);
+ add_v3_v3(vlr->v3->n, vlr->n);
+ add_v3_v3(vlr->v2->n, vlr->n);
+ }
+ for(a=startvert; a<obr->totvert; a++) {
+ ver= RE_findOrAddVert(obr, a);
+ normalize_v3(ver->n);
+ }
}
}
else if (dl->type==DL_SURF) {
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs