Top Banner
OGRE: 3d temps réel open source Présentation Description de scène Matériaux Compositors Extensions Futur Object-Oriented Graphics Rendering Engine Paul Cheyrou-Lagrèze – Pop 3D
23

Ogre 3D : une introduction

Jul 09, 2015

Download

Technology

Tuan Kuranes

Introduction à Ogre3D, description complète, ses principaux composants, ses usages.
les gestionnaire de scenes, les materiaux, les compositor, etc.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ogre 3D : une introduction

OGRE: 3d temps réel open source

Présentation

Description de scène

Matériaux

Compositors

Extensions

Futur

Object-Oriented Graphics Rendering Engine

Paul Cheyrou-Lagrèze – Pop 3D

Page 2: Ogre 3D : une introduction

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

Page 3: Ogre 3D : une introduction

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

Page 4: Ogre 3D : une introduction

Spécialisé et indépendanMoteur 3D accéléré seulementTout 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

Page 5: Ogre 3D : une introduction

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)

Page 6: Ogre 3D : une introduction

DescriptionInterface déclarative, de description de

scène:

Tel modèle à tel endroit vu par tel camera avec telle lumière

Action/Rendu

Toutes les utilisations communes en 3D simplifiées:

Gestion des matériaux, des particules, des niveau de détail, des ressources, de la visibilité, des ombres, des animations, des illuminations

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

Page 7: Ogre 3D : une introduction

Vue d'ensemble

Page 8: Ogre 3D : une introduction

Scène: les basesSceneManager : le gestionnaire adapté au type de scène rendu

(intérieur, extérieur, statique, multi-zones)

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

SceneMgr = mRoot->createSceneManager (ST_GENERIC);

Entity *ent1 = SceneMgr->createEntity( "Robot", "robot.mesh" );

SceneNode *node1 = SceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );

node1->attachObject( ent1 );

Page 9: Ogre 3D : une introduction

Caméra !

Camera

ViewPort

mCamera = SceneMgr->createCamera("PlayerCam");

mCamera->setPosition(Vector3(0,10,500));

mCamera->lookAt(Vector3(0,0,0));

Viewport* vp = mWindow->addViewport(mCamera);

Page 10: Ogre 3D : une introduction

Lumière

Lumières

Point

Spot

Direction

light = mSceneMgr->createLight("Light1");

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);

Page 11: Ogre 3D : une introduction

Ombres

Texture

Stencil

Modulative, Additive

mSceneMgr>setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE);

Page 12: Ogre 3D : une introduction

MatériauxScheme, techniques, passes, texture units

Ilumination, « Shading »Supporte tous les langages de « shader » Héritage, modèles, texture alias, variable,

etc.Séléction des « Schemes » selon le

contexteItération par type de lumière et/ou filtrageItération par PassesSupporte les ombresLevel Of Detail

Page 13: Ogre 3D : une introduction

m a t e r ia l ParallaxMapping{ t e c h n iq u e { p a s s { _ _ v e r t e x p r o g r a m r e f Parallax_vp {} _ _ f r a g m e n t p r o g r a m r e f Parallax_fp {} _ t e x t u r e u n it normalmap {} _ t e x t u r e u n it diffusemap {} _ t e x t u r e u n it shadowmap { _ c o n t e n t t y p e shadow } } }}

m a t e r ia l MyParallaxObject : ParallaxMapping{ _ _ s e t t e x t u r e a lia s normalmap my_nm.png _ _ s e t t e x t u r e a lia s diffusemap my.png}

Matériaux

Page 14: Ogre 3D : une introduction

Système de traitement « post rendu »

Scripts (comme matériaux)

Peuvent être chainés

Place importante dans les rendus modernes.

Compositors

Page 15: Ogre 3D : une introduction

c o m p o s it o r TV{ t e c h n iq u e { // Temporary textures t e x t u r e rt0 _ _ t a r g e t w id t h t a r g e t h e ig h t

_ 8 8 8 8P F A R G B t a r g e t rt0 { // Render from previous compositor

// (or original scene) in p u t p r e v io u s } _t a r g e t o u t p u t { // Start with clear output in p u t n o n e // add some noise, distort it, // then render to scene aligned quad p a s s _r e n d e r q u a d { // Renders a fullscreen quad with a material m a t e r ia l / /O g r e C o m p o s it o r O ld TV in p u t 0 rt0 } } }}

Highlights: Compositors

Page 16: Ogre 3D : une introduction

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 0tex_address_mode clampfiltering linear linear linear

}texture_unit 1{

texture Random3D.dds 3d tex_coord_set 1

tex_address_mode wrapfiltering linear linear linear

}texture_unit 2{

texture NoiseVolume.dds 3d tex_coord_set 2

tex_address_mode wrapfiltering linear linear linear

}}

}}

Page 17: Ogre 3D : une introduction

Tout est fait par

« injection de dépendances »

RenderSystemDX9, DX10, GL, GLES

SceneManagerOctree, PCZ, BSP

GpuProgram (shaders)Asm, Cg, HLSL, GLSL

ShadowCameraSetupUniform, Focused, LiSPSM, PSSM

MovableObject & RenderableEntity, BillboardChain, ParticleSystem

Listeners

Extensibilité

Page 18: Ogre 3D : une introduction

NxOgre,OgreBulletOgreCollada, MOGRE, HydraxPython-Ogre, Hikari, Qt & wxWidget, OgreSpeedtree, ...

Page 19: Ogre 3D : une introduction

Performance

Page 20: Ogre 3D : une introduction

The FuturePagination RT shader systemCompositor NextGenShared shader parametersCMakeSymbian, iPhone & iPod touch support....

Page 21: Ogre 3D : une introduction

Livres Pro OGRE3D ProgrammingGreg Junker 2006 (Apress)

C++ How to Program, 6th EditionDietel & Dietel 2007 (Prentice Hall)

Introduction to Game Programmingwith C++Alan Thorn 2007 (Wordware)

Game Engine ArchitectureJason Gregory 2009 (A K Peters)

Page 22: Ogre 3D : une introduction

Clients, Utilisateurs

Page 23: Ogre 3D : une introduction

?