qt 3d basics - kdab · everything is a qnode qt 3d ecs explained p.24 qt3dcore::qnode is the base...

50
Qt 3D Basics Kévin Ottens, Software Craftsman at KDAB

Upload: others

Post on 22-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasicsKévinOttens,SoftwareCraftsmanatKDAB

Page 2: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

Qt3DBasics p.2

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 3: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

FeatureSet p.3

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 4: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

WhatisQt3D?

FeatureSet p.4

Itisnotabout3D!

Multi-purpose,notjustagameengine

Softreal-timesimulationengine

Designedtobescalable

Extensibleandflexible

Page 5: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

SimulationEngine

FeatureSet p.5

Thecoreisnotinherentlyabout3D

ItcandealwithseveraldomainsatonceAI,logic,audio,etc.Andofcourseitcontainsa3Drenderertoo!

AllyouneedforacomplexsystemsimulationMechanicalsystemsPhysics...andalsogames

Page 6: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Scalability

FeatureSet p.6

Frontend/backendsplitFrontendislightweightandonthemainthreadBackendexecutedinasecondarythreadWheretheactualsimulationruns

Non-blockingfrontend/backendcommunication

Backendmaximizesthroughputviaathreadpool

Page 7: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

ExtensibilityandFlexibility

FeatureSet p.7

Domainscanbeaddedviaindependentaspects...onlyifthere'snotsomethingfittingyourneedsalready

ProvidebothC++andQMLAPIs

IntegrateswellwiththerestofQtPullingyoursimulationdatafromadatabaseanyone?

EntityComponentSystemisusedtocombinebehaviorinyourownobjectsNodeepinheritancehierarchy

Page 8: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

EntityComponentSystem?Kezaco? p.8

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 9: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

ECS:Definitions

EntityComponentSystem?Kezaco? p.9

ECSisanarchitecturalpatternPopularingameenginesFavorscompositionoverinheritance

Anentityisageneralpurposeobject

Anentitygetsitsbehaviorbycombiningdata

Datacomesfromtypedcomponents

Page 10: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritance

EntityComponentSystem?Kezaco? p.10

Let'sanalyseafamiliarexample:SpaceInvaders

Page 11: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.11

Typicalinheritancehierarchy

Page 12: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.12

Allfineuntilcustomerrequiresnewfeature:

Page 13: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.13

Typicalsolution:Addfeaturetobaseclass

Page 14: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.14

Doesn'tscale:

Page 15: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.15

Whataboutmultipleinheritance?

Page 16: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.16

Whataboutmix-inmultipleinheritance?

Page 17: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.17

Doesitscale?

Page 18: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.18

Isinheritanceflexibleenough?

Page 19: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

CompositionvsInheritancecont'd

EntityComponentSystem?Kezaco? p.19

Inheritance:Relationshipsbakedinatdesigntime.Complexinheritancehierarchies:deep,wide,multipleinheritanceFeaturestendtomigratetobaseclass

EntityComponentSystemAllowschangesatruntimeAvoidsinheritancelimitationsHasadditionalcosts:MoreQObjectsDifferenttomostOOPdeveloper'sexperience

Wedon'thavetobakeinassumptionstoQt3Dthatwecan'tlaterchangewhenaddingfeatures.

Page 20: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

HelloDonut p.20

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 21: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

HelloDonut(QML)

HelloDonut p.21

GoodpracticehavingrootEntitytorepresentthescene

OneEntityper"object"inthescene

Objectsgivenbehaviorbyattachingcomponentsubclasses

ForanEntitytobedrawnitneeds:AmeshgeometrydescribingitsshapeAmaterialdescribingitssurfaceappearance

Demoqt3d/ex-hellodonut-qml

Page 22: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

C++APIvsQMLAPI

HelloDonut p.22

QMLAPIisamirroroftheC++API

C++classnamesliketherestofQt

QMLelementnamesjustdon'thavetheQinfrontQt3DCore::QNodevsNodeQt3DCore::QEntityvsEntity...

Page 23: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

Qt3DECSExplained p.23

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 24: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

EverythingisaQNode

Qt3DECSExplained p.24

Qt3DCore::QNodeisthebasetypeforeverythingItinheritsfromQObjectandallitsfeaturesInternallyimplementsthefrontend/backendcommunication

Qt3DCore::QEntity

ItinheritsfromQt3DCore::QNodeItjustaggregatesQt3DCore::QComponents

Qt3DCore::QComponent

ItinheritsfromQt3DCore::QNodeActualdataisprovidedbyitssubclasses

Qt3DCore::QTransformQt3DRender::QMeshQt3DRender::QMaterial

...

Page 25: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

EverythingisaQNodecont'd

Qt3DECSExplained p.25

Page 26: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

YouStillNeedaSystem

Qt3DECSExplained p.26

ThesimulationisexecutedbyQt3DCore::QAspectEngine

Qt3DCore::QAbstractAspectsubclassinstancesareregisteredontheengineBehaviorcomesfromtheaspectsprocessingcomponentdataAspectscontrolthedomainsmanipulatedbyyoursimulation

Qt3DprovidesQt3DRender::QRenderAspectQt3DInput::QInputAspectQt3DLogic::QLogicAspect

NotethataspectshavenoAPIoftheirownItisallprovidedbyQt3DCore::QComponentsubclasses

Page 27: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

InputHandling p.27

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 28: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

PhysicalDevices

InputHandling p.28

Tohandleinputwefirstneedtogenerateinputevents

SubclassesofQt3DInput::QAbstractPhysicalDevicerepresentinputdevices

Qt3DInput::QKeyboardDeviceQt3DInput::QMouseDevice

Otherscanbeaddedlater

Onit'sownadevicedoesn'tdomuchInputhandlersexposesignalsemittedinresponsetoevents

Page 29: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Picking

InputHandling p.29

HighlevelpickingprovidedbyQt3DRender::QObjectPickercomponentImplicitlyassociatedwithmousedeviceUsesray-castbasedpicking

Qt3DRender::QObjectPickeremitssignalsforyoutohandle:pressed(),released(),clicked()

moved()-onlywhendragEnabledistrueentered(),exited()-onlywhenhoverEnabledistrue

ThecontainsMousepropertyprovidesamoredeclarativealternativetoentered(),exited()

Page 30: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

PhysicalDevicesvsLogicalDevices

InputHandling p.30

Physicaldevicesprovideonlydiscreteevents

Hardtousethemtocontrolavalueovertime

Logicaldeviceprovidesawayto:HaveananalogviewonaphysicaldeviceAggregateseveralphysicaldevicesinaunifieddevice

Page 31: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

LogicalInputAction

InputHandling p.31

Qt3DInput::QActionprovidesabinaryvalue

Itisactivatedbysomeinput,canbe:AsinglebuttoninputwithQt3DInput::QActionInputAsimultaneouscombinationofbuttoninputswithQt3DInput::QInputChord

AsequenceofbuttoninputswithQt3DInput::QInputSequence

Whentheactionstatechangestheactivepropertyistoggled

Demoqt3d/ex-logical-input-qml

Page 32: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

LogicalInputAxis

InputHandling p.32

Qt3DInput::QAxisprovidesananalogvaluebetween-1and1

Itvariesovertimewhensomeinputisgenerated,canbe:WhenaphysicalaxisvarieswithQt3DInput::QAnalogAxisInputWhileabuttonispressedwithQt3DInput::QButtonAxisInput

Whentheaxisstatechangesthevaluepropertychanges

Demoqt3d/ex-logical-axes-qml

Page 33: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

PuttingitAllTogether:MovingBoxes

InputHandling p.33

Focusmanagedusingtab

Focusedboxappearsbigger

Thearrowsmovetheboxontheplane

Pageup/downrotatetheboxonitsYaxis

Boxeslightupwhenonmousehover

Clickingonaboxgivesitthefocus

Boxescanbemovedaroundwiththemouse

Demoqt3d/sol-moving-boxes-qml-step3

Page 34: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

DrawingBasics p.34

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 35: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

TheSceneGraph

DrawingBasics p.35

ThescenegraphprovidesthespatialrepresentationofthesimulationQt3DCore::QEntity:whattakespartinthesimulationQt3DCore::QTransform:whereitis,whatscaleitis,whatorientationithas

Hierarchicaltransformsarecontrolledbytheparent/childrelationshipSimilartoQWidget,QQuickItem,etc.

Ifthesceneisrendered,weneedapointofviewonitThisisprovidedbyQt3DRender::QCamera

Page 36: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DCore::QTransform

DrawingBasics p.36

InheritsfromQt3DCore::QComponent

Representsanaffinetransformation

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

Transformationsareapplied:toobjectsinScale/Rotation/TranslationordertocoordinatesystemsinTranslation/Rotation/Scaleorder

Transformationsaremultipliedalongtheparent/childrelationship

Page 37: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Transformscont'd

DrawingBasics 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: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Geometries

DrawingBasics p.38

Qt3DRender::QRenderAspectdrawsQt3DCore::QEntityswithashape

Qt3DRender::QGeometryRenderer'sgeometrypropertyspecifiestheshape

Qt3DprovidesconveniencesubclassesofQt3DRender::QGeometryRenderer:

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

QtDemoexamples/qt3d/basicshapes-cpp

Page 39: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Materials

DrawingBasics p.39

IfaQt3DCore::QEntityonlyhasashapeitwillappearblack

TheQt3DRender::QMaterialcomponentprovidesasurfaceappearance

Qt3DprovidesconveniencesubclassesofQt3DRender::QMaterial:

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

...

Demoqt3d/sol-textured-scene

Page 40: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Lights

DrawingBasics p.40

Evenwithshapesandmaterialswewouldseenothing

Weneedsomelights...luckilyQt3Dsetsadefaultoneforusifnoneisprovided

Ingeneralwewantsomecontrolofthescenelighting

Qt3Dprovidesthefollowinglighttypes:DirectionalLightPointLightSpotLight

Labqt3d/ex-lights-qml

Page 41: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

BeyondtheTipoftheIceberg p.41

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 42: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

MakingyourOwnGeometries

BeyondtheTipoftheIceberg p.42

UsingQt3DRender::QBufferwecancreateourownvertices

GeometryRenderercontrolshowbuffersarecombinedandparsed

Usefultomakeyouowngeometriesprogrammatically:FromafunctionFromdatasetsFromuserinteraction

Demoqt3d/ex-surface-function

Page 43: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

TextureCompositionandFiltering

BeyondtheTipoftheIceberg p.43

Possibletosampleseveraltexturesinasinglematerial

Alsoeasytoreusestocklightingmodel

Thenyoucanblendasyouseefitintheshader

Demoqt3d/sol-earth

Page 44: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

ProceduralTextures

BeyondtheTipoftheIceberg p.44

LotsofexamplesavailableontheInternethttps://www.shadertoy.com/

UsuallywrittenforWebGLorOpenGLES2MayrequiresomeadaptationManyarefarfromsimple!

ButtheyareeasytoplugintheMaterialsystemandtoparameterize

Demoqt3d/ex-plasma

Page 45: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

IntegratingwithQtQuickusingScene3D

BeyondtheTipoftheIceberg p.45

ProvidedbytheQtQuick.Scene3Dmodule

TakesanEntityaschildwhichwillbeyourwholescene

Loadedaspectsarecontrolledwiththeaspectsproperty

HovereventsareonlyacceptedifthehoverEnabledpropertyistrue

Demoqt3d/ex-controls-overlay

Page 46: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Andmore...

BeyondtheTipoftheIceberg p.46

Layermanagement

Ownmaterialsandlightingmodels

Texturemipmaps

CubeMaps

PortabilityofyourcodeaccrossseveralOpenGLversions

Completecontrolovertherenderingalgorithm

Loadingcompleteobjectsorscenesfromfiles(3ds,collada,qml...)

Post-processingeffects(singleormulti-pass)

Instancedrendering

etc.

Demoqt3d/ex-multiple-effects

Demoqt3d/sol-asteroids

Page 47: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Qt3DBasics

TheFutureofQt3D p.47

FeatureSet

EntityComponentSystem?Kezaco?

HelloDonut

Qt3DECSExplained

InputHandling

DrawingBasics

BeyondtheTipoftheIceberg

TheFutureofQt3D

Page 48: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

WhatdoesthefutureholdforQt3D?

TheFutureofQt3D p.48

Qt3DCoreEfficiencyimprovemmentsBackendthreadpoolandjobhandlingimprovements-jobsspawningjobs

Qt3DRenderUseQtQuickorQPaintertorenderintoatextureEmbedQtQuickintoQt3DincludinginputhandlingLevelofDetail(LOD)supportformeshesBillboards-camerafacingentitiesTextsupport-2Dand3DAdditionalmaterialssuchasPhysicsBasedRendering(PBR)materialsParticlesystems

Qt3DInputAxisinputsthatapplycumulativeaxisvaluesasposition,velocityoraccelerationAdditionalinputdevicesupport3Dmousecontrollers,gamecontrollers

Enumeratedinputssuchas8-waybuttons,hatswitchesordials

Page 49: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

WhatdoesthefutureholdforQt3D?

TheFutureofQt3D p.49

Newaspects:CollisionDetectionAspectAllowstodetectwhenentitiescollideorenter/exitvolumesinspace

AnimationAspectKeyframeanimationSkeletalanimationMorphtargetanimationRemovesanimationworkloadfrommainthread

PhysicsAspectRigidbodyandsoftbodyphysicssimulation

AIAspect,3DPositionalAudioAspect...

Tooling:Designtimetooling-sceneeditorBuildtimetooling-assetconditionersformeshes,texturesetc.

Page 50: Qt 3D Basics - KDAB · Everything is a QNode Qt 3D ECS Explained p.24 Qt3DCore::QNode is the base type for everything It inherits from QObject and all its features Internally implements

Thankyou!

www.kdab.com

[email protected]