我要发帖 回复

正式会员

4

主题

23

积分

0

专家分

:

私信
发表时间 : 2009-4-12 22:30:31 | 浏览 : 2116    评论 : 3
如题,在“ 文件读取和变换 ”一课中,代码如下:

#include <osg/Node>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include<osg/Geode>
#include<osg/Geometry>
#include<osg/ref_ptr>
#include<osg/Notify>

void main()
{
        // 声明一个作为场景图形根节点的组节点,它可以接受其它节点作为自己的子节点,因此我们需要使用Group节点。
        // Node节点类是泛指所有类型的节点。而Group类是节点类型的一种,它可以对子节点进行增减和控制。
        osg::Group* root = new osg::Group();

        // 声明并初始化位置变换节点
        osg::PositionAttitudeTransform* tankXform =        new osg::PositionAttitudeTransform();

        //以下的代码是加载数据所必需的。现在我们可以将加载的模型作为场景图形的一部分了,
        //将模型作为位置变换节点的子节点载入,以便控制它在场景中的位置。
        osg::Node* tankNode = NULL;
        tankNode = osgDB::readNodeFile("Models/M1A1.flt");

        //使用osg::Group的addChild方法将位置变换节点作为根节点的子节点添加,坦克节点作为位置变换节点的子节点添加。
        root->addChild(tankXform);
        tankXform->addChild(tankNode);

        // 初始化一个Vec3的实例,用于确定坦克在场景中的位置。
        osg::Vec3 tankPosit(5,0,0);
        tankXform->setPosition( tankPosit );

        // 声明视窗类
        osgViewer::Viewer viewer;
        // 将场景图形关联给视窗类
        viewer.setSceneData( root );
        // 创建程序窗口并启动工作线程
        viewer.realize();
        while( !viewer.done() )
        {
                viewer.frame();
        }
}

出错信息为:
error C2512: 'osg::PositionAttitudeTransform' : no appropriate default constructor available

好奇怪啊!兄弟们可曾遇见过这个错误?请不吝赐教!!!

最近VR访客

FlySky 评论于2009-4-12 23:31:53
加一个头文件就可以了,,#include <osg/PostionAttitudeTransform>

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
misterguo 评论于2009-4-14 22:35:14

谢谢flysky,不过好像仍然不对

如flysky所言添加
#include <osg/PostionAttitudeTransform>
还是不对:
Cannot open include file: 'osg/PostionAttitudeTransform': No such file or directory

我想是不是我用的版本不一样呢?我用的是osg2.6
misterguo 评论于2009-4-14 22:43:07

我晕~~~

flysky说的没错,不过笔误少打了一个字母i,是PositionAttitudeTransform

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-4-23 11:05 AM

返回顶部