[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20921] branches/soc-2009-yukishiro/source /blender/editors/space_view3d/drawobject.c: fix multiple face materials

Jingyuan Huang jingyuan.huang at gmail.com
Tue Jun 16 08:47:12 CEST 2009


Revision: 20921
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20921
Author:   yukishiro
Date:     2009-06-16 08:47:10 +0200 (Tue, 16 Jun 2009)

Log Message:
-----------
fix multiple face materials

Modified Paths:
--------------
    branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c

Modified: branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c	2009-06-16 06:15:16 UTC (rev 20920)
+++ branches/soc-2009-yukishiro/source/blender/editors/space_view3d/drawobject.c	2009-06-16 06:47:10 UTC (rev 20921)
@@ -2278,7 +2278,7 @@
 	return 1;
 }
 
-static void calc_sh_vert_color(Object *ob, int index, MShCoeffs *mco, float (*lco)[3], unsigned char *col)
+static void calc_sh_vert_color(Object *ob, int index, int mat_nr, MShCoeffs *mco, float (*lco)[3], unsigned char *col)
 {
         Mesh *me = ob->data;
         Material * mat = NULL;
@@ -2286,15 +2286,14 @@
         float brightness[3];
         int k;
 
-        // TODO: get face material colour
-        if (me->mat) mat = me->mat[0];
+        if (me->mat) mat = me->mat[mat_nr];
 
         if (mat != NULL) {
                 color[0] = mat->r;
                 color[1] = mat->g;
                 color[2] = mat->b;
         } else {
-                color[0] = color[1] = color[2] = 0.8;
+                color[0] = color[1] = color[2] = 0.8; // TODO: shall I reference def_material?
         }
 
         brightness[0] = brightness[1] = brightness[2] = 0;
@@ -2325,11 +2324,11 @@
         if (env == NULL) add_lightenv(scene, "LightEnv");
 
         for (i=0; i<totface; i++, mf++) {
-                calc_sh_vert_color(ob, mf->v1, mco, env->shcoeffs, &shcol[(i*4 + 0) * 4]);
-                calc_sh_vert_color(ob, mf->v2, mco, env->shcoeffs, &shcol[(i*4 + 1) * 4]);
-                calc_sh_vert_color(ob, mf->v3, mco, env->shcoeffs, &shcol[(i*4 + 2) * 4]);
+                calc_sh_vert_color(ob, mf->v1, mf->mat_nr, mco, env->shcoeffs, &shcol[(i*4 + 0) * 4]);
+                calc_sh_vert_color(ob, mf->v2, mf->mat_nr, mco, env->shcoeffs, &shcol[(i*4 + 1) * 4]);
+                calc_sh_vert_color(ob, mf->v3, mf->mat_nr, mco, env->shcoeffs, &shcol[(i*4 + 2) * 4]);
                 if (mf->v4)
-                        calc_sh_vert_color(ob, mf->v4, mco, env->shcoeffs, &shcol[(i*4 + 3) * 4]);
+                        calc_sh_vert_color(ob, mf->v4, mf->mat_nr, mco, env->shcoeffs, &shcol[(i*4 + 3) * 4]);
         }
 }
 





More information about the Bf-blender-cvs mailing list