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

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

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

 

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

 

都是用矩阵实现的;

#include<osgDB\ReadFile>
#include<osgViewer\Viewer>
#include<osg\Node>
#include<osg\MatrixTransform>

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

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

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

	osg::ref_ptr<osg::MatrixTransform> 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<osg::MatrixTransform> 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();
}

 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-07 13:20:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-07 13:20:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-07 13:20:02       82 阅读
  4. Python语言-面向对象

    2024-02-07 13:20:02       91 阅读

热门阅读

  1. c# 缓存帮助类

    2024-02-07 13:20:02       47 阅读
  2. re:从0开始的CSS学习之路 4. 长度单位

    2024-02-07 13:20:02       54 阅读
  3. 如何使用机器人和物联网实现仓库自动化

    2024-02-07 13:20:02       42 阅读
  4. Spring 开发 pom.xml 配置文件(通用配置)

    2024-02-07 13:20:02       48 阅读
  5. idea vim配置

    2024-02-07 13:20:02       40 阅读
  6. 【GO】二、函数、结构体与错误处理

    2024-02-07 13:20:02       49 阅读
  7. Kubernetes 生产环境部署微服务 Spring Cloud

    2024-02-07 13:20:02       43 阅读
  8. Linux CentOS stream 9 alias

    2024-02-07 13:20:02       48 阅读