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() 


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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值