关于OGRE四元数和旋转的一些浅显认识`

四元数旋转向量、欧拉角、旋转矩阵的相互转换 .transform3d实现四元数等的相互转换 阅读详情

对于OGRE四元数原理的理解,其实我也并非很清楚,但在我的使用过程中,

我逐渐的认知到了其实际是对于一种空间偏移,可以是绕轴旋转theta的偏移,

也可以理解为对w, x, y, z一种相对抽象表示的偏移。

(在OGRE中默认的相对轴好像是OGRE::Vector3::NEGATIVE_UNIT_Z吧...)

如果我的理解有误,也可以请各位大侠斗胆指出,小生不吝求教,

或许我也该找个时间好好看看《计算机图形学》了,毕竟知道原理才是根本呀!!


好了,多余的话也不说了,下面我写出一些在实践过程中使用OGRE四元数的经验,

也好让那些同样使用OGRE图形引擎的童鞋门有个好的参考:


1.OGRE中四元数中轴axis,弧度角rad和四元数quat的基本转换

(这里只是指出基本的转换原理,没有具体的代码实践, 不要骂我变量没有初始化=。=)


(       Ogre::Quaternion quat;

        Ogre::Vector3 axis;

        Ogre::Radian rad;         //类型表示 )

quat.w = cos (rad / 2) ;

quat.x = axis.x * sin (rad / 2) ;

quat.y = axis.y * sin (rad / 2) ;

quat.z = axis.z * sin (rad / 2);



2.已知源模型的朝向,要使其向着世界空间特定方向的旋转。

(这里我以一个雷龙AI的对象为例举例说明,

m_DragonNode表示雷龙AI被添加到的场景节点,m_Direction表示域使其面向的方向,

这个向量是通过m_DragonNode与攻击对象的场景节点位置作差计算出来的)

  //设置雷龙AI的朝向(其默认局部空间的X轴为其正向朝向)
  Ogre::Vector3 src = m_DragonNode->getOrientation()* Ogre::Vector3::UNIT_X;


  //雷龙AI的X轴到目标方向的旋转
  Ogre::Quaternion quat = src.getRotationTo(m_Direcion);
  m_DragonNode->rotate(quat, Ogre::Node::TS_WORLD);


保姆级教程:用SSH手动重建黑群晖RAID1阵列,修复‘存储空间损毁’ 本文提供了一份详细的SSH手动重建黑群晖RAID1阵列的教程,帮助用户修复‘存储空间损毁’问题。通过深入解析mdadm软RAID的底层逻辑,从诊断到重建的全过程,确保用户能够掌握黑群晖存储池的修复技术。适用于技术爱好者系统管理员。 阅读详情

相关推荐

2022年TI杯模拟电⼦系统设计专题邀请赛——李萨如图形演示装置

本次装置主要是对输入的正弦信号进行频率变换,并将原输入正弦信号作为 X 轴信号、变换后的正弦信号作为 Y 轴信号,绘制李萨如图形。采用 EK-TM4C123GXL 板卡作为主控;频率变换采用“锁向环+计数器”实现 1-5 倍频的频率变换控制;李萨如图形采用两个 AD通道采集原输入的正弦信号作为 X 轴信号频率变换后的正弦信号作为 Y 轴信号,绘制李萨如图形

qq_45890466的博客 7728

OGRE中的四元数旋转

想象一个物体在3D空间中移动的过程,该物体必然会涉及到旋转。例如一个怪物,他的运动方向会改变,要改变其方向只需要对其进行旋转即可。旋转的方式大致分为三种:Euler旋转,矩阵旋转,以及四元数旋转。这里稍微记录下我目前对于四元数旋转的理解。对于四元数方面的数学,以及其原理,这里不关心,只需要学会如何使用即可。无论是哪一种旋转,物体与该物体的局部坐标系之间的相对位置,相对方位都是不会改变的。因此,在进

1866

自动计算mpu6050的偏移量(MPU6050_calibration)

arduino程序,自动计算MPU6050的offset,显示如下: Sensor readings with offsets: 0 0 16391 -2 0 0 Your offsets: -1495 -454 2369 58 -36 31 Data is printed as: acelX acelY acelZ giroX giroY giroZ Check that your sensor readings are close to 0 0 16384 0 0 0 If calibration was succesful write down your offsets so you can set them in your projects using something similar to mpu.setXAccelOffset(youroffset) 简单快速,把该偏移带入mpu6050替换下面的值: // supply your own gyro offsets here, scaled for min sensitivity mpu.setXAccelOffset(-1495); mpu.setYAccelOffset(-454); mpu.setZAccelOffset(2369); mpu.setXGyroOffset(58); mpu.setYGyroOffset(-36); mpu.setZGyroOffset(31); // 1688 factory default for my test chip 。

第二章 OGRE中的平移与旋转

#include "ExampleApplication.h" class Example1:public ExampleApplication { public: void createScene() { //1 begin /* Ogre::Entity* ent=mSceneMgr->createEntity("MyEntity","Sinbad.mesh"); mScene

十年磨一剑 1815

OGRE中关于物体的旋转与朝向.

有几个知识点这时先复习一下: 表示物体的旋转的方法有多种: ()一个旋转矩阵 (直接将点向量*该矩阵结果就是旋转后的效果) ()欧拉角,即 pithc(绕X轴),yaw(Y),roll(Z),实质上,这是把绕任意转的旋转分解为绕X,Y,Z三个轴旋转的合成.   而恰恰,绕一个坐标轴转的计算比较简单.(很多书上都有讲,也易理解) (3四元数 ()轴角法.即通过所讲的:绕A轴转a度.

damenhanter的专栏 1151

浅谈Ogre四元数旋转-1

转自:  Ogre Wiki作者:  Cory Petkovsek翻译: 肥羊 目录:·1简介·2必备知识       ·2.1向量(Vectors)·3欧拉(Euler)旋转·4矩阵(Matrix)旋转·5四元数(Quaternion)旋转·6问题       ·6.1四元数       ·6.2其它·7代码片断       ·7.

Ogre专栏 4062

OGRE中的旋转与位移

1、在使用移动时,默认的是设置是父空间,这意味着所有除了旋转过的场景结点都是使用父空间移动的。 2、当使用世界空间时,旋转是不被考虑进去的。在移动时,使用的是就是世界坐标系。 3、当使用局部空间时,每个旋转,甚至是我们移动过的结点的旋转,都会被用于移动变换。 摘自:ogre 3d 1.7 beginner guide中文版

459

Ogre node旋转

Ogre::RadianOgre::Degree,这两个类是一个简单类型Ogre::Real的封装。 Ogre:: Angle代表了当前程序的默认的角度单元的角度大小。当OGRE应用程序第一次启动时,程序员可以自定义缺省值是‘弧度’(Radian)还是‘度’(Degree)。 node2->pitch(Ogre::Radian(Ogre::Math::HALF_PI)); 绕X轴旋转90° node3->yaw(Ogre::Degree(90.0f)); 绕Y轴旋转90° node4->

luronggui的博客 211

制作立体图像(下):用Ogre渲染立体图像

了解红蓝眼镜原理之后剩下的事情就简单了 如果不清楚红蓝眼镜原理,请先看上一篇:制作立体图像(一):红蓝眼镜原理 另外你应该已经准备好了一副红蓝眼镜(如果没有请点击这里,然后关闭本页面:) 现在戴上眼镜,先看看我们要做到的最终效果,一个旋转的立体地球: (当然这个是静止截图) 先说说实现原理: 在坐标原点创建一个圆球模型,并贴上地球纹理 在恰当位置创建两个相机,并将...

weixin_30955617的博客 262

Quaternion(四元数)旋转以及Yaw, pitch, roll 的含义

原文:http://www.linuxgraphics.cn/graphics/opengl_quaternion.html Quaternion(四元数)旋转 本文介绍了四元数以及如何在OpenGL中使用四元数表示旋转。 Quaternion 的定义 四元数一般定义如下: q=w+xi+yj+zk 其中

zhangshoucheng的专栏 1万+

Ogre旋转物体

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34268579的博客 529

OGRE中的四元数旋转(转)

 http://blog.csdn.net/kevinlynx/archive/2007/07/21/1701354.aspx   想象一个物体在3D空间中移动的过程,该物体必然会涉及到旋转。例如一个怪物,他的运动方向会改变,要改变其方向只需要对其进行旋转即可。       旋转的方式大致分为三种:Euler旋转,矩阵旋转,以及四元数旋转。       这里稍微记录下我目前对于

flyingpig204的专栏 1415

Ogre 的Node 位移、旋转

旋转有三种方式TS_LOCAL,TS_PARENT,TS_WORLD

vvsxr的专栏 1126

第二章 Ogre之场景绘图

第二章 Ogre之场景绘图 这章将会介绍给我们场景绘图的一些概念如何使用函数创造一个复杂的场景。 在这章,我们将会: 1.学习在3D 空间中三个基本的操作。 2.一个场景绘图是如何被组织的。 3.我们可以操作的不同的3D 空间。 那么,就让我们开始吧。   1、创建一个场景结点。 在上一章中(第一章 创建Ogre3D),我们加载了一个3D 模型并且把它绑定到我们的场景上。现在我

anhuizhj的专栏 884

陀螺仪

如有类同,纯属抄袭 https://krasjet.github.io/quaternion/quaternion.pdf//四元数书 https://blog.csdn.net/liulong1567/article/details/46420285 //Unity中的四元数解释 https://blog.csdn.net/u010203716/article/details/728...

qq_35433081的博客 1498

4元数(转)

这是国内找不到的超好文章。(为什么大陆的4元数文章很垃圾呢?)(翻译中。。。奉献给大家~~)70秒即懂,能使用,用四元数,4元数,阔特尼恩,Quaternion旋转(C) 中田  亨  (独立行政法人  产业技术综合研究所  数字人类研究中心  研究员 博士(工学)) 2003年11月25日★这个页面的对象读者想把三次元的旋转,用CG等定量地处理的人使用欧拉角(Euler Angles)的

JohnsonYu 1129

Quaternion中ToAngleAxisAngleAxis的含义用法

8.2.3 ToAngleAxis方法:Quaternion实例的角轴表示 基本语法:public voidToAngleAxis(out float angle, out Vector3 axis); 其中参数angle为旋转角;参数axis为轴向量。 功能说明:此方法用于将Quaternion实例转换为角轴表示。在transform. rotation.ToAngleAxis(out a

宏哥的博客 2万+

OGRE摄像机方向总结

转载自:http://blog.csdn.net/kira8dao7/article/details/6309671想做一个从天上往地面上看的小地图,使用相机的时候出现许多问题。1 物体变形 摄像机默认是近大远小的椎体视角,小地图使用的是类似平行光的视角,需要:cam->setProjectionType(Ogre::PT_ORTHOGRAPHIC);2 setDirection不支持以Ogre:

善战者无赫赫之功 的专栏 1739

欧姆龙Pmac(ck3m)使用手册

内含有五份手册,官方文档四份,《5-Day Training》《Power PMAC Software Reference Manual》《Power PMAC Users Manual》《Power PMAC IDE》代理商培训资料1份。

上一篇: 关于CEGUI环境搭建的图文教程(主要致力于OGRE1.9.0)
下一篇: 简单的WIN32屏保开发制作(可播放视频)
Beyond我爱杨
博客等级 码龄13年 36粉丝 39原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值