查看: 1465|回复: 2

如何实时获得旋转平面的法线。

[复制链接]

该用户从未签到

发表于 2011-12-7 21:00:55 | 显示全部楼层 |阅读模式
我想获得一个一直在变化的平面的法线。
class VertexExtractor : public osg::NodeVisitor
{
public:
      
        VertexExtractor() : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
        {
               
        }

        void apply( osg::Geode& geode )
        {
                osg::Geometry* geom = dynamic_cast<osg::Geometry*>( geode.getDrawable(0) );
        osg::Vec3Array* norm = dynamic_cast<osg::Vec3Array*>( geom->getNormalArray() );
        normal.set((*norm)[0]);
         std::cout<<normal.x()<<normal.y()<<normal.z();
        };

};
通过这个访问器来获得。在一个更新回调里,让那个变化的面来开启访问器。但是,输出的,还是面的初始法线。
面是PositionAttitudeTransform的类型。

该用户从未签到

发表于 2011-12-8 09:18:17 | 显示全部楼层
本帖最后由 liushui 于 2011-12-8 09:18 编辑

可以对获取的值做该面的MT矩阵变换,就是实际法线方向

该用户从未签到

发表于 2011-12-8 11:06:43 | 显示全部楼层
你所获取的是它自身坐标系内法线描述,需要转换到要进行计算的目标坐标系中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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