osg.Transform是OpenSceneGraph中的变换节点,用于对场景图中的节点进行平移、旋转和缩放等变换操作。它是一个抽象类,具体的变换类(如osg::MatrixTransform和osg::PositionAttitudeTransform)都是继承自它的子类。根据需要,可以选择使用不同的变换类来实现对3D场景的变换操作。
设置节点的变换矩阵。
osg::Matrix matrix;
// 设置变换矩阵
transformNode->setMatrix(matrix);
获取节点的变换矩阵。
osg::Matrix matrix = transformNode->getMatrix();
设置节点的参考系。
// 设置参考系为相对于父节点
transformNode->setReferenceFrame(osg::Transform::RELATIVE_RF);
设置节点的平移变换。
// 设置节点平移
osg::Vec3 trans(10.0f, 0, 0);
transformNode->setTrans(trans);
设置节点的旋转变换。
// 设置节点旋转
osg::Quat quat(osg::PI_2, osg::Z_AXIS);
transformNode->setRotate(quat);
设置节点的缩放变换。
// 设置节点缩放
osg::Vec3 scale(2.0f, 2.0f, 2.0f);
transformNode->setScale(scale);
设置节点的变换矩阵,用数组表示。
float matrix[16] = { 1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
10, 0, 0, 1 };
transformNode->setMatrixAsArray(matrix);
设置节点的位置属性。
osg::Vec3 pos(10.0f, 0, 0);
transformNode->setPosition(pos);
设置节点的方位属性。
osg::Quat quat(osg::PI_2, osg::Z_AXIS);
transformNode->setAttitude(quat);