See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: Quelqu'un utilise IrrLicht ?  (Read 6605 times)

0 Members and 1 Guest are viewing this topic.

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
19 October 2010, 23:10:55
Bonjour à tous !

Ma question se destine aux développeurs. Je me demandaient si quelqu'un a déjà utilisés IrrLicht comme moteur graphique dans une autre création. Je viens de le découvrir et je le trouve simple et plutôt efficace. OpenGL et DirectX étant assez effrayant pour un débutant comme moi. Trouvez-vous qu'il justement trop simple et pas assez puissant ? Ou sinon, trouvez-vous qu'il est très bien ? Avantages/Désavantages, etc.

Pour les interressés, IrrLicht est ici : http://irrlicht.sourceforge.net/


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #1 - 19 October 2010, 23:38:06
Oui ,moi depuis 2 jours ...
J'ai éssayé les premiers tutos avec vc2005 , tout fonctionne .
Et un second , codé en lua , python et opengl , ozone3d interfacé par demoniak3D .

Je les teste avant de vraiment m'y engager .
Irrlicht reste mon favori . ( gestion terrain , caméra , collsion , meshs etc ...)
A+


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #2 - 19 October 2010, 23:42:28
Je ne l'ai pas utilisé directement.

Mais je l'ai étudié pour le taf, C'est une jolie surprise après  Ogre3D. plus performant à ce qu'on voit.
Et coté puissance et possibilité, il est ouvert à toute possibilité quand on voit ce qu'il y font coté effets spéciaux.

Mais apr contre c'est un sdk assez brut et si c'est toujours plus simple que directX sans filet c'est tout de même très très chaud.

Pour s'amuser plus rapidement en créant de belles maquettes de jeux. il y'a Unity3D qui me donne entière satisfaction. L'éditeur est très bon et intuitif. Assez bonne performance aussi et cerise sur le gâteau si un jour ton jeu serait vendable, il exporte pour MAc, Windows, Linux, Wii, Xbox, Playstation, Iphone et Android. Une fois ton jeu testé sur pc d'un seul clic t'en fait une version pour wii par example et elle fonctionne très bien. souvent seul l'interface est à modifier légèrement, le reste fonctionne déjà très bien. un truc de dingue.
Coté programmation c'est du CSharp, mais cela ne sert qu'à scripter les différents objets du jeu ou à calculer ton score, créer la logique générale etc.

Mais si tu recherche plutôt la performance brute, et que tu voudrait te former au c++, irlich est bien sur un meilleur choix. Mais cela sera surement plus long


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #3 - 20 October 2010, 01:01:56
Merci pour vos commentaires ami Vulcain et Tofitouf.

En le téléchargeant, j'ai tout de suite tombé amoureux alors qu'il n'était pas encore installé. Non seulement c'est seulement 20 Mo (en comptant les version Mac, Linux, Win64 que j'ai supprimé 8o), mais c'était tellement facile à installé, j'en riait. On inclu les includes, bibliothèques... et c'est fini. Rien à voir Qt qui prend 250 Mo (version 4.3.2, la dernière montait au Go !) et que l'installation est un enfer (j'ai presqu'arraché mon écran !).

Donc, vous trouvez que c'est un bon choix pour commencer. Je test par-ci par-là des fonctionnalitée et je suis assez impressionné. En plus, j'ai plein d'idées qui me trôtent dans la tête Mwa ha ha ha !.

Sinon, j'ai une petite question. Je modélise affreusement avec Blender et je me demandais comment on pouvit exporter les animations en KeyFrame. J'ai mit le ShuttlePB en 3DS et ça fonctionne mais je me demande pour un mesh ayant une anim. Any idea ?


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15407
  • Karma: 256
  • Hein, quoi !?
    • FsPassengers
Reply #4 - 20 October 2010, 01:16:53
Quote
Bibi Uncle a écrit:
mais c'était tellement facile à installé, j'en riait.

Je ne sais pas pourquoi mais cette phrase me met en joie :)

M'a l'air pas mal du tout ce IrrLicht, le défaut que pointe Tofitouf est certainement la conséquence d'un énorme avantage:
il est souple et ouvert. Avec d'autres moteurs ils était possible d'arriver à de bon résultats rapidement jusqu'au jour ou... fonction manquante, impossibilité etc. etc. Crac boum, suivant, retour à la case départ  !

A++

Dan


Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #5 - 20 October 2010, 03:02:11
Quote
je me demandais comment on pouvit exporter les animations en KeyFrame.
D'abord , tu crées une animation dans Blender .
Tu ajoutes des point clés ( keyframes) sur la timeLime , en modifiant tes params rot , move etc ...
Ensuite , les scripts d'export te demandent si tu veux exporter l'animation .
Pour récupérer l'animation par le code , il faut utiliser des fonctions spécifiques .
Des tutos en parlent sur le Net .

Bon , ben bibi , le premier qui arrive à afficher la planète Terre avec la lune en Orbite sur Irrlicht à gagné ?
3...2...1...
J'ai commencé à fouiner du coté "class GraphicsClient "d'orbiter et aussi ogla .
J'aimerais être en mesure d'utiliser Orbiter-ng pour piloter un Vessel dans Irrlicht .
D'abord sans physique , tester la communication serveur-client graphique , çà va être marrant .
A+
Lien pluri disciplinaire ( moteur 3d , moteur physique , lib graphique et son ...) :
http://texel3d.free.fr/liens/api.htm

Une vidéo hallucinante sur le moteur physique lagoa-multiphysics

Un autre moteur 3d , plus complexe mais proche de l'univers de Blender ( c++ , python , scripts) :
http://www.crystalspace3d.org/main/Programming



Message modifié ( 20-10-2010 03:59 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #6 - 20 October 2010, 10:41:11
extraordinaire ce moteur physique, j'ai jamais rien vu de pareil


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #7 - 20 October 2010, 15:54:35

Quote
extraordinaire ce moteur physique, j'ai jamais rien vu de pareil

Pareil pour moi ! Mais outre la qualité du moteur physique , le pc qui fait tourner cela est une usine à gaz ...
Enfin , cela m'a ouvert les yeux sur la simulation de l'infiniment petit , et je pense que c'est le domaine de Martin S ( apogee) dans le cadre de son métier .

Comprendre la mécanique de l'Univers en observant ET l'infiniment grand , ET l'infiniment petit est très utile pour moi .
Les systemes de particules ont un bel avenir en informatique ( modélisation poussée=modélisation de la poussière ? ) ...
La mécanique des fluides est un mystère physique magnifique à observer , simplifié dans une simulation informatique .

Bon , je retourne sur Irrlicht ...
A+


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #8 - 20 October 2010, 17:42:52
Dans l'idée d'intégrer Irrlicht à Orbiter .
Le mieux est de s'inspirer de ce qui existe , en l'occurence OGLA ( Artlav )
Comment le sdk Orbiter permet l'intégration d'une fenetre de rendu et d'un moteur graphique associé .

Extrait :

Code: [Select]
HWND OGLAClient::clbkCreateRenderWindow() // fonction Orbiter
68 {
69 char cbuf[256];
70 WriteDbg("clbkCreateRenderWindow");
71 VIDEODATA *data=GetVideoData();
72 hRenderWnd=GraphicsClient::clbkCreateRenderWindow();
73
74 ogla.initgl(hRenderWnd,&viewW,&viewH,DWORD(data));// fonction d'ogla , remplacer par Irrlicht ?
75  
76 WriteLog("3D environment ok");
77 sprintf(cbuf,"Viewport: %s %d x %d x %d",bFullscreen?"Fullscreen":"Window",viewW,viewH,viewBPP);
78 WriteLog(cbuf);
79 return hRenderWnd;
80 }

Par rapport à ogla , j'ai halluciné de voir que ce n'est pas une classe , mais une structure .
Et Artlav a créé un système que je ne connaissais pas pour structurer et conserver des données :
L'emploi de functions à l'intérieur d'une structure qui servent de variable grâce au retour de la fonction .
JE NE SAVAIS PAS QUE C'ETAIT POSSIBLE , et cela ressemble à du CALLBACK ( même si çà n'en porte pas le nom )
Extrait : ( merci Artlav !) source d'Artlav
Code: [Select]
//############################################################################//
17 struct ogla_interface{
18 //In
19 void       (__stdcall *initgl)  (HWND hwnd,DWORD *w,DWORD *h,DWORD vd);
20 int        (__stdcall *render)  (int fps);
21 SURFHANDLE (__stdcall *loadtex) (const char* fnam,DWORD flags);
22 bool       (__stdcall *reltex)  (SURFHANDLE s);
23 HDC        (__stdcall *getsdc)  (SURFHANDLE s);
24 void       (__stdcall *relsdc)  (SURFHANDLE s,HDC dc);
25 bool       (__stdcall *gsrfsiz) (SURFHANDLE surf,DWORD *w,DWORD *h);
26 SURFHANDLE (__stdcall *maksrf)  (DWORD w,DWORD h,SURFHANDLE tmp,int tp);
27 bool       (__stdcall *fillsr)  (SURFHANDLE surf,DWORD tx,DWORD ty,DWORD w,DWORD h,DWORD col);
28 void       (__stdcall *out2d)   ();
29 void       (__stdcall *firstrun)();
30 void       (__stdcall *meshop)  (int tp,DEVMESHHANDLE *hMesh,VISHANDLE vis,SURFHANDLE tex,DWORD grpidx,GROUPEDITSPEC *ges);
31 void       (__stdcall *render2D)(SURFHANDLE *hSurf,MESHHANDLE hMesh,MATRIX3 *T,int transparent);
32 void       (__stdcall *addps)   (int tp,DWORD es,PARTICLESTREAMSPEC *pss,OBJHANDLE hVessel,const double *lvl,const VECTOR3 *ref,const VECTOR3 *dir);
33 bool       (__stdcall *blit)    (int tp,SURFHANDLE tgt,DWORD tgtx,DWORD tgty,DWORD tgtw,DWORD tgth,SURFHANDLE src,DWORD srcx,DWORD srcy,DWORD srcw,DWORD srch,DWORD flag);
34 void       (__stdcall *keydown) (WORD k,BYTE sh);
35 void       (__stdcall *keyup)   (WORD k,BYTE sh);
36 void       (__stdcall *mouse)   (int t,int x,int y,BYTE sh);
37 int        (__stdcall *o2_op)   (int,SURFHANDLE,int,int,int,int,const char*,DWORD);
38
39 //Out
40 void       (__cdecl *render_font)   (int fntn,char *str,int mode);
41 int        (__cdecl *text_width)    (int fntn,char *str);
42 DWORD      (__cdecl *getbase)       (OBJHANDLE _hObj);
43 void       (__cdecl *visop)         (int op,OBJHANDLE ob,VISHANDLE v);
44 SURFHANDLE (__cdecl *vcsurf)        (int op,int n,void* mf);
45 void*      (__cdecl *getconfigparam)(DWORD paramtype);
46 SURFHANDLE (__cdecl *getmsurf)      (int tp,int p);
47 int *font_mode;
48 int show_fps;
49 };
50 //############################################################################//


Et plus avant , la création / destruction du module graphique client dans InitModule(HINSTANCE hDLL) d'Orbiter

Code: [Select]
//############################################################################//
277 DLLCLBK void InitModule(HINSTANCE hDLL)
{
gc=new OGLAClient(hDLL);
  if(!oapiRegisterGraphicsClient(gc))
    {delete gc;gc=0;}loadint();
}

278 DLLCLBK void ExitModule(HINSTANCE hDLL)
        {
          if(gc){oapiUnregisterGraphicsClient(gc);delete gc; gc=0;}FreeLibrary(hlib);}
279 //##########################################################################

Fascinant ...
DREAM TEAM

Quote
Un concept important de la biologie est le rapport structure/fonction.
 C'est la relation ente la manière dont une partie est faite (structure) et le rôle qu’elle a à remplir pour cet organisme (fonction).
Tout être vivant peut être décrit comme un système de structure obéissant aux lois de la physique et de la chimie. Cependant,
 comme le raconte Jacques Monod dans Le hasard et la nécessité,
 ce système physico-chimique se distingue des autres par trois aspects: ...
http://fr.wikipedia.org/wiki/Rapport_structure/fonction_(biologie)

Construire son code en imitant les réalités physiques observables , c'est intégrer son code dans la simulation .
Le code devient une séquence d'ADN virtuel , vu sous cet angle .

Et ogla , Irrlicht , des  bactéries dans un corps ?



:music:



Message modifié ( 20-10-2010 18:28 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #9 - 20 October 2010, 18:40:10

Un addon pour Irrlicht que je vais télécharger :
http://www.ambiera.com/irredit/



Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline tofitouf

  • Legend
  • ******
  • Posts: 1380
  • Karma: 0
Reply #10 - 20 October 2010, 21:14:31
ca a l'air excellent l'éditeur d'irlich. c'est souvent ce qui manque aux moteurs 3d. un ide dédié pour au moins éditer tous les matreaux, mesh et compagnie.


---------------------------------------------

PC en rade, codage en panne.... Nom de Zeus

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #11 - 20 October 2010, 22:29:39

Quote
ca a l'air excellent l'éditeur d'irlich. c'est souvent ce qui manque aux moteurs 3d.
Oui , et le code source est même fourni !
De quoi s'inspirer largement , et même le faire évoluer .
A+


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #12 - 20 October 2010, 23:09:33
Pour, l'instant, je voulais simplement mettre un soldat sur un terrain pour créer un mini-RTS (extra-mini, parce qu'il y en aurait juste un :badsmile: ). Mais pour l'instant, je ne sais pas trop par quoi commencer :wonder:. J'essais des trucs dans un Main() mais rien de plus.


Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #13 - 21 October 2010, 00:46:45

 Salut !
Dans ce cas , repère les tutos qui te plaisent par rapport à des fonctionnalités , et puis ... copier/coller .
Commence par essayer de déplacer ton personnage par exemple .
Jouer avec les caméras , c'est sympa aussi .

Je pense qu'avec IrrEdit , tu pourrais créer un monde3D pour y faire évoluer ton personnage .
A+


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #14 - 21 October 2010, 18:17:27
Salut !
Je viens d'intégrer Irrlicht à Orbiter dans un module ( dll ) à charger dans Orbiter2010_ng .
C'est juste un premier pas , mais cela laisse réveur .
Un petit test ? ( écran d'acceil animé )
Décompresser l'archive dans Orbiter 2010 ( repertoire racine )
VulcanTech3d

Ouvrez le launchpad Orbiter_NG , chargez le module (vulcantTech3d) et normalement une fenetre s'ouvre .
NE LANCEZ PAS LA SIMULATION !
En effet , mon module n'est pas encore enregistré comme client Graphique ...
A+ !



Message modifié ( 21-10-2010 18:18 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #15 - 21 October 2010, 23:42:47
Bon, je suis mélangé :trucdeouf:. Si je comprend bien, X = gauche/droite, Y = Haut/Bas et Z = avant/arrirère sous IrrLicht mais sous Blender et Orbiter, Y = avant/arrirère et Z = Haut/Bas. En plus, en lisant un tuto, j'ai appris qu'IrrLicht suivait le standard des géométries 3D.
:???:

Je test ton module Spocky ;)

EDIT :
Bravo Spocky ! Le texte qui tourne autour de la Terre, c'est :top:. Si tu pouvais écrire les FPS et qu'on puisse bouger la caméra (une caméra Maya serait correcte), ce serait super.



Message modifié ( 21-10-2010 23:48 )

Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #16 - 22 October 2010, 00:27:57
Salut Bibi !
Merci pour ton test !
Oui , je bricole moi aussi , j'essaye différents trucs .
J'ai réussi à intégrer la capture d'events au clavier , en créant une classe inspirée d'un tuto .

Code .h

Code: [Select]
#include
#include "windows.h"

using namespace irr;


class MyEventReceiver : public IEventReceiver
{
public:
        // This is the one method that we have to implement
        virtual bool OnEvent(const SEvent& event);
       

        // This is used to check whether a key is being held down
        virtual bool IsKeyDown(EKEY_CODE keyCode) ;
       
       
         MyEventReceiver();
       
private:
        // We use this array to store the current state of each key
        bool KeyIsDown[KEY_KEY_CODES_COUNT];
};

code .cpp

Code: [Select]
#include "VulcanInput.h"

// This is the one method that we have to implement
 bool MyEventReceiver:: OnEvent(const SEvent& event)
        {
                // Remember whether each key is down or up
                if (event.EventType == irr::EET_KEY_INPUT_EVENT)
                        KeyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;

                return false;
        }

  bool MyEventReceiver::IsKeyDown(EKEY_CODE keyCode)
        {
                return KeyIsDown[keyCode];
        }

  MyEventReceiver::MyEventReceiver()
        {
                for (u32 i=0; i                        KeyIsDown[i] = false;
        }

pour l'utiliser ainsi :

Code: [Select]
DLLCLBK void opcDLLInit (HINSTANCE hDLL)
{  
double campos=-200.0;

// create device
    MyEventReceiver *receiver=new MyEventReceiver();
...

if(receiver->IsKeyDown(irr::KEY_UP))
{  campos+=0.1;
cam1->setPosition(vector3df(0,5,campos));
}
if(receiver->IsKeyDown(irr::KEY_DOWN))
{  campos-=0.1;
cam1->setPosition(vector3df(0,5,campos));
}

...


Le résultat : nouveau module VulcanTech3d
C'est un design d'intro , je vais travailler la partie 2D ( menus , panels , etc ...) .
La connection avec GraphicsClient(HINSTANCE...) est en prépa .

J'apprécie que tu sois dans la partie avec moi , je vais voir ce que je peux faire pour les fps.
Si les sources t'interessent , je te les ferais passer .
A+
:beer:



Message modifié ( 22-10-2010 06:15 )

Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #17 - 22 October 2010, 06:37:29
Nouvelle démo :

_ SkyBox
_ Planete + Atmosphère en rotation

A la fin de la séquence de zoom , les flèches up/down servent à avancer reculer .
Démo basique , mais je commence à capter le bouzin ...
démo pour Orbiter2010 no graphic
Bonne journée !
:music:


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline MrSpock

  • Legend
  • ******
  • Posts: 1593
  • Karma: 0
Reply #18 - 22 October 2010, 08:16:03

encore du nouveau :

_ FULLSCREEN
_ CAMERA " mouse moove " . ( vision de l'espace 360 deg )

Appuyer sur " q " pour quitter la simulation après le zoom ...
démo pour Orbiter-ng à décompresser dans Orbiter2010


Mr Spock ,
Consultant de VULCAN TECH INDUSTRY.
( et accessoirement chatouilleur de PLAYMOBILS@tm )
http://kenai.com/projects/spacetechs-mecanos

Offline Bibi Uncle

  • Legend
  • ******
  • Posts: 2264
  • Country: Canada ca
  • Karma: 17
Reply #19 - 22 October 2010, 23:46:28
Spocky, tu es trop productif là :badsmile:. Je test.


« Last Edit: 22 October 2010, 23:46:28 by Bibi Uncle »
Émile

Pluton, Saturne et Jupiter
Entendez-vous monter vers vous le chant de la Terre?

- Luc Plamondon