IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ogre Discussion :

Connaitre le nom des textures d'un terrain


Sujet :

Ogre

  1. #1
    Invité
    Invité(e)
    Par défaut Connaitre le nom des textures d'un terrain
    Bonjour,

    Sous Ogre 1.9, je cherche à récupérer le nom des textures d'un terrain à partir de coordonnée x,y z. En fait je veux que en pointant le curseur sur une portion de terrain, il me dise quels textures on était utilisé. Ex: à 10,10,20 il y a une texture de sable, à 0,0,0 il y a une texture de pierre.etc...

    Est ce possible ?
    Dernière modification par LittleWhite ; 14/08/2015 à 18h49. Motif: Titre

  2. #2
    Invité
    Invité(e)
    Par défaut
    bon c'est bon j'ai trouvé une astuce.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut
    Bonjour,

    Ça serait sympa de nous dire ce qu'elle est car jusqu'à présent je ne vois pas comment faire.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il faut se servir de la valeur de blend pour chaque layer pour retrouver la bonne texture. Parce qu'on peut très bien mélanger une texture de sable avec de l'herbe par exemple, qu'est ce que le programme va nous retourner dans ce cas la ? he bien ça dépend de la valeur de blend. Si pour le premier layer(sable) j'ai une valeur de blend à 0.4 et pour le second layer j'ai une valeur de 0.6 (les deux font 1 donc) c'est le second layer qui domine par rapport au premier. Il me reste donc plus qu'à utiliser la fonction getLayerTextureName et donner en paramètre le bon layer.

    Voila la fonction que j'ai écrite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    td::string Listener::RecupNomTexture(Ogre::Vector3 position, Ogre::Terrain *terrain){
     
    	terrain->getTerrainPosition(position, &position);
    	size_t tx, ty;
    	int i; float blend = 0; int layer;
     
    	for (i = 1; i< terrain->getLayerCount(); i++){
    		 Ogre::TerrainLayerBlendMap* blendMap= terrain->getLayerBlendMap(i);
     
    		 blendMap->convertTerrainToImageSpace(position.x,  position.y, &tx, &ty);
     
    		 if (blend < blendMap->getBlendValue(tx, ty)){
    			 blend = blendMap->getBlendValue(tx, ty);
    			 layer = i ;
    		 }
     
    		 if (blendMap->getBlendValue(tx, ty) == 1){
    			 blend = 1;
    			 layer = i;
    		 }else if (blend == 0){
    			 layer = 0;
    		 }
     
    	}
     
    	return  terrain->getLayerTextureName(layer, 0);
     
     
     
     
    }
    Il ne faut pas oublier de convertir les coordonné World en coordonnée Terrain sinon ca marchera pas.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut
    Hum, je vois. Moi j'aurais tenté de retourner les deux noms de texture en cas de blend
    Surtout que le blend n'est pas toujours entre deux éléments. On peut faire du multitexturing entre 3, 4 ... éléments.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui mais moi je voulais qu'il me retourne la texture dominante, qu'il y est 2, 3,4 ou 0 blend. de l"herbe avec un peu de sable ça reste de l'herbe.

  7. #7
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    c'est risqué de lier du visuel pour définir la logique de l'application, quid si le game designer décide de la changer?
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je ne vois pas ou est le problème. On peut changer la map complétement le code marche toujours quand même. Sinon le game designer c'est moi.

  9. #9
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    Citation Envoyé par dragonblood Voir le message
    Je ne vois pas ou est le problème. On peut changer la map complétement le code marche toujours quand même. Sinon le game designer c'est moi.
    Le problème c'est que si ta texture s'appelle sand, que tu vas récupérer le nom "sand" pour appeler de la logique, si tu le changes en "whiteSand", cette logique ne sera plus appelée -> bug.
    http://deviq.com/separation-of-concerns/

    la texture est uniquement la représentation visuelle de l’élément que tu veux utiliser, et ne doit être utilisée qu'à cette fin, ce que tu dois avoir, c'est une représentation logique, qui elle, déterminera le comportement à adopter en fonction de la position sur la carte, et sa représentation visuelle.
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. connaitres les noms des disques locaux
    Par amirym dans le forum Général Java
    Réponses: 1
    Dernier message: 25/06/2007, 04h48
  2. [9i] connaitre le nom des fonctions/procédures
    Par lbgl dans le forum Oracle
    Réponses: 2
    Dernier message: 27/03/2007, 10h30
  3. Réponses: 22
    Dernier message: 04/08/2006, 00h29
  4. Connaitre le nom des tables d'une Base de donnée
    Par Pe04 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2006, 13h27
  5. Connaitre le nom des imprimantes
    Par bastien dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2002, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo