Changeset 11264 for OpenSceneGraph/branches/OpenSceneGraph-2.8/src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp
- Timestamp:
- 03/21/10 00:19:35 (3 years ago)
- Location:
- OpenSceneGraph/branches/OpenSceneGraph-2.8
- Files:
-
- 3 modified
-
. (modified) (1 prop)
-
src/osgPlugins (modified) (1 prop)
-
src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/branches/OpenSceneGraph-2.8
- Property svn:mergeinfo
-
old new 1 1 /OpenSceneGraph/branches/OpenSceneGraph-2.8.2:10664 2 /OpenSceneGraph/trunk:9769,9816-9818,9826-9827,9837-9843,9847,9850,9854-9857,9860-9861,9865,9869,9879-9880,9885,9895,9906,9910,9912,9932-9933,9948,9959-9960,9965,9968-9969,9990,10010,10012-10014,10030,10040-10041,10053,10057,10076,10079-10080,10082,10084,10088,10128,10149,10161,10208,10264,10283,10340,10391-10392,10408,10414,10417,10422,10440,10456,10487,10491,10520,10538,10622-10623,10625,10671-10672,10697,10722,10753,10758,10761,10788,10805,10809,10818,10851,10853-10855,10858,10887,10891-10892,10914,10923,10925,10932-10933,10938,10941-10942,10945,10961,11019,11032-11035,11056,11111,11123,11127,11131,11159,11165,11173,11175,11177,11180,11182,11194,11203,11237 2 /OpenSceneGraph/trunk:9769,9816-9818,9826-9827,9837-9843,9847,9850,9854-9857,9860-9861,9865,9869,9879-9880,9885,9895,9906,9910,9912,9932-9933,9948,9959-9960,9965,9968-9969,9990,10010,10012-10014,10030,10040-10041,10053,10057,10076,10079-10080,10082,10084,10088,10128,10149,10161,10208,10264,10283,10340,10391-10392,10408,10414,10417,10422,10440,10456,10487,10491,10520,10538,10622-10623,10625,10671-10672,10697,10722,10753,10758,10761,10788,10805,10809,10818,10851,10853-10855,10858,10887,10891-10892,10914,10923,10925,10932-10933,10938,10941-10942,10945,10961,11019,11032-11035,11056,11111,11123,11127,11131,11159,11165,11173,11175,11177,11180,11182,11194,11203,11237,11251-11252,11262
-
- Property svn:mergeinfo
-
OpenSceneGraph/branches/OpenSceneGraph-2.8/src/osgPlugins
- Property svn:mergeinfo
-
old new 1 1 /OpenSceneGraph/branches/OpenSceneGraph-2.8.2/src/osgPlugins:10664 2 2 /OpenSceneGraph/trunk:10539 3 /OpenSceneGraph/trunk/src/osgPlugins:9769,9816-9818,9826-9827,9837-9843,9847,9850,9854-9857,9860-9861,9865,9869,9879-9880,9885,9895,9906,9910,9912,9932-9933,9948,9959-9960,9965,9968-9969,9990,10010,10012-10014,10030,10040-10041,10053,10057,10076,10079-10080,10082,10084,10088,10128,10149,10161,10208,10264,10283,10340,10391-10392,10408,10414,10417,10422,10440,10456,10487,10491,10520,10538,10622-10623,10625,10671-10672,10697,10722,10753,10758,10761,10788,10805,10809,10818,10851,10853-10855,10858,10887,10891-10892,10914,10923,10925,10932-10933,10938,10941-10942,10945,10961,11019,11032-11035,11056,11111,11123,11127,11131,11159,11165,11173,11175,11177,11180,11182,11194,11203,11237 3 /OpenSceneGraph/trunk/src/osgPlugins:9769,9816-9818,9826-9827,9837-9843,9847,9850,9854-9857,9860-9861,9865,9869,9879-9880,9885,9895,9906,9910,9912,9932-9933,9948,9959-9960,9965,9968-9969,9990,10010,10012-10014,10030,10040-10041,10053,10057,10076,10079-10080,10082,10084,10088,10128,10149,10161,10208,10264,10283,10340,10391-10392,10408,10414,10417,10422,10440,10456,10487,10491,10520,10538,10622-10623,10625,10671-10672,10697,10722,10753,10758,10761,10788,10805,10809,10818,10851,10853-10855,10858,10887,10891-10892,10914,10923,10925,10932-10933,10938,10941-10942,10945,10961,11019,11032-11035,11056,11111,11123,11127,11131,11159,11165,11173,11175,11177,11180,11182,11194,11203,11237,11251-11252,11262
-
- Property svn:mergeinfo
-
OpenSceneGraph/branches/OpenSceneGraph-2.8/src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp
r11213 r11264 81 81 } 82 82 } 83 return std::make_pair(pOsgMat.release(), pOsgTex.release()); 83 StateSetContent result(pOsgMat.release(), pOsgTex.release()); 84 _kFbxMaterialMap.insert(KFbxMaterialMap::value_type(pFbxMat, result)); 85 return result; 84 86 } 85 87 … … 110 112 } 111 113 } 114 115 void FbxMaterialToOsgStateSet::checkInvertTransparency() 116 { 117 int zeroAlpha = 0, oneAlpha = 0; 118 for (KFbxMaterialMap::const_iterator it = _kFbxMaterialMap.begin(); it != _kFbxMaterialMap.end(); ++it) 119 { 120 const osg::Material* pMaterial = it->second.first; 121 float alpha = pMaterial->getDiffuse(osg::Material::FRONT).a(); 122 if (alpha > 0.999f) 123 { 124 ++oneAlpha; 125 } 126 else if (alpha < 0.001f) 127 { 128 ++zeroAlpha; 129 } 130 } 131 132 if (zeroAlpha > oneAlpha) 133 { 134 //Transparency values seem to be back to front so invert them. 135 136 for (KFbxMaterialMap::const_iterator it = _kFbxMaterialMap.begin(); it != _kFbxMaterialMap.end(); ++it) 137 { 138 osg::Material* pMaterial = it->second.first; 139 osg::Vec4 diffuse = pMaterial->getDiffuse(osg::Material::FRONT); 140 diffuse.a() = 1.0f - diffuse.a(); 141 pMaterial->setDiffuse(osg::Material::FRONT_AND_BACK, diffuse); 142 } 143 } 144 }
