fix for armature specular material color overriding the wire color when instanced in a dupli
This commit is contained in:
@@ -1753,8 +1753,13 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
|
||||
if (bone == arm->act_bone)
|
||||
flag |= BONE_DRAW_ACTIVE;
|
||||
|
||||
/* set color-set to use */
|
||||
set_pchan_colorset(ob, pchan);
|
||||
if (do_const_color) {
|
||||
/* keep color */
|
||||
}
|
||||
else {
|
||||
/* set color-set to use */
|
||||
set_pchan_colorset(ob, pchan);
|
||||
}
|
||||
|
||||
if (use_custom) {
|
||||
/* if drawwire, don't try to draw in solid */
|
||||
@@ -1950,7 +1955,12 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
|
||||
/* extra draw service for pose mode */
|
||||
|
||||
/* set color-set to use */
|
||||
set_pchan_colorset(ob, pchan);
|
||||
if (do_const_color) {
|
||||
/* keep color */
|
||||
}
|
||||
else {
|
||||
set_pchan_colorset(ob, pchan);
|
||||
}
|
||||
|
||||
if ((pchan->custom) && !(arm->flag & ARM_NO_CUSTOM)) {
|
||||
/* custom bone shapes should not be drawn here! */
|
||||
@@ -2001,7 +2011,6 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
|
||||
float vec[3];
|
||||
|
||||
unsigned char col[4];
|
||||
|
||||
if (do_const_color) {
|
||||
/* so we can draw bone names in current const color */
|
||||
float tcol[4];
|
||||
@@ -2562,11 +2571,8 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base,
|
||||
|
||||
if (dt > OB_WIRE && !ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) {
|
||||
/* we use color for solid lighting */
|
||||
glColorMaterial(GL_FRONT_AND_BACK, GL_SPECULAR);
|
||||
glEnable(GL_COLOR_MATERIAL);
|
||||
glColor3ub(255, 255, 255); // clear spec
|
||||
glDisable(GL_COLOR_MATERIAL);
|
||||
|
||||
const float white[4] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white);
|
||||
glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
|
||||
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW); // only for lighting...
|
||||
}
|
||||
|
||||
@@ -1015,14 +1015,14 @@ void draw_mesh_paint(View3D *v3d, RegionView3D *rv3d, Object *ob, DerivedMesh *d
|
||||
if (ob && ob->mode & OB_MODE_WEIGHT_PAINT) {
|
||||
|
||||
if (do_light) {
|
||||
const float spec[4] = {0.47f, 0.47f, 0.47f, 0.47f};
|
||||
|
||||
/* enforce default material settings */
|
||||
GPU_enable_material(0, NULL);
|
||||
|
||||
/* but set default spec */
|
||||
glColorMaterial(GL_FRONT_AND_BACK, GL_SPECULAR);
|
||||
glEnable(GL_COLOR_MATERIAL); /* according manpages needed */
|
||||
glColor3ub(120, 120, 120);
|
||||
glDisable(GL_COLOR_MATERIAL);
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
|
||||
|
||||
/* diffuse */
|
||||
glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
|
||||
|
||||
@@ -3434,6 +3434,8 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D
|
||||
dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
|
||||
}
|
||||
else {
|
||||
const float spec[4] = {0.47f, 0.47f, 0.47f, 0.47f};
|
||||
|
||||
/* draw outline */
|
||||
if ( (v3d->flag & V3D_SELECT_OUTLINE) &&
|
||||
((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) &&
|
||||
@@ -3451,9 +3453,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D
|
||||
|
||||
/* set default spec */
|
||||
glColorMaterial(GL_FRONT_AND_BACK, GL_SPECULAR);
|
||||
glEnable(GL_COLOR_MATERIAL); /* according manpages needed */
|
||||
glColor3ub(120, 120, 120);
|
||||
glDisable(GL_COLOR_MATERIAL);
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
|
||||
/* diffuse */
|
||||
glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
|
||||
glEnable(GL_LIGHTING);
|
||||
|
||||
Reference in New Issue
Block a user