OSG setMatrix函数误区

setMatrix是Node模型平移、旋转、缩放的接口函数,功能强大非常好用,但是稍微不注意,连续调用就会发现后面的功能调用将会覆盖之前的功能调用,这种致命错误,有时候总是让人手足无措,解决这个问题,我们可以从osg::MatrixTransform派生一个新类出来。

头文件定义:

#ifndef QNODEMATRIX_H
#define QNODEMATRIX_H

#include<osg/MatrixTransform>
#include <osg/Matrixd>
    class QNodeMatrix:
    public osg::MatrixTransform
{
public:
    QNodeMatrix();

public:
    /*设置模型旋转方式*/
    void rotaing(const osg::Vec3d &pivot, const osg::Vec3d &axis, float angularVelocity);

    /*移动模型*/
    void move(const osg::Vec3d &pos);

    /*限制模型大小*/
    void adapt(osg::BoundingSphere &_bs);
    void adapt(osg::Node *node);

    /*缩放模型*/
    void scale(const osg::Matrix &mat);
    void scale(const float &_scale);

    /*旋转模型*/
    void rotate(const osg::Matrix &mat);
    void rotate(const float angle, const osg::Vec3f &axis);

    /*关联模型*/
    void _addChild(osg::Node *node);

private:
    osg::ref_ptr<osg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值