|
| editeur de système de particule de SPARK (topic de dev) | |
| | |
Author | Message |
---|
Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Tue Jul 27, 2010 4:44 am | |
| Je vais partir en randonnée pour une semaine, donc je fais ça la semaine prochaine. Sinon, les textures ne sont pas codées en dur. | |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Tue Aug 10, 2010 4:01 pm | |
| Voila une nouvelle version. Désolé pour la taille, mais gcc sort des binaires beaucoup plus gros - et tout recompiler en release me prenait trop de temps. Sinon, la zone 'Cylindre' n'est pas ajoutée dans l'éditeur pour l'instant. Enfin, j'ai désactivé l'éditeur de courbes car il n'est pas terminé. h t t p : / / w w w . m e d i a f i r e . c o m / ? 0 l 4 t u 7 u 1 c w p o s h wNormalement les exemples devraient marcher directement. Si ca n'est pas le cas (notamment pour les textures), il faut chercher les textures dans le project dock et choisir un fichier (je ne sait plus si les chemins sont en absolu ou en relatif dans les fichiers que j'ai enregistré ^^). PS: T'aurai pas un réglage dans l'administration du forum pour virer la redirection sur les liens ? | |
| | | Juff Developer
Messages : 539 Date d'inscription : 2009-07-14 Age : 42
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Tue Aug 10, 2010 5:36 pm | |
| Vraiment superbe ! Ca commence a avoir de la gueule. Tout n'est pas encore implémenté mais on sent déjà le potentiel.
Sinon ouais les textures ne marchaient pas directement chez moi. Mais en les reselectionnant ca fonctionne.
A part ca regarde du coté de System::setClampStep pour éviter que les petit freeze de l'éditeur aient une influence sur le rendu du système. Peut être utiliser un System::useAdaptiveStep peut être pas mal aussi.
Aussi avoir les angles en degrés dans l'éditeur serait peut être plus intuitif pout l'utilisateur.
Pour les liens faudra que je regarde...
| |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Wed Aug 11, 2010 2:44 pm | |
| Merci ! Pour ce qui est des freeze, ca vient de gcc - suffit que je repasse à vc++ pour qu'ils disparaissent... Le bug vient de Qt, les clampStep ne changent rien Pour les degrés, à quoi penses-tu précisément ? A un cercle sur lequel on pourrait choisir une position ? Si c'est cela, c'est pas une mauvaise idée, je la mettrai après l'édition des couleurs. | |
| | | Juff Developer
Messages : 539 Date d'inscription : 2009-07-14 Age : 42
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Sat Aug 21, 2010 9:53 am | |
| Le System::setClampStep n'empecherait pas les freezes ou quoi que ce soit, ca permet juste de garder un rendu consistant même avec des chutes ponctuelles de framerate. En gros la s'il y a un freeze, il va y avoir un trou dans l'émission des particules (a cause du deltaTime qui va être très gros sur 1 frame). En settant un seuil sur le deltatime avec le setClampStep, ca permet d'éviter ce genre de chose.
Pour les degrés, je pensais tout simplement à utiliser des degré dans l'édition plutôt que des radians. C'est quand même plus facilement compréhensible que les radians pour l'édition. Après dans le moteur ca reste en radians parceque ca évite une conversion pour utiliser les fonction trigo de la STL. | |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Sun Aug 22, 2010 7:47 am | |
| Ok, je pense pouvoir laisser le choix entre 3 options: éditer les angles en brut ( comme maintenant ), éditer en fonction de pi ( genre x*pi dans le spinbox, on peut choisir x réel ), ou en degrés.
Pour le clamp step, je le mettrais aussi. | |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Sun Aug 22, 2010 2:30 pm | |
| 2 nouveaux screenshots pour bien montrer l'arrivée de l'éditeur de courbes: (dsl pour la taille) EDIT: Une nouvelle image, une nouvelle version va arriver très bientôt. | |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Thu Aug 26, 2010 6:12 am | |
| Nouvelle version: 0.5. Au menu: corrections de bugs, arrivée de l'éditeur de courbes, et quelques nouveaux plugins. Dans le pack est aussi fourni une sorte de sdk permettant de créer des plugins (ca n'est pas encore un 'vrai' SDK, la seule doc dispo étant les commentaires de code et les exemples). Ce 'sdk' ne contient pas encore les sources permettant d'intégrer des moteurs de rendu dans le logiciel. C'est ici: http://www.mediafire.com/?typtrc2wxtmhz0t (http://ww w.mediafire.com/?typtrc2wxtmhz0t) Il s'agit d'une version release, contrairement à toutes les autres versions qui étaient en débug. Enjoy! | |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Mon Feb 07, 2011 3:03 pm | |
| Des petites nouvelles - sans release... Au niveau des plus grands changements, le premier est que l'éditeur change de nom. Il s'appelle dorénavant Icewhirl. Ensuite la version de SPARK qui est utilisée est SPARK2. Au niveau de la GUI, il y a eu pas mal d'ajout, certains docks ont été revus de fond en comble, voire même refait de 0. Au niveau gestion des configurations, j'utilise maintenant CMAKE. Pas de caotures d'écran pour l'instant, vu que les plugins (dont l'interface à été simplifiée) n'ont pas tous été réecrits. Pour donner une idée de ce à quoi ressemble un plugin: - Code:
-
#include <IWPlugin.h> #include <Version.h>
IW_ENABLE_PLUGIN_COMMUNICATION
class EmitterRandom : public IWPlugin { public: virtual ~EmitterRandom() {}
/// DATABASE RELATED IW_PROPERTY_TABLE IW_PROPERTY( "active" , true , IWSP_ACTIVENESS ) IW_PROPERTY( "tankMin" , -1 , IWSP_TANKMIN ) IW_PROPERTY( "tankMax" , -1 , IWSP_TANKMAX ) IW_PROPERTY( "flow" , 1.0 , IWSP_FLOW ) IW_PROPERTY( "forceMin" , 1.0 , IWSP_FORCEMIN ) IW_PROPERTY( "forceMax" , 1.0 , IWSP_FORCEMAX ) IW_PROPERTY( "zone" , "" , IWSP_ELEMENTZONE ) IW_PROPERTY( "fullzone" , true , IWSP_FULLZONE ) IW_END_PROPERTY_TABLE
virtual void verifyAndCorrectProperties(DatabaseRow& row, const QString propchanged) { int tankMin=row.getProperty("tankMin").toInt(), tankMax=row.getProperty("tankMax").toInt(); double forceMin=row.getProperty("forceMin").toDouble(), forceMax=row.getProperty("forceMax").toDouble(), flow=row.getProperty("flow").toDouble();
if(propchanged == "flow") { if(tankMin < 0 && tankMax < 0 && flow < 0.0) flow = 0.0; } else { if(propchanged == "tankMin" && tankMin > tankMax) tankMax = tankMin; else if(propchanged == "tankMax" && tankMin > tankMax) tankMin = tankMax;
if((propchanged == "tankMin" && tankMin < 0) || (propchanged == "tankMax" && tankMax < 0)) { if(flow < 0.0) { tankMin = 0; tankMax = 0; } else { tankMin = -1; tankMax = -1; } } }
if(propchanged == "forceMin" && forceMin > forceMax) forceMax = forceMin; else if(propchanged == "forceMax" && forceMin > forceMax) forceMin = forceMax;
row.setProperty("tankMin",tankMin); row.setProperty("tankMax",tankMax); row.setProperty("forceMin",forceMin); row.setProperty("forceMax",forceMax); row.setProperty("flow",flow); } virtual QStringList getTargetedDataFromProperties(const DatabaseRow& row) { if(row.getProperty("zone").toString() != "") return QStringList() << row.getProperty("zone").toString(); return QStringList(); } virtual QStringList getPropertiesOfTarget(const DatabaseRow& row, const QString tgt) { if(tgt == row.getProperty("zone").toString()) return QStringList() << "zone"; return QStringList(); } virtual GUIViewStructure getGUIViewStructure() { GVS::Group p("Global",GVS::Static),e("Emission",GVS::Static);
p << GVS::Property("Active",GVS::Bool,"active") << GVS::setAttributeValue(GVS::Property("Zone",GVS::SpkElement,"zone"),"type",IWT_ZONE) << GVS::Property("Full zone",GVS::Bool,"fullzone");
e << GVS::setAttributeValue(GVS::setAttributeValue( GVS::Property("Tank min",GVS::Int,"tankMin"),"min",-1),"step",10) << GVS::setAttributeValue(GVS::setAttributeValue( GVS::Property("Tank max",GVS::Int,"tankMax"),"min",-1),"step",10) << GVS::setAttributeValue(GVS::Property("Force min",GVS::Double,"forceMin"),"min",0.0) << GVS::setAttributeValue(GVS::Property("Force max",GVS::Double,"forceMax"),"min",0.0) << GVS::setAttributeValue(GVS::setAttributeValue( GVS::Property("Flow",GVS::Double,"flow"),"min",-1.0),"step",10.0);
return GUIViewStructure() << p << e; }
/// SPARK RELATED virtual SPK::Ref<SPK::SPKObject> createSparkElement(const DatabaseRow& row) { SPK::Ref<SPK::RandomEmitter> v = SPK::RandomEmitter::create(); updateSparkElement(v,row); return v; } virtual void updateSparkElement(SPK::Ref<SPK::SPKObject> reg, const DatabaseRow& row) { if(!reg) return;
int tankMin=row.getProperty("tankMin").toInt(), tankMax=row.getProperty("tankMax").toInt(); double forceMin=row.getProperty("forceMin").toDouble(), forceMax=row.getProperty("forceMax").toDouble(), flow=row.getProperty("flow").toDouble(); bool active=row.getProperty("active").toBool(), fullzone=row.getProperty("fullzone").toBool(); QString zone=row.getProperty("zone").toString();
SPK::RandomEmitter* ne = dynamic_cast<SPK::RandomEmitter*>(reg.get()); if(!ne) return;
ne->setActive(active); ne->setFlow(flow); ne->setTank(tankMin,tankMax); ne->setForce(forceMin,forceMax); ne->setZone(IW_GET_SPARK_ELEMENT(zone,SPK::Zone),fullzone); }
/// PLUGIN RELATED IW_PLUGIN_NAME( "Random Emitter" ) IW_PLUGIN_TYPE( IWT_EMITTER ) IW_PLUGIN_ELEMENT( "SPK::RandomEmitter" ) IW_PLUGIN_AUTHOR( "Thibault 'Darktib' Lescoat" ) IW_PLUGIN_LEGALMENTIONS( "Copyright (C) 2011 Thibault Lescoat. " "Based on SPARK Particle Engine, Copyright (C) 2008-2011 Julien Fryer" ) IW_PLUGIN_VERSION( SPARK_VERSION ) IW_PLUGIN_ICON( ":/IW_Emitters_Plugin_Root/random" ) IW_PLUGIN_DESCRIPTION( "An emitter that emits in a random direction. " "This is the plugin of the SPARK built-in Random emitter." ) }; Les plugins se ressemblent beaucoup. A noter que l'include version.h n'est ici que parce que le plugin sera inclu dans l'éditeur (mais sous la forme d'une dll) | |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Sun Sep 11, 2011 4:09 pm | |
| | Icewhirl 1.0beta1 |
Nouvelle version: 1.0beta1! Capture d'écran: Changelog (en): - Code:
-
----- Changes in SPARK Particle Editor -----
Major changes:
- The official name for 'SPARK Particle Editor' is 'Icewhirl' - The underlying SPARK engine is now SPARK 2.0 - Overhaul of the Properties Dock (bugfixes, added 2 group types) - Total overhaul of the Scene Dock (performance improvements, bugfixes, new features, etc...) - Threaded save, extendible - New dock: Console, extendible with add-on commands - New dock: History, maintains undo/redo history, extendible - New dock: Media, manages textures/models. Database no longer manages media - New extension system
Minor changes:
- Software configuration is now stored in a xml file - New way to store global properties - Now database allow complex types (like QStringList) in row properties - Bugfixes...
Note: le chargement de fichiers n'est pas encore opérationnel. Téléchargement : http://www.mediafire.com/?984eggzqrz0yn1d@Juff: Avant, avec les liens, on était redirigé par un site bizarre. Maintenant c'est Adf.ly... si c'est pas toi qui est bénéficiaire du lien, quelqu'un se fait de l'argent sur ton dos (et celui des visiteurs...) | |
| | | Juff Developer
Messages : 539 Date d'inscription : 2009-07-14 Age : 42
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Sun Sep 25, 2011 7:33 am | |
| Hello, Désolé pour le retard dans la réponse, je rentre de vacances. En tout cas c'est bien cool, ca a vraiment de la gueule. Après au lancement j'ai des erreurs de chargement XML dans la console (5 fois) : - Code:
-
WARNING! QT XML VALIDATOR SCHEMA BROKEN, NO MANIFEST VALIDATION MADE. Je ne sais pas si c'est bloquant. Sinon j'ai un crash en fermant l'appli. (Icewhirl a cessé de fonctionner...) Après niveau fonctionalités, il n'y a pas encore grand chose de porter donc j'ai pas pu tester en profondeur. J'ai aussi remarqué un petit bug au niveau de la selection des emetteurs dans un group. Parfois, je n'arrive pas à cliquer sur les check box. Sinon est ce que tu as redirigé les logs de spark quelque part ? Pour le lien sur lequel on redirige ca a l'air de le faire que pour media fire. Ce n'est pas moi qui heberge le forum, c'est un hebergeur gratos donc ca doit être eux qui se font plaisir. Ca fait chier, je voudrais récupérer le forum chez moi mais faut que je trouve un moyen d'en aspirer le contenu. | |
| | | Darktib Committer
Messages : 389 Date d'inscription : 2009-07-20 Localisation : A coté de Paris
| Subject: Re: editeur de système de particule de SPARK (topic de dev) Sun Sep 25, 2011 5:29 pm | |
| Merci du test ! Pour les warning XML, c'est pas bloquant, c'est des sécurités liées au système d'extension qui sont désactivées (à cause d'un bug dans Qt), c'est surtout pour m'en souvenir Pour le bug des checkbox, je le connais, il est sur ma todo-list : en fait, le premier élèment est dur à selectionner, tu peux par exemple créer deux éléments, selectionner le premier, puis supprimer l'autre... Pour le crash, je vais voir de plus près. J'ai pas encore redirigé les logs, je le fais de suite! | |
| | | Sponsored content
| Subject: Re: editeur de système de particule de SPARK (topic de dev) | |
| |
| | | | editeur de système de particule de SPARK (topic de dev) | |
|
Similar topics | |
|
| Permissions in this forum: | You cannot reply to topics in this forum
| |
| |
| |