Show
Ignore:
Timestamp:
03/21/10 00:19:35 (4 years ago)
Author:
paulmartz
Message:

2.8 branch: Mergine recent changes to FBX. Revisions in this commit: r11251, r11252, r11262.

Location:
OpenSceneGraph/branches/OpenSceneGraph-2.8
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/branches/OpenSceneGraph-2.8

    • Property svn:mergeinfo
      •  

        old new  
        11/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 
  • OpenSceneGraph/branches/OpenSceneGraph-2.8/src/osgPlugins

    • Property svn:mergeinfo
      •  

        old new  
        11/OpenSceneGraph/branches/OpenSceneGraph-2.8.2/src/osgPlugins:10664 
        22/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 
  • OpenSceneGraph/branches/OpenSceneGraph-2.8/src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp

    r11213 r11264  
    8181        } 
    8282    } 
    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; 
    8486} 
    8587 
     
    110112    } 
    111113} 
     114 
     115void 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}