De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit.

Verwante presentaties


Presentatie over: "GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit."— Transcript van de presentatie:

1 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: – 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: – 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 Wat: 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: – 1 Parent – Children: verschillende nodes en/of leafs – World Matrix – Onzichtbaar Leaf: – 1 Parent – GEEN Children – World Matrix – Zichtbaar object

12 Tree Leaf Node 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 Node1 m_World Node2 m_World Node3 m_World Leaf2 m_World 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

17 Node1 m_World Node2 m_World Node3 m_World Leaf2 m_World Algoritme:

18 Tree: Overzicht Klasses TreeElement TreeNodeTreeD3DObject TreeTransformNodeMultiMesh …

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 TreeTransformNodeMultiMesh …

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

22 Tree: Overzicht Klasses TreeElement TreeNodeTreeD3DObject TreeTransformNode MultiMesh …

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

24 Tree: Overzicht Klasses TreeElement TreeNode TreeD3DObject TreeTransformNodeMultiMesh …

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

26 Tree: Overzicht Klasses TreeElement TreeNodeTreeD3DObject TreeTransformNode MultiMesh …

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

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 Z-As PijlPunt TNode Y-As X-As Pijlpunt

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

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

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

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

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 "GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit."

Verwante presentaties


Ads door Google