#0 

25-08-2010 04:35:44

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

Bonjour à tous,


Je débute et je fais quelques essais de terrains avec Freeworld3d,  Earthsculptor et L3DT...mais j'ai un peu de mal en ce qui concerne les textures

Dans Irredit, pas de soucis pour importer mon terrain en heightmap et ma texture globale du terrain mais par contre je n'ai pas trouvé comment importer les alpha map (je dis "les" car il m'en sort une en échelle de gris par layer c'est normal? je pensais qu'il n'y en avait qu'une avec une couleur par layer)

Autre chose, si j'importe ce même terrain en mesh, est-ce que je peux aussi appliquer des alpha map dessus?

Je vous remercie à l'avance pour votre aide, j'ai fait pas mal de recherche mais j'ai rien trouvé d'intéressant sur ce point

Julien

Hors ligne


#1 

25-08-2010 05:28:03

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

t'as mal cherché sur le forum je pense ...

http://irrlicht-fr.org/viewtopic.php?id=1432
http://irrlicht-fr.org/viewtopic.php?id=1356
http://irrlicht-fr.org/viewtopic.php?id=1321

y en a quelques uns de topic comme ceux là ...
enfin peut-être ai-je mal compris ? je réfléchis pas beaucoup ces derniers temps ...

Hors ligne


#2 

25-08-2010 11:26:08

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

merci pour ta réponse mais je me suis peut être mal exprimé

je n'ai pas de problème de transparence, j'avais juste quelques questions concernant le chargement d'alpha map pour les textures détailléeq dans Irredit smile

Hors ligne


#3 

25-08-2010 14:05:47

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

uhm .... bon alors à mon souvenir on ne peut pas utiliser d'alpha map avec irredit, du moins avec le terrain, m'enfin je ne l'ai utilisé que quelques minutes ( donc une ancienne version )
mais je sais que sous irrlicht ça ne pose aucun soucis, que ce soit la détail-map, ou la color-map, ou autre chose


en tout cas tout ce que je peux te dire c'est d'éviter de l'utiliser, il arrivera un moment où tu auras besoin de node perso, et là bien sûr ça ne va pas arranger les choses smile

j'ai opté pour tout faire en perso, pas d'outils externes, si ce n'est blender, codeblocks et les libs, ce n'est peut-être, voir certainement pas le plus simple pour commencer,
mais c'est ce que j'ai fait et tu devras passer par là presque à coup sûr ...

ps: je me fais un peu vieux dans le domaine d'irrlicht, je n'y ai pas touché sérieusement depuis ... uhm plus de 8 mois ? ... je suis plus très d'actualité wink

Hors ligne


#4 

26-08-2010 00:41:30

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

merci pour ta réponse smile

en fait je voulais utiliser irredit uniquement pour tout ce qui est terrain, décor, bref tout ce qui est statique mais c'est vrai qu'au final, je pense peut être faire tout ça sous blender ou 3ds...(même si ça va faire un très gros mesh ^^)

par contre, j'aimerais quand même texturer ma map avec un terrain éditor (c'est quand même plus pratique...) mais je ne peux pas appliquer la méthode d'alpha map du coup?

Dernière modification par magikus59 (26-08-2010 00:41:48)

Hors ligne


#5 

26-08-2010 00:55:27

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

si si tu peux utiliser l'aplha map, mais faudra que tu passes par un éditeur de terrain perso, ou, si tu veux quand même utiliser irredit, tu modifies ta "color map" après: gimp, inkscape ...

edit: le problème c'est pas irrlicht, mais Earthsculptor pour l'alpha sur la "color map" de celui-ci, à moins qu'il y ait une option ?
mais là je peux pas t'aider, je suis sous linux et il ne me semble pas qu'il y ait les source ou un précompilé en x86_64 ....
ps:  le coup du gros mesh sous blender pour un terrain, évite ... ça sera tout sauf optimiser, et n'imagine même pas la taille qu'un fichier de 50Mo peut prendre en ram ... beaucoup plus !

Dernière modification par Magun (26-08-2010 00:58:24)

Hors ligne


#6 

26-08-2010 01:45:10

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

oui je pense que tu as raison pour le gros mesh ^^

bon du coup je vais utiliser des heithmaps classiques, j'ai un peu de mal pour le moment avec les alpha map
en fait c'est bon, j'arrive à les exporter avec Freeworld mais j'arrive pas encore à les intégrer à irrlicht


EDIT:
voici un exemple en XML de ce que me sort Freeworld, c'est ça en gros que je voudrais integrer à Irrlicht mais je sais pas comment déclarer ces alphamaps

Code:

<Freeworld3D Version="2.0">
<Environment>
    <Viewport Color="128,128,128" Fov="60.000000" NearClip="0.500000" FarClip="10000.000000"/>
</Environment>
  
  
<Terrain Size="257" Step="1.000000">
    <Heightmap File="/terrain/heightmap.bmp" Format="24bit BMP" Scale="1.000000"/>
</Terrain>
  
  
<TerrainLayers Count="3">
    <TerrainLayer Name="New_Layer" Type="Base Layer">
        <Texture File="/terrain/New_Layer.jpg" ScaleU="400.000000" ScaleV="400.000000"/>
    </TerrainLayer>
  
  
    <TerrainLayer Name="New_Layer1" Type="Alpha Layer" Detail="False">
        <Texture File="/terrain/New_Layer1.jpg" ScaleU="20.000000" ScaleV="20.000000"/>
        <AlphaMap File="/terrain/New_Layer1_alpha.raw" Width="512" Height="512"/>
    </TerrainLayer>
  
  
    <TerrainLayer Name="New_Layer2" Type="Alpha Layer" Detail="False">
        <Texture File="/terrain/New_Layer2.jpg" ScaleU="1.000000" ScaleV="1.000000"/>
        <AlphaMap File="/terrain/New_Layer2_alpha.raw" Width="512" Height="512"/>
    </TerrainLayer>
  
  
</TerrainLayers>
</Freeworld3D>

Dernière modification par magikus59 (26-08-2010 02:06:13)

Hors ligne


#7 

26-08-2010 13:28:45

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

le fichier xml généré par freeworld 3d n'est pas compatible avec celui que irrlicht charge
au mieux il faut que tu passes par irredit ou que tu le réécrives, mais tu peux toujours utiliser les data en interne ( src )

Dernière modification par Magun (26-08-2010 13:30:47)

Hors ligne


#8 

27-08-2010 01:08:29

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

oui oui je sais que ce n'est pas utilisable t'en fais pas, j'ai mis ça dans mon code en me disant "ça marche poooo...) wink

non en fait j'ai du mal à m'expliquer: j'arrive à créer mon terrain et à mettre la texture principale dessus:

Code c++ :


scene::ITerrainSceneNode* terrain = sceneManager->addTerrainSceneNode(
        "da.bmp",
        0,                   
        -1,                   
        core::vector3df(0.f, 0.f, 0.f),       
        core::vector3df(0.f, 0.f, 0.f),   
        core::vector3df(40.f, 40.f, 40.f),   
        video::SColor ( 255, 255, 255, 255 ),   
        5,                   
        scene::ETPS_17,               
        5                   
        );

    terrain->setMaterialType(video::EMT_DETAIL_MAP);
    terrain->setMaterialTexture(0, driver->getTexture("da_tex.jpg"));

        terrain->setMaterialFlag(video::EMF_LIGHTING, false);


jusque là ça va mais par contre je ne sais pas comment déclarer l'alpha de ma texture "détail" et sa texture associée
je me doute qu'il faut utiliser un truc du genre : >setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL); mais après....

merci pour ton aide en tout cas, c'est bien sympa smile

Hors ligne


#9 

27-08-2010 03:11:58

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

et bien oui il faut utiliser le flag EMT_TRANSPARENT_ALPHA_CHANNEL, mais l'ordre n'a pas d'importance, que ce soit avant ou après quoi que ce soit ( enfin après l'initialisation mais ça je pense que tu t'en doutes )

tu devrais désactiver le flag EMF_FOG aussi, histoire d'être sûr, je ne sais plus s'il y est par défaut ... je ne crois pas mais bon
sinon pour info le jpg/jpeg ne supporte pas la transparence, il te faut passer par un png/tga/bmp ( mais irrlicht ne supporte pas l'alpha en bmp ( mode: argb 32bit ) il me semble, à voir dans les sources ... )
donc du coup, forcément ton éditeur d'image remplace l'alpha channel par une autre couleur smile

Hors ligne


#10 

27-08-2010 08:19:45

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

merci mais j'avais espéré un petit bout de code pour exemple wink
car j'ai cherché hier soir et je n'ai vraiment pas réussi (je débute vraiment...pour tout ce qui est des cameras, event etc je peux me débrouiller avec des tutos mais là y'a pas grand chose qui traite ça)

par contre quand tu dis que le jpg ne supporte pas la transparence, tu parles bien de l'alpha? pas de la texture à lui appliquer?

merci encore

Hors ligne


#11 

27-08-2010 12:06:32

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

terrain:

Code c++ :


driver->setTextureCreationFlag(video::ETCF_ALWAYS_32_BIT, true);
scene::ITerrainSceneNode* terrain = smgr->addTerrainSceneNode("da.bmp");
terrain->setMaterialType(video::EMT_LIGHTMAP_ADD);
terrain->setMaterialTexture(0, driver->getTexture("da_tex.jpg"));
terrain->setMaterialFlag(video::EMF_LIGHTING, false);
terrain->setMaterialFlag(video::EMF_FOG, false);



selector:

Code c++ :


scene::ITriangleSelector* selector = smgr->createTerrainTriangleSelector(terrain, 0);
terrain->setTriangleSelector(selector);
terrain->setDynamicSelectorUpdate(true);



recupération du mesh-buffer:

Code c++ :


IMeshBuffer  *mb = terrain->getRenderBuffer();



pickin (dans le main while):

Code c++ :


irr::core::triangle3df poly;
irr::core::vector3df collide;
ISceneCollisionManager  * cm = smgr->getSceneCollisionManager();
irr::core::line3df ray = cm->getRayFromScreenCoordinates(device->getCursorControl()->getPosition(),0);
ISceneNode *tmp = cm->getCollisionPoint(ray,selector,collide, poly,tmp);
if(&tmp != &terrain) break;

// poly.pointA .y +=
// poly.pointB .y +=
// poly.pointC .y +=

switch(mb->getVertexType())
{
       case EVT_STANDARD:
            video::S3DVertex *vertices = (video::S3DVertex*)mb->getVertices();
             // je te laisse bosser un peut ici ...
       break;
       case EVT_2TCOORDS:
            video::S3DVertex2TCoords *vertices = (video::S3DVertex2TCoords*)mb->getVertices();
             // ici ...
       break;
       case EVT_TANGENTS:
            video::S3DVertexTangents *vertices = (video::S3DVertexTangents*)mb->getVertices();
             // et ici ...
       break;
}



j'ai fait en gros,  sinon je te mache vraiment le boulot la uhn ....

Hors ligne


#12 

27-08-2010 14:22:21

magikus59
Membre
Date d'inscription: 23-08-2010
Messages: 31

j'en demandais même pas tant, c'est très gentil de ta part, je vais enfin pouvoir avancer (hmmm ou plutôt démarrer mais bon ^^=

merci encore pour ton aide smile

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
882 membres
1429 sujets
11119 messages
Dernier membre inscrit: LiseBuisson96
10 invités en ligne
Aucun membre connecté
RSS Feed