Un nouveau compte Flickr

12 May 2012 by Fred

Retrouvez toutes les images des versions de développement et d'autres photos sur mon compte Flickr:

http://www.flickr.com/photos/mapleberrynet/

Bonne visite.

Et un formulaire de contact, un !

30 April 2012 by Fred
Petite amélioration de ce site, ce matin, un petit formulaire de contact pour me poser vos questions, vos réactions, et donner un avis sur mes articles.

La prochaine étape sera la possibilité de laisser des commentaires pour chaque article.

Ogre3D, les bases.

29 April 2012 by Fred

Par ou on commence ?

Souvent le plus difficile et c'est ce que j'ai rencontré avec Ogre3D, c'est par ou commencer ?

Il existe des dizaines de tutos partout sur Internet, des centaines de sujet de Forums, mais bien difficile de trouver un point de départ assez simple pour comprendre ce que l'on fait. Du coup, je ne voulais pas partir sur l'application standard d'Ogre, son fameux ExampleListenerApplication. Alors, je suis parti de zéro.

Réaliser un jeu avec Ogre3D était l'occasion d'apprendre le C++. Même si j'ai des années de C et de Delphi, et près de 10 ans de PHP et de python, mon code C++ n'est surement pas le plus propre. Donc si existe une meilleure façon de faire, n'hésitez pas à me le dire.

A chaque étape, je mettrai à disposition chaque version, avec son code, un exécutable windows, et les médias nécessaires.

Désolé pour les utilisateurs Linux ou Mac, mais je n'ai ni le matériel, ni les connaissances, ni le temps développer pour ces deux autres OS. Néanmoins, le code C++ lui doit être réutilisable.

Aller on y va !

Comme il fallait bien trouver un nom à mon projet, je l'ai appelé Saxo3D, juste parce que ma fille commence à apprendre le saxophone, un instrument assez difficile.

Voici donc à quoi va ressembler notre première fenêtre Ogre3D, notre première application Saxo3D dans sa version 0.10.

Comment c'est pas beau !?!, bon, oui, mais tout ca en 250 lignes de C++...

Ok, on a pas de souris, on peux pas se déplacer, et c'est juste un cube... mais faut bien un début non ?

 

Mais keskia dedans ?

Voici donc notre application de base, qui va nous permettre de construire un système 3D complet.

On commence par construire une classe Saxo3d avec son appel principal go()

Saxo3d::Saxo3d(void): mRoot(0), mCamera(0), mSceneMgr(0), mWindow(0)

Cette fonction va initialiser le moteur Ogre3D en chargeant les différents plug-ins et en configurant les répertoires nécessaires pour l'application, typiquement le répertoire media/

// A list of required plugins
    Ogre::StringVector required_plugins;
    requiredplugins.pushback("GL RenderSystem");
    requiredplugins.pushback("Octree & Terrain Scene Manager");

// List of plugins to load Ogre::StringVector plugins_toLoad; pluginstoLoad.pushback("RenderSystem_GL"); pluginstoLoad.pushback("RenderSystem_Direct3D9"); pluginstoLoad.pushback("Plugin_OctreeSceneManager");

// setup resources Ogre::ResourceGroupManager::getSingleton().addResourceLocation("media", "FileSystem", "General");

Ensuite on initialise le système de rendu, ici en DirectX, OpenGL provoquant des artéfacts avec les ombres (non résolu).

// configure our RenderSystem
    Ogre::RenderSystem *rs = mRoot->getRenderSystemByName("Direct3D9 Rendering Subsystem");

// configure our RenderSystem rs->setConfigOption("Full Screen", "No"); rs->setConfigOption("VSync", "Yes"); rs->setConfigOption("Video Mode", "1024 x 768 @ 32-bit colour"); // 1200 * (10/16) => 16/10ème ! mRoot->setRenderSystem(rs);

La suite c'est la création de la scène, avec la caméra (fixe), le viewport, et la lumière d'ambiance.

mCamera = mSceneMgr->createCamera("MainCam");

Après la map, juste un plane pour le sol, et un mesh (fichier .mesh dans media/) pour le cube. La texture est définie par un material dans le fichier media/tex.material.

// Create a light
    Ogre::Light* l = mSceneMgr->createLight("MainLight");
    l->setPosition(-3000, 5000, -2000);

Enfin la boucle infinie de rendu.

/ Render Loop */
    while(true){
        Update();
        if(mWindow->isClosed() or mShouldQuit){
            return false;
        }
    }

et c'est tout ?

Oui, pour une première application c'est déja pas mal, et cet article est déja pas mal long.

Voici les fichiers pour cette version:

Les DLLs:

Les DLLs doivent être copiées au même niveau que l’exécutable. Je les place dans un répertoire séparé pour ne pas avoir à les inclure dans chaque ZIP de version, mais il seront nécessaires pour CHAQUE version.

Toutes les DLLs: http://mapleberry.net/files/subdir/Saxo3D/DLLs/all_DLLs.zip

Le fichier Code::Blocks

J'ai intégré le fichier .cbp (le projet code::blocks) mais il sera nécessaire de le modifier, car il contient les chemins sur ma machine: il faudra remplacer tous les "E:3DCPP" par vos chemins.

Installer et configurer Ogre3D et Code::Blocks

29 April 2012 by Fred
Première chose à faire Installer Ogre et un compilateur...

J'avais déja exploré Ogre avec Python, PyOgre, ca marchait pas mal, mais le problème c'est qu'il n'y a pas d’exécutable, et faire un executable avec py2exe relève de la sorcellerie. Bref ! je pars pour le C++, c'est d'ailleurs une des mes motivation, faire du C++.

Prochaine question, quel compilateur ? Si python n'a pas besoin de compilateur, C++ oui.

Bon, je connais Visual machin de Micro$oft, mais j'en veux pas, trop gros, trop lourd, trop lent, trop micro$oft.

Ah Code::Blocks !? connait pas suilà ! Code::Blocks est open source, cross platform et relativement léger à faire tourner... cool !

http://www.codeblocks.org/downloads/binaries

Ah oui, prendre la distrib "codeblocks-10.05mingw-setup.exe", il contient Mingw le compilateur, lui aussi est open source donc gratuit et très rapide.

Voici tout ce qu'il faut pour installer et configurer Ogre3D et Code::Blocks:

http://www.ogre3d.org/tikiwiki/Setting+Up+An+Application+-+CodeBlocks

http://www.ogre3d.org/tikiwiki/Codeblocks+and+MinGW

La documentation sur ces 2 sujets étant plus que suffisante, et le but n'étant pas de faire un tuto sur ce sujet assez simple, j'en resterai là.

Programmation C++, Ogre3D, Blender et compagnie...

10 April 2012 by Fred
Le but de cette série d'articles est de montrer d'une façon simple comment utiliser le moteur graphique Ogre3D, afin de réaliser un petit jeu.

J'ai décidé de faire cette série pour partager les recherches, les découvertes que j'ai pu faire en étudiant Ogre3D. Le but premier était de faire de la 3D, de (ré-)apprendre le C++ et si possible de le faire avec un truc ludique.

J'étais bien loin d'imaginer dans quel pétrin je mettais les pieds....

Coté graphisme, je m'inspire très largement de l'univers graphique de BattleField Heroes (http://www.battlefieldheroes.com), un style BD que je trouve très sympa. Si vous chercher des paysages ultra-réalistes, regardez du coté de UDK ou de CryEngine, mais pour ma part, ce n'est pas ce que je cherche.

Un aperçu du sommaire:

  • Compiler notre premier programme, Ogre3D et Code::Blocks
  • Ogre3D, les bases.
  • Les Matériaux/Textures simples.
  • Gestion de la caméra.
  • Les objets 3D, de Blender à Ogre3D.
  • Un SkyBox avec Terragen.
  • Une map, des textures, une colormap, des ombres et des détails.
  • Le MapGenerator et les XML.
  • Faire pousser de l'herbe.
  • Et les arbres ?
  • La pomme, les collisions et la physique avec Newton.
  • Les personnages, modélisation et animation.
  • Un peu d'intelligence, l'AI

Ce site évoluera en même temps que les divers articles, parce qu'il est basé sur mon propre CMS, Nasca 3.0 programmé en PHP5 et XML. Un formulaire de contact et la possibilité de laisser des commentaires sont en développement.

Liens: http://www.ogre3d.org http://www.blender.org

EXTRA