HomeHome  CalendarCalendar  FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  RegisterRegister  Log inLog in  

Share | 
 

 [Résolu] Explosion Spark dans Irrlicht

View previous topic View next topic Go down 
AuthorMessage
nabouill



Messages : 12
Date d'inscription : 2010-07-13

PostSubject: [Résolu] Explosion Spark dans Irrlicht   Wed Jul 21, 2010 5:49 pm

Bonjour
Je développe un petit FREE FPS Online, le projet avance pas mal
(une petite démo qui date un peut mais qui donne une idée)
Le projet a bien avancé depuis.
En essayant les démos de Spark, j'avoue avoir vraiment adoré les explosions. J'aimerais donc les insérer dans mon projet.

Le problème est que je n'est pas bien compris avec les 2 codes exemples de Spark/Irrlicht comment faire pour utiliser Spark dans Irrlicht (les démo fournie oui j'ai un peu près compris, mais je n'arrive vraiment pas à insérer la même explosion dans Irrlicht Crying or Very sad , et c'est vrai que je suis bien loin d'être une vedette en prog).

Serait-il possible d'avoir, ne serait-ce qu'un tout petit bout de code d'exemple qui pourrais intégrer une si belle explosion dans Irrlicht SVP ?

D'avance merci.


Last edited by nabouill on Mon Aug 02, 2010 7:12 pm; edited 1 time in total
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Thu Jul 22, 2010 3:16 pm

Bonjour,

Il n'y a pas grand chose a faire pour porter la démo explosion sur Irrlicht. Il te suffit de de changer les GL...Renderer en IRR...Renderer et puis d'utiliser un IRRSystem a la place d'un System. Après regarde bien le code des démos Irrlicht. Si tu as des problèmes, dis nous ou tu bloques plus précisément.
Back to top Go down
View user profile http://spark.developpez.com
nabouill



Messages : 12
Date d'inscription : 2010-07-13

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Sat Jul 31, 2010 7:16 pm

OK merci pour ta réponse, effectivement cela n'a pas été si compliqué que ce que je pensais au début. (bien que cela ma pris quelque temps quand même)
Donc ça marche impec, merci encore. Seulement il y a une chose que je n'es pas compris, dans le code de démo j'ai repompé ça:
Code:

list<System*>::iterator it = particleSystems.begin();
while(it != particleSystems.end())
{
   // Updates the particle systems
   if (!(*it)->update(deltaTime * 0.001f))
   {
      // If a system is sleeping, destroys it
      destroyParticleSystem(*it);
      // And erases its entry in the container
      it = particleSystems.erase(it);
   }
   else
   ++it;
}
je n'es pas compris le parametre envoyer à "update(...)" à la ligne:
if (!(*it)->update(deltaTime * 0.001f))

vue que je n'utilise pas de "deltatime" moi je lui est envoyer en paramètre (0.0001f) au hasard, ça marche, mais je ne sais pas pourquoi, ni a quoi correspond le paramètre exact a envoyer!

Est-ce que quelqu'un pourrait m'éclairer s'il vous plait ?
D'avance merci.
Back to top Go down
View user profile
stardeath
Committer


Messages : 140
Date d'inscription : 2009-08-24

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Sun Aug 01, 2010 5:40 am

update prend généralement en paramètre le temps qui s'est écoulé depuis le dernier appel, ce qui permet souvent de faire correspondre le temps de la simulation avec le temps réel.
Back to top Go down
View user profile
nabouill



Messages : 12
Date d'inscription : 2010-07-13

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Sun Aug 01, 2010 5:20 pm

OK merci, mais juste une petite chose, il prend en paramètre le temps en nanoseconde si j'ai bien compris ?

Aussi, j'aurais une autre petite question, ma petite explosion fonctionne à merveille sauf quand je la déplace Crying or Very sad
si je ne touche pas à sa position je peut faire le tour avec ma camera, tout se passe bien, je la vois tout le temps.

Par contre si je change sa position, je ne la vois pas toujours, cela dépend de l'angle de vue de ma camera, je ne vois l'explosion que
si ma camera est mise en rotation entre -50 et 140 sur l'axe de Y, sinon je ne la vois pas ! j'ai le même problème avec l'axe des X (mais je n'es pas pris de mesure, je peux le faire si il le faut).
Pour changer la position de mon explosion, j'utilise:
Code:
system->setTransformPosition(Vector3D(500.0f,00.0f,500.0f));
system->updateTransform();

Est-ce moi qui n'utilise pas la bonne méthode pour changer la position, est-ce un bug... Quelqu'un aurait-il une petite idée comment régler ce problème ?

Si il vous voulez des bouts de codes, une vidéo de démo du bug, où autres..., faite signe, je mettrais ça.

D'avance merci.
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Sun Aug 01, 2010 6:48 pm

Dans les démos, le temps est passé en secondes (deltatime etant en millisecondes) mais ca n'a pas vraiment d'importance. L'unité est totalement arbitraire. L'important étant que, si tu passes le temps en secondes, les paramètres utilisés pour setter le système de particule soit en secondes aussi. Par exemple setFlow(10) sur un emitteur te donne 10 particules par seconde si tu passes le temps en seconde mais si tu le passe en miliseconde ce sera 10 particules par millisecondes... Pareil pour les forces et tout ce qui a une unité fonction du temps en général.

Pour la disparation de l'explosion, je ne pense pas qu'il y ai un bug a ce niveau. Est ce que ce n'est pas tout simplement parceque l'explosion sort du champ de la caméra que tu ne la vois plus ?
Back to top Go down
View user profile http://spark.developpez.com
nabouill



Messages : 12
Date d'inscription : 2010-07-13

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Mon Aug 02, 2010 7:19 am

ben non, il me semble qu'une vidéo s'impose:
si tu regarde bien, quand je me tourne un peu vers la droite, l'explosion disparait, et dés que je me retourne vers la gauche, elle réapparait.


Et ce qui est plus étrange, c'est que si je ne fais aucun changement sur la position de l'explosion, c'est a dire que je la laisse exploser a sa position initial (0,0,0) il n'y à aucun problème.

Ce soir j'essayerais de mettre mon code en upload si tu veux.
Back to top Go down
View user profile
stardeath
Committer


Messages : 140
Date d'inscription : 2009-08-24

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Mon Aug 02, 2010 10:52 am

ça me ferait penser à une erreur dans l'orientation des billboards, spark doit mal récupérer la matrice de vue et ça fout donc le merdier.
Back to top Go down
View user profile
nabouill



Messages : 12
Date d'inscription : 2010-07-13

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Mon Aug 02, 2010 11:54 am

Il semblerais que cela dépend de la position a la quel se produit l'explosion, dans le projet de la vidéo ci dessus, le phénomène se produit seulement si l'explosion éclate a + de 170 unité du point 0, et cela sur n'importe quel axe.
Mais si je fais éclaté l'explosion par exemple a Vector3D(50.0, 10.0, 40.0) il n'y a aucun problème.
Aussi je me suis rendu compte que plus on plaçait l'explosion loin plus l'angle sur le quel on ne vois pas l'explosion est grand.

Aussi pour des test, j'ai recréer un petit projet qui fait une explosion au point 0,0,0 avec le clic gauche, et a 500,0,0 avec le clic droit. Une petite boule bleu est à la position de l'explosion 2 comme point de repère. (pour être sur que l'on regarde au bonne endroit quand on ne vois pas l'explosion) dans ce test le phénomene ne se produit seulement dépasser les environ 500 unitées

si vous voulez jetez un œil: www.mediafire.com / ?669fcfba9b99uxo

Moi j'avoue que je ni comprend plus rien Shocked

edit: la creation de lien ne veut pas marcher, faite un copier/coller du lien et enlevé les espaces pour le téléchargé (le sort s'acharne!)

Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Mon Aug 02, 2010 2:40 pm

Ca m'a tout l'air d'être un problème de culling. Le calcul de la bounding box du system ne doit pas être activé alors qu'elle est testé (du coup c'est le point (0,0,0) qui est testé je pense). Essaie de faire un setAutomaticCulling(irr::scene::EAC_OFF) sur le systeme pour desactiver le culling ou alors d'activer le calcul des bounding box des groupes et du systeme.

De mon coté je vais regardé si je ne pas améliorer le truc.
Back to top Go down
View user profile http://spark.developpez.com
nabouill



Messages : 12
Date d'inscription : 2010-07-13

PostSubject: Problème résolue   Mon Aug 02, 2010 5:57 pm

Quote :
Essaie de faire un setAutomaticCulling(irr::scene::EAC_OFF) sur le systeme pour desactiver le culling

C'est EXACTEMENT ça, vraiment impeccable. Very Happy

Merci

Back to top Go down
View user profile
teto



Messages : 19
Date d'inscription : 2010-08-29

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Sun Aug 29, 2010 5:27 pm

Bonjour nabouill,

J'ai vu que tu avais transposé le code des explosions de spark vers irrlicht et c'est exactement ce que je comptais faire. Est-il possible que tu postes le code correspondant ici pour d'autres step ?


Nb: je t'ai pm le mm message pr mettre toutes les chances de notification de mon côté :p
Back to top Go down
View user profile
nabouill



Messages : 12
Date d'inscription : 2010-07-13

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Mon Aug 30, 2010 7:12 pm

Juff a dit:
Quote :
Il te suffit de de changer les GL...Renderer en IRR...Renderer et puis d'utiliser un IRRSystem a la place d'un System

en faite c'est exactement ça ni plus ni moins. et de rajouter la solution poster 2 post au dessus.
Je veux bien te mettre mon code si tu veut, Mais je ne sais pas si il va bien corresponde a ce que tu cherche faire suivant les dimensions dans l'espace + j'ai remodifié pas mal de truc pour mes besoins donc il n'est plus tout à fait comme l'original.

Tu peux aussi télécharger le code qui correspond au dimension d'origine de la demo de Spark que j'ai converti pour Irrlicht que j'ai mis 4-5 post au dessus (convertie heuu.. , pas entièrement, mais le system est bien là).

Mais si vraiment ça ne te suffit pas, refait signe je te mettrais mon code exact, y a pas de soucis (c'est juste que ça fait un peu lourd je trouve pour un post sur un forum)
Back to top Go down
View user profile
teto



Messages : 19
Date d'inscription : 2010-08-29

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Tue Aug 31, 2010 6:40 am

ok, après avoir un peu touché à irrlicht, je me rends compte qu'effectivement je peux le faire rapidement seul.

Si jamais j'ai un pb, je te redemanderai ton code Wink
Back to top Go down
View user profile
teto



Messages : 19
Date d'inscription : 2010-08-29

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Tue Aug 31, 2010 8:58 am

J'ai qques soucis
Juste pour signaler que il y a ambiguité quand on appelle getID d'un IRRsystem car il sait pas choisir entre le getID de Registerable ou du SceneNode (dont hérite IRRSystem).

J'ai résolu ca en faisant comme suit mais d'un point de vue design on peut faire mieux je pense:
system->SPK::Registerable::getID();

J'arrive a compiler le code sous irrlicht mais je peux pas vraiment tester maintenant. Je vous tiendrai au courant demain :p

Signé: le spammeur fou.
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Tue Aug 31, 2010 9:12 am

Soit çà (c'est tout à fait correct d'un point de vue design quoi qu'un peu lourd), soit tu manipules le systeme avec un System* plutot qu'un IRRSystem* comme çà çà lève l'ambiguité :

Code:
SPK::System* mySystem = SPK::IRR::IRRSystem::create(...)

Je leverais l'ambiguité dans la version à venir en remplacant la méthode par un getSPKID() tout en gardant l'autre méthode en deprecated pour la rétro compatibilité.
Merci pour tes remarques en tout cas qui me sont très utiles pour améliorer la lib.
Back to top Go down
View user profile http://spark.developpez.com
matt
Guest



PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Wed Sep 01, 2010 5:44 pm

Tu m'encourages à spammer donc j'y vais:
Petite remarque en passant, spark ne fournit pas sa version de PI alors que c'est utilisé dans tous les exemples (qd on fait un copier/coller, on est obligé de remplacer les PI par M_PI ou bien définir PI). Comme tu déclare 2 fois PI dans le scope de 2 fonctions, pk ne pas créer une variable SPK_PI (ou bien SPK::PI) mais j'imagine que tu as déjà du peser le pr/contre.

Autre rq que j'ai déjà faite dans l'autre post, c'est vraiment contraire à la philosophie d'irrlicht de ne pas afficher le Node si y a pas de parent de précisé (dans irrlicht si y a pas de parent alors on le rattache au getRootSceneNode() ).


Sinon pb genant tt de mm, je crée une explosion au point 0,0,0 ca s'affiche nickel.
Je fais un SPK_Copy de ce system sur lequel je change la position via system->setPosition( core::vector3df(100,100,400) );
et l'explosion s'affiche quand mm en 0,0,0 :s

matt

Ps: qd j'aurai un peu de temps je finirai de transposer le code de l'explosion vers irrlicht (y a certain truc pas évidents genre transposer le code "GLPointRenderer::loadGLExtPointSprite() && GLPointRenderer::loadGLExtPointParameter()"
en utilisant irr::COpenGLExtensionHandler::queryOpenGLFeature . Par défaut irrlicht propose pas de vérifier si une extension Point_sprite est disponible (trop bas niveau), j'ai du farfouillé un peu dans le code avt ( c pas documenté xS )
)
Back to top Go down
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Wed Sep 01, 2010 7:05 pm

Pour PI ce n'est pas définie dans spark tout simplement parceque je juge que c'est en dehors du scope de la librairie. Je le définie en constante dans les démos quand j'en ai besoin et aussi en interne dans la lib mais je ne l'expose pas.

Pour le node avec un parent null je veux bien mais ca me parait pas être implémenté comme çà dans le constructeur de ISceneNode :

Code:

ISceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id=-1,
      const core::vector3df& position = core::vector3df(0,0,0),
      const core::vector3df& rotation = core::vector3df(0,0,0),
      const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f))
   : RelativeTranslation(position), RelativeRotation(rotation), RelativeScale(scale),
      Parent(0), SceneManager(mgr), TriangleSelector(0), ID(id),
      AutomaticCullingState(EAC_BOX), DebugDataVisible(EDS_OFF),
      IsVisible(true), IsDebugObject(false)
{
   if (parent)
      parent->addChild(this);

   updateAbsolutePosition();
}

D'après le constructeur, si le parent est null, il n'est attaché à rien. Est ce que ce serait pas construisant son Node d'une autre manière qu'il est attaché au root si null (genre avec une factory ou autre pattern de construction) ?

Pour le setPosition tu as raison, il y a une petite modif a faire pour que ca fonctionne, je la ferais demain. En attendant, si tu appelles un updateAbsolutePosition() après le setPosition() ca devrait marcher.

Pour les extesions OpenGL, laisse tomber, utilise directement le IRRQuadRenderer. Le rendu des point étant mal géré dans Irrlicht, les point sprites ne feront pas l'affaire.

Merci pour tes remarques. Le module Irrlicht a encore besoin d'être amélioré. N'utilisant pas Irrlicht moi même, je compte sur les retours des utilisateurs pour m'aider à l'améliorer. Le module Irrlicht de la version 2 devrait être beaucoup plus en accord avec la philosophie d'Irrlicht.

[EDIT] J'ai mis sur svn les modifs. Maintenant le set de la transformée devrait fonctionner en passant par l'interface d'Irrlicht
Back to top Go down
View user profile http://spark.developpez.com
matt
Guest



PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Thu Sep 02, 2010 3:04 pm

la version du svn a l'air de marcher . Le changement de position est pris en compte maintenant sur la démo je peux pas voir si ca bouge selon le bon axe donc je vais tester sur mon projet principal.

Code:
Pour les extesions OpenGL, laisse tomber, utilise directement le IRRQuadRenderer. Le rendu des point étant mal géré dans Irrlicht, les point sprites ne feront pas l'affaire.
j'ai demandé de l'aide sur le forum d'irrlicht et bon j'abandonne, suffit de passer par les fonctions du GLRenderer pr obtenir le resultat (pr opengl :s):

Je me demandais comment savoir si mon IRRSystem est encore actif ? apparemment on le sait quand update renvoie false mais si irrlicht l'update lui mm alors je recupère pas cette valeur ? Faut-il que je vérifie groupe par groupe ?

merci pr ta réactivité et vive le Quebec libre xD
Back to top Go down
Darktib
Committer


Messages : 389
Date d'inscription : 2009-07-20
Localisation : A coté de Paris

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Thu Sep 02, 2010 3:59 pm

Note: il est tout de même possible de texturer des point sprite avec Irrlicht, dans le IRRPointRenderer il faut mettre une taille d'environ 40-60 voir plus. Après, c'est moins évolué que les quads. Cela peut être plus performant que les quads, mais attention, ca dépend vraiment du système (si les points doivent être très gros, genre taille à ~ 200 et +, vaut mieux utiliser les quads), enfin le mieux c'est de tester Wink
Back to top Go down
View user profile
Juff
Developer


Messages : 539
Date d'inscription : 2009-07-14
Age : 34

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Fri Sep 03, 2010 4:28 am

matt wrote:
Je me demandais comment savoir si mon IRRSystem est encore actif ? apparemment on le sait quand update renvoie false mais si irrlicht l'update lui mm alors je recupère pas cette valeur ? Faut-il que je vérifie groupe par groupe ?

Regarde du coté de la méthode hasFinished() de IRRSystem.

Quote :
merci pr ta réactivité et vive le Quebec libre xD

Smile Je suis plus au Québec en fait, j'étais exilé à Montréal l'année dernière mais je suis de nouveau en France. J'ai oublié d'updater mon statut
Back to top Go down
View user profile http://spark.developpez.com
teto



Messages : 19
Date d'inscription : 2010-08-29

PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Sun Sep 05, 2010 2:15 pm

ok merci pr les infos
Back to top Go down
View user profile
Sponsored content




PostSubject: Re: [Résolu] Explosion Spark dans Irrlicht   Today at 10:10 am

Back to top Go down
 
[Résolu] Explosion Spark dans Irrlicht
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» Hanna-Adapt or Die 2011-DVDRip
» Pictures to drool over

Permissions in this forum:You cannot reply to topics in this forum
 :: Forum Francais :: Questions (fr)-
Jump to: