【发布时间】:2014-02-06 10:34:37
【问题描述】:
我是第一次使用 OpenSceneGraph,我有点迷茫,因为文档真的不是很清楚......
所以,我有这段代码可以加载一个带有房子的 obj 文件,并且我在我想要“人”所在的地方淹没了一个小盒子。所以现在,我不想把那个盒子放在那里,我想把相机放在那里,看着前面,然后我会做一些东西来移动固定相机周围的地形,这样看起来相机在移动,但是地形在移动。
所以,这是我的代码:
int main()
{
osgViewer::Viewer viewer;
viewer.setUpViewInWindow(0,0,800,800);
osg::ref_ptr<osg::Group> root (new osg::Group);
osg::Node* terrain = osgDB::readNodeFile(".terrain.obj");
if(terrain == NULL) {
return -1;
}
Geode* gbox = new Geode();
gbox->addDrawable(new ShapeDrawable(new Box()));
PositionAttitudeTransform* terrainT = new PositionAttitudeTransform();
PositionAttitudeTransform* boxT = new PositionAttitudeTransform();
boxT->setScale(Vec3d(50,50,50));
boxT->setPosition(Vec3d(1000,1000,0));
root->addChild(terrainT);
root->addChild(boxT);
terrainT->addChild(terrain);
boxT->addChild(gbox);
viewer.setSceneData( root.get() );
viewer.addEventHandler(new osgViewer::WindowSizeHandler);
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.realize();
while(!viewer.done()) {
viewer.frame();
}
return 0;
}
所以这段代码有效,它正确加载了字段,将框放在我想要的位置,我可以用鼠标导航。
现在,我真的找不到任何东西可以将相机放在盒子所在的位置。我就是不能。
谁能告诉我怎么做?应该不会很难,但是我找不到任何好的教程,而且 Viewer 和 Camera 类的文档真的不是很有帮助。
【问题讨论】:
标签: c++ opengl camera openscenegraph