|
初学OSG,也可以说初学VC编程,平时在学校写的都是一些比赛的算法题,对应用开发实在不怎么了解。
对于OSG或者是VC有几个地方不是太理解,希望得到一点点小小的指点。
1、 对于
root->addChild(osgcool.get());
root->addChild(trans.get());
root->addChild(osgcool);
root->addChild(trans);
有什么区别?什么时候该用 xxxx.get()什么时候用xxxx。
2、 对于
osg::ref_ptr<osg::MatrixTransform>trans=new osg::MatrixTransform;
osg::ref_ptr<osg::MatrixTransform>trans=new osg::MatrixTransform.get();
有什么区别?什么时候该用 xxxx.get()什么时候用xxxx
3、
osg::Matrixd CSouth::getMatrix(void) const //得到矩阵,这是标准接口,用于控制场景
{
//得到旋转后的矩阵,其实也就是视口矩阵,用此控制场景
osg::Matrixd mat;
mat.makeRotate(
m_vRotation._v[0],osg::Vec3(1.0f,0.0f,0.0f),
m_vRotation._v[1],osg::Vec3(0.0f,1.0f,0.0f),
m_vRotation._v[2],osg::Vec3(0.0f,0.0f,1.0f));
return mat * osg::Matrixd::translate(m_vPosition);
}
这个矩阵怎么理解,那些坐标代表着什么?为何是3*3的?
4、
osg::Matrixd CSouth::getInverseMatrix(void) const //得到逆矩阵,标准接口,控制场景
{
osg::Matrixd mat;
mat.makeRotate(
m_vRotation._v[0], osg::Vec3(1.0f, 0.0f, 0.0f),
m_vRotation._v[1], osg::Vec3(0.0f, 1.0f, 0.0f),
m_vRotation._v[2], osg::Vec3(0.0f, 0.0f, 1.0f));
return osg::Matrixd::inverse(mat * osg::Matrixd::translate(m_vPosition));
}
逆矩阵又是做什么的?
小弟不才,这么多不懂的,希望大家多多帮忙,谢谢了!! |
|