Explorar o código

found a better fix for the out of range color/alpha gain

Asad M. Zaman %!s(int64=20) %!d(string=hai) anos
pai
achega
669a5f6f21

+ 4 - 4
pandatool/src/maya/mayaShaderColorDef.cxx

@@ -263,13 +263,13 @@ void MayaShaderColorDef::
 read_surface_color(MayaShader *shader, MObject color, bool trans) {
   RGBColorf color_gain;
   if (get_vec3f_attribute(color, "colorGain", color_gain)) {
-    _color_gain[0] *= color_gain[0];
-    _color_gain[1] *= color_gain[1];
-    _color_gain[2] *= color_gain[2];
+    _color_gain[0] *= (color_gain[0] > 1.0 ? 1.0 : color_gain[0]) < 0.0 ? 0.0 : color_gain[0];
+    _color_gain[1] *= (color_gain[1] > 1.0 ? 1.0 : color_gain[1]) < 0.0 ? 0.0 : color_gain[1];
+    _color_gain[2] *= (color_gain[2] > 1.0 ? 1.0 : color_gain[2]) < 0.0 ? 0.0 : color_gain[2];
   }
   float alpha_gain;
   if (get_maya_attribute(color, "alphaGain", alpha_gain)) {
-    _color_gain[3] *= alpha_gain;
+    _color_gain[3] *= (alpha_gain > 1.0 ? 1.0 : alpha_gain) < 0.0 ? 0.0 : alpha_gain;
   }
   if (color.hasFn(MFn::kFileTexture)) {
     _color_object = new MObject(color);

+ 5 - 1
pandatool/src/mayaegg/mayaToEggConverter.cxx

@@ -1953,7 +1953,8 @@ make_polyset(MayaNodeDesc *node_desc, const MDagPath &dag_path,
 
             if (mayaegg_cat.is_spam()) {
               mayaegg_cat.spam() << "poly_color = " << poly_color << endl;
-              mayaegg_cat.spam() << "maya_color = " << vert.get_color() << endl;
+              mayaegg_cat.spam() << "maya_color = " << c << endl;
+              mayaegg_cat.spam() << "vert_color = " << vert.get_color() << endl;
             }
           }
         } else {
@@ -2631,6 +2632,9 @@ set_shader_attributes(EggPrimitive &primitive, const MayaShader &shader,
   }
 
   primitive.set_color(rgba);
+  if (mayaegg_cat.is_spam()) {
+    mayaegg_cat.spam() << "ssa:rgba = " << rgba << endl;
+  }
 
   if (mayaegg_cat.is_spam()) {
     mayaegg_cat.spam() << "  set_shader_attributes : end\n";