Open Inventor Open Inventor è un object oriented 3D toolkit, cioè una libreria di oggetti e metodi per la creazione di applicazioni grafiche interattive.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

INFORMATICA Altre Istruzioni di I/O
Applicazioni progettuali di grafica computerizzata a.a. 2008/2009
Esercitazioni If nidificati
Iterazione A. Ferrari.
Recupero debito quarto anno Primo incontro
3TC – 5/11/2010 Cicli while e do.. While Contatori e Totalizzatori.
Analizzatori Lessicali con JLex
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
MultiSet, Liste Ordinate
PolyFun. Dare implementazione,funzione di astrazione, invarianti della rappresentazione. Provare che i metodi apply e bind preservano gli invarianti.
1 Metodologie di Programmazione. 2 Contenuto generale §tecniche per la programmazione orientata ad oggetti (in piccolo) §esemplificate utilizzando il.
GLUT & OpenGL Ing. Tommaso Coviello Politecnico di Bari
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
RB-alberi (Red-Black trees)
INFORMATICA Strutture iterative
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Esercizi su alberi binari
Esercizi su alberi binari di ricerca
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Introduzione alla Object Oriented Programming, OOP E.Mumolo. DEEI
E.Mumolo. DEEI Introduzione alla programmazione ad oggetti in C++ Object Oriented Programming, OOP E.Mumolo. DEEI
Laboratorio di Linguaggi note sull'uso dell' IDE DevC++ Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Costruzione di Interfacce Primi passi in OpenGL
Introduzione al linguaggio C++ 5 lezioni
INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA
Algoritmi e Strutture Dati
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
I Thread.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Interazione utente-programma
Open Inventor Open Inventor e un object oriented 3D toolkit cioè una libreria di oggetti e metodi per la creazione di applicazioni grafiche interattive.
Open Inventor In questa lezione impareremo a:
Open Inventor (parte progetto) 1)Aggiungere alla classe base (delfino.h, Ufo.h, Veicolo.h, …) le inclusioni di open inventor: #include N.B.: Se si utilizzano.
Strutture di controllo nel C
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
OGGETTI COMPOSTI Una classe può contenere riferimenti a altre classi (o anche a se stessa): public class Orologio { Counter ore, minuti; } Loggetto Orologio.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
void binario(int n); …………………
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Creazione progetto in C++/DEV
Massimiliano Piscozzi – Sistemi multimediali.
Radice quadrata di un numero
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
OOP per la simulazione di sistemi reali. di Gianfranco Gallizia.
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Interfacce grafiche Capitolo 27 marzo 2004 Interfacce grafiche.
Arduino: introduzione alla programmazione
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
1 SC che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Esercitazione  obiettivo: scrivere una applicazione per il gioco “Centra Bersaglio”  metodo individuazione e definizione delle classi necessarie.
Metodologie di Programmazione Esercizi sulla semantica di Java.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
1 System Call che operano su processi Getpid, fork, exec, wait, waitpid, exit, dup, dup2.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
Albero genealogico. Si abbia un albero genealogico come nella figura sotto. Si supponga che i nomi propri delle persone siano tutti diversi, e quindi.
Introduzione alle Classi e agli Oggetti in Java 1.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Transcript della presentazione:

Open Inventor Open Inventor è un object oriented 3D toolkit, cioè una libreria di oggetti e metodi per la creazione di applicazioni grafiche interattive tridimensionali. Il toolkit mette a disposizione oggetti che possono essere composti, modificati ed estesi per creare delle scene grafiche interattive.

Da dove si scarica? Open Source:

Dove si studia? Libro ufficiale: The Inventor Mentor – Ed.: Addison-Wesley

Il grafo della Scena (Scene Graph) Uno scene graph è costituito da uno o più nodi, ognuno dei quali rappresenta un oggetto primitivo, una proprietà o un gruppo di nodi. La gerarchia della scena è creata addizionando ai nodi gruppo degli altri nodi.

#include … int main(int, char **argv) { Widget myWindow = SoXt::init(argv[0]); if (myWindow == NULL) return 1; SoSeparator *root = new SoSeparator; SoPerspectiveCamera *myCamera = new SoPerspectiveCamera; SoMaterial *myMaterial = new SoMaterial; root->ref(); root->addChild(myCamera); root->addChild(new SoDirectionalLight); myMaterial->diffuseColor.setValue(1.0, 0.0, 0.0); // Red root->addChild(myMaterial); root->addChild(new SoCone); SoXtRenderArea *myRenderArea = new SoXtRenderArea(myWindow); myCamera->viewAll(root, myRenderArea->getViewportRegion()); myRenderArea->setSceneGraph(root); myRenderArea->setTitle("Hello Cone"); myRenderArea->show(); SoXt::show(myWindow); SoXt::mainLoop(); return 0; } I nodi di Open Inventor vengono creati con listruzione new ma non si possono distruggere con la corrispondente istruzione delete è lo stesso Open Inventor che amministra la cancellazione dei nodi. root->ref(); incrementa il contatore associato al nodo root. Ogni nodo ha associato un contatore che segnala ad Open Inventor quanti sono gli oggetti che lo utilizzano (padri). Quando il contatore diventa nullo Open Inventor cancella loggetto presumendo che non sia più in uso. La futura radice della scena non è figlia di nessun altro nodo e dunque ha il contatore posto a zero. Noi lo incrementiamo artificialmente per preservarlo dalle cancellazioni di Open Inventor. Primo Esempio Widget myWindow = SoXt::init(argv[0]); Inizializzazione di Open Inventor SoPerspectiveCamera Viene creata la camera SoMaterial *myMaterial = new SoMaterial; Viene creato il materiale SoSeparator *root = new SoSeparator; La radice della gerarchia di oggetti è sempre di tipo SoSeparator SoXt::mainLoop(); Pone il sistema in un loop infinito in cui vengono gestiti gli eventi via via provocati dallutente tipo selezioni o movimenti del mouse root->addChild(myCamera); I vari nodi vengono appesi alla radice secondo un preciso ordine. E necessario porre la SoPerspectiveCamera per prima altrimenti gli oggetti definiti in seguito non vengono colti dalla camera. Analogamente la luce deve precedere gli oggetti che illumina, il materiale deve precedere la definizione della forma SoCone etc.. root viene promosso come radice dello Scene Graph. La SoXtRenderArea è larea su cui vengono disegnate le forme, il costruttore riceve come parametro myWindow Il metodo viewAll di SoPerspectiveCamera permette alla camera di inquadrare tutta la scena definita nel SoSeparator che viene passato come parametro alla funzione