osg缩放和平移模型

void OsgCanvas4::init() {
	int w = width();
	int h = height();
	_graphicsWindow = new osgViewer::GraphicsWindowEmbedded(0, 0, w, h);

	_viewer = new osgViewer::Viewer;

	osg::ref_ptr<osg::Camera> camera = new osg::Camera /*_viewer->getCamera()*/;
	camera->setClearColor(osg::Vec4(0.2, 0.2, 0.6, 0.5));
	camera->setGraphicsContext(_graphicsWindow);
	camera->setProjectionMatrixAsPerspective(30.0f, double(w) / h, 1.0f, 10000.0f);
	camera->setViewport(new osg::Viewport(0, 0, w, h));
	_viewer->setCamera(camera);
	_root = new osg::Group;
	osg::ref_ptr<osg::Node> cow = osgDB::readNodeFile("F:\\OSG_Qt5.10_64\\OpenSceneGraph-Data-3.0.0\\cow.osgt");
	osg::ref_ptr<osg::Node> xyz = osgDB::readNodeFile("F:\\OSG_Qt5.10_64\\OpenSceneGraph-Data-3.0.0\\xyz.osgt");

	//平移模型
	osg::ref_ptr<osg::MatrixTransform> translate = new osg::MatrixTransform;
	translate->setMatrix(osg::Matrix::translate(-20, 0, 0));
	translate->addChild(cow.get());
	_root->addChild(translate);
	_root->addChild(cow);
	//缩放模型
	osg::ref_ptr<osg::MatrixTransform> scale = new osg::MatrixTransform;
	scale->setMatrix(osg::Matrix::scale(5.0, 5.0, 5.0));
	scale->addChild(xyz);
	_root->addChild(scale);
#if 0
	osg::ComputeBoundsVisitor visitor;
	_root->accept(visitor);
	osg::BoundingBox box = visitor.getBoundingBox();
	osg::Vec3 center = box.center();
	osg::Vec3 eye = osg::Vec3(20, 0, 0);
	osg::Vec3 up = osg::Vec3(0, 0, 1.0);
	camera->setViewMatrixAsLookAt(eye, center, up);
#else
	_viewer->setCameraManipulator(new osgGA::TrackballManipulator);
#endif
	_viewer->addEventHandler(new osgViewer::WindowSizeHandler);
	_viewer->addEventHandler(new osgViewer::StatsHandler);
	_viewer->setThreadingModel(osgViewer::Viewer::SingleThreaded);
	_viewer->addEventHandler(new osgViewer::WindowSizeHandler);

	_viewer->setSceneData(_root);
	
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值