如果一个模型不在场景的中心点,这时候使用 osg::Matrix::rotate旋转的话,这个对象会围绕场景的中心点进行旋转,会转一个大圈,那么怎么做才能让他在任何位置的时候,围绕自己的轴心进行旋转?解决思路如下:

1. 先保存物体在世界坐标系下的坐标,即物体在世界坐标系下的中心点坐标
2. 再将物体移动到世界坐标系的原点。
3. 在世界坐标系的原点旋转好后,再移动回原来的位置,即步骤1中的提到的坐标。

const osg::BoundingSphere& loaded_bs = m_spTrans0->getBound();
osg::Vec3d center = m_spTrans0->getBound().center();  // 先保存物体中心点坐标
float fX = m_spTrans0->getBound().center().x();
float fY = m_spTrans0->getBound().center().y();
float fZ = m_spTrans0->getBound().center().z(); osg::Matrix curMatrix = m_spTrans0->getMatrix();
curMatrix *= osg::Matrix::translate(-center);     // 再将物体移动到世界坐标系原点
curMatrix *= osg::Matrix::rotate(osg::inDegrees(1.0), osg::Vec3d(0, 0, 1)); // 旋转
curMatrix *= osg::Matrix::translate(center);  // 再移回物体原来的位置
m_spTrans0->setMatrix(curMatrix);

osg下物体绕自身轴旋转相关推荐

  1. 实现物体绕不同轴旋转,并可以外部调用的函数

    第一个文件,声明枚举类型,分别为均匀变化和加速变化 1 2 3 4 5 6 7 8 using UnityEngine; using System.Collections; public enum C ...

  2. VTK笔记-几何变换-绕任意轴旋转

    绕任意轴旋转思路 中心轴与坐标轴平行   1.将旋转轴平移与坐标轴重合,物体也做平移操作:   2.物体绕坐标轴旋转:   3.执行步骤1的逆操作,将旋转轴平移回到原来位置,物体也对应平移: 中心轴与 ...

  3. 详解坐标变换矩阵 - 绕 x 轴旋转的旋转矩阵

    在高级驾驶辅助系统(ADAS)领域,存在多种常用的坐标系:LiDAR 坐标系.车辆坐标系.相机坐标系.图像坐标系等. 在高级驾驶辅助系统(ADAS)领域,存在多种常用的坐标系:LiDAR 坐标系.车辆 ...

  4. CocosCreator | 绕任意轴旋转/绕任意点旋转/平滑旋转/自定义环形体、胶囊体/面向目标位置

    01 效果演示 Cocos Creator 版本:3.4.1 该 demo 演示了行星自转(绕任意轴旋转).行星公转(绕任意点旋转).镜头拉近/复位(平滑旋转).行星环(自定义环形体).行星轴(自定义 ...

  5. 18.外部相机校准——旋转(Rotation),R是什么样子的,绕Z轴旋转的例子,齐次坐标旋转_2

    目录 旋转(rotation) R是什么样子的 绕Z轴旋转的例子 齐次坐标旋转 旋转(rotation) 现在生活变得更加丑陋,旋转(rotation).我这里有一个图,或者我想这也是来自四边复合幻灯 ...

  6. 曲线绕x轴旋转曲面方程_曲线C绕y轴旋转所成的旋转曲面的方程为.PPT

    曲线C绕y轴旋转所成的旋转曲面的方程为 曲面之柱面.旋转面.椭球面 欧阳顺湘 北京师范大学 Recall 曲面方程(Equations for a Surface): 更多曲面 柱 面 旋转面 椭球面 ...

  7. 机器人学——姿态描述方法(欧拉角,固定角,D-H法,绕定轴旋转)

    文章目录 绕坐标轴旋转 欧拉角 固定角 D-H变换矩阵 绕定轴旋转 绕坐标轴旋转 刚体绕X,Y,Z轴旋转θ角的公式 R X ( θ ) = [ 1 0 0 0 cos ⁡ θ − sin ⁡ θ 0 ...

  8. 四元数绕某个轴旋转某度之后的得到的四元数+pcl使用总结

    四元数绕某个轴旋转某度之后的得到的四元数 //2.2 由四元数得到旋转轴tf::Vector3 v5(0,0,1);//v5=q.getAxis();std::cout<<"四元 ...

  9. 车削加工编程一般包含X和Z坐标运动及绕Z轴旋转的转角坐标

    车削加工编程一般包含X和Z坐标运动及绕Z轴旋转的转角坐标C .­ (1)快速定位(G00或G0) 刀具以点位控制方式从当前所在位置快速移动到指令给出的目标位置.­ 指令格式:G00 X(U) Z(W) ...

最新文章

  1. 京东架构师解析URL监控
  2. python画正方形-用Python Turtle画一个正方形
  3. HBase 0.94.21 zookeeper-3.4.6 分布式安装
  4. 李牛(Linux)脚本
  5. 2020,难过的一年
  6. 《css设计彻底研究》读书笔记之 盒子模型
  7. RestTemplate的基本使用
  8. 常用ColorMatrixFilter收集
  9. mysqlplus 批量插入_MySQL批量插入数据
  10. ansible安装包和管理 playbook相关
  11. Linux系统中用源代码编译安装软件和查看进程
  12. KELL *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
  13. electron打包失败在下载nsis的地方
  14. 基于单片机的GPS开发 (four) GPS基础知识
  15. word插入页眉图片
  16. 计算机面试专业英语词汇,英语面试中常用高频词汇
  17. 安科瑞水电气三表集抄电能管理系统在阿克希龙公司的设计方案
  18. linux命令scp和sftp
  19. python:考试前,练手习题(斐波那契数,字符串排序,九九乘法表,水仙花数,求和...求数字倍数,(保佑不挂科!)
  20. 转帖——李开复:我的大学生活琐忆

热门文章

  1. 「权威发布」2019年大学生电子设计竞赛题目
  2. 【第三期】那些设计漂亮、有创意的电路板!
  3. python随机生成20个数字_python – 生成大量唯一的随机float32数字
  4. java设计高并发内存池_高并发服务器-连接池的设计
  5. 使用绝对定位时浏览器大小改变排版会乱_HTML amp; CSS页面布局之定位
  6. java jpanel 缓冲画图_Java:Jpanel 缓冲区 图像
  7. Odoo访问权限(一)
  8. Hadoop的启动和停止说明
  9. centos安装Oracle virtual box
  10. (转帖)开源容器集群管理系统Kubernetes架构及组件介绍