Labo 03 Tree: Parent Child Mesh

Slides:



Advertisements
Verwante presentaties
Informatieanalyse klassediagram I.
Advertisements

KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Assenstelsels en coördinaten
Componenten van een algoritme Variabelen en hun Inhoud Instructies Sekwenties (van instructies) Selecties (tussen instructies) Herhalingen (van instructies)
1 Motion Planning (simpel) •Gegeven een “robot” A in een ruimte W, een verzameling obstakels B, en een start en doel positie, bepaal een beweging voor.
GSP Labo 02 Mesh and World Matrix Operaties.
GSP Labo 01 Direct3D Foundations. Vooraf • Software: – Visual studio 2005 of/en 2008 met MSDN – DirectX SDK aug 2008 release (verschillende.
FEW Cursus Gravitatie en kosmologie
H 7 Krachten Deel 3 Vectoren.
Coördinaten Transformaties
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Greenfoot Workshop Bobby - Snake.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Zoekbomen II Invoegen en weglaten.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Assenstelsels en het plotten van Functies in LOGO
Toepassingen op moleculaire systemen
Stijn Van Wonterghem1 ALICE Een inleiding. Alice - Een Inleiding2 Wat is ALICE? Een moderne programmeeromgeving –Visuele voorstelling, opgebouwd uit drie-
translatie rotatie relatie x q x= qR v w v=wR a atan=aR arad = w2R m I
Inleidend probleem Data structuur (hiërarchie van classes)
1 Complexiteit Bij motion planning is er sprake van drie typen van complexiteit –Complexiteit van de obstakels (aantal, aantal hoekpunten, algebraische.
Motion planning with complete knowledge using a colored SOM Jules Vleugels, Joost N. Kok, & Mark Overmars Presentatie: Richard Jacobs.
RapidRaycast Trimesteroverschrijdend Project Bjorn Schobben Domien Nowicki.
RapidRaycast Trimesteroverschrijdend Project Bjorn Schobben Domien Nowicki.
Uitwerking Oefeningen
GSP Labo 02 Mesh and World Matrix Operaties.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
BEWEGINGEN.
Object georiënteerd programmeren in Alice
Voorbeeld Bereken de diepte van het water. Aanpak
Bepalen van de resultante
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Technische Informatica
Planning With Nonholonomic Constraints By Jeroen Resoort & Ronald Treur.
Technische Informatica
Presentatie titel Rotterdam, 00 januari 2007 Computer Vision Technische Informatica
Inleiding in de statistiek voor de gedragswetenschappen
Lokaliseren en volgen van personen en objecten met behulp van camera’s Informatie Scriptieprijs November 2007 Sofie De Cooman.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Welkom bij de cursus SketchUp 2014
rechtsdraaiend referentiestelsel
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
1 XSLT processing & control Datamodellering 2006.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Ladies at Science – wiskunde 29 april 2015
Torens van Hanoi ● Uitgevonden door Franse Wiskundige Edouard Lucas in ● Beschreven in zijn wiskundig “spelletjesboek” Récréations Mathématiques.
Presentatie titel Rotterdam, 00 januari 2007 Computer Vision Technische Informatica
Assenstelsel tekenen.
En rekenen met variabelen Bijzondere producten. Variabele: rekenen met variabelen een variabele is een letter die een getal voorstelt. de letters a, b,
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
BEGINNER EV3 PROGRAMMEER Les
Game Object Structuren
Javascript.
Objectgeoriënteerd Programmeren
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Gameprogrammeren: Expressies
Gameprogrammeren: Methoden
Werken met een microscoop
Sportmedisch onderzoek
Bewerkingen met matrices - Deel 3
3. Een koppel van krachten (p101)
Het gebruik van de 3d-printer
GAME MAKER ONLINE Les 4 / Asteroids Michel Fiege.
Doolhof. doolhof doolhof Maak een routine die de ‘hekken’ tussen de cellen weghaalt Maak een 2-dimensionale array met kolommen en rijen aangeklikt.
Bijzondere verhoudingen
Transcript van de presentatie:

Labo 03 Tree: Parent Child Mesh GSP1 2008-2009 Labo 03 Tree: Parent Child Mesh

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.

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.

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

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

Projection Matrix “Camera kijkhoek” DirectX SDK Documentatie:

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

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

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)

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

Tree Node Node Leaf Leaf Node Leaf Leaf Leaf

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:

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

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.

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

Algoritme: Node1 m_World Node2 m_World Node3 m_World Leaf2 m_World

Tree: Overzicht Klasses TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh …

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

Tree: Overzicht Klasses TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh …

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”

Tree: Overzicht Klasses TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh …

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

Tree: Overzicht Klasses TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh …

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

Tree: Overzicht Klasses TreeElement TreeNode TreeD3DObject TreeTransformNode MultiMesh …

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

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

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.

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

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

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

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

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

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

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

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

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

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

Opbouw Assenstelsel: Pijlpunt toegevoegd aan TreeTransformNode