|
本帖最后由 zz12138 于 2023-1-18 19:23 编辑
代码是照着教程敲的
- #include <Windows.h>
- #include <osgViewer/Viewer>
- #include <osg/Node>
- #include <osg/Geode>
- #include <osg/Group>
- #include <osg/PagedLOD>
- #include <osg/PositionAttitudeTransform>
- #include <osg/MatrixTransform>
- #include <osgDB/ReadFile>
- #include <osgDB/WriteFile>
- #include <osgGA/TrackballManipulator>
- #include <osgUtil/Optimizer>
- #include <iostream>
- //创建三级PagedLOD场景
- osg::ref_ptr<osg::Group> createPagedLOD()
- {
- //创建PagedLOD对象
- osg::ref_ptr<osg::PagedLOD> 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);
- //添加节点,设置1级的内容为glider.osg
- page->setFileName(1, "glider.osg");
- //设置可视变化范围50.0f-100.0f
- page->setRange(1, 50.0f, 100.0f);
- //添加节点,设置2级的内容为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<osgViewer::Viewer> viewer = new osgViewer::Viewer();
- osg::ref_ptr<osg::Group> root = new osg::Group();
- //创建矩阵变换节点
- osg::ref_ptr<osg::MatrixTransform> 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->getDatabasePager()->setDoPreCompile(false);
- viewer->run();
- return 0;
- }
复制代码
但是在vs2017,osg版本3.6.5 x64 release情况下无法正确显示,效果如图,截屏截不到所以用手机拍了,可以隐约看出牛的纹理,但是只能旋转,无法缩放和使用鼠标中键移动。
删掉矩阵变换节点,即root只有一个pageLOD节点运行,或者直接使用osgViewer在命令行中查看程序保存的page.osg都是显示上面的效果,已知cow gliter cessna都可以正常显示,基本可以确定就是pagedLOD的问题。
如果不使用setFileName,改成使用readNodeFile先读然后使用pageLOD的addChild方法加载是可以正确显示的,基本可以确定是setFileName没有正确读入文件。
网上有一篇帖子遇到了和我一样的问题,如下图,但是没有人回答
请问这种问题如何解决,是我的电脑的环境问题吗,还是因为什么东西没配置好,还是别的问题?求大佬帮忙看看。CPU为i5-8265,内存、显卡以及程序运行时系统资源占用如下
|
|