Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517

    [C++][OGRE] Non capisco come funziona Ogre Terrain System

    Salve a tutti.

    Apro questo post perchè non so più che pesce pigliare per capire cosa fa questa funzione:
    codice:
    void BasicTutorial3::initBlendMaps(Ogre::Terrain* terrain)
    {
        Ogre::TerrainLayerBlendMap* blendMap0 = terrain->getLayerBlendMap(1);
        Ogre::TerrainLayerBlendMap* blendMap1 = terrain->getLayerBlendMap(2);
        Ogre::Real minHeight0 = 70;
        Ogre::Real fadeDist0 = 40;
        Ogre::Real minHeight1 = 70;
        Ogre::Real fadeDist1 = 15;
        float* pBlend1 = blendMap1->getBlendPointer();
        for (Ogre::uint16 y = 0; y < terrain->getLayerBlendMapSize(); ++y)
        {
            for (Ogre::uint16 x = 0; x < terrain->getLayerBlendMapSize(); ++x)
            {
                Ogre::Real tx, ty;
     
                blendMap0->convertImageToTerrainSpace(x, y, &tx, &ty);
                Ogre::Real height = terrain->getHeightAtTerrainPosition(tx, ty);
                Ogre::Real val = (height - minHeight0) / fadeDist0;
                val = Ogre::Math::Clamp(val, (Ogre::Real)0, (Ogre::Real)1);
     
                val = (height - minHeight1) / fadeDist1;
                val = Ogre::Math::Clamp(val, (Ogre::Real)0, (Ogre::Real)1);
                *pBlend1++ = val;
            }
        }
        blendMap0->dirty();
        blendMap1->dirty();
        blendMap0->update();
        blendMap1->update();
    }
    Ma cominciamo dall'inzio. Questa mattina ho finalmente cominciato a studiare come funziona Ogre3D, il celebre engine grafico 3D scritto in C++. Sono arrivato al terzo tutorial di base, dove vengono spiegati l'Ogre Terrain System, il rendering del cielo e della nebbia. Il mio problema sta nel primo dei tre argomenti: non riesco a capire come funziona. Così è dall'una di oggi pomeriggio che cerco tra la documentazione ufficiale e sono riuscito a capire come funziona tutto, tranne la funzione che ho postato sopra che, guarda caso, è il fulcro di tutto

    Ritengo che postare tutto il codice sia troppo lungo, per questo vi rimando al link che ho lasciato, sperando che qualche anima pia mi aiuti. Per inciso, non ottengo errori, ma voglio solo capire come funziona il tutto.

    P.S.: Ho provato a cercare i vari metodi adoperati nella funzione, ma dalla documentazione ufficiale ottengo questo (ad esempio):
    TerrainLayerBlendMap* Ogre::Terrain::getLayerBlendMap ( uint8 layerIndex )

    Retrieve the layer blending map for a given layer, which may be used to edit the blending information for that layer.

    Note:
    You can only do this after the terrain has been loaded. You may edit the content of the blend layer in another thread, but you may only upload it in the main render thread.

    Parameters:
    layerIndex The layer index, which should be 1 or higher (since the bottom layer has no blending).

    Returns:
    Pointer to the TerrainLayerBlendMap requested. The caller must not delete this instance, use freeTemporaryResources if you want to save the memory after completing your editing.
    Nonostante tutto, non riesco a capire cosa sia il layer blending map for a given layer, visto che come traduzione di blending google mi suggerisce "miscelazione". E poi, che cos'è il "livello dato"(given layer) menzionato prima?

    Grazie mille a chi mi aiuterà

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ho fatto progressi: ho capito che questa è la funzione che si occupa di assegnare ad ogni punto una Texture in base alla sua altezza(rimuovendo la chiamata a questa funzione, tutto il territorio viene reinderizzato con una sola texture). Come faccia questo, però, resta un mistero. Nessuno che mi riesce ad aiutare?

    Grazie in anticipo

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.