De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Labo 03 Tree: Parent Child Mesh

Verwante presentaties


Presentatie over: "Labo 03 Tree: Parent Child Mesh"— Transcript van de presentatie:

1 Labo 03 Tree: Parent Child Mesh
GSP Labo 03 Tree: Parent Child Mesh

2 Doelstelling Implementatie van View en Projection matrices
Kennismaking met enkele nieuwe klassen uit het 3D Framework. Leren werken met een Tree klassenstructuur Een samengesteld 3D object maken.

3 View- en Projection Matrix
Elk object in de 3D ruimte heeft een positie en rotatie tov de oorsprong -> World Matrix. Om een object vanuit een andere hoek en plaats te bekijken, moet het verplaatst en geroteerd worden->View Matrix. Om perspectief toe te passen (hoe verder een voorwerp, hoe kleiner) gebruiken we een Projection Matrix.

4 View Matrix “Camera positie en kijkrichting” DirectX SDK Documentatie:

5 View Matrix Parameters: DirectX Implementatie:
Plaats van Oog, Doel, en richting van bovenkant van camera DirectX Implementatie:

6 Projection Matrix “Camera kijkhoek” DirectX SDK Documentatie:

7 Projection Matrix “Camera kijkhoek” Parameters: DirectX Implementatie:
Kijkhoek, Aspect Ratio, Near en Far Clipping Plane DirectX Implementatie:

8 Later… Toevoeging van Camera klasse
Heeft View en Projection Matrix als datamembers Kan bewegen, translatie en rotatie Kan in- en uitzoomen

9

10 Tree Wa t: Een verzameling van objecten met een parent-child relatie.
Waarom? Samengestelde objecten: één referentiepunt Voorbeeld: assenstelsel: wat als het zou moeten roteren of rondjes draaien? Vereenvoudigen van rotaties en translaties Optimaliseren van Renderproces (later)

11 Tree Een Tree heeft Nodes en Leafs (knopen en bladeren) Nodes: Leaf:
1 Parent Children: verschillende nodes en/of leafs World Matrix Onzichtbaar Leaf: GEEN Children Zichtbaar object

12 Tree Node Node Leaf Leaf Node Leaf Leaf Leaf

13 Tree: World matrices Elke node en object heeft een World Matrix
De World Matrix van een “Leaf” is het product van eigen World matrix met alle Parent World matrices. Voorbeeld: We starten met een object op de oorsprong van het assenstelsel, geen rotatie, geen scale:

14 Tree: World matrices Het voorwerp wordt geroteerd:
Het voorwerp wordt verplaatst:

15 Voorbeeld World Matrix
We volgen m_World: Eerst Initialisatie Vermenigvuldiging met Rotatiematrix Vermenigvuldiging met TranslatieMatrix Enz…. Besluiten: Object komt op positie door opeenvolging van vermenigvuldigingen van eigen World Matrix met andere matrices. Volgorde van vermenigvuldigingen is belangrijk.

16 Leaf1: m_World berekening: (pseudo code) m_World. Translate…
Leaf1: m_World berekening: (pseudo code) m_World.Translate….Rotate… m_World *= Node2.m_World m_World *= Node1.m_World Leaf2: m_World berekening: m_World.Translate….Rotate… m_World *= Node3.m_World m_World *= Node2.m_World m_World *= Node1.m_World Node1 m_World Node2 m_World Leaf1 m_World Node3 m_World Leaf2 m_World

17 Algoritme: Node1 m_World Node2 m_World Node3 m_World Leaf2 m_World

18 Tree: Overzicht Klasses
TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh

19 TreeElement Is Basis klasse waaruit de Tree is opgebouwd Datamembers:
TreeElement *m_pParent; Is de link met bovenliggend element. D3DXMATRIX m_World; Member functions: GetParent en SetParent, Get- en SetWorldMatrix ResetWorldMatrix CalculateWorldTransform Berekent world matrix adh van alle parent-world matrices. Pure Virtual (moeten door afgeleide klassen worden geïmplementeerd): Draw, Tick, OnLostDevice en OnResetDevice

20 Tree: Overzicht Klasses
TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh

21 TreeNode Is knooppunt in de boomstructuur Afgeleid van TreeElement: m_pParent,m_World en CalculateWorldTransform Std::vector met Child objecten: Vector<TreeElement*>m_Children Methods Tick, Draw, OnLostDevice en OnResetDevice: Callen van al hun children de method met dezelfde naam. “Onzichtbaar”

22 Tree: Overzicht Klasses
TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh

23 TreeTransformNode Is afgeleid van de TreeNode Heeft methods: Rotate Translate Scale Wordt gebruikt om alle children te: transleren roteren scalen

24 Tree: Overzicht Klasses
TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh

25 TreeD3DObject Is afgeleid van TreeElement(basisklasse) Is “Leaf” in de boomstructuur Heeft methods: Rotate Translate Scale Heeft pure virtual functions: Tick, Draw, OnResetDevice, OnLostDevice

26 Tree: Overzicht Klasses
TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh

27 Is Afgeleid van de TreeD3DObject klasse Implementeert:
MultiMesh Is Afgeleid van de TreeD3DObject klasse Implementeert: Draw, Tick, OnResetDevice en OnLostDevice SetMaterialColor(r,g,b,a), Init en Cleanup

28 Voorbeeld: Assenstelsel
Zichtbare componenten: Cubus op oorsprong van assenstelsel 3 cylinders die de assen voorstellen 3 cylinders die de pijlpunten voorstellen

29 Voorbeeld: Assenstelsel Klasse
Is afgeleid van de TreeTransformNode klasse Bevat dus reeds een world matrix, waarmee het object een plaats rotatie en scale kan hebben. Methods: Build() : gebruikt MeshShapes om een assenstelsel te bouwen Cleanup()? NEE: door overerving gaat de TreeTransformNode alle child objecten deleten! Componenten: TransformNode die het geheel nog eens kan transleren roteren en schalen, heeft als children: Drie Transformnodes die de cylinders zo positioneren dat ze de xy en z as voorstellen en een box Elk van de drie transformnodes heeft een as en pijlpunt als children.

30 Assenstelsel TNode1 Box TNode2 TNode TNode TNode Z-As X-As Y-As
PijlPunt PijlPunt Pijlpunt

31 Postioneert het assenstelsel tov de rest van de wereld
TNode1 Postioneert het assenstelsel tov de rest van de wereld Box TNode2 TNode TNode TNode Z-As X-As Y-As PijlPunt PijlPunt Pijlpunt

32 Schaalt en roteert het assenstelsel tov TNode1
Box TNode2 TNode TNode TNode Z-As X-As Y-As PijlPunt PijlPunt Pijlpunt

33 Assenstelsel TNode1 Box TNode2 TNodeX TNodeY TNodeZ Z-As X-As Y-As
Roteert tov TNode2 zodat de drie cylinder-assen correct zijn georiënteerd Box TNode2 TNodeX TNodeY TNodeZ Z-As X-As Y-As PijlPunt PijlPunt Pijlpunt

34 Assenstelsel Alle Assen en Pijlpunten:
Enkel een verplaatsing over de eigen z-as is nodig. Z-As X-As Y-As PijlPunt PijlPunt Pijlpunt

35 Opbouw Assenstelsel: Default locatie van de cilinder:
Gecentreerd rond middelpunt van de World(zie box) Lengte richting is Z

36 Opbouw Assenstelsel: Translatie van het MultiMesh Cilinder object op de Z-As

37 Opbouw Assenstelsel: Aanmaken van TransformNode:
Roteert children rond y-as Rode cilinder wordt child

38 Opbouw Assenstelsel: Toevoegen van Pijlpunt voor x-as Geen translaties
Nog niet als child aan Transformnode toegevoegd.

39 Opbouw Assenstelsel: Translatie van pijlpunt langs z-as.
Nog geen child van transformnode

40 Opbouw Assenstelsel: Pijlpunt toegevoegd aan TreeTransformNode

41

42

43


Download ppt "Labo 03 Tree: Parent Child Mesh"

Verwante presentaties


Ads door Google