查看: 1263|回复: 2

新人问题1

[复制链接]

该用户从未签到

发表于 2010-1-16 09:13:40 | 显示全部楼层 |阅读模式
我是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,应该和系统无关吧?

先谢谢斑竹和各位前辈了,我估计今后会长时间地混这儿,我的起点实在太低了。。。

该用户从未签到

发表于 2010-1-17 09:08:08 | 显示全部楼层
如果您的OSG库是自己编译得到的,那么没有什么问题;如果您在64位的windows7下使用别人的预编译安装包,那么我想目前还不存在完全适合您的系统环境的安装包,因此出现运行时问题是在所难免的,这是由于VS编译器自己的特性所致。

您的程序代码本身不会造成“往内存里读,但是永无止境”的问题

该用户从未签到

 楼主| 发表于 2010-1-19 08:07:09 | 显示全部楼层
谢谢斑竹,我在linux下试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表