Historique des modifications - Message

Message #8112

Sujet: Scale sur un bone


TypeDateAuteurContenu
Dernière modification17-03-2010 17:47:46narugohan
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 message17-03-2010 13:47:57narugohan
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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
125 invités en ligne
membre en ligne: -
RSS Feed