Historique des modifications - Message

Message #8112

Sujet: Scale sur un bone


Type Date Auteur Contenu
Dernière modification 17-03-2010 17:47:46 narugohan
bon eh bah merci ILovechocolat, tu es vraiment un chef, sa m'aide enormement cette méthode, enfin mais lunette sont sur le perso lol, c'est vrai que c'est pas une mauvaise idée se que tu fais, mais j'aurai pensé que le moteur pouvais comme superposé des textures, mais bon apperement... nn mdr
Encore un grand merci a toi, c'est vraiment une bonne communeauté ici.

PS : ILovechocolat, je me permet de te demandé si tu es d'accord que je modifie ta fonction un peu, car pour le momant elle ne prend que 2 texture, je v'est la modifié pour qu'elle puisse prendre plusieurs texture, sa ne te dérange pas ?( on sais jamais :p )

EDIT : bon j'ai modifié le code tout à l'heure, donc je le met en ligne si sa peut aider certaine personne :

La fonction :

Code c++ :


irr::video::ITexture* textureSuperpose(irr::video::IVideoDriver* driver, int nbxTexture, char* image[])
{    
    irr::video::ITexture* texture[nbxTexture];
    irr::video::IImage* imageContenueSup[nbxTexture-1];
    
    for( int i=0; i<nbxTexture; i++)
         texture[i] = driver->getTexture(image[i]);
    
    irr::video::IImage* imageConteneur = driver->createImage(texture[0], irr::core::position2d<irr::s32>(0,0), texture[0]->getSize());

    for( int i=0; i<nbxTexture-1; i++)
         imageContenueSup[i] = driver->createImage(texture[i+1], irr::core::position2d<irr::s32>(0,0), texture[0]->getSize());

    for(int x = 0; x < texture[0]->getSize().Width; x++)
    {
        for(int y = 0; y < texture[0]->getSize().Height; y++)
        {
            irr::video::SColor pixel = imageConteneur->getPixel(x, y);
            irr::video::SColor pixelCont[nbxTexture-1];
            
            for( int i=0; i<nbxTexture-1; i++)
            {
                 pixelCont[i] = imageContenueSup[i]->getPixel(x, y);
                 if( pixelCont[i].getAlpha() != 0 )
                     imageConteneur->setPixel(x, y, imageContenueSup[i]->getPixel(x, y));
            }
            
        }
    }
    return driver->addTexture("__3D_view_texture__", imageConteneur);
}


Utilisation de la fonction :

Code c++ :


char* cheminTexture[2];
      cheminTexture[0] = "texturePrincipale.jpg";
      cheminTexture[1] = "texture2.png";
      cheminTexture[2] = "texture3.png";
node->setMaterialTexture(0, textureSuperpose( driver, 3, cheminTexture));


Voilà, en espérent que sa aidera certaine personne ;p
Création du message 17-03-2010 13:47:57 narugohan
bon eh bah merci ILovechocolat, tu es vraiment un chef, sa m'aide enormement cette méthode, enfin mais lunette sont sur le perso lol, c'est vrai que c'est pas une mauvaise idée se que tu fais, mais j'aurai pensé que le moteur pouvais comme superposé des textures, mais bon apperement... nn mdr
Encore un grand merci a toi, c'est vraiment une bonne communeauté ici.

PS : ILovechocolat, je me permet de te demandé si tu es d'accord que je modifie ta fonction un peu, car pour le momant elle ne prend que 2 texture, je v'est la modifié pour qu'elle puisse prendre plusieurs texture, sa ne te dérange pas ?( on sais jamais :p )

EDIT : bon j'ai modifié le code tout à l'heure, donc je le met en ligne si sa peut aider certaine personne :

La fonction :

Code c++ :


irr::video::ITexture* textureSuperpose(irr::video::IVideoDriver* driver, int nbxTexture, char* image[])
{    
    irr::video::ITexture* texture[nbxTexture];
    irr::video::IImage* imageContenueSup[nbxTexture-1];
    
    for( int i=0; i<nbxTexture; i++)
         texture[i] = driver->getTexture(image[i]);
    
    irr::video::IImage* imageConteneur = driver->createImage(texture[0], irr::core::position2d<irr::s32>(0,0), texture[0]->getSize());

    for( int i=0; i<nbxTexture-1; i++)
         imageContenueSup[i] = driver->createImage(texture[i+1], irr::core::position2d<irr::s32>(0,0), texture[0]->getSize());

    for(int x = 0; x < texture[0]->getSize().Width; x++)
    {
        for(int y = 0; y < texture[0]->getSize().Height; y++)
        {
            irr::video::SColor pixel = imageConteneur->getPixel(x, y);
            irr::video::SColor pixelCont[nbxTexture-1];
            
            for( int i=0; i<nbxTexture-1; i++)
            {
                 pixelCont[i] = imageContenueSup[i]->getPixel(x, y);
                 if( pixelCont[i].getAlpha() != 0 )
                     imageConteneur->setPixel(x, y, imageContenueSup[i]->getPixel(x, y));
            }
            
        }
    }
    return driver->addTexture("__3D_view_texture__", imageConteneur);
}


Utilisation de la fonction :

Code c++ :


char* cheminTexture[2];
      cheminTexture[0] = "texturePrincipale.jpg";
      cheminTexture[1] = "texture2.png";
      cheminTexture[2] = "texture3.png";
node->setMaterialTexture(0, textureSuperpose( driver, 3, cheminTexture));


Voilà, en espérent que sa aidera certaine personne ;p

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
109 invités en ligne
membre en ligne: -
RSS Feed