查看: 1086|回复: 8

[新人求教]参照网上写了一个关于船运动的代码,编译出错

[复制链接]

该用户从未签到

发表于 2013-3-18 09:00:49 | 显示全部楼层 |阅读模式
本帖最后由 dreamsmile117 于 2013-3-18 09:03 编辑

大家好,是这样的。为了让船运动写了这样一段代码
private:osg::MatrixTransform* boatTransform;
        osg::Vec3f m_boatPosition;


SceneEventHandler( SceneModel* scene, TextHUD* textHUD, osgViewer::Viewer& viewer,osg::MatrixTransform* boatPosition ):
        _scene(scene),
        _textHUD(textHUD),
        _viewer(viewer),
        _currentCameraMode(FIXED),
        m_boatPosition(boatPosition)
    {
         boatTransform=boatPosition;
         boatTransform->setMatrix(osg::Matrix::translate(osg::Vec3f(0.0f,150.0f,0.0f)));
                 //m_boatPosition=
         m_boatPosition=(osg::Vec3f(0.0f,150.0f,0.0f));
         boatSpeed=0.2;
         m_fAngle=0;

....}

老是报错:3>..\..\..\src\oceanExample\application.cpp(571) : error C2664: “osg::Vec3f::Vec3f(const osg::Vec3f &)”: 不能将参数 1 从“osg::MatrixTransform *”转换为“const osg::Vec3f &”
3>        原因如下: 无法从“osg::MatrixTransform *”转换为“const osg::Vec3f”
请问是不是VEC3F的格式没办法转化成TRANSFORM?
该如何转换?

该用户从未签到

发表于 2013-3-18 09:14:30 | 显示全部楼层
类型不同根本就不能转换

该用户从未签到

发表于 2013-3-18 09:32:51 | 显示全部楼层
本帖最后由 liuzhiyu123 于 2013-3-18 10:43 编辑

boatTransform=boatPosition;  ??什么东东?(哦,看到了)

该用户从未签到

 楼主| 发表于 2013-3-18 09:40:37 | 显示全部楼层
liuzhiyu123 发表于 2013-3-18 09:32
boatTransform=boatPosition;  ??什么东东?

boatTransform是PRIVATE定义的,boatPosition是传递进去的,用来设置初始位置

该用户从未签到

 楼主| 发表于 2013-3-18 09:46:10 | 显示全部楼层
本帖最后由 dreamsmile117 于 2013-3-18 09:47 编辑
liuzhiyu123 发表于 2013-3-18 09:32
boatTransform=boatPosition;  ??什么东东?


application.cpp (34.33 KB, 下载次数: 4)

该用户从未签到

发表于 2013-3-18 10:42:23 | 显示全部楼层
代码看起来太晕了

该用户从未签到

 楼主| 发表于 2013-3-18 11:02:54 | 显示全部楼层
liuzhiyu123 发表于 2013-3-18 10:42
代码看起来太晕了

该用户从未签到

发表于 2013-3-18 16:00:44 | 显示全部楼层
  boatTransform->setMatrix( boatTransform*osg::Matrix::translate(osg::Vec3f(0.0f,150.0f,0.0f)));试试
另外boatPosition这个东西是矩阵吗 你就用来给矩阵赋值?

该用户从未签到

 楼主| 发表于 2013-3-20 13:02:49 | 显示全部楼层
eva02prot 发表于 2013-3-18 16:00
boatTransform->setMatrix( boatTransform*osg::Matrix::translate(osg::Vec3f(0.0f,150.0f,0.0f)));试试 ...

谢谢、已经解决了 ,是  m_boatPosition(boatPosition)这句话错误。但是让船实时运动还没实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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