Open Inventor
Open Inventor e 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:
http://www.studierstube.org/openinventor/
TGS (Open Inventor 3.1.1) versione demo per 15 giorni:
ftp://ftp.tgs.com/OpenInventor/Windows/Inv311/
Dove si studia?
Libro ufficiale:
The Inventor Mentor – Ed.: Addison-Wesley
Manuale di Riferimento nella cartella:
C:\TGS\OIV3.1.1\doc\ReferenceManual
Esempi nella cartella:
C:\TGS\OIV3.1.1\src\Inventor\examples\Mentor\Cxx
Dispense e lucidi sul sito
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/SoXt.h>
#include <Inventor/Xt/SoXtRenderArea.h>
…
int main(int, char **argv)
{
Widget myWindow = SoXt::init(argv[0]);
if (myWindow == NULL)
return 1;
Primo Esempio
Widget myWindow = SoXt::init(argv[0]);
Inizializzazione di Open Inventor
SoSeparator *root = new SoSeparator;
SoSeparator *root = new SoSeparator;
SoPerspectiveCamera *myCamera = new SoPerspectiveCamera;
SoPerspectiveCamera
SoMaterial *myMaterial = new SoMaterial;
radice
della
gerarchia
di=oggetti
è
SoMaterial
*myMaterial
new SoMaterial;
I nodi di Open InventorLavengono
creati
con l’istruzione
new
root->ref();
Viene
creata la camera
sempre dicon
tipola
SoSeparator
ma non si possono distruggere
corrispondente
root->addChild(myCamera);
Viene creato il materiale
root->addChild(myCamera);
root->addChild(new SoDirectionalLight);
istruzione delete è lo stesso Open Inventor che amministra la
myMaterial->diffuseColor.setValue(1.0, 0.0, 0.0); // Red
cancellazione dei nodi. I vari nodi vengono appesi alla radice
root->addChild(myMaterial);
root->addChild(new SoCone);
secondo un preciso ordine. E’
}
root->ref(); incrementa il contatore associato al nodo root. Ogni
necessario
porre laad Open
nodo ha= associato
un contatore
che segnala
SoXtRenderArea *myRenderArea
new SoXtRenderArea(myWindow);
SoPerspectiveCamera
per prima
Inventor quanti sono gli oggetti
che lo utilizzano (padri).
myCamera->viewAll(root,
myRenderArea->getViewportRegion());
Quando
il contatore diventa
nullo Open
Inventor
cancella
altrimenti
gli oggetti
definiti
in seguito
SoXt::mainLoop();
La
SoXtRenderArea
èdalla
l’area
su cui
vengono
l’oggetto presumendo
che
non
sia piùpromosso
incolti
uso.
non
root
vengono
viene
come
camera.
radice
dello
myRenderArea->setSceneGraph(root);
disegnate
le forme,
il di
costruttore
riceve
myRenderArea->setTitle("Hello Cone");
Ilnon
metodo
viewAll
SoPerspectiveCamera
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
myRenderArea->show();
come
parametro
myWindow
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
SoSeparator
che
SoXt::show(myWindow);
artificialmente per preservarlo
dalle
cancellazioni
di Open della
deve
precedere
la nel
definizione
dall’utente
tipo
selezioni
o
movimenti
del
SoXt::mainLoop();
viene passato come parametro alla
Inventor.
forma
SoCone etc..
mouse
return 0;
funzione
I nodi SHAPE
Le più usate:
SoCone
SoCube
SoSphere
SoLineSet
SoTriangleStripSet
Scarica

Open Inventor