From 93e3353f4bfe8bf857453e772d9ea8bff5acfbf4 Mon Sep 17 00:00:00 2001 From: suerey <313498985@qq.com> Date: Tue, 24 Dec 2024 18:01:33 +0800 Subject: [PATCH 1/2] store factors of emissive and roughness --- readerwriter/LoadSceneGLTF.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/readerwriter/LoadSceneGLTF.cpp b/readerwriter/LoadSceneGLTF.cpp index 6af8f96..744182b 100644 --- a/readerwriter/LoadSceneGLTF.cpp +++ b/readerwriter/LoadSceneGLTF.cpp @@ -793,9 +793,25 @@ namespace osgVerse } if (normalID >= 0) createTexture(ss, 1, uniformNames[1], _modelDef.textures[normalID]); - if (roughnessID >= 0) createTexture(ss, 3, uniformNames[3], _modelDef.textures[roughnessID]); + if (roughnessID >= 0) + createTexture(ss, 3, uniformNames[3], _modelDef.textures[roughnessID]); + else + { + osg::Texture2D* tex2D = createDefaultTextureForColor(osg::Vec4( + 1.0, material.pbrMetallicRoughness.roughnessFactor, + material.pbrMetallicRoughness.metallicFactor, 1.0)); + if (tex2D) ss->setTextureAttributeAndModes(3, tex2D); + } if (occlusionID >= 0) createTexture(ss, 4, uniformNames[4], _modelDef.textures[occlusionID]); - if (emissiveID >= 0) createTexture(ss, 5, uniformNames[5], _modelDef.textures[emissiveID]); + if (emissiveID >= 0) + createTexture(ss, 5, uniformNames[5], _modelDef.textures[emissiveID]); + else + { + osg::Texture2D* tex2D = createDefaultTextureForColor(osg::Vec4( + material.emissiveFactor[0], material.emissiveFactor[1], + material.emissiveFactor[2], 1.0)); + if (tex2D) ss->setTextureAttributeAndModes(5, tex2D); + } if (material.alphaMode.compare("BLEND") == 0) ss->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); -- Gitee From 6b4fd451ecda49f9634a7b685b380ce73cf909d6 Mon Sep 17 00:00:00 2001 From: suerey <313498985@qq.com> Date: Thu, 26 Dec 2024 17:31:25 +0800 Subject: [PATCH 2/2] save glb material.doubleSided --- readerwriter/LoadSceneGLTF.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/readerwriter/LoadSceneGLTF.cpp b/readerwriter/LoadSceneGLTF.cpp index 744182b..ea76006 100644 --- a/readerwriter/LoadSceneGLTF.cpp +++ b/readerwriter/LoadSceneGLTF.cpp @@ -812,7 +812,10 @@ namespace osgVerse material.emissiveFactor[2], 1.0)); if (tex2D) ss->setTextureAttributeAndModes(5, tex2D); } - + if (material.doubleSided) + ss->setMode(GL_CULL_FACE, osg::StateAttribute::OFF); + else + ss->setMode(GL_CULL_FACE, osg::StateAttribute::ON); if (material.alphaMode.compare("BLEND") == 0) ss->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); else -- Gitee