OGRE: 3d temps réel open source <ul><li>Présentation
Description de scène
Matériaux
Compositors
Extensions
Futur </li></ul><ul>Object-Oriented Graphics Rendering Engine </ul><ul>Paul Cheyrou-Lagrèze – Pop 3D </ul>
Présentation Moteur 3D Temps réel Open Source 2001 - 2009 Multi-platforme: Linux, OS X, Windows, BSD Recherche, Visualisat...
Librairie Ogre est un composant Ne doit pas être  le  centre de l'application Doit s'insérer dans une application Fait par...
Spécialisé et indépendan Moteur 3D accéléré seulement Tout est fait pour l'intégration d'Ogre et non l'inverse Longévité &...
Moteur 3D != Moteur de JEU Renderer  Animation, Particules Shading/Lighting Détection de Collisions  Scripts Son/Vidéo Rés...
Description Interface déclarative, de description de scène:  <ul><li>Tel modèle à tel endroit vu par tel camera avec telle...
Action/Rendu </li></ul>Toutes les utilisations communes en 3D simplifiées: <ul><li>Gestion des matériaux, des particules, ...
Chaque gestionnaire a une interface paramétrable,  extensible/modulable par greffons
DirectX9/10, OpenGL 1&2, GLES 1.1 : système de rendu sont des greffons </li></ul>
Vue d'ensemble
Scène: les bases <ul><li>SceneManager : le gestionnaire adapté au type de scène rendu (intérieur, extérieur, statique, mul...
SceneNode : le SceneNode contient les informations au sujet de l'emplacement et de l'orientation des entités.
Entity : une entité est un objet 3D  </li></ul><ul>SceneMgr = mRoot->createSceneManager (ST_GENERIC); Entity *ent1 = Scene...
Caméra ! <ul><li>Camera
ViewPort </li></ul><ul>mCamera = SceneMgr->createCamera(&quot;PlayerCam&quot;); mCamera->setPosition(Vector3(0,10,500)); m...
Lumière <ul><li>Lumières </li><ul><li>Point
Spot
Direction </li></ul></ul><ul>light = mSceneMgr->createLight(&quot;Light1&quot;); light->setType(Light::LT_SPOTLIGHT); ligh...
Prochain SlideShare
Chargement dans…5
×

Ogre 3D : une introduction

3 359 vues

Publié le

Introduction à Ogre3D, description complète, ses principaux composants, ses usages.
les gestionnaire de scenes, les materiaux, les compositor, etc.

Publié dans : Technologie, Business
1 commentaire
0 j’aime
Statistiques
Remarques
  • Une illustration de ce qu’on peut faire avec Ogre dans le domaine de la réalité augmentée (cf deuxième vidéo): http://www.drako-thegame.com/?p=796
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
3 359
Sur SlideShare
0
Issues des intégrations
0
Intégrations
584
Actions
Partages
0
Téléchargements
19
Commentaires
1
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • SceneManager Basics Everything that appears on the screen is managed by the SceneManager (fancy that). When you place objects in the scene, the SceneManager is the class which keeps track of their locations. When you create Cameras to view the scene (which we will cover in a later tutorial) the SceneManager keeps track of them. When you create planes, billboards, lights...and so on, the SceneManager keeps track of them. There are multiple types of SceneManagers. There are SceneManagers that render terrain, there is a SceneManager for rendering BSP maps, and so on. You can see the various types of SceneManagers listed here. We will cover more about other SceneManagers as we progress through the tutorials. Entity Basics An Entity is one of the types of object that you can render on a scene. You can think of an Entity as being anything that&apos;s represented by a 3D mesh. A robot would be an entity, a fish would be an entity, the terrain your characters walk on would be a very large entity. Things such as Lights, Billboards, Particles, Cameras, etc would not be entities. One thing to note about Ogre is that it separates renderable objects from their location and orientation. This means that you cannot directly place an Entity in a scene. Instead you must attach the Entity to a SceneNode object, and this SceneNode contains the information about location and orientation. SceneNode Basics As already mentioned, SceneNodes keep track of location and orientation for all of the objects attached to it. When you create an Entity, it is not rendered in the scene until you attach it to a SceneNode. In addition a SceneNode is not an object that is displayed on the screen. Only when you create a SceneNode and attach an Entity (or other object) to it is something actually displayed on the screen. SceneNodes can have any number of objects attached to them. Let&apos;s say you have a character walking around on the screen and you want to have him generate a light around him. The way you do this would be to first create a SceneNode, then create an Entity for the character and attach it to the SceneNode. Then you would create a Light object and attach it to the SceneNode. SceneNodes may also be attached to other SceneNodes which allows you to create entire hierarchies of nodes. We will cover more advanced uses of SceneNode attachment in a later tutorial. One major concept to note about SceneNodes is that a SceneNode&apos;s position is always relative to its parent SceneNode, and each SceneManager contains a root node to which all other SceneNodes are attached.
  • Ogre 3D : une introduction

    1. 1. OGRE: 3d temps réel open source <ul><li>Présentation
    2. 2. Description de scène
    3. 3. Matériaux
    4. 4. Compositors
    5. 5. Extensions
    6. 6. Futur </li></ul><ul>Object-Oriented Graphics Rendering Engine </ul><ul>Paul Cheyrou-Lagrèze – Pop 3D </ul>
    7. 7. Présentation Moteur 3D Temps réel Open Source 2001 - 2009 Multi-platforme: Linux, OS X, Windows, BSD Recherche, Visualisation, Jeux, Etudiants, Réalité augmentée, etc. C++, OO, Motifs Conceptions Accéléré par le matériel Leader : Steve Streeting Torus Knot software
    8. 8. Librairie Ogre est un composant Ne doit pas être le centre de l'application Doit s'insérer dans une application Fait par des développeurs pour les développeurs
    9. 9. Spécialisé et indépendan Moteur 3D accéléré seulement Tout est fait pour l'intégration d'Ogre et non l'inverse Longévité & stabilité Modélisation en premier, Code facile à maintenir, Commentaire, Documentation, Branche Stable et Développement Éviter la « prédestination » Pas de spécificité / type de rendu Composant réutilisable et extensible Les Règles d'Or
    10. 10. Moteur 3D != Moteur de JEU Renderer Animation, Particules Shading/Lighting Détection de Collisions Scripts Son/Vidéo Réseau Physique Intelligence Artificielle Éditeur (Niveaux, Terrain, shaders, modèles)
    11. 11. Description Interface déclarative, de description de scène: <ul><li>Tel modèle à tel endroit vu par tel camera avec telle lumière
    12. 12. Action/Rendu </li></ul>Toutes les utilisations communes en 3D simplifiées: <ul><li>Gestion des matériaux, des particules, des niveau de détail, des ressources, de la visibilité, des ombres, des animations, des illuminations
    13. 13. Chaque gestionnaire a une interface paramétrable, extensible/modulable par greffons
    14. 14. DirectX9/10, OpenGL 1&2, GLES 1.1 : système de rendu sont des greffons </li></ul>
    15. 15. Vue d'ensemble
    16. 16. Scène: les bases <ul><li>SceneManager : le gestionnaire adapté au type de scène rendu (intérieur, extérieur, statique, multi-zones)
    17. 17. SceneNode : le SceneNode contient les informations au sujet de l'emplacement et de l'orientation des entités.
    18. 18. Entity : une entité est un objet 3D </li></ul><ul>SceneMgr = mRoot->createSceneManager (ST_GENERIC); Entity *ent1 = SceneMgr->createEntity( &quot;Robot&quot;, &quot;robot.mesh&quot; ); SceneNode *node1 = SceneMgr->getRootSceneNode()->createChildSceneNode( &quot;RobotNode&quot; ); node1->attachObject( ent1 ); </ul>
    19. 19. Caméra ! <ul><li>Camera
    20. 20. ViewPort </li></ul><ul>mCamera = SceneMgr->createCamera(&quot;PlayerCam&quot;); mCamera->setPosition(Vector3(0,10,500)); mCamera->lookAt(Vector3(0,0,0)); Viewport* vp = mWindow->addViewport(mCamera); </ul>
    21. 21. Lumière <ul><li>Lumières </li><ul><li>Point
    22. 22. Spot
    23. 23. Direction </li></ul></ul><ul>light = mSceneMgr->createLight(&quot;Light1&quot;); light->setType(Light::LT_SPOTLIGHT); light->setDirection(-1, -1, 0); light->setPosition(Vector3(300, 300, 0)); light->setDiffuseColour(1.0, 0.0, 0.0); light->setSpecularColour(1.0, 0.0, 0.0); </ul>
    24. 24. <ul>Ombres <li>Texture
    25. 25. Stencil
    26. 26. Modulative, Additive
    27. 27. mSceneMgr>setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); </li></ul>
    28. 28. Matériaux <ul>Scheme, techniques, passes, texture units </ul><ul>Ilumination, « Shading » <ul><li>Supporte tous les langages de « shader »
    29. 29. Héritage, modèles, texture alias, variable, etc.
    30. 30. Séléction des « Schemes » selon le contexte
    31. 31. Itération par type de lumière et/ou filtrage
    32. 32. Itération par Passes
    33. 33. Supporte les ombres
    34. 34. Level Of Detail </li></ul></ul>
    35. 35. material ParallaxMapping { technique { pass { vertex_program_ref Parallax_vp {} fragment_program_ref Parallax_fp {} texture_unit normalmap {} texture_unit diffusemap {} texture_unit shadowmap { content_type shadow } } } } material MyParallaxObject : ParallaxMapping { set_texture_alias normalmap my_nm.png set_texture_alias diffusemap my.png } Matériaux
    36. 36. Système de traitement « post rendu » Scripts (comme matériaux) Peuvent être chainés Place importante dans les rendus modernes. Compositors
    37. 37. compositor TV { technique { // Temporary textures texture rt0 target_width target_height PF_A8R8G8B8 target rt0 { // Render from previous compositor // (or original scene) input previous } target_output { // Start with clear output input none // add some noise, distort it, // then render to scene aligned quad pass render_quad { // Renders a fullscreen quad with a material material Ogre/Compositor/OldTV input 0 rt0 } } } } Highlights: Compositors
    38. 38. material Ogre/Compositor/OldTV { technique { pass { depth_check off vertex_program_ref Ogre/Compositor/StdQuad_Tex2a_vp { } fragment_program_ref Ogre/Compositor/OldTV_FP { param_named_auto time_0_X time_0_x 120 param_named_auto sin_time_0_X sintime_0_x 120 param_named distortionFreq float 2.7 param_named distortionScale float 2.5 param_named distortionRoll float 0.93 param_named interference float 0.5 param_named frameLimit float 0.40 param_named frameShape float 0.26 param_named frameSharpness float 6.0 } texture_unit 0 { tex_coord_set 0 tex_address_mode clamp filtering linear linear linear } texture_unit 1 { texture Random3D.dds 3d tex_coord_set 1 tex_address_mode wrap filtering linear linear linear } texture_unit 2 { texture NoiseVolume.dds 3d tex_coord_set 2 tex_address_mode wrap filtering linear linear linear } } } }
    39. 39. Tout est fait par « injection de dépendances »  <ul><li>RenderSystem </li><ul><li>DX9, DX10, GL, GLES </li></ul><li>SceneManager </li><ul><li>Octree, PCZ, BSP </li></ul><li>GpuProgram (shaders) </li><ul><li>Asm, Cg, HLSL, GLSL </li></ul><li>ShadowCameraSetup </li><ul><li>Uniform, Focused, LiSPSM, PSSM </li></ul><li>MovableObject & Renderable </li><ul><li>Entity, BillboardChain, ParticleSystem </li></ul><li>Listeners </li></ul>Extensibilité
    40. 40. NxOgre,OgreBullet OgreCollada, MOGRE, Hydrax Python-Ogre, Hikari, Qt & wxWidget, OgreSpeedtree, ...
    41. 41. Performance
    42. 42. The Future Pagination RT shader system Compositor NextGen Shared shader parameters CMake Symbian, iPhone & iPod touch support ....
    43. 43. Livres Pro OGRE3D Programming Greg Junker 2006 (Apress) C++ How to Program, 6 th Edition Dietel & Dietel 2007 (Prentice Hall) Introduction to Game Programming with C++ Alan Thorn 2007 (Wordware) Game Engine Architecture Jason Gregory 2009 (A K Peters)
    44. 44. Clients, Utilisateurs
    45. 45. ?

    ×