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

Contribuez Discussion :

FAQ pour Ogre


Sujet :

Contribuez

  1. #1
    Membre confirmé
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Points : 641
    Points
    641
    Par défaut FAQ pour Ogre
    Il pourait etre bien d'avoir une FAQ sur Ogre.Quelles question voudriez vous voir dans cette FAQ?Je pourais tenter d'y repondre.

    Generalité

    Qu'est-ce que Ogre ?
    Ogre (Object-oriented Graphics Rendering Engine) est moteur 3d, comme Irrlicht par exemple. Ogre n’est pas un moteur de jeux comme Crystale Space, il ne s’occupe que de la partie graphique.

    Quels sont les intérêts d'utiliser Ogre ?
    Ogre est Open-Source(et donc gratuit),il est mutli-platforme (Windows,Linux,Mac).

    Ogre est programmé en c++, mais il possède des binding pour C#, python, java, Delphi,VB.NET).
    Ogre supporte sans distinction OpenGl et DirectX ce qui permet de changer facilement de l’un a l’autre.

    Côter Shader, Il supporte évidement les Vertex Shader et les Pixel Shader au format DirectX(HLSL), OpenGl(GLSL), ou Cg(format développé par Nvidia permettant de fonctionne sous DirectX ET OpenGl, ce qui évite de devoir réécrire les shader).

    Ce n’est evidement qu’un infime partie des possibilités de Ogre.

    Ogre est-il un moteur de jeux ?
    Non, Ogre n’est pas un moteur de jeux. Pour gérer les évènement (clavier joystique), la physique, le son, le réseau, il faudra utiliser d’autres bibliothèques. Cependant, Ogre possède des wrappers de librairies comme PhysX , OgreAl, …
    Pour la gestion des événements, les démos d’Ogre utilisent OIS.

    Où trouver des tutoriels pour Ogre ?
    Il existe quelques tutoriaux pour Ogre en français :
    -http://ogre3d.fr/wiki/Accueil (fr)
    -http://bauland.developpez.com/tutoriel/ogre/tutoriel1-debutant/ (fr) pas a jours
    -http://gusgus.developpez.com/Ogre/ (fr)

    Mais la majorité des tutoriaux se trouve en anglais sur site officiel :
    -http://www.ogre3d.org/wiki/index.php/Main_Page (en)
    -http://www.ogre3d.org/docs/manual/ (en)
    -http://www.ogre3d.org/docs/api/html/ (en)

    SceneNode et Transformation

    Qu’est ce qu’un SceneNode ?
    Les SceneNode sont des objets décrivant des transformations. On distingue trois types majeur je transformation : rotation, translation et changement d’échelle.
    Chaque SceneNode est attaché a un SceneNode parent, dont il « hérite » des transformations.

    Par exemple si le SceneNode parent a un rotation de 10° et le SceneNode fils une roation de -5°, l’objet attaché au SceneNode fils aura un rotation de 5°. Les transformations du SceneNode parent sont appliquées après celle du SceneNode fils.

    Comment créer un SceneNode ?
    Pour créer un SceneNode, il faut demander au SceneNode parent de créer un SceneNode comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Node =  pSceneNode-> createChildSceneNode ("nom du SceneNode", Vector3(0,0,0), Quaternion::IDENTITY);
    Le paramètre 2 décrit la translation, le paramètre 3 la rotation, ces 2 paramètres étant facultatifs.

    Pour créer un SceneNode dont le parent n’a pas de transformation(mise a part la projection pour avoir la perspective), on utilise cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pSceneManager->getRootSceneNode()->createChildSceneNode(" nom ");
    Comment effectuer une translation ?
    Pour faire une rotation, on applique la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pSceneNode-> translate(Vector3(x,y,z)) ;
    Comment effectuer une rotation ?
    Pour les rotations, Ogre utilise les quaternions (voir FAQ). Pour effectuer la rotation définie par un quaternion, il faut utiliser la methode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Quaternion pQuaternion ;
    …
    pSceneNode->rotate(pQuaternion) ;
    On peut aussi utiliser les angles d’Euler via les fonctions yaw, roll et pitch qui prennent comme argument un angle en radiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pSceneNode->roll(Degree(180)) ;
    Comment effectuer une mise a l’echelle ?
    Pour effectuer une mise à l’échelle on utilise la fonction scale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pSceneNode->scale(Vector3(ScaleX,ScaleY,ScaleZ)) ;
    Comment attacher un objet à un SceneNode ?
    On peut attacher divers objet (comme la camera, ou une Entity) à un SceneNode. Ces objets se verront appliquer les transformations décrite par le SceneNode. Pour cela, on applique la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pSceneNode-> attachObject(objet_a_attacher) ;
    le type de objet_a_attacher est MovableObject *.


    Entity

    Qu’est ce qu’une Entity ?
    Une Entity est un objet pouvant être affiché. Il contient divers informations sur la géométrie de l’objet (sa mesh), mais il ne contient aucune information sur les transformations de l’objet, celles-ci sont contenues dans un SceneNode. En effet,chaque Entity est attaché a un SceneNode qui décrit les divers transformations appliquées a l’Entity.

    Pour créer une Entity, on utilise la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pSceneManager->createEntity( "nomEntity", "entity.mesh" );
    Le premier argument correspond au nom de l’entité, le second au fichier qui contient les informations sur la géométrie au format utilisé Ogre, le .mesh .

    Comment faire pour que l’Entity ait une ombre ?
    On utilise la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pEntity->setCastShadows(true) ;
    Quand on met la valeur a true, l’entity créer une ombre, a false elle n’en créer pas.

    Comment rendre l’Entity invisible ?
    Pour rendre l’entity invisible, on utilise la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pEntity->setVisible(false) ;
    A l’inverse, pour rendre l’Entity a nouveau visible, il suffit de rappeler la fonction avec la valeur true.

    Problèmes courants

    __imp__MessageBoxA@16
    Si vous obtenez le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unresolved external symbol __imp__MessageBoxA@16 referenced in function _dError
    c’est que vous avez oublier de linker vers user32.lib.

    LIBC.lib […]winMain@16
    Si vous obtenez le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIBC.lib(wincrt0.obj) error Unresolved External Symbol _winMain@16 referenced in function _winMainCRTStartUp
    c’est que vous avez créer un projet Win32 et que vous n’avez pas mis de winMain dans votre programme.

    The application failed to initialize properly (0xc01500002)
    Vous devez installer le service pack 1 pour Visual Studio 2005.

    __declspec(dllimport)... Ogre::[…]
    Vous avez oublier de lier avec OgreMain.lib .


    cannot open include file : 'winres.h'
    Il suffit de remplacer tous les 'winres.h' par 'winresrc.h' dans le fichier ressource.rc de votre application.

    SceneManager


    Qu’est ce qu’un SceneManager ?
    « A scene is an abstract representation of what is shown in a virtual world »
    Littéralement, une scene est une représentation abstraite de ce qui est montré dans le monde virtuel. On y trouve des modeles (des Entity), des lumières, une camera, etc. Un SceneManager contient en quelque sorte une scene. Il existe différents types de SceneManager, chacun étant adapté a un type de scene (par exemple, une scene a l’extérieur ou a l’intérieur n’auras pas la même représentation, et un SceneManager prévu pour l’extérieur ne seras pas très efficace dans un environnement clos).


    Quelles sont les différents SceneManager ?
    Ogre possède plusieurs type de SceneManager. Voici une liste non exhaustive de ses SceneManager :

    Octree Scene Manager
    Ce SceneManager est générique.

    Terrain Scene Manager
    Ce SceneManager est conçu pour les scènes extérieures et peut charger une highmap.

    Paging Scene Manager (ogreaddons)
    SceneManager conçu pour les scènes extérieurs, comme le Terrain Scene Manager, mais le terrain est « découpé » de manière a n’afficher que ce qui est nécessaire et d’améliorer les performances.

    BSP Scene Manager
    SceneManager utilisé pour les scènes intérieures.

    Editable Terrain Manager
    Similaire au Terrain Scene Manager a la différence qu’on peut éditer le terrain en temps réel

    Pour une liste complète des SceneManager, reportez vous ici :
    http://www.ogre3d.org/wiki/index.php...errain_Manager

    Comment créer un SceneManager ?
    Pour créer un SceneManager, il faut passer par Root et utiliser la fonction createSceneManager comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pRoot->createSceneManager (ST_GENERIC);
    Ou le paramètre désigne le type de SceneManager (ici le SceneManager générique).

  2. #2
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Ce serais très bien même

    Je pense que tu pourrais commencer à la faire (regarde les FAQs déjà faite ainsi que regarder ici pour voir comment on prépare les questions de FAQ).

    Si il y a assez de Q/R, je pourrais la mettre en ligne

  3. #3
    Membre confirmé
    Avatar de gusgus
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 500
    Points : 641
    Points
    641
    Par défaut
    J'ai commencer,comme vous pouvez le voir,c'est très fortement inspiré de la FAQ SDL.
    Sinon, Ogre possede de nombreux wrappers pour la physique,le son,et de nombreux GUI, mais je trouve pas de question ou mettre tout sa...
    N'hésitez pas a proposer des questions!

    Edit:si vous pouviez me dire ce que vous pensez des Q/R dejas écritent,sa pourait m'aider a ameliorer les prochaines.

    Edit2:ajout d'une section sur les SceneManager et les problemes courant

  4. #4
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    ça commence à ressembler à une bonne FAQ, je vais commencer à mettre ça en place et voir si ça suffit.

    Si vous voyez d'autres question/réponses à ajouter entre temps, ce serais super

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Citation Envoyé par gusgus Voir le message
    __declspec(dllimport)... Ogre::[…]
    Vous avez oublier de linker avec OgreMain.dll .
    C'est pas plutôt qu'il faut lier avec le .lib ?
    (lier plutôt que "linker" peut-être aussi ?)

    MAT.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Salut,


    C'est pas plutôt qu'il faut lier avec le .lib ?
    (lier plutôt que "linker" peut-être aussi ?)

    MAT.
    Non, Ogre ne fournis pas de lib, seulement des dll (Sous windows), le linker va donc utiliser les dll

Discussions similaires

  1. assistant pour ogre fonctionne pas
    Par loacast dans le forum Ogre
    Réponses: 10
    Dernier message: 24/11/2007, 14h23
  2. Gui pour Ogre
    Par ->maxoume<-{loul} dans le forum Ogre
    Réponses: 3
    Dernier message: 14/06/2007, 00h02
  3. Ou retrouver dans la FAQ pour personnaliser MsgBox ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 1
    Dernier message: 25/10/2005, 10h58

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