HomeHome  CalendarCalendar  FAQFAQ  SearchSearch  MemberlistMemberlist  UsergroupsUsergroups  RegisterRegister  Log inLog in  

Share | 
 

 Possibilité d'émettre des émetteurs [~=Feature Request]

View previous topic View next topic Go down 
AuthorMessage
Darktib
Committer


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

PostSubject: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 09, 2009 5:57 pm

Hello,

Une petite question sur une fonctionnalité qui pourrait etre utile: l'emission d'émetteurs. Ca permettrait d'éviter d'avoir à utiliser plusieurs systèmes et donc pourrait ajouter une petite amélioration de perfs.

Avis ?
Back to top Go down
View user profile
stardeath
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 09, 2009 7:40 pm

l'idée a l'air très intéressante, maintenant faut l'aval du grand patron ^^
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 09, 2009 9:30 pm

Oui, c'est vraiment une feature que je vais devoir mettre un de ses 4.

En fait ce n'est pas vraiment emettre des emetteurs mais plutot attacher des emetteurs à des particules. De cette facon, les emetteurs se déplacent comme s'ils étaient des particules tout en emettant leur quota de particules. Ils faut obligatoirement 2 groupes quand même parceque si les emetteurs étaient attachés a des particules du même groupe que les particules qu'ils emettent bah ca signifie que les particules qu'ils emettent vont aussi avoir des emetteurs attachées à elles et ainsi de suite et on arrive rapidement a une infinité théorique de particules...

En fait c'est déjà faisable mais pas de façon automatique :
Il suffit d'avoir un système avec 2 groupes : un groupe qui emettra des particules "fantomes" (sans renderers attaché) et un autre qui servira a recevoir les particules émises. Avec un callback sur l'update ou un modifieur custom sur le premier groupe on emet des particules dans le second groupe a chaque update aux positions des particules du premier groupe.

Après c'est vrai qu'il faudrait un système automatique qui serait simple a utiliser et puissant. J'ai quelques trucs a finir avant et je m'attaque a ca.
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Tue Nov 10, 2009 1:48 pm

OK. En, ca consisterait dans SPARK a créer un émetteur dès qu'une particule est créée, et à l'attacher à ladite particule ? (l'émetteur est ajouté dans le groupe 2);

PS: la demo galaxie est très bien faite, assez impressionnante !
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Tue Nov 10, 2009 3:54 pm

Ouais c'est ca l'idée en gros.

merci pour la démo Very Happy
Back to top Go down
View user profile http://spark.developpez.com
stardeath
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Tue Nov 10, 2009 5:15 pm

pareil, sympa la démo, il faudrait peut être un fade sur les particules en fin de vie, ça disparait d'un coup chez moi
Back to top Go down
View user profile
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 16, 2009 3:01 pm

Une autre requete : changer le modèle d'un groupe on live. En regardant le code source, ca n'est pas surhumain, et ca pourrait etre super pratique. Un code rapidement fait:

Code:

virtual void Group::setModel(Model* m)
{
   if(!m) return;

   model = m;
   delete[] particleEnableParams;
   delete[] particleMutableParams;

   particleEnableParams = new float[pool.getNbReserved() * model->getNbValuesInParticleEnableArray()];
   particleMutableParams = new float[pool.getNbReserved() * model->getNbValuesInParticleMutableArray()];

   for (Pool<Particle>::iterator it = pool.begin(); it != pool.endInactive(); ++it)
   {
      it->enableParams = particleEnableParams + it->index * model->getNbValuesInParticleEnableArray();
      it->mutableParams = particleMutableParams + it->index * model->getNbValuesInParticleMutableArray();
   }
}
A améliorer, notamment en restaurant toutes les données de l'ancien modèle qui sont aussi dispo dans le nouveau.
Qu'en pensez-vous ? (Si c'est bon je veux bien continuer et finir la fonction)

PS:A ce propos, qu'est-ce qui est le mieux : créer un nouveau topic pour chaque requête, ou utiliser ce topic ?
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 16, 2009 3:43 pm

Oui ce ne serait pas forcément compliqué a mettre en place mais est ce bien necessaire d'avoir la possibilité de changer le modèle d'un groupe au run time ? Sachant que ca impose de la reallocation de toute facon et que je ne vois pas forcément de raison pratique de le faire. Il faut quand meme eviter au maximum de la reallocation dynamique de ressource. La méthode reallocate de group existe mais c'est pas forcément conseillé de s'en servir (autant bien sette des le début la capacité du groupe). Pareil pour les modeles, autant bien configurer le modèle de son groupe au début. Changer le modele c'est comme utiliser le meme système pour rendre 2 effets différents, ce qui n'a pas beaucoup de sens.

Enfin en ce moment je travaille sur le modele pas mal pour intégrer un moyen d'interpoler de facon très précise les paramètres des particules en attachant des interpolators aux modèles donc la structure interne des données va changer bientot.

Après ca peut peut etre pertinant dans certains cas précis. A voir, mais pas tout de suite a cause des changements de la structure interne a venir.
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 16, 2009 3:51 pm

En fait, c'est utile lorsque la classe qui gère tout ce qui à trait à spark réagit à une commande externe - cette commande pouvant lui demander de changer les paramètres enable, mutable et random du modèle. Par exemple, un éditeur.
Après, il faudrait mettre dans la doc que cette opération est longue, donc que ce n'est en général pas une bonne idée de l'utiliser, sauf cas extrême.

Mais comme tu l'as dis, ca viendra après la nouvelle structure des modèles.
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 16, 2009 4:45 pm

Oui c'est pas faux, pour un editeur ca peux avoir du sens. On verra. D'ailleurs j'ai commencé un editeur (pas beaucoup avancé pour l'instant) avec wxWidgets. Je le poserai sur le svn quand ca aura un peu plus avancé.
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Mon Nov 16, 2009 5:08 pm

Ah tiens? Toi aussi^^ lol. Je me suis amusé à commencer un éditeur, avec Qt, dont le but est d'etre le plus modulable possible. Pareil... il n'est pas beaucoup avancé (mais j'ai déjà toute l'architecture-non programmé, juste imaginée-, et la gui avance très vite grace à QDesigner)
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Tue Nov 17, 2009 2:32 pm

Ok, cool !

J'ai ouvert un nouveau post pour en parler.
Back to top Go down
View user profile http://spark.developpez.com
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Sat Nov 21, 2009 2:41 pm

stardeath wrote:
il faudrait peut être un fade sur les particules en fin de vie, ça disparait d'un coup chez moi

J'ai updaté la démo en rajoutant un fade out sur les particules en utilisant la nouvelle classe interpolator
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Sat Nov 21, 2009 3:05 pm

Tiens, c'est le premier truc que j'ai regardé^^ C'est vrai que ca rend beaucoup mieux maintnant.

A ce propos, la nouvelle version ne compile pas avec mingw (Qt ou non):
Dans SPK_Interpolator.h, tu utilise l'enum ModelParam à la ligne 30 sans l'avoir déclaré (texto du compilateur). Ca me parait bizarre, normalement il me semble que l'on peut utiliser une déclaration d'enum comme ca...

Je vais tester avec VC++.
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Sat Nov 21, 2009 3:14 pm

Apparemment la forward declaration d'une enumeration ne fait pas partie de la norme C++. Visual l'accepte mais c'est un compilo qui est très permissif. Il faut que je change ca.

[EDIT] voila, maintenant ca devrait marcher
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Sat Nov 21, 2009 3:36 pm

Si je ne m'abuse, il faut que je regénère les projets C::B.

En effet, ca compile avec mingw sous QtCreator mais pas avec C::b, et je vois qu'il manque des fichiers au projet.

C'est fait, et C::B m'insulte toujours:
Code:
-------------- Build: Debug Win32 in SPARK Engine CORE DLL ---------------

Compiling: ..\..\..\src\SPK_All.cpp
In file included from ../../../include/Core/SPK_Model.h:28,
                from ../../../include/Core/SPK_Particle.h:29,
                from D:\SPARK\src\Core/SPK_Renderer.cpp:24,
                from D:\SPARK\src\SPK_All.cpp:42:
C:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_function.h: In member function `bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = SPK::Interpolator::Entry]':
C:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_tree.h:871:  instantiated from `std::pair<typename std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::insert_unique(const _Val&) [with _Key = SPK::Interpolator::Entry, _Val = SPK::Interpolator::Entry, _KeyOfValue = std::_Identity<SPK::Interpolator::Entry>, _Compare = std::less<SPK::Interpolator::Entry>, _Alloc = std::allocator<SPK::Interpolator::Entry>]'
C:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_set.h:314:  instantiated from `std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, _Alloc>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const _Key&) [with _Key = SPK::Interpolator::Entry, _Compare = std::less<SPK::Interpolator::Entry>, _Alloc = std::allocator<SPK::Interpolator::Entry>]'
../../../include/Core/SPK_Interpolator.h:193:  instantiated from here
C:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_function.h:227: error: no match for 'operator<' in '__x < __y'
In file included from D:\SPARK\src\SPK_All.cpp:46:
D:\SPARK\src\Core/SPK_Interpolator.cpp: At global scope:
D:\SPARK\src\Core/SPK_Interpolator.cpp:32: error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&SPK::Interpolator::computeXLifeTime'
D:\SPARK\src\Core/SPK_Interpolator.cpp:33: error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&SPK::Interpolator::computeXAge'
D:\SPARK\src\Core/SPK_Interpolator.cpp:34: error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&SPK::Interpolator::computeXParam'
D:\SPARK\src\Core/SPK_Interpolator.cpp:35: error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function.  Say `&SPK::Interpolator::computeXVelocity'
Back to top Go down
View user profile
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Sat Nov 21, 2009 3:45 pm

juste un up.

Donc après vérification, sous mingw ca ne compile pas. Avec QtCreator je ne faisait qu'utiliser les include, qui, eux, marchent.
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Sat Nov 21, 2009 4:20 pm

Bon voila, ca compile sous mingw.

J'ai du rendre la classe Entry externe a Interpolator. C'est moins bien mais bon ca marche.
Pour les pointeur sur fonctions membre j'avais juste oublier un truc que visual laissé passé.

Faut que je pense a vérifier que ca compile bien avec minGW quand je fais des grosses modif...
Enfin la ca devrait marcher.
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Sat Nov 21, 2009 6:42 pm

Je confirme, tout marche très bien maintenant.
Back to top Go down
View user profile
Juff
Developer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Tue Aug 10, 2010 5:39 pm

j'ai implémenté la possibilité d'"émettre des emetteurs" dans SPARK 2. L'application de test en montre un exemple avec le modifieur EmitterAttacher.
Back to top Go down
View user profile http://spark.developpez.com
Darktib
Committer


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

PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Wed Aug 11, 2010 3:05 pm

Wow... ça en jette ! La démo est très joli est impressionnante, chapeau !
Back to top Go down
View user profile
Sponsored content




PostSubject: Re: Possibilité d'émettre des émetteurs [~=Feature Request]   Today at 9:28 am

Back to top Go down
 
Possibilité d'émettre des émetteurs [~=Feature Request]
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» Feature: Our Top 10 Mario Kart Courses
» Feature: Post Your MiiVerse Drawings And Compare Them To These Popular Drawings Week 1!
» Feature: Top 6 Best Super Mario Galaxy Series Galaxies Part 1!
» Feature: Top 5 Most Bizarre Characters In Zelda!
» Feature: Top 6 Best Super Mario Galaxy Series Galaxies Part 2!

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