osg模型的平移、缩放、旋转

加载2个模型,其中一个向上移动28个单位;

osg模型的平移、缩放、旋转_第1张图片

加载2个模型,其中一个缩放0.5倍,向下移动22个单位;

osg模型的平移、缩放、旋转_第2张图片 

加载2个模型,其中一个缩放0.5倍、旋转45度、向右向下移动几个单位;

osg模型的平移、缩放、旋转_第3张图片 

都是用矩阵实现的;

#include
#include
#include
#include

void main()
{
	osgViewer::Viewer viewer;
	osg::ref_ptr root = new osg::Group();

	osg::ref_ptr bignathan = osgDB::readNodeFile("航天器.3ds");

	osg::ref_ptr trans = new osg::MatrixTransform;
	trans->setMatrix(osg::Matrix::translate(0, 0, 28));
	trans->addChild(bignathan.get());

	osg::ref_ptr scale = new osg::MatrixTransform;
	scale->setMatrix(osg::Matrix::scale(0.5, 0.5, 0.5)*osg::Matrix::translate(0, 0, -22));
	scale->addChild(bignathan.get());

	osg::ref_ptr rot = new osg::MatrixTransform;
	rot->setMatrix(osg::Matrix::rotate(osg::DegreesToRadians(45.0), 1, 0, 0)*osg::Matrix::scale(0.5, 0.5, 0.5)*osg::Matrix::translate(14, 0, -12));
	rot->addChild(bignathan.get());

	root->addChild(bignathan.get());
	//root->addChild(trans.get());
	//root->addChild(scale.get());
	root->addChild(rot.get());

	viewer.setSceneData(root.get());
	viewer.realize();
	viewer.run();
}

 

你可能感兴趣的:(osg,矩阵)