OSG学习笔记0——解决OSG读obj模型问题

</pre><p></p><p></p><p></p><pre name="code" class="cpp">// ReadObj.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include<osgViewer/Viewer> 
#include<osgDB/ReadFile> 
int main(int argc, char **argv)
{
	osgViewer::Viewer viewer;//定义一个视景器
	osgDB::Options  *a = new osgDB::Options(std::string("noTriStripPolygons"));
	osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("E:\\model_data\\objdata\\objdata\\rkidney.obj", a);
	//osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("cow.osg");//使用readNodeFile读入模型文件
	viewer.setSceneData(node);//设置node给视景器作为、所有场景数据的根节点
	return viewer.run();//开始执行视景器,循环的绘制场景,并接受用户交互信息。  规划
}

最近刚刚开始学习osg,拿到的任务是读取一个obj模型,然后对该模型进行一些移动,旋转等操作。第一步就卡住了不知道如何读取obj模型,百度不到,估计问题太幼稚了没有人问。但我相信这个世界上总有和我一样菜的程序员,所有决定记录下来,帮助大家,也自己记住一点。

同学说需要自己写一个OpenGL的程序,来读。后来问了我们老王boss,告诉我OSG有读obj的插件。看书上也有。就开始操作。

遇到的第一个问题是路径设置不正确,自己太菜了,在C++编程里需要把路径中的"\"改成"\\"。这样才能找到要读取的文件。羞耻啊,四年大学白读了。

之后就是等待非常久的时间都无法读出模型,老师说是因为OSG有个优化机制,而且这个模型确实比较大。所以我脾气超级好,超级好的boss,坐在我的位置上,帮我看了快半小时的代码。然后添加了一句

osgDB::Options  *a = new osgDB::Options(std::string("noTriStripPolygons"));

并在readNodeFile里添加a。

不知道为什么这么做了之后果然快了好多,一下就出来了。

佩服佩服。以后要好好学习一下如何看源代码,不能总是麻烦老师。

于是乎,今天老王在实验室已经待了2个小时了,挨个解决师姐师兄们的论文问题。

彩蛋~刚刚老王说,你们女生每人都发个宋仲基啊(我和师姐位置上都贴了欧巴的海报),哈哈哈,师姐和我爆笑,老师你怎么知道,他说广播里天天在放。可是怎么知道我二老公长什么样子。

你可能感兴趣的:(OSG学习笔记0——解决OSG读obj模型问题)