栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

osg08:osg3.3.12 分页细节层次节点(PagedLOD)示例

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

osg08:osg3.3.12 分页细节层次节点(PagedLOD)示例

osg08:osg3.3.12 分页细节层次节点(PagedLOD)示例


#include 

#include 
#include 
#include 
#include 
#include 
#include 

#include  
#include 

#include 

#include 

#include 

//创建三级PagedLOD场景
osg::ref_ptr createPagedLOD()
{
	//创建PagedLOD对象
	osg::ref_ptr page = new osg::PagedLOD();
	//设置中心位置
	page->setCenter(osg::Vec3(0.0f,0.0f,0.0f));

	//添加节点,设置0级的内容为cow.osg
	page->setFileName(0,"cow.osg");
	//设置可视变化范围为0.0f-50.0f
	page->setRange(0,0.0f,50.0f);

	//添加节点,设置0级的内容为spaceship.osg
	page->setFileName(1,"glider.osg");
	//设置可视变化范围50.0f-100.0f
	page->setRange(1,50.0f,100.0f);

	//添加节点,设置0级的内容为cessna.osg
	page->setFileName(2,"cessna.osg");
	//设置可视变化范围100.0f-200.0f
	page->setRange(2,100.0f,200.0f);

	return page.get();
}

int main()
{
	osg::ref_ptr viewer = new osgViewer::Viewer();

	osg::ref_ptr root = new osg::Group();

	//创建矩阵变换节点
	osg::ref_ptr mt = new osg::MatrixTransform();
	//添加子节点
	mt->addChild(createPagedLOD());
	//旋转一下,调整一下合适的角度
	osg::Matrix m ;
	m.makeRotate(60.0f,0.0f,0.0f,1.0f);
	//设置矩阵
	mt->setMatrix(m);

	//添加PagedLOD场景
	root->addChild(mt.get()) ;

	//写入PagedLOD
	osgDB::writeNodeFile(*root,"page.osg");

	//优化场景数据
	osgUtil::Optimizer optimizer ;
	optimizer.optimize(root.get()) ;

	viewer->setSceneData(root.get());

	viewer->realize();

	viewer->run(); 

	return 0 ;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号