2012-11-28 7 views
5

Scrittura di una piccola applicazione openscenegraph e necessita di un modo per modificare l'altezza della videocamera. In sostanza, l'occhio guarda dritto una palla nello spazio. Quello che voglio fare è essere in grado di abbassare l'altezza della telecamera in modo che io sia in grado di ballare dal basso, e anche alzare l'altezza della telecamera se necessario. Come posso ottenere questo risultato con oPengl code o OpenScenegraph?C++ OpenSceneGraph Cambia altezza occhio telecamera

int main(int argc, char* argv[]) 
{ 
    osg::ref_ptr<osg::ShapeDrawable> shape2 = new osg::ShapeDrawable; 
    shape2->setShape(new osg::Sphere(osg::Vec3(3.0f, 0.0f, 0.0f),1.0f)); 
    shape2->setColor(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f)); 
    osg::ref_ptr<osg::Geode> root = new osg::Geode; 
    root->addDrawable(shape2.get());///add first osgshapeDrawable2 
    osgViewer::Viewer viewer; 
    viewer.setSceneData(root.get());///set the Geode as scenedata for the viewer 
    return viewer.run(); 
} 

risposta

3

è necessario prendere il controllo del osgViewer::Camera, non si dovrebbe cercare di fare questo con OpenGL base.

osgViewer::Viewer::getCameraWithFocus dovrebbe portarti la fotocamera. Da qui puoi impostare la posizione e il lookato della fotocamera.

Ricordare, in un'applicazione di base come quella in uso, il Manipolatore telecamera imposta la posizione della fotocamera (in base all'interazione del mouse) una volta per fotogramma.

Sarà necessario decidere come si desidera gestire l'input del mouse ed eventualmente assumere il compito che sta facendo il Manipolatore della fotocamera.

+0

Ho un manipolatore e ho la fotocamera. Ciò che rimane è cambiare l'altezza stessa. Come ottengo questo? Quale proprietà della fotocamera devo modificare per spostarla verso l'alto o verso il basso in questo caso? – Kobojunkie

0

Utilizzare il metodo setViewMatrixAsLookAt (link) sull'oggetto Fotocamera. Questo metodo richiede tre parametri:

  • eye: la posizione della videocamera, che puoi utilizzare per impostarne l'altezza.
  • center: il punto su cui sta guardando la fotocamera: posizionarlo al centro dell'oggetto osservato.
  • up: il vettore verso l'alto della tua videocamera - questo controlla come il tuo viewport sarà ruotato attorno al suo centro e dovrebbe essere uguale a [0, 1, 0] in un sistema di coordinate grafico convenzionale.

Poiché questo metodo si occupa della rotazione della telecamera specificando il punto in cui è cercando, si dovrebbe modificare solo la coordinata y del eye vettore di compiere ciò che stai chiedendo.

È possibile visualizzare ulteriori dettagli sulla tripletta vettoriale 'look at' here.