les bases de qt 3d - ervin · les bases de qt 3d 2 0 1 6 les bases du tracé 3d p.34...

50
Les bases de Qt 3D Kévin Ottens, Artisan Logiciel à KDAB 2016

Upload: others

Post on 13-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3DKévinOttens,ArtisanLogicielàKDAB

2016

Page 2: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 LesbasesdeQt3D p.2

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 3: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 Fonctionnalités p.3

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 4: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Qu'est-cequeQt3D?

2016 Fonctionnalités p.4

Cen'estpasqu'unmoteur3D!

Généraliste,pasuniquementpourlesjeux

Moteurdesimulationtemps-réelsouple

Conçupourlepassageàl'échelle

Extensibleetflexible

Page 5: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Moteurdesimulation

2016 Fonctionnalités p.5

Lecœurn'estpasspécifiqueàla3D

IlpeutgérerplusieursdomainessimultanémentIA,logique,audio,etc.Etbiensûrilfaitaussilerendu3D!

ToutlenécessairepourdessystèmesdesimulationcomplexesSystèmesmécaniquesPhysique...etaussilesjeux

Page 6: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Passageàl'échelle

2016 Fonctionnalités p.6

Séparationfrontend/backendFrontendlégersurlathreadprincipaleBackendexécutédansunethreadsecondaire

Làoùrésidelasimulation

Communicationfrontend/backendnon-bloquante

Lebackendmaximiselachargeviaunepooldethreads

Page 7: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Extensibleetflexible

2016 Fonctionnalités p.7

Lesdomainessontajoutésviadesaspectsindépendants...uniquementsiriennecorrespondàvosbesoins

FourniàlafoisdesAPIsC++etQML

S'intègrebienaveclerestedeQtQuiveutobtenirsesdonnéesdesimulationd'unebasededonnées?

SystèmeEntitéComposant(ECS)utilisépourcombinerlescomportementsdansvosobjets

Pasdehiérarchied'héritageprofonde

Page 8: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 SystèmeEntitéComposant?Kezaco? p.8

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 9: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

ECS:Définitions

2016 SystèmeEntitéComposant?Kezaco? p.9

ECSestunpatrond'architecturePopulairedanslesmoteursdejeuxFavoriselacompositionplutôtquel'héritage

Uneentitéestunobjetgénéraliste

Uneentitéobtientsoncomportementencombinantdeladonnée

Ladonnéeprovientdecomposantstypés

Page 10: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage

2016 SystèmeEntitéComposant?Kezaco? p.10

Analysonsunexemplefamilier:SpaceInvaders

Page 11: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.11

Hiérarchied'héritagetypique

Page 12: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.12

Toutvabienjusqu'àcequeleclientdemandeunenouvellefonctionnalité:

Page 13: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.13

Solutiontypique:ajouteràlaclassedebase

Page 14: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.14

Nepassepasàl'échelle:

Page 15: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.15

Etl'héritagemutiple?

Page 16: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.16

Etl'utilisationd'interfaces?

Page 17: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.17

Est-cequecelapasseàl'échelle?

Page 18: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.18

L'héritageest-ilsuffisammentflexible?

Page 19: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

CompositionvsHéritage(suite)

2016 SystèmeEntitéComposant?Kezaco? p.19

Héritage:RelationfigéesàlaconceptionHiérarchiesd'héritagecomplexes:profondes,larges,héritagesmultiplesLesfonctionnalitéstendentàmigrerverslaclassedebase

SystèmeEntitéComposantAutoriselesmodificationsàl'exécutionÉviteleslimitationsdel'héritageAuncoûtsupplémentaire:

PlusdeQObjectsDifférentdeshabitudesdelaplupartdesdéveloppeursobjet

PasbesoindefigerdessuppositionssurQt3Dquinepourrontpasêtrechangéesplustardlorsdel'ajoutdenouvellesfonctionnalités

Page 20: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 HelloDonut p.20

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 21: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

HelloDonut(QML)

2016 HelloDonut p.21

AvoiruneEntityracinepourreprésenterlascèneestunebonneidée

UneEntitypar"objet"danslascène

Lecomportementdesobjetsestobtenuenattachantdescomposants

PourafficheruneEntityilfaut:

UnegéométriepourdécriresaformeUnmatériaupourdécrirel'apparencedelasurface

Demoqt3d/ex-hellodonut-qml

Page 22: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

APIC++vsAPIQML

2016 HelloDonut p.22

L'APIQMLestunmiroirdel'APIC++

LesclassesC++sontnomméescommelerestedeQt

LenomdesélémentsQMLperdentlepréfixeQQt3DCore::QNodevsNodeQt3DCore::QEntityvsEntity...

Page 23: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 L'ECSdeQt3Dexpliqué p.23

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 24: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

ToutestQNode

2016 L'ECSdeQt3Dexpliqué p.24

Qt3DCore::QNodeletypedebaseutilisépartoutIlhéritedeQObjectetdetoutessesfonctionnalitésAjoutelacommunicationfrontent/backendeninterne

Qt3DCore::QEntity

IlhéritedeQt3DCore::QNodeIlaggrègesimplementdesQt3DCore::QComponents

Qt3DCore::QComponent

IlhéritedeQt3DCore::QNodeLesdonnéessontfourniesparsesclassesfilles

Qt3DCore::QTransformQt3DRender::QMeshQt3DRender::QMaterial

...

Page 25: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

ToutestQNode(suite)

2016 L'ECSdeQt3Dexpliqué p.25

Page 26: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Ilvousfautencoreunsystème

2016 L'ECSdeQt3Dexpliqué p.26

LasimulationestexécutéeparQt3DCore::QAspectEngine

Lesinstancesdesous-classesdeQt3DCore::QAbstractAspectsontenregistréessurlemoteur

LecomportementprovientdesaspectstraitantlesdonnéesdescomposantsLesaspectscontrôlentlesdomainemanipulésparvotresimulation

Qt3DfourniQt3DRender::QRenderAspectQt3DInput::QInputAspectQt3DLogic::QLogicAspect

Notezquelesaspectsn'ontpasd'APIToutestfournipardessous-classesdeQt3DCore::QComponent

Page 27: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 Gestiondesentrées p.27

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 28: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Périphériquesphysiques

2016 Gestiondesentrées p.28

Pourgérerlesentréesilnousfautd'abordgénérerlesévénementsd'entrée

Lessous-classesdeQt3DInput::QAbstractPhysicalDevicereprésententlespériphériquesd'entrée

Qt3DInput::QKeyboardDeviceQt3DInput::QMouseDevice

D'autrespeuventêtreajoutésplustard

ParluimêmeunpériphériquenefaitpasgrandchoseLesgestionnairesd'entréeexposentdessignauxémisenréponseauxévénements

Page 29: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Pointage

2016 Gestiondesentrées p.29

Lepointagedehaut-niveauestfourniparlecomposantQt3DRender::QObjectPicker

ImplicitementassociéàlasourisUtiliseunpointagebasésurdulancerderayons

Qt3DRender::QObjectPickerémetsdessignaux:pressed(),released(),clicked()

moved()-uniquementquanddragEnabledestvraientered(),exited()-uniquementquandhoverEnabledestvrai

LapropriétécontainsMousefourniunealternativedéclarativepourentered(),exited()

Page 30: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Périphériquesphysiquesvspériphériqueslogiques

2016 Gestiondesentrées p.30

Lespériphériquesphysiquesfournissentuniquementdesévénementsdiscrétisés

Ilestdifficiledelesutiliserpourcontrôlerunevaleurdansletemps

Lespériphériqueslogiquespermettent:D'obtenirunevueanalogiquesurunpériphériquephysiqueD'aggrégerplusieurspériphériquesphysiquescommeunpériphériqueunifié

Page 31: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Actiond'entréelogique

2016 Gestiondesentrées p.31

Qt3DInput::QActionexposeunevaleurbinaire

Elleestactivéeparuneentréequipeutêtre:UnsimpleboutonavecQt3DInput::QActionInputUnecombinaisonsimultanéedeboutonsavecQt3DInput::QInputChordUneséquencedeboutonsavecQt3DInput::QInputSequence

Lorsquel'étatdel'actionchange,lapropriétéactivechanged'état

Demoqt3d/ex-logical-input-qml

Page 32: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Axed'entréelogique

2016 Gestiondesentrées p.32

Qt3DInput::QAxisexposeunevaleuranalogiqueentre-1et1

Ellevariedansletempsquanduneentréeestgénérée:LorsqueunaxephysiquechangeavecQt3DInput::QAnalogAxisInputPendantqu'unboutonestpresséavecQt3DInput::QButtonAxisInput

Lorsquel'étatdel'axechange,lapropriétévaluechange

Demoqt3d/ex-logical-axes-qml

Page 33: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Toutassemblerpourdéplacerdesboîtes

2016 Gestiondesentrées p.33

Lefocusestgéréaveclatouchetabulation

Laboîteayantlefocusestplusgrande

Lesflèchesdéplacentlaboîtesurlesol

Pageprécédente/suivantefaittournerlaboîtesursonaxeY

Lesboîtess'éclairentlorsquelasourislessurvole

Cliquersuruneboîteluidonnelefocus

Lesboîtespeuventêtredéplacéesaveclasouris

Demoqt3d/sol-moving-boxes-qml-step3

Page 34: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 Lesbasesdutracé3D p.34

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 35: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Legraphedescène

2016 Lesbasesdutracé3D p.35

LegraphedescènefournilareprésentationspatialedelasimulationQt3DCore::QEntity:cequiparticipeàlasimulationQt3DCore::QTransform:oùcelasetrouve,quelletaillecelaa,quelleorientation

Lestransformationshiérarchiquessontcontrôléesparlarelationparent/enfant

SimilaireàQWidget,QQuickItem,etc.

Silascèneesttracée,nousavonsbesoind'unpointdevuedessusIlestdécritavecQt3DRender::QCamera

Page 36: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Qt3DCore::QTransform

2016 Lesbasesdutracé3D p.36

InheritsfromQt3DCore::QComponent

Representsanaffinetransformation

Threewaysofusingit:Throughproperties:scale3D,rotation,translationThroughhelperfunctions:rotateAround()Throughthematrixproperty

Transformationsareapplied:toobjectsinScale/Rotation/TranslationordertocoordinatesystemsinTranslation/Rotation/Scaleorder

Transformationsaremultipliedalongtheparent/childrelationship

Page 37: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Transformations

2016 Lesbasesdutracé3D p.37

1 importQt3D.Core2.023 Entity{4    components:[5        Transform{6            scale3D:Qt.vector3d(1,2,1.5)7            translation:Qt.vector3d(0,0,-1)8        }9    ]1011    Entity{12        components:[13            Transform{translation:Qt.vector3d(0,1,0)}14        ]15    }16 }

Page 38: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Géométries

2016 Lesbasesdutracé3D p.38

Qt3DRender::QRenderAspecttracelesQt3DCore::QEntitysavecuneforme

LapropriétégeometrydeQt3DRender::QGeometryRendererspéfifielaforme

Qt3Dfournidessous-classesdeQt3DRender::QGeometryRenderer:

Qt3DExtras::QSphereMeshQt3DExtras::QCuboidMeshQt3DExtras::QPlaneMeshQt3DExtras::QTorusMeshQt3DExtras::QConeMeshQt3DExtras::QCylinderMesh

QtDemoexamples/qt3d/basicshapes-cpp

Page 39: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Matériaux

2016 Lesbasesdutracé3D p.39

SiuneQt3DCore::QEntityauniquementuneformeelleapparaîtranoire

LecomposantQt3DRender::QMaterialfournil'apparenced'unesurface

Qt3Dfournidessous-classedeQt3DRender::QMaterial:

Qt3DExtras::QPhongMaterialQt3DExtras::QPhongAlphaMaterialQt3DExtras::QDiffuseMapMaterialQt3DExtras::QDiffuseSpecularMapMaterialQt3DExtras::QGoochMaterial

...

Demoqt3d/sol-textured-scene

Page 40: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Lumières

2016 Lesbasesdutracé3D p.40

Mêmeaveclesgéométriesetmatériauxonneverraitrien

Nousavonsbesoindelumières...heureusementQt3Dpositionneunelumièrepardéfautsiaucunen'estfournie

Engénéralonveutcontrôlerl'éclairaged'unescène

Qt3Dfournilestypesdelumièressuivants:DirectionalLightPointLightSpotLight

Labqt3d/ex-lights-qml

Page 41: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 Lapartieimmergéedel'iceberg p.41

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 42: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Fairesespropresgéométries

2016 Lapartieimmergéedel'iceberg p.42

GrâceàQt3DRender::QBuffernouspouvonscréernospropresvertices

GeometryRenderercontrôlecommentlesbufferssontcombinésetinterprêtés

Utilepourprogrammersespropresgéométries:DepuisunefonctionDepuisunensemblededonnéesDepuisuneinteractionutilisateur

Demoqt3d/ex-surface-function

Page 43: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Compositiondetexturesetfiltrage

2016 Lapartieimmergéedel'iceberg p.43

Ilestpossibled'utiliserplusieurstexturesdepuisunseulmatériau

Ilestaussifacilederéutiliserlemodèled'éclairagepardéfaut

Ensuitevouspouvezcombinercommevouslesouhaitezdepuisunshader

Demoqt3d/sol-earth

Page 44: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Texturesprocédurales

2016 Lapartieimmergéedel'iceberg p.44

Beaucoupd'exemplessontdisponiblessurleWebhttps://www.shadertoy.com/

EngénéralécritspourWebGLouOpenGLES2Peutnécessiterunpeud'adaptationLaplupartsontloind'êtretriviaux!

MaisilssontfacilesàintégrerdansMaterialetàparamétrer

Demoqt3d/ex-plasma

Page 45: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

IntégreravecQtQuickgrâceàScene3D

2016 Lapartieimmergéedel'iceberg p.45

FourniparlemoduleQtQuick.Scene3D

PrenduneEntityenenfantquiseravotrescènecomplète

Lesaspectschargéssontcontrôlésparlapropriétéaspects

LesévénementsdesurvoldelasourissontacceptésuniquementsilapropriétéhoverEnabledestvraie

Demoqt3d/ex-controls-overlay

Page 46: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Etplus...

2016 Lapartieimmergéedel'iceberg p.46

Gestiondecouches

Matériauxetmodèlesd'éclairagespécifiques

Texturemipmaps

CubeMaps

Portabilitédevotrecodesurplusieursversionsd'OpenGL

Contrôlecompletsurl'algorithmederendu

Chargementd'objetsoudescènescomplètesdepuisdesfichiers(3ds,collada,qml...)

Effetsdepost-processing(simpleoumulti-passes)

Instancedrendering

etc.

Demoqt3d/ex-multiple-effects

Demoqt3d/sol-asteroids

Page 47: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

LesbasesdeQt3D

2016 LefuturdeQt3D p.47

Fonctionnalités

SystèmeEntitéComposant?Kezaco?

HelloDonut

L'ECSdeQt3Dexpliqué

Gestiondesentrées

Lesbasesdutracé3D

Lapartieimmergéedel'iceberg

LefuturdeQt3D

Page 48: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Qu'est-cequiarriveradanslefuturdeQt3D?

2016 LefuturdeQt3D p.48

Qt3DCoreAméliorationdesperformancesAméliorationdelagestiondupooldethreadsurlebackend-jobsquicréentdesjobs

Qt3DRenderUtiliserQtQuickouQPainterpourtracerdansunetextureEmbarquerQtQuickdansQt3DavecgestiondesentréesSupportduniveaudedétailpourlesgéométriesBillboards-objetsfaisanttoujoursfaceàlacaméraSupportdutexte-2Det3DMatériauxadditionnelstelquelesupportduPhysicsBasedRenderingSystèmesdeparticules

EntréesQt3DAxesd'entréequiappliqueunevaleurcumuléetellequelaposition,lavélocitéoul'accélérationSupportdepériphériquesd'entréeadditionnels

Souris3D,manettesdejeuxEntréesénuméréescommelesboutons8positions,etc.

Page 49: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Qu'est-cequiarriveradanslefuturdeQt3D?

2016 LefuturdeQt3D p.49

Nouveauxaspects:Détectiondecollisions

Permetdedétecterdansdesentitéssontencollisionouentrent/sortentdevolumesdansl'espace

AnimationAnimationparkeyframeAnimationdesquelettesMorphingRetirerlesanimationsdelathreadprincipale

PhysiqueSimulationdescorpsrigidesetsouples

IA,Audiospatial...

Outillage:EditeurdescèneOptimisationd'assetspourlesgéométries,textures,etc.

Page 50: Les bases de Qt 3D - ervin · Les bases de Qt 3D 2 0 1 6 Les bases du tracé 3D p.34 Fonctionnalités ... En général on veut contrôler l'éclairage d'une scène Qt 3D fourni les

Merci!

www.kdab.com

[email protected]