Open Inventor un object oriented 3 D toolkit

Open Inventor è un object oriented 3 D 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: http: //www. studierstube. org/openinventor/

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 <Inventor/Xt/So. Xt. h> #include <Inventor/Xt/So. Xt. Render. Area. h> … int main(int, char **argv) { Widget my. Window = So. Xt: : init(argv[0]); if (my. Window == NULL) return 1; Primo Esempio Widget my. Window = So. Xt: : init(argv[0]); Inizializzazione di Open Inventor So. Separator *root = new So. Separator; So. Perspective. Camera *my. Camera = new So. Perspective. Camera; So. Perspective. Camera So. Material *my. Material = new So. Material; radice della gerarchia di=oggetti è ma So. Material *my. Material new So. Material; I nodi di Open Inventor. Lavengono creati con l’istruzione new root->ref(); Viene creata la camera sempre di la tipo So. Separator non si possono distruggere con corrispondente root->add. Child(my. Camera); Viene creato il materiale istruzione root->add. Child(my. Camera); root->add. Child(new So. Directional. Light); delete è lo stesso Open Inventor che amministra la my. Material->diffuse. Color. set. Value(1. 0, 0. 0); // Red cancellazione dei nodi. I vari nodi vengono appesi alla radice root->add. Child(my. Material); root->add. Child(new So. Cone); secondo un preciso ordine. E’ } root->ref(); incrementa il contatore associato al nodo root. Ogni necessario porre laad Open Inventor nodo ha= associato un contatore che segnala So. Xt. Render. Area *my. Render. Area new So. Xt. Render. Area(my. Window); So. Perspective. Camera per prima quanti sono gli oggetti che lo utilizzano (padri). Quando il my. Camera->view. All(root, my. Render. Area->get. Viewport. Region()); contatore diventa nullo Open Inventor cancelladefiniti l’oggetto altrimenti gli oggetti in seguito So. Xt: : main. Loop(); l’area su cui vengono presumendo che non sia. La piùSo. Xt. Render. Area inviene uso. promosso root come radice dello non vengono coltièdalla camera. my. Render. Area->set. Scene. Graph(root); disegnate le forme, il di costruttore riceve my. Render. Area->set. Title("Hello Cone"); Ilnon metodo view. All So. Perspective. Camera Scene Graph. Analogamente lanessun luce deve precedere La futura radice della scena è figlia di altro nodo Pone il sistema in un loop infinito in cuie my. Render. Area->show(); come parametro my. Window permette allaillumina, di inquadrare tutta gli oggetti materiale dunque ha il contatore posto a zero. che Noi locamera incrementiamo vengono gestiti gli eventi via ilvia provocati la scena definita So. Separator che So. Xt: : show(my. Window); artificialmente per preservarlo dalle cancellazioni di Open della deve precedere la nel definizione dall’utente tipo selezioni o movimenti del So. Xt: : main. Loop(); viene passato come parametro alla Inventor. forma So. Cone etc. . mouse funzione return 0;
- Slides: 5