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

Projets Discussion :

SPARK Moteur de particules open source


Sujet :

Projets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut [Projet en cours] SPARK Moteur de particules open source - version 1.03.00
    [EDIT 30 décembre 2008]

    Le site web de SPARK est ici

    [/EDIT]

    Bonjour,

    Je vous présente SPARK, un moteur de particule CPU orienté facilité d'utilisation, fonctionalités et modularité.

    J'ai fait cette librairie d'abord pour me remettre au C++ après près de 3 ans de java et puis pour pouvoir le réutiliser dans d'autres projets. Je sais que la pertinance d'un tel projet peut être remise en cause dans la mesure ou la tendance est aux moteurs "tout en un". La c'est une approche différente. Comme il est modulaire il peut s'interfacer avec n'importe quel système.

    J'ai essayé d'acces le moteur au maximum sur la facilité d'utilisation tout en étant le plus complet possible pour pouvoir mettre en place toutes sorte de système de particules (voir les démos plus bas). Bien sur tout ca a sans doute un petit coup sur les performances bien que celles ci restent très acceptables (plusieurs millions de particules/s sur une plateforme récente) même si pas au niveau d'un moteur de particules full GPU.

    Les calculs sont du coté CPU et non GPU car son but n'est pas uniquement le rendu mais il peut servir également par exemple pour de la simulation (light tout de meme). Bref le choix du CPU est dans un soucis de versatilité.

    En gros le moteur est basé sur un noyau de classes dont certaine abstraites peuvent être dérivé pour accroitre ses fonctionalités. C'est le cas par exemple des renderers (pour l'instant seuls des renderers openGL sont inclus), des modifiers (point de masse, obstacles...), des zones (sphere, aabox, plan...), et des emetteurs. De plus un système de call back sur les evenement (naissance, mort, update...) permet de gérer précisément ses particules si les fonctionalités de base sont absentes.

    Pour l'instant je n'ai que des démos windows a vous montrer mais je mettrai la librairie et les sources à disposition quand j'aurai fait la doc d'ici quelques jours.

    Les démos sont au nombre de 8 :
    Pour toutes les démos, les touches sont :
    • F1 : change l'affichage du texte
    • F2 : affiche les boites englobantes des groupes de particules
    • F3 : change le système de rendu (pour l'instant seulement mode immediat ou vertex arrays)
    • Supp : reinitialise le systeme
    • Esc : quitte l'application

    on peut se déplacer a la souris et la molette sert a zoomer

    Description des démos (réalisée en SDL et utilisant FTGL pour le texte) :
    • basic demo : une simple fontaine de particule qui change de couleur
    • collision demo : des particules rebondissent dans une piece contenant des caisses
    • fire demo : un feu réaliste (espace permet d'activer ou non la fumée)
    • fireworks demo : des feux d'artifice
    • fountain demo : uen fontaine un peu plus réaliste que la précédente. (ne regarder pas les modele autour je ne suis pas graphiste ) (espace permet de passer a des graphisme low : le blending des particules met a mal la carte graphique lorsque l'on zoome)
    • gravitation demo : un flux de particules est attirer par 2 autres particules de masse. Ca donne des mouvements assez jolis
    • rain demo : de la pluie avec projection au sol. + et - permette de changer l'intensité de la pluie
    • writing demo : permet d'écrire/dessiner a l'écran avec des particules de lumiere. pour dessiner il suffit de garder le bouton gauche enfoncé


    Pour télécharger les démos c'est ici

    Voila, j'espere que ca pourra interesser quelqu un et si vous avez des remarques / suggestions, n'hésitez pas.

    Quelques screens (ca rend bien mieux en mouvement) :








    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  2. #2
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 42
    Par défaut
    Excellent travail, rien à redire.
    J'attends la doc et les sources avec impatience pour pouvoir faire mumuse.

  3. #3
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Salut Julien,
    je suis particulièrement intéressé par ce genre de bibliothèque de code ( c'est sérieux ) j'avais d'ailleurs posé une question sur le forum Algorithmes pour savoir comment faire des effets.
    Ce que je voudrais c'est afficher cela sur une surface Direct Draw ou un Viewport D3d9 mais en prenant cela de SDL cela ne devrait pas être compliqué.
    C'est pour inclure cela dans un jeu.
    Est-ce que tu demandes des royalties ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Salut,

    pour direct3D ce n'est pas encore implémenté mais le renderer étant une classe abstraite, il est possible d'implémenter toi meme les renderers direct3D (remplissage des tableaux au bon format puis envoi a la carte 3D). Le noyau du moteur est totalement indépendant de l'API graphique utilisée. En fait c'est du C++ qui n'utilise que la STL et rien d'autre (SDL et FTGL ne sont utilisé que pour les démos pour le fenetrage et le rendu de texte). Pour l'instant j'ai juste implémenté des renderers openGL mais direct3D est prévu a terme.

    Concernant la licence elle sera la plus permissive possible (je ne sais pas encore quelle licence je vais utilisée) et orienté logiciel libre. Concernant les projet commerciaux je ne sais pas encore. Mais je ne demande pas de royalties ca c'est sur.

    Merci de votre interet en tout cas

    [EDIT] Au fait, des retours sur les perfomances des demos (sans synchro verticale evidemment) m'interesserai beaucoup.

    Moi j'ai ca en FPS (mode immediat/vertex arrays)
    sur un intel dual core E6750 2.66Ghz / Nvideo GeForce 8800 GTX et 4Go RAM
    • basic demo (zoom initial) : 4200 / 3500
    • collision demo : 500 / 480
    • fire demo (zoom initial et smoke on) : 700 / 700
    • fireworks demo : trop variable en fonction du nb de particules
    • fountain demo (zoom initial) high : 190 / 160 low : 620 / 590
    • gravitation demo (zoom initial) : 1800 / 1650
    • rain demo (rain intensity 50%) : 520 / 450
    • writing demo : trop variable en fonction du nb de particules


    Comme on peut le voir les vertex arrays sont plus lent sur ma machine par rapport au mode immediat, c'est sans doute que sur les demos le transfert de données CPU/GPU n'est pas le gouleau d'étranglement. Mais l'interet des vertex array, mise a part que ce soit moins buggué (par exemple sur mon portable (assez vieux) les point sprite en mode immédiat sont limité à 1500 par rendu ce qui fait que toute les particules ne sont pas rendues. mes drivers ne sont pas a jour aussi), est que l'on n'est pas obligé de réécrire le tableau a chaque update/rendu (on peut instaurer une periode par exemple), ce qui fera clairement gagné en perf (dans les demo les tableaux sont updaté a chaque frame)
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Salut,

    J'ai enfin terminé de faire la doc du moteur, je poste donc tout ici en attendant de faire le site web (gentiment hergé par developpez.com )

    SPARK particle engine est sous license LGPL et peut donc être utilisé dans n'importe quel projet qu'il soit libre ou propriétaire tout en respectant les termes de la license (c'est très permissif).

    DESCRIPTION

    SPARK est un moteur de particules CPU openSource en C++. Il est concu pour être portable, très paramétrable, évolutif et simple d'utilisation. Les domaines d'applications de la bibliotheque concerne principalement le rendu d'effet graphiques 2D ou 3D a base de particules mais peut également s'appliquer a la simulation légère d'entités physique...

    FEATURES

    • Plusieurs type de parmètres pour les particules :
      • position
      • vitesse
      • durée de vie
      • couleur RGBA
      • Taille
      • Poids
      • Rotation de texture
      • paramètres customisables par l'utilisateur
    • Evolution de ces paramètres, génération aléatoire...
    • Gestion aisé des particules de même type au sein de groupes
    • Gravité et friction
    • Tri des particules en z
    • Moteur physique particule vs environement
    • Système de callback a la génération, l'update et la mort des particules
    • Récupération de la boite englobante des groupes
    • evolution automatisé du systeme de particules une fois configuré
    • Rendu totalement independant du calcul
    • Systeme de Modifier pour modifier le comportement des particules :
    • Classes abstraites assurant l'évolutivité du moteur par l'utilisateur :
      • Emetteurs
      • Modifiers
      • Zones
      • Renderers


    Cette version est livrée avec un set d'emetteurs, modifiers, zones et renderers qui devrait s'étoffer par la suite :

    • Zones :
      • Sphere
      • Boite orienté selon les axes
      • Plan
      • Point
    • Emetteurs :
      • Emetteur droit (suivant un vecteur)
      • Emetteur sphérique : suivant une portion de sphere
    • Modifiers
      • Obstacle : pour stopper des particules
      • Destructeurs : pour détruire des particules
      • Points de masse : Pour attirer ou repousser des particules
    • Renderers
      • openGL point : rendu de points ou point sprites
      • openGL lines : rendu de lignes
      • openGL quad : rendu de billboards orientés caméra, direction ou selon un axe défini


    DOC ET TUTOS

    La doc de SPARK est disponible en ligne ici. Elle est egalement disponible en téléchargement plus bas

    Il n'y a pas de tutos a proprement parler pour le moment mais les sources des différentes démos présentent des sytèmes de particules plus ou moins simples et sont bien commentées. Vous pouvez commencer par la basic demo qui presentent un systeme de particules très simple.

    TO DO

    Pour les releases a venir :

    • Gestion des exceptions
    • Classe interpolator pour augmenter le controle sur les parametres des particules
    • Intégration de conditions sur les paramètres pour les modifiers
    • Sauvegarde de système complets et edition (XML ? Scripts ?)
    • Orientation des billboards coté GPU en shaders
    • Ajouter l'utilisation de texture 3D dans le renderer openGL pour gérér l'animation de textures
    • Nouveaux renderers Direct3D
    • Nouvel emetteur (projection de la particule en fonction des normals de la zone)
    • nouveau modifier : gestion de forces plus complexes
    • nouvelles zones : lignes, OBB et model 3D complet


    RESSOURCES



    C'est une premiere release donc il peut y avoir des bugs et la bibliotheque est encore loin d'être exhaustive. Pour un apercu des possibilités, regarder les demos (les memes que celles du premier post) ou la doc.

    Tout commentaire, question, review de bugs, participation, conseils, idée, coup de main est la bienvenue !

    En esperant que ca puisse interesser du monde.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    Citation Envoyé par le pop up
    L'application n'a pas pu démarrer car sa configuration côte-àcôte est incorrecte. Pour plus d'information, voir le journal d'événements d'applications.
    les démo ne marchent pas chez moi...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/03/2014, 13h22
  2. Moteurs de désassemblage open-source
    Par diawdji dans le forum Assembleur
    Réponses: 3
    Dernier message: 07/07/2007, 12h41
  3. Moteur de recherche open source
    Par Phenomenium dans le forum Installation
    Réponses: 9
    Dernier message: 16/02/2006, 07h46

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