9,0级建模文件和0级精模文件写成根节点

根据以前章节所说,导出的文件是group,

此group组成

1,叶子节点

2,pagedlod

3,叶子节点和pagedLod的混合体

由于0级是由精模和简模通过pagedLod组成,所以,根节点是由0级的一个PagedLod组成,即

复制代码
osg::ref_ptr<osg::Group> grp = new osg::Group;
grp->addChild(plod);
osgDB::writeNodeFile(*grp, strOutputFileName);

输出的文件是root_0.osg

打开此文本

读取该文件

运行,

远处

拉近

代码如下:

#include <osgViewer/Viewer>

#include <osg/Node>

#include <osgdb/ReadFile>

#include <osgDB/WriteFile>

#include <osg/PagedLod>

#include <osgGA/TrackballManipulator>

int main()

{

int rootIndex = 0;

std::string strRootDir = "d:/test/lod/";

std::string strOutputFileName = strRootDir + "root_" + std::to_string(rootIndex) + ".osg";

#if 1

int childLevel = 0;

std::string strChildLevel = std::to_string(childLevel);

std::string strLevel0DetailModelFileName = strChildLevel + "/root_" + std::to_string(rootIndex) + "_detail.osg";

std::string strLevel0SimpleModelFileName = "D:/install/osg365_oe210_vs2019/OpenSceneGraph-Data/cow.osg";

osg::ref_ptrosg::PagedLOD plod = new osg::PagedLOD;

plod->setCenter(osg::Vec3(0, 0, 0));

plod->setFileName(0, strLevel0DetailModelFileName);

plod->setRange(0, 0, 50);

plod->setFileName(1, strLevel0SimpleModelFileName);

plod->setRange(1, 50, FLT_MAX);

osg::ref_ptrosg::Group grp = new osg::Group;

grp->addChild(plod);

osgDB::writeNodeFile(*grp, strOutputFileName);

#else

osg::ref_ptrosg::Node node = osgDB::readNodeFile(strOutputFileName);

osg::ref_ptrosgViewer::Viewer viewer = new osgViewer::Viewer;

viewer->setSceneData(node);

osg::ref_ptr< osgGA::TrackballManipulator> manip = new osgGA::TrackballManipulator();

复制代码
// 设置自定义的初始位置:眼睛位置、观察点、向上向量
manip->setHomePosition(
	osg::Vec3d(0.0, -100.0, 5.0),   // 眼睛位置
	osg::Vec3d(0.0, 0.0, 0.0),      // 观察中心
	osg::Vec3d(0.0, 0.0, 1.0),       // 向上向量(Z轴向上)
	false                            // 不自动计算
);

viewer->setCameraManipulator(manip);

return viewer->run();

#endif

}

相关推荐
扶尔魔ocy3 天前
【qt openGL入门笔记】windows编译MinGW版本的osgearth(2.10.1)
qt·opengl·osg
扶尔魔ocy4 天前
【QT OpenGL】知识点编目及传送门
qt·opengl·osg
扶尔魔ocy16 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行并进行态势标绘(四)
qt·opengl·osg
扶尔魔ocy19 天前
【qt openGL入门笔记】OSG实现显示飞机模型飞行的点迹(二)
qt·opengl·osg
扶尔魔ocy19 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行(三)
opengl·osg
扶尔魔ocy20 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行
qt·opengl·osg
directx3d_beginner8 个月前
10,cookbook的lod示例
osg
directx3d_beginner8 个月前
8,将0级简模文件和精模文件同时放入pagedlod
osg
directx3d_beginner8 个月前
5,保存4个一级节点
osg