查看: 1317|回复: 4

再问一个关于lineSegment的问题

[复制链接]

该用户从未签到

发表于 2010-12-21 18:16:33 | 显示全部楼层 |阅读模式
我运行程序时,出现了
warning:valid line segment passed to intersectVisitor :: addlinesegment()
15000 -397500 500 15000 -397500 500 segment ignored..

请大家赐教,上述提示可能是哪里出了问题?
射线还有不合法之说吗?

该用户从未签到

发表于 2010-12-21 19:03:35 | 显示全部楼层
请给出出错的代码~~

该用户从未签到

 楼主| 发表于 2010-12-22 09:50:25 | 显示全部楼层
if (m_bPeng)
        {
                //看新值与旧值之间的连线是否与模型有交点!
                osg::Vec3 newPos = m_vPosition + delta;
                osgUtil::IntersectVisitor iv;

                osg::ref_ptr<osg:ineSegment> line = new osg::LineSegment(newPos,
                        m_vPosition);

                osg::ref_ptr<osg::LineSegment> lineZ = new osg::LineSegment(newPos + osg::Vec3(0.0f, 0.0f, m_fMoveSpeed/1000),
                        newPos - osg::Vec3(0.0f, 0.0f, m_fMoveSpeed/1000));   
                iv.addLineSegment(lineZ.get());
                iv.addLineSegment (line.get()) ;
                m_node ->accept(iv);
                if (!iv.hits())
                {
                        m_vPosition += delta;
                }
        }
        else
                m_vPosition += delta;
}
这是一段很常见的代码,在一个小场景中运行没有问题,当时speed是10,后来换了大场景后,speed改为2500,就出现了上面的警告。不知道怎么回事,还望各位多指点。

该用户从未签到

发表于 2010-12-22 15:14:08 | 显示全部楼层
您应该使用IntersectionVisitor,这才是OSG 2.0以后使用的求交工具。IntersectVisitor只是为了保持早期兼容性而设的,不应当使用,出现问题也不会再修正了

该用户从未签到

发表于 2011-2-18 18:06:25 | 显示全部楼层
学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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