![Page 1: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/1.jpg)
GSP1 2008-2009
Labo 03Tree: Parent Child Mesh
![Page 2: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/2.jpg)
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.
![Page 3: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/3.jpg)
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.
![Page 4: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/4.jpg)
View Matrix
• “Camera positie en kijkrichting”• DirectX SDK Documentatie:
![Page 5: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/5.jpg)
View Matrix
• Parameters:– Plaats van Oog, Doel, en richting van bovenkant
van camera• DirectX Implementatie:
![Page 6: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/6.jpg)
Projection Matrix
• “Camera kijkhoek”• DirectX SDK Documentatie:
![Page 7: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/7.jpg)
Projection Matrix
• “Camera kijkhoek”• Parameters:– Kijkhoek, Aspect Ratio, Near en Far Clipping Plane
• DirectX Implementatie:
![Page 8: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/8.jpg)
Later…
• Toevoeging van Camera klasse– Heeft View en Projection Matrix als datamembers– Kan bewegen, translatie en rotatie– Kan in- en uitzoomen
![Page 9: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/9.jpg)
![Page 10: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/10.jpg)
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)
![Page 11: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/11.jpg)
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
![Page 12: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/12.jpg)
Tree
Leaf
Node
Node
Node
Leaf
Leaf Leaf Leaf
![Page 13: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/13.jpg)
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:
![Page 14: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/14.jpg)
Tree: World matrices
• Het voorwerp wordt geroteerd:
• Het voorwerp wordt verplaatst:
![Page 15: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/15.jpg)
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.
![Page 16: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/16.jpg)
Leaf1m_World
Node1m_World
Node2m_World
Node3m_World
Leaf2m_World
Leaf1: m_World berekening: (pseudo code)m_World.Translate….Rotate…m_World *= Node2.m_Worldm_World *= Node1.m_World
Leaf2: m_World berekening:
m_World.Translate….Rotate…m_World *= Node3.m_Worldm_World *= Node2.m_Worldm_World *= Node1.m_World
![Page 17: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/17.jpg)
Node1m_World
Node2m_World
Node3m_World
Leaf2m_World
Algoritme:
![Page 18: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/18.jpg)
Tree: Overzicht Klasses
TreeElement
TreeNode TreeD3DObject
TreeTransformNode MultiMesh …
![Page 19: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/19.jpg)
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
![Page 20: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/20.jpg)
Tree: Overzicht Klasses
TreeElement
TreeNode TreeD3DObject
TreeTransformNode MultiMesh …
![Page 21: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/21.jpg)
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”
![Page 22: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/22.jpg)
Tree: Overzicht Klasses
TreeElement
TreeNode TreeD3DObject
TreeTransformNode MultiMesh …
![Page 23: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/23.jpg)
•Is afgeleid van de TreeNode•Heeft methods:• Rotate• Translate• Scale•Wordt gebruikt om alle children te:• transleren • roteren• scalen
TreeTransformNode
![Page 24: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/24.jpg)
Tree: Overzicht Klasses
TreeElement
TreeNode TreeD3DObject
TreeTransformNode MultiMesh …
![Page 25: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/25.jpg)
•Is afgeleid van TreeElement(basisklasse)•Is “Leaf” in de boomstructuur•Heeft methods:• Rotate• Translate• Scale•Heeft pure virtual functions:• Tick, Draw, OnResetDevice, OnLostDevice
TreeD3DObject
![Page 26: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/26.jpg)
Tree: Overzicht Klasses
TreeElement
TreeNode TreeD3DObject
TreeTransformNode MultiMesh …
![Page 27: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/27.jpg)
• Is Afgeleid van de TreeD3DObject klasse• Implementeert:– Draw, Tick, OnResetDevice en OnLostDevice– SetMaterialColor(r,g,b,a), Init en Cleanup
MultiMesh
![Page 28: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/28.jpg)
Voorbeeld: Assenstelsel
• Zichtbare componenten:– Cubus op oorsprong van assenstelsel– 3 cylinders die de assen voorstellen– 3 cylinders die de pijlpunten voorstellen
![Page 29: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/29.jpg)
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.
![Page 30: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/30.jpg)
AssenstelselTNode1
Box TNode2
TNodeZ-As
PijlPunt PijlPunt
TNode TNode
Y-As
X-As
Pijlpunt
![Page 31: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/31.jpg)
AssenstelselTNode1
Box TNode2
TNodeZ-As
PijlPunt PijlPunt
TNode TNode
Y-As
X-As
Postioneert het assenstelsel tov de rest van de wereld
Pijlpunt
![Page 32: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/32.jpg)
AssenstelselTNode1
Box TNode2
TNodeZ-As
PijlPunt PijlPunt
TNode TNode
Y-As
X-As
Schaalt en roteert het assenstelsel tov
TNode1
Pijlpunt
![Page 33: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/33.jpg)
AssenstelselTNode1
Box TNode2
TNodeYZ-As
PijlPunt PijlPunt
TNodeX TNodeZ
Y-As
X-As
Roteert tov TNode2 zodat de drie
cylinder-assen correct zijn
georiënteerd
Pijlpunt
![Page 34: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/34.jpg)
Assenstelsel
Z-As
Pijlpunt PijlPunt PijlPuntY-As
X-As
Alle Assen en Pijlpunten:
Enkel een verplaatsing over de eigen z-as is
nodig.
![Page 35: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/35.jpg)
Opbouw Assenstelsel:
• Default locatie van de cilinder:
• Gecentreerd rond middelpunt van de World(zie box)
• Lengte richting is Z
![Page 36: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/36.jpg)
Opbouw Assenstelsel:
• Translatie van het MultiMesh Cilinder object op de Z-As
![Page 37: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/37.jpg)
Opbouw Assenstelsel:
• Aanmaken van TransformNode:– Roteert children
rond y-as– Rode cilinder wordt
child
![Page 38: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/38.jpg)
Opbouw Assenstelsel:
• Toevoegen van Pijlpunt voor x-as
• Geen translaties• Nog niet als child
aan Transformnode toegevoegd.
![Page 39: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/39.jpg)
Opbouw Assenstelsel:
• Translatie van pijlpunt langs z-as.
• Nog geen child van transformnode
![Page 40: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/40.jpg)
Opbouw Assenstelsel:
• Pijlpunt toegevoegd aan TreeTransformNode
![Page 41: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/41.jpg)
![Page 42: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/42.jpg)
![Page 43: GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh. Doelstelling Implementatie van View en Projection matrices Kennismaking met enkele nieuwe klassen uit](https://reader035.vdocuments.us/reader035/viewer/2022062703/5551a0f04979591f3c8bb447/html5/thumbnails/43.jpg)