|
我是OSG新手,本来是学机械的,现在做点虚拟现实的东西,用OSG,C++学过一点,也不怎么地。模仿海军学校的教程开始OSG,Loading and Position
我想将4个不同格式的模型放在一个scene里,如下:
#include "stdafx.h"
#include <iostream>
#include <osg/Node>
#include <osgDB/ReadFile>
#include <osg/PositionAttitudeTransform>
#include <osg/Group>
#include <osgViewer/Viewer>
int main()
{
osg::Node* tankNode = NULL;
osg::Node* carNode = NULL;
osg::Node* jeepNode = NULL;
osg::Node* motorbikeNode = NULL;
tankNode = osgDB::readNodeFile("C:\\Users\\Xiang\\Downloads\\NPS_Tutor\\t72-tank_des.flt");
std::cout << "1" << std::endl;
carNode = osgDB::readNodeFile("C:\\Users\\Xiang\\Downloads\\car.3ds");
std::cout << "2" << std::endl;
jeepNode = osgDB::readNodeFile("C:\\Users\\Xiang\\Downloads\\jeep.lwo");
std::cout << "3" << std::endl;
motorbikeNode = osgDB::readNodeFile("C:\\Users\\Xiang\\Downloads\\motorbike.obj");
std::cout << "4" << std::endl;
std::cout <<"finished reading"<<std::endl;
osg::Group* root = new osg::Group();
root->addChild(carNode);
osg:ositionAttitudeTransform* tankXform = new osg::PositionAttitudeTransform();
osg::PositionAttitudeTransform* jeepXform = new osg::PositionAttitudeTransform();
osg::PositionAttitudeTransform* motorbikeXform = new osg::PositionAttitudeTransform();
root->addChild(tankXform);
root->addChild(jeepXform);
root->addChild(motorbikeXform);
tankXform->addChild(tankNode);
jeepXform->addChild(jeepNode);
motorbikeXform->addChild(motorbikeNode);
osg::Vec3 tankPosit(1000,0,0);
tankXform->setPosition(tankPosit);
osg::Vec3 jeepPosit(2000,0,0);
jeepXform->setPosition(jeepPosit);
osg::Vec3 motorbikePosit(3000,0,0);
motorbikeXform->setPosition(motorbikePosit);
osgViewer::Viewer viewer;
viewer.setSceneData( root );
if (!viewer.getSceneData())
{
osg::notify( osg::FATAL ) << "Unable to load data file. Exiting." << std::endl;
return 1;
}
return viewer.run();
}
比较奇怪的几个问题:
1. tank.flt 是论坛上下的,单独可以读取,用这一段code也可以读取,但是在viewer视窗上看不了。
2. jeep.lwo的模型也可以读取,也以单独显示,如果放在一起也无法显示了。
3. motorbike.obj大概11m,无法读取完成,在任务管理器中可以看到往内存里读,但是永无止境,只好中断。一样的,如果单独看,很快,没有问题。
是我的之短code的问题吗?我的系统是64bit 的win7,应该和系统无关吧?
先谢谢斑竹和各位前辈了,我估计今后会长时间地混这儿,我的起点实在太低了。。。 |
|