osg.MatrixTransform
是OpenSceneGraph中的一种节点类型,用于将子节点应用变换矩阵进行位移、旋转、缩放等变换操作。
osg::MatrixTransform()
osg::MatrixTransform(const osg::Matrix& matrix)
osg.MatrixTransform
节点。osg.MatrixTransform
节点。设置节点的变换矩阵。
osg::MatrixTransform *mt = new osg::MatrixTransform;
osg::Matrix matrix;
matrix.setTrans(osg::Vec3(10.0f, 20.0f, 30.0f)); // 设置平移
mt->setMatrix(matrix); // 设置矩阵
获取节点的变换矩阵。
osg::MatrixTransform *mt = new osg::MatrixTransform;
osg::Matrix matrix;
matrix.setTrans(osg::Vec3(10.0f, 20.0f, 30.0f)); // 设置平移
mt->setMatrix(matrix); // 设置矩阵
osg::Matrix m = mt->getMatrix(); // 获取矩阵
让节点的变换矩阵左乘一个给定的矩阵。
osg::MatrixTransform *mt = new osg::MatrixTransform;
osg::Matrix matrix;
matrix.setTrans(osg::Vec3(10.0f, 20.0f, 30.0f)); // 设置平移
mt->setMatrix(osg::Matrix::rotate(osg::DegreesToRadians(45.0), osg::Vec3(0.0f, 0.0f, 1.0f))); // 设置矩阵
mt->postMult(matrix); // 矩阵左乘
让节点的变换矩阵右乘一个给定的矩阵。
osg::MatrixTransform *mt = new osg::MatrixTransform;
osg::Matrix matrix;
matrix.setTrans(osg::Vec3(10.0f, 20.0f, 30.0f)); // 设置平移
mt->setMatrix(osg::Matrix::rotate(osg::DegreesToRadians(45.0), osg::Vec3(0.0f, 0.0f, 1.0f))); // 设置矩阵
mt->preMult(matrix); // 矩阵右乘
添加子节点。
osg::MatrixTransform *mt = new osg::MatrixTransform;
osg::Geode *geode = new osg::Geode;
mt->addChild(geode); // 添加子节点
osg.MatrixTransform
节点适用于需要进行位移、旋转、缩放等操作的场景,例如飞行模拟系统中的飞机、人物动画中的关节等。在实际场景应用中,可以通过为osg.MatrixTransform
节点设置变换矩阵,达到对子节点进行各种变换操作的效果。