Open Inventor (parte progetto) - PowerPoint PPT Presentation

1 / 9
About This Presentation
Title:

Open Inventor (parte progetto)

Description:

Open Inventor (parte progetto) Aggiungere alla classe base (delfino.h, Ufo.h, Veicolo.h, ) le inclusioni di open inventor: #include – PowerPoint PPT presentation

Number of Views:75
Avg rating:3.0/5.0
Slides: 10
Provided by: Fab3106
Category:

less

Transcript and Presenter's Notes

Title: Open Inventor (parte progetto)


1
Open Inventor (parte progetto)
  • Aggiungere alla classe base (delfino.h, Ufo.h,
    Veicolo.h, )
  • le inclusioni di open inventor
  • include ltInventor/Xt/SoXt.hgt
  • include ltInventor/Xt/viewers/SoXtExaminerViewer.h
    gt
  • include ltInventor/nodes/SoDirectionalLight.hgt
  • include ltInventor/nodes/SoMaterial.hgt
  • include ltInventor/nodes/SoPerspectiveCamera.hgt
  • include ltInventor/nodes/SoSeparator.hgt
  • include ltInventor/nodes/SoTransform.hgt
  • include ltInventor/nodes/SoCube.hgt
  • include ltInventor/nodes/SoTexture2.hgt
  • include ltInventor/nodes/SoPointLight.hgt
  • include ltInventor/nodes/SoEventCallback.hgt
  • include ltInventor/events/SoKeyboardEvent.hgt
  • N.B. Se si utilizzano altre classi occorre
    includere i file .h corrispondenti che possono
    essere trovati sul Reference Manual di Open
    Inventor

2
Open Inventor (parte progetto)
2) Aggiungere nella parte privata di
delfino.h SoTransform moto
SoPerspectiveCamera myCamera 3) In
delfino.h aggiungere al costruttore i parametri
SoTransform e SoPerspectiveCamera Delfino
(.SoTransform m, SoPerspectiveCamera myC)
3
Open Inventor (parte progetto)
4) Aggiungere al costruttore a più argomenti di
delfino.cpp Delfino (.SoTransform m,
SoPerspectiveCamera myC) moto
m myCameramyC
4
Open Inventor (parte progetto)
5) Modificare le funzioni muoviti(),
giraSinistra(), ecc.. Ad. Esempio in muoviti
potreste aggiungere alla fine //modificare il
movimento SbRotation rot moto-gtrotation.getValue
() SbVec3f spost(moto-gtposizione.getX(),
moto-gtposizione.getY(), moto-gtposizione.getZ())
SbVec3f spostRel rot.multVec(spost,
spostRel) moto-gttranslation.setValue(moto-gttransl
ation.getValue() spost ) myCamera-gtposition.set
Value(myCamera-gtposition.getValue() spost )
N.B. il vettore spost è fornito rispetto alla
posizione iniziale della moto, spostRel tiene
invece conto delleffettiva direzione della moto.
5
Open Inventor (parte progetto)
6) Creare un file (ad. Esempio testInventor.cpp)
con un main che gestisca la creazione degli
oggetti di base in Open Inventor (vedi file
testInventor.cpp). 7) A tale file aggiungere i
metodi readFile, timerCallBack, myKeyPressCB,
analoghi a quelli dei lucidi seguenti ed
opportunamente modificati secondo il proprio
progetto.
6
Caricare i modelli 3D da file
SoSeparator readFile(const char
filename) SoInput mySceneInput if
(!mySceneInput.openFile(filename))
fprintf(stderr, "Cannot open file s\n",
filename) return NULL SoSeparator
myGraph SoDBreadAll(mySceneInput) if
(myGraph NULL) fprintf(stderr, "Problem
reading file\n") return NULL
mySceneInput.closeFile() return myGraph
7
Il Timer Sensor
void timerCallback (void data, SoSensor
) Veicolo mioVeicolo (Veicolo) data //
conversione esplicita mioVeicolo-gtmuovi(0.04)
. Veicolo mioVeicoloSoTimerSensor
myTimerSensor new SoTimerSensor(timerCallback
, mioVeicolo)timerSensor-gtsetInterval(0.04f)
// 1/25 sec 0.04timerSensor-gtschedule()
8
Catturare gli eventi da tastiera
void myKeyPressCB(void data, SoEventCallback
eventCB) Veicolo veicolo (Veicolo) data
const SoEvent event eventCB-gtgetEvent() if
(SO_KEY_PRESS_EVENT(event, UP_ARROW ))
veicolo-gtaccelera() eventCB-gtsetHandled()
SoEventCallback myEventCB new
SoEventCallbackmyEventCB-gtaddEventCallback( SoK
eyboardEventgetClassTypeId(), myKeyPressCB,
veicolo)root-gtaddChild(myEventCB)
9
testInventor.cpp
Write a Comment
User Comments (0)
About PowerShow.com