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

  1. #41
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Ca c'est un problème d'include. Apparemment cette fonction est définie sous linux dans le fichier glx.h.

    Dans le fichier SPK_GL_DEF.h rajoute ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #if defined(WIN32) || defined(_WIN32)
    #include <windows.h>
    #endif
     
    #if defined(__APPLE__)
    #include <OpenGL/gl.h>
    #elif defined(macintosh)
    #include <gl.h>
    #else
    #include <GL/gl.h>
    #endif
     
    // Code à rajouter
    #if defined(linux) || defined(__linux)
    #include <GL/glx.h>
    #endif
     
    #include "glext.h"
    Voila, on va finir par y arriver
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  2. #42
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 66
    Points : 65
    Points
    65
    Par défaut
    baton@baton-laptop:~/Bureau/SPARK/demos/src$ g++ -o Demo SFMLDemo.cpp -lsfml-graphics -lsfml-window -lsfml-system
    In file included from /usr/include/Ext/Renderer/SFML/SPK_SFMLPointRenderer.h:25,
    from /usr/include/SPK_SFML.h:40,
    from SFMLDemo.cpp:35:
    /usr/include/Ext/Renderer/GL/SPK_GLExtInterface.h: In static member function ‘static void* SPK::GL::GLExtInterface::glGetProcAddress(const char*)’:
    /usr/include/Ext/Renderer/GL/SPK_GLExtInterface.h:256: erreur: ‘glXGetProcAddressARB’ was not declared in this scope
    SFMLDemo.cpp: In function ‘int main(int, char**)’:
    SFMLDemo.cpp:201: erreur: reference to ‘Font’ is ambiguous
    /usr/include/X11/X.h:105: erreur: candidates are: typedef XID Font
    /usr/include/SFML/Graphics/Font.hpp:55: erreur: class sf::Font
    SFMLDemo.cpp:201: erreur: reference to ‘Font’ is ambiguous
    /usr/include/X11/X.h:105: erreur: candidates are: typedef XID Font
    /usr/include/SFML/Graphics/Font.hpp:55: erreur: class sf::Font
    SFMLDemo.cpp:201: erreur: expected `;' before ‘font’
    SFMLDemo.cpp:202: erreur: ‘font’ was not declared in this scope
    SFMLDemo.cpp:206: erreur: ‘font’ was not declared in this scope

    Si tu veux j'ai du temps la donc on peu se donné rdv sur msn ou sur mibbit.com pour corrigé les problémes. De plus il faut que je te disent la liste des fichiers que j'ai modifier (j'ai pas modifer grand chose hein, c'est juste des histoires d'espace en trop ou de \ au lieu de /)

    Bref comme tu le sent.

  3. #43
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Je suis en train de mettre SPARL dans mon projet et j'ai trouvé un probleme dans la version static de la lib. Qauand je fais l'édition des lien j'ai l'erreur suivante avec Visual Studio 2005


    1>------ Début de la génération : Projet : testSPARK, Configuration : Debug Win32 ------
    1>Édition des liens en cours...
    1>fatal error C1007: indicateur '-typedil' non reconnu dans 'p2'
    1>LINK : fatal error LNK1257: échec de la génération du code
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Mes documents\Visual Studio 2005\Projects\testSPARK\testSPARK\Debug\BuildLog.htm"
    1>testSPARK - 1 erreur(s), 0 avertissement(s)
    ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========



    en dynamique par contre tout ce passe bien.

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, les libs fournies sont en version release. Soit tu compiles en release ton projet, soit tu compiles les libs en debug a l'aide de la solution VS fournie.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  5. #45
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Frifron Voir le message
    Salut, les libs fournies sont en version release. Soit tu compiles en release ton projet, soit tu compiles les libs en debug a l'aide de la solution VS fournie.
    Le souci c'est que c'est pareil en release

    1>------ Début de la génération*: Projet*: testSPARK, Configuration*: Release Win32 ------
    1>Compilation en cours...
    1>main.cpp
    1>Édition des liens en cours...
    1>fatal error C1007: indicateur '-typedil' non reconnu dans 'p2'
    1>LINK : fatal error LNK1257: échec de la génération du code
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Mes documents\Visual Studio 2005\Projects\testSPARK\testSPARK\Release\BuildLog.htm"
    1>testSPARK - 1 erreur(s), 0 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

  6. #46
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, les libs sont compilés avec visual C++ 2008, il faut sans doute que tu les recompiles avec ton visual 2005. Et lorsque tu fais le lien en statique, il faut également enlever la directive de preprocesseur "SPK_DLL"
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  7. #47
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Frifron Voir le message
    Salut, les libs sont compilés avec visual C++ 2008, il faut sans doute que tu les recompiles avec ton visual 2005. Et lorsque tu fais le lien en statique, il faut également enlever la directive de preprocesseur "SPK_DLL"
    Je regarderai ça plus tard. Pour l'instant je vais utilisé la version dynamique

  8. #48
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Hop encore une release mineure (1.02.02) qui corrige quelques bugs (notamment pour une compil mingw et pour linux. merci a Baton) et inclus maintenant les solutions et libraries pour vc2005,vc2008 et codeblocks.

    EDIT : apparement il y avait un problème avec une des libs statiques de la version 1.02.01, celles de la version 1.02.02 fonctionnent.
    Syl20 ca resoudra sans doute ton problème...
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  9. #49
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    J'ai commencé à implémenter SPARK dans mon moteur 3D et pour l'instant ça ce passe pas trop mal.
    Frifron, je te contacterais pour mes remarques

    voici les premières images:



    ici avec du shadowmapping sur la source de particule:


  10. #50
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Cool !

    j'attends tes retours avec impatience.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  11. #51
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    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 361
    Points : 20 379
    Points
    20 379
    Par défaut
    Salut Julien il faudrait que j'étudie cela.
    Est-ce que porter cela sous SDL c'est facile ? ( je sais je suis casse-pied )

  12. #52
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Salut Julien il faudrait que j'étudie cela.
    Est-ce que porter cela sous SDL c'est facile ? ( je sais je suis casse-pied )
    Les démos sont faite avec SDL donc pas de soucis.

  13. #53
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    La bibliotheque de fenetrage n'a aucune importance du moment que openGL est géré (il n'y a pas encore de renderers direct3D)
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  14. #54
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    J'avoue... félicitations !

    Je n'ai pas encore commencé cette partie sur mon moteur (etant donnée que je me suis attardé sur tout ce qui est picking / morphing) mais j'aimerais bien arriver à faire quelque chose d'aussi beau.

    En tout cas, je te souhaite bonne continuation, c'est vraiment très joli et très bien fais !

  15. #55
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Ta bibliothèque à l'air géniale. Elle correspond exactement à ce que je cherchais pour faire joujou avec les particules. Mais malgré sa simplicité, j'ai un petit problème en faisant des tests. J'ai vu intégré la fontaine de BasicDemo dans mon moteur et voila résultat que ça produit:


    Le point blanc du bas semble être la position de l'émetteur et le point blanc du haut une particule. Le point blanc du haut clignote et je ne vois pas le jolie effet graphique de la demo . J'ai touché à quelques paramètres ca m'a donné des résultats un peu différent mais rien qui ne ressemble à une fontaine.

    Déclaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SPK::System particleSystem;
    GSESPRITE *TextureParticle;
    GLRenderer* particleRenderer = NULL;
    GLQuadRenderer quadRenderer;
    SPK::Model particleModel(FLAG_RED | FLAG_GREEN | FLAG_BLUE | FLAG_ALPHA);
    SphericEmitter particleEmitter(Vector3D(0.0f,1.0f,0.0f),0.1f * GSE_PI,0.1f * GSE_PI);
    Group *particleGroup;
    Point point(Vector3D(0.0f,0.2f,0.0f));
    Méthode d'intialisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Camera=GSEWALKINGCAMERA::Create();
    	Camera->SetPosition(GSEPOINT3D(1.5,0.7,0.0));
    	Camera->SetMinimumHeight(0.7);
    	Camera->SetJumpHeightMax(1.4);
     
    	Modell=GSEOBJECT3D::Create("bauul");
    	Modell->SetUniformScaleXYZ(0.03);
    	Modell->SetAnimation("stand");
    	//Modell->SetRotation(90.0,0.0,0.0);
    	Modell->SetPosition(GSEPOINT3D(0.0,0.7,0.0));
    	Modell->SetMass(80);
     
    	Floor=GSESPRITE::Create();
    	Floor->SetGlobalColor(234,234,234);
    	Floor->SetCurrentSizeXY(100.0,100.0);
     
    	GSEPhysic->SetGravitation(0.0);
     
    	TextureParticle=GSESPRITE::Create("point.bmp");
     
    	quadRenderer.enableBlending(true);
    	quadRenderer.setBlendingFunctions(GL_SRC_ALPHA,GL_ONE);
    	quadRenderer.setTexturingMode(TEXTURE_2D);
    	quadRenderer.setTexture(TextureParticle->GetTexture()->GetId());
    	quadRenderer.setTextureBlending(GL_MODULATE);
    	quadRenderer.setScale(0.1f,0.1f);
    	particleRenderer=&quadRenderer;
     
    	particleModel.setParam(PARAM_ALPHA,0.8f); // constant alpha
    	particleModel.setLifeTime(8.0f,8.0f);
     
    	particleEmitter.setZone(&point,true);
    	particleEmitter.setFlow(250);
    	particleEmitter.setForce(10.5f,10.5f);
    	particleEmitter.setTank(-1);
     
    	particleGroup=new Group(&particleModel,2100);
    	particleGroup->addEmitter(&particleEmitter);
    	particleGroup->setRenderer(particleRenderer);
    	particleGroup->setCustomUpdate(&bounceOnFloor);
    	particleGroup->setGravity(&Vector3D(0.0,-1.0,0.0));
     
    	particleSystem.addGroup(particleGroup);
    Boucle de jeu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Camera->GetKeyboardControl();
    	Camera->GetMouseControl();
    	Camera->Update();
     
    	Floor->Draw(GSEPOINT3D(-50.0,0.0,-50.0),GSEPOINT3D(50.0,0.0,-50.0),GSEPOINT3D(50.0,0.0,50.0),GSEPOINT3D(-50.0,0.0,50.0));
     
    	GSEApplication->GetFPS();
    	GSEApplication->Draw3DMark();
     
    	float speed=0.1;
    	Modell->Draw(speed);
     
    	particleSystem.update(NewtonGetTimeStep(GSEPhysic->GetWorld()));
     
    	glDepthMask(GL_FALSE);
    	particleSystem.render();
    	glDepthMask(GL_TRUE);
    Comment puis je corriger ça?

    Merci.

  16. #56
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, as tu initialisé la graine pour la génération aléatoire en début de programme ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SPK::randomSeed = ... // l'heure du processeur en général
    Si les 2 points correspondent aux particules à la frame 0 et aux particules a la frame 1, les particules à la frame 2 sont hors écran. Ta time step est sans doute beaucoup trop grande. Dans la demo c'est en seconde. Si toi tu en utilises une en milliseconde, il faut la multiplier par 0.001. Tu as également augmenté la force d'emission de x10 par rapport a la demo.

    Aussi la gravité n'est pas setté de la manière correct. Tu risques très fortement un plantage. Elle est stockée dans les groupes sous forme de pointeur pour pouvoir utiliser une même gravité pour plusieurs groupe (et pouvoir la changer a la volée facilement). Toi tu passes l'addresse d'un paramètre de la fonction.

    Il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Vector3D gravity(0.0f,-1.0f,0.0f);
    group->setGravity(&gravity);
    Il faut faire attention egalement au scope du Vector3D (ou alors le créer dynamiquement). Il faut qu'elle existe aussi longtemps que le groupe. En fait la méthode consiste a encapsuler la gravité en statique dans une classe dérivée de SPK::System comprenant tout ce qu'il faut pour monter un système de particules (emetteurs, groupes, renderers...)
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  17. #57
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Salut,

    Tout d'abord, félicitation, je pense que ta bibliothèque en intéressera plus d'un. J'ai jetté un rapide coup d'oeuil au code et ça a l'air très propre.

    Cependant en ce qui concerne le code des démos, j'ai vu un
    "#include <Windows.h>" ... ce qui m'enpêche de les compiler sous linux. Dommage donc que le code des démos ne soit pas cross platform.

  18. #58
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut [Projet en cours] SPARK Moteur de particules open source - version 1.03.00
    Hello, apres pas mal de temps passé sans update (j avais pas beaucoup de temps et j'étais sur d'autres trucs), voila une petite mise a jour qui rajoute pas mal de trucs :

    Version 1.03.00

    • Une fabrique est implémentée et permet l'enregistrement, la creation, la destruction de système de facon simple et robuste.
    • Les systemes peuvent maintenant être transformé en conservant les particules dans le repere monde (juste les emetteurs et les zones sont transformés)
    • La structure interne a été optimisée. Les Vertex Array sont maintenant plus rapide. Ces modifications préparent aussi à l'intégration des shaders
    • Une nouveau rendereur est ajouté : La particule est rendue comme étant une trainée (calculée de facon procédurale). Ce renderer est illustré dans la démo gravitation qui a été modifiée.
    • Un nouveau modifieur : force linéaire
    • pas mal de corrections de bugs et de petites modifications


    J ai aussi mis en ligne un tutoriel/mode d'emploi pour démarrer sur le site. Ca manquait cruellement avant.

    Voila maintenant je vais m'attaquer en priorité a l'intégration des shaders (vertex et geometry) pour faire passer un peu de calcul sur le GPU et profiter de la parallélisation. L'utilisation de shaders restera optionelle pour conserver la compatibilité avec des config plus ancienne.
    Je vais aussi regarder du coté d'un loader de systemes de particules en XML.

    Le site : spark.developpez.com

    PS : Comment est ce quon edite le titre d'un topic pour rajouter un tag ?

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

  19. #59
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Citation Envoyé par Frifron Voir le message
    PS : Comment est ce quon edite le titre d'un topic pour rajouter un tag ?
    Je l'ai mis .. par contre, tu dois y avoir accès quand tu édites ton tout premier post .. juste a gauche de l'intitulé, non ?
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  20. #60
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Bah j'ai rien a gauche de l'intitulé. Je pensais que changer l'intitulé du premier post suffirait mais en fait nan
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

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