Autor Wątek: Ogre nie wyświetla terenu.  (Przeczytany 1022 razy)

Offline prociomen007

  • Użytkownik

# Wrzesień 02, 2011, 12:11:41
Ech już myślałem że wszystko śmigać będzie.
A tu mi się po załadowaniu mapki z .xml teren teraz nie wyświetla. Problem jest o tyle dziwaczny że wszystko wykonuje się należycie nie ma żadnego loogu błędu wygląda na to że teren się wczytuje jednak nie wyświetla. Do ładowania terenu używam

void DotSceneLoader::processTerrain(rapidxml::xml_node<>* XMLNode)
{
    Ogre::Real worldSize = getAttribReal(XMLNode, "worldSize");
    int mapSize = Ogre::StringConverter::parseInt(XMLNode->first_attribute("mapSize")->value());
    bool colourmapEnabled = getAttribBool(XMLNode, "colourmapEnabled");
    int colourMapTextureSize = Ogre::StringConverter::parseInt(XMLNode->first_attribute("colourMapTextureSize")->value());
    int compositeMapDistance = Ogre::StringConverter::parseInt(XMLNode->first_attribute("tuningCompositeMapDistance")->value());
    int maxPixelError = Ogre::StringConverter::parseInt(XMLNode->first_attribute("tuningMaxPixelError")->value());
 
    Ogre::Vector3 lightdir(0, -0.3, 0.75);
    lightdir.normalise();
    Ogre::Light* l = mSceneMgr->createLight("tstLight");
    l->setType(Ogre::Light::LT_DIRECTIONAL);
    l->setDirection(lightdir);
    l->setDiffuseColour(Ogre::ColourValue(1.0, 1.0, 1.0));
    l->setSpecularColour(Ogre::ColourValue(0.4, 0.4, 0.4));
    mSceneMgr->setAmbientLight(Ogre::ColourValue(0.6, 0.6, 0.6));
 
    mTerrainGlobalOptions->setMaxPixelError((Ogre::Real)maxPixelError);
    mTerrainGlobalOptions->setCompositeMapDistance((Ogre::Real)compositeMapDistance);
    mTerrainGlobalOptions->setLightMapDirection(lightdir);
    mTerrainGlobalOptions->setCompositeMapAmbient(mSceneMgr->getAmbientLight());
    mTerrainGlobalOptions->setCompositeMapDiffuse(l->getDiffuseColour());
 
    mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mSceneMgr, Ogre::Terrain::ALIGN_X_Z, mapSize, worldSize);
    mTerrainGroup->setOrigin(Ogre::Vector3::ZERO);
 
    mTerrainGroup->setResourceGroup("General");
 
    rapidxml::xml_node<>* pElement;
    rapidxml::xml_node<>* pPageElement;
 
    // Process terrain pages (*)
    pElement = XMLNode->first_node("terrainPages");
    if(pElement)
    {
        pPageElement = pElement->first_node("terrainPage");
        while(pPageElement)
        {
            processTerrainPage(pPageElement);
            pPageElement = pPageElement->next_sibling("terrainPage");
        }
    }
    mTerrainGroup->loadAllTerrains(true);
 
    mTerrainGroup->freeTemporaryResources();
    //mTerrain->setPosition(mTerrainPosition);
}
 
void DotSceneLoader::processTerrainPage(rapidxml::xml_node<>* XMLNode)
{
    Ogre::String name = getAttrib(XMLNode, "name");
    int pageX = Ogre::StringConverter::parseInt(XMLNode->first_attribute("pageX")->value());
    int pageY = Ogre::StringConverter::parseInt(XMLNode->first_attribute("pageY")->value());
 
    if (Ogre::ResourceGroupManager::getSingleton().resourceExists(mTerrainGroup->getResourceGroup(), name))
    {
        mTerrainGroup->defineTerrain(pageX, pageY, name);
    }
}

Po wykonaniu tego kawałka kodu dostaję log

11:05:26: Terrain created; size=513 minBatch=33 maxBatch=65 treeDepth=4 lodLevels=5 leafLods=2

Oczywiście resource mam dodane na teren:

FileSystem=Media\Terrain

Jednak żadnego terenu nie widzę.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline DamianDev

  • Użytkownik

# Wrzesień 02, 2011, 12:46:56
Moze teren jest gdzie indzej niz kamera?

Offline prociomen007

  • Użytkownik

# Wrzesień 02, 2011, 13:03:11
Raczej nie bo teren ładuje się z edytorka a w nim jest ustawiony pod obiektami. Obiekty wyświetlają się prawidłowo ale pod nimi nie ma terenu.
Poza tym kamerę mam ruchomą i nigdzie na planszy go nie ma.

Offline prociomen007

  • Użytkownik

# Wrzesień 03, 2011, 13:29:56
Ciągle ten sam problem. Czy jest morzliwe że to wina ogra?

Offline prociomen007

  • Użytkownik

# Wrzesień 04, 2011, 15:46:28
Dalej nic. To jest moje źródełko
http://www.uploader.pl/?d=4E6373432
jeśli ktoś jest w stanie pokazać mi rozwiązanie problemu jestem w stanie nawet zapłacić. Kontakt gg, 4392034.