#0 

19-10-2010 11:13:37

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

Bonjour à tous

J'ai fais une petite fonction pour ajouter des objets donc en gros à chaque fois que je veux créer un objet, je créer un node puis je lance ma fonction ex:

Code:

irr::scene::IAnimatedMeshSceneNode* arbre1;

    creer_objet(driver, sceneManager,
        "meshs/arbre.irrmesh",
                "mesh/Wood1.jpg",
                 arbre1,
        irr::core::vector3df(18512, 1419, 5440),
        etc..... etc.....);

J'ai mis aussi des bool pour savoir si ils doivent générer des ombres, lumières etc...
Par contre je ne trouve pas le moyen d'ajouter une collision avec le joueur pour chaque node créé dans ma fonction
J'ai essayé plusieurs moyen mais ça plante tout le temps (pas à la compil, je parle du programme)
Je vois le truc dans les grandes lignes (créer selector pour chaque node creer et récupérer ces selector dans un meta) mais pas moyen de mettre tout ça en oeuvre

Je ne demande pas le code complet, mais juste un ptit coup de pouce pour me remettre en scelle svp smile
Merci d'avance

Hors ligne


#1 

19-10-2010 12:30:15

nabouill
Abonné
Date d'inscription: 17-09-2009
Messages: 242
Corrections: 1

petite question, tu créer tous tes objets à l'initialisation en même temps que ton joueur, où est-ce que tu recrer des objets plus tard que tu veux à eux aussi leurs rajouter les collisions ?

pour la première partie de la question, tu peux jeter un œil au  tutorial 15 de Irrlicht qui utilise une belle boucle qui récupère tous les objets pour créer les sélecteur en fonction du type d'objet.

Pour la deuxième, ça peut être un peut plus compliqué.

Dernière modification par nabouill (19-10-2010 12:35:04)


mes sites: www.manga-vf.fr et www.series-vf.fr

Hors ligne


#2 

19-10-2010 12:43:04

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

en fait j'ai refait une fonction "charger_scene" ou je place mes fonctions "creer_objet" et c'est là dedans que je crée mes nodes d'objets
mon joueur est créé simplement dans le main
donc en gros, oui, on peut dire que mes objets sont chargés en même temps que mon joueur

mais d'un côté, ça m'intéresse aussi pour ce qui est des objets qui vont être "créés plus tard" (si je veux faire apparaitre des objets au cours du jeu)
mais là il me semble que je dois créer une classe? donc je peux laisser tomber ma pauvre fonction et plutôt m'orienter vers une classe non? smile (en plus ça me fera de l'entrainement..n'est ce pas Magun et TUpac? ^^)

merci de ton aide en tout cas nabouill smile

Hors ligne


#3 

19-10-2010 19:08:24

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Effectivement ma poule wink
C'est bien ça la poo !!
La question est comment "découper mon poulet" comme dirait mon prof d'algo.
C'est à dire dans quelle class insérer la fonction de chargement, la class de managment, la class du modèle3D ?? A mon avis tu devrais créer une class générique "Objet" et insérer ton code de chargement dans le constructeur de cette dernière.
ex:

Code c++ :


class Model
{
public:
    Model(string filename, IrrDriver &driver)
    {
          msh = driver->createMesh(filename); // c'est pour l'example c'est bien sur pas ça.
    }
    ISceneNode *nod;
    IAnimatedMesh *msh;
}

//création
Model *MyModel = new Model("objet.3ds", driver);

Dernière modification par TUpac (19-10-2010 19:10:17)


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#4 

20-10-2010 01:09:04

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

merci smile

bon ben du coup je regarde les cours sur les classes (ça à l'air moins compliqué que ça en à l'air apparemment et là je commence a comprendre le vrai principe de la POO)
une fois que je serais à l'aise avec les classes, je pourrais surement résoudre mon problème de collision (là j'avoue avoir mis la charrue avant les boeufs...wink )
(dans le cas contraire, je ferai un up de ce sujet...mouhahaha!!)

PS: du coup TUpac, après avoir lu un cours sur les classes, je vois ce que tu veux dire par "découper mon poulet", on peu faire plein de chose avec les classe, mais il y a 50000 moyen de faire ces choses wink

Hors ligne


#5 

20-10-2010 11:35:24

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Exactement je te souhaite bon courage mais n'hésite pas à poser des questions ici si tes cours ne sont pas clairs.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#6 

22-10-2010 18:48:37

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

c'est gentil TUpac, le cours sur le site du zéro est assez clair, j'ai compris et j'ai fait ma première classe (je vais maintenant m'attaquer aux héritages)
bon...ok j'en rêve un peu la nuit car je me rend compte que ça peut être très casse tête si on veux faire des trucs poussés mais bon...tongue


et merci aussi Nabouill, en fait je n'avais pas vu ton EDIT ^^
j'ai testé, ça fonctionne mais je me rend vraiment compte que la gestion des collisions d'irrlicht est toute pourrie (et je suis poli :p) car c'est pas mal bugué (même en essayant différents paramètres)
par exemple, la collision de mon joueur avec le terrain: dès que je rencontre un petit changement de hauteur, mon perso se bloque...c'est assez hasardeux en fait
de plus, j'ai constaté une chute vertigineuse de FPS lorsqu'il y a beaucoup d'objets (même en bounding box...)

enfin bref je pense que par la suite j'intègrerai Newton car même si il me faut juste de la gravité sur mon terrain et des collisions simples (mesh ou BB) sans déformations ou truc du genre, ce sera tout de même plus performant que sous irrlicht

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
39 invités en ligne
Aucun membre connecté
RSS Feed