Changeset 11251
- Timestamp:
- 03/18/10 20:02:12 (3 years ago)
- Location:
- OpenSceneGraph/trunk/src/osgPlugins/fbx
- Files:
-
- 3 modified
-
ReaderWriterFBX.cpp (modified) (1 diff)
-
fbxMaterialToOsgStateSet.cpp (modified) (2 diffs)
-
fbxMaterialToOsgStateSet.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/src/osgPlugins/fbx/ReaderWriterFBX.cpp
r11153 r11251 271 271 if (res.success()) 272 272 { 273 fbxMaterialToOsgStateSet.checkInvertTransparency(); 274 273 275 resolveBindMatrices(*res.getNode(), boneBindMatrices, nodeMap); 274 276 -
OpenSceneGraph/trunk/src/osgPlugins/fbx/fbxMaterialToOsgStateSet.cpp
r11108 r11251 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 } -
OpenSceneGraph/trunk/src/osgPlugins/fbx/fbxMaterialToOsgStateSet.h
r11107 r11251 34 34 _options(options), 35 35 _dir(dir) {} 36 37 void checkInvertTransparency(); 36 38 private: 37 39 //Convert a texture fbx to an osg texture.
