1. 四元数(Quatertion):为旋转而引入的一个结构,知道如何去用即可,无需理解其数学基础。
Q.w = cos (angle / 2)
Q.x = axis.x * sin (angle / 2)
Q.y = axis.y * sin (angle / 2)
Q.z = axis.z * sin (angle / 2)
http://edu.gamfe.com/tutor/d/10161.html
mNode->getOritation()获取的是该节点相对于初始方向的四元数,即角度
vectorA = q * vectorB,表示将vectorB旋转一定的角度,角度由q指定
注意:Q.w = 0时在使用时会出错,就是旋转180度的时候,估计是溢出错误,此时使用rotate函数替换。
当我们需要指定一个角度和旋转量时,直接使用Quatertion(const Radian& rfAngle,const Vector3& rkAxis)构造函数即可,即用一个方向和角度来确定旋转量。
3dmax做出来的动画中的rotate中的四个量是可以直接使用的量,无需自己进行转转。
2. ogre处理动画的几个类的介绍,写的很好:
http://blog.sina.com.cn/s/blog_5e3213f30100zlx2.html
3.ogre overlay 显示表层
http://blog.csdn.net/pizi0475/article/details/5451304
http://cpan.uwinnipeg.ca/htdocs/Ogre/Ogre/ExampleFrameListener.pm.html
http://blog.csdn.net/qingwa199010/article/details/6611265
http://www.ogre3d.org/tikiwiki/Creating+Overlays+via+Code
4.设置材质透明
方法一 材质脚本模板:
material Template/TransparentTexture{
technique
{
pass {
scene_blend alpha_blend//这里是设置透明
depth_write off//这里是设置写的时候不管深度信息,总能写
texture_unit ...
方法二 程序代码:
material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);//SBT_TRANSPARENT_COLOUR
//material->getTechnique(0)->getPass(0)->setTransparentSortingEnabled(true);
material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setAlphaOperation(Ogre::LBX_MODULATE, Ogre::LBS_TEXTURE, Ogre::LBS_MANUAL,1.0, 0.8); // 0.8为透明度
5.创建多个viewport的时候,如果想实现一个overlay的效果
vp->setClearEveryFrame(true,Ogre::FBT_DEPTH);//表示将绘制这一帧的时候将前面的深度信息clear,这样这帧数据可以直接绘制在上层。
同时为了显示透明的效果,需要设置material的参数,设置scene_blend alpha_blend
6.3D数学基础
http://www.360doc.com/content/12/0713/11/10404937_223945996.shtml