Ogre求助:有多个模型,如sky.mesh有两套材质脚本,程序在sky.material不存在时加载all.material(所有材质集合),经过一定操作后生成sky.material.
问:1.生成sky.material后怎样加载sky.material而不再加载all.material?
    2.生成sky.material后怎样让程序刷新去加载它并显示效果?
说明:1.Ogre + MFC
      2.sky.material是从all.material里面分离出来的模型相应脚本,其内容可能会被修改。

解决方案 »

  1.   

    把all.material里面的sky.material对应的材质名改变了,或者删除了就好了
      

  2.   

    补充楼上的,sky.material必须包含在资源路径下
      

  3.   

    1.将all.material和sky.material放在了不同的路径下;
    2.调用sky.material时:Ogre::ResourceGroupManager::getSingleton().destroyResourceGroup( c_InternMeshGroup );
    Ogre::ResourceGroupManager::getSingleton().createResourceGroup( c_InternMeshGroup );
    Ogre::ResourceGroupManager::getSingleton().addResourceLocation( directory, "FileSystem",c_InternMeshGroup ); try
    {
    Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
    }
    catch(...)
    {
    //Some material or may be even an unrelated scripts crashed the engine.
    //Load the model plain simple, no materials. Only skeleton and mesh.
    }3.在调用all.material时: m_pmeshName = MeshName;
    if( m_pmeshEntity )
    {
    m_pmeshSceneNode->getParentSceneNode()->removeAndDestroyChild( m_pmeshSceneNode->getName() );
    m_pSceneMgr->destroyEntity( m_pmeshEntity );
    } try
    {
    Ogre::ResourceGroupManager::getSingleton().destroyResourceGroup( c_InternMeshGroup );
    }
    catch( ... )
    { }

    try
    {
    Ogre::ResourceGroupManager::getSingleton().destroyResourceGroup( "test" );
    }
    catch(...)
    {

    }
    Ogre::ResourceGroupManager::getSingleton().createResourceGroup( "test" );
    Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "/sky", "FileSystem","test" );
    Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "/sky/modifyMaterial", "FileSystem","test" ); try
    {
    Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup( "test" );
    }
    catch( ... )
    {
    //Some material or may be even an unrelated scripts crashed the engine.
    //Load the model plain simple, no materials. Only skeleton and mesh.
    }并用m_pmeshEntity->setMaterialName( matrialName, "test");
    4.我将sky.material中的材质贴图替换了,以便观察效果,但发现这两次调用的效果一样,都解析的all.material里面的脚本,不知错出在哪里了,望赐教