osg中将局部坐标系下的点坐标换算成全局坐标系下点的坐标

今天下午我遇到了这个问题,原来都准备去写 nodevisitor 了,后来发现 Transform.cpp 中已定义了 TransformVisitor 可直接实现 tranform 的连乘,然后查看 Transform 的成员函数,发现这个 TransformVisitor 是通过 Transform 的成员函数 computeLocalToWorld(...) ,传入相关参数后,直接就可计算出变换矩阵,visitor都不用考虑了。^_^

正在高兴时我,想了想,这样还是得确定这个对象是 Transform 类型的才可以,于是我看了看 osg::Node 的类说明,想找到 parentList ,这时我发现了 osg::Node 竟然有成员函数 getWorldMatrices() , 返回 MatrixList 。 当前 node 至场景根结点可能有很多条路径(每个路径都会显示一次这个结点),这个 list 便保存了每个路径合成的最终 matrix 。简直太方便了!^-^


现在总结下,共有两个方法,可获得结点的变换矩阵集合:

1. osg::Transform::computeLocalToWorld(...)

2. osg::Node::getWorldMatrices() 


当然,针对这个问题,第二个方法更方便。

你可能感兴趣的:(list,Matrix)