|
问题1.将模型导入显示时,想要改变模型的角度,但是达不到预期的效果,而且按照我的写法有时候还会报debug assertion failed这样的错误
下面是我的实现代码:
void cOSG::InitManipulators(void)
{
// Create a trackball manipulator
trackball = new osgGA::TrackballManipulator();
下面是我对操纵器进行矩阵设置
osg::Matrix R, T;
R.setRotate( osg::Quat(osg::PI_2, osg::Vec3(1,0,0), 0, osg::Vec3(0,1,0), 0, osg::Vec3(0,0,1)) );
T.setTrans( osg::Vec3f(0, 100, 0) );
trackball->setByMatrix(R * T);
// Create a Manipulator Switcher
keyswitchManipulator = new osgGA::KeySwitchMatrixManipulator;
// Add our trackball manipulator to the switcher
keyswitchManipulator->addMatrixManipulator( '1', "Trackball", trackball.get());
// Init the switcher to the first manipulator (in this case the only manipulator)
keyswitchManipulator->selectMatrixManipulator(0); // Zero based index Value
}
while(!viewer->done())
{
osg->PreFrameUpdate();
//// 创建旋转矩阵。
osg::Matrix rot;
rot.makeRotate( osg::PI, osg::Vec3( 1., 0., 0. ) );
//angle += 0.01;
//// 设置视口矩阵(旋转矩阵和平移矩阵连乘)。
viewer->getCameraManipulator()->setByMatrix(rot*trans);
viewer->frame();
osg->PostFrameUpdate();
//Sleep(10); // Use this command if you need to allow other processes to have cpu time
}
按照Array的说法 我已经设置了漫游器mViewer->setCameraManipulator(keyswitchManipulator.get());用的是 viewer->frame();但是还是没达到预期的效果,
打开以后是黑乎乎的 什么也看不到 试着改变矩阵的平移值 也不管用 另外想问一下 到底是设置相机的观察矩阵还是设置操纵器的矩阵,才能达到模型旋转和平移的效果?
、
问题2.。 我在屏幕上画一段直线,然后自己写了一个画直线的函数,然后调用画直线的函数时,就是在加入mroot->add(line)时,会报debug assertion failed的错误,
想问下是不是与线程进行到何处有关,怎么改正这个错误? |
|