查看: 1308|回复: 1

模型旋转等几个问题汇总

[复制链接]

该用户从未签到

发表于 2011-5-7 11:19:52 | 显示全部楼层 |阅读模式
问题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的错误,
想问下是不是与线程进行到何处有关,怎么改正这个错误?

该用户从未签到

发表于 2011-5-9 09:27:15 | 显示全部楼层
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表