unreal3的坐标系统和vector/rotator
2016-04-01 10:47
369 查看
unreal3的坐标系有点奇葩,属于【z轴向上的左手坐标系】:
1、左手食指指前方,x正向
2、大拇指指上方,z正向
3、中指指右方,y正向
若以我们人头摆正时来参考:
1、目视的是前方,x正向
2、头顶的是上方,z正向
3、右边是右方,y正向
特殊的地方在于:
通常在d3d这样的系统里,地平面上是x、z两个轴,且“向着屏幕里面”的那个轴是z轴正向,而在unreal3里地平面上是x,y轴,且y轴负向指向屏幕。
关于Vector:
1、这是3维向量,另外还有Vector2D和Vector4
2、dot、cross、*(星号)都是是操作符,分别表示点乘、叉乘、各分量乘
3、常用函数:Sqrt,VSize,VSizeSq,VSize2D,Normal,IsZero,ClampLength,VRand,MirrorVectorByNormal,ProjectOnTo
4、坐标系变换:CamRot是一个Rotator,表示一次空间变换,则
1、3个分量的应用顺序其实是:Yaw,Pitch,Roll,并且Roll是相对于自身的,对一纯vector而言,roll并没有意义
2、因为类型为int(而非传统的float),所以范围和精度有限制,用65536来表示2pi,其它常用值参考:
/********************
*****Reference*******
*********************
* 65536 = 360 degrees
* 32768 = 180 degrees
* 16384 = 90 degrees
* 8192 = 45 degrees
* 182 = 1 degree
*********************/
3、可以和Vector互相转换,但从Vector转回来的Rotator,roll分量为0
最后,在代码里定义一个Vector或Rotator时可以写成:
myVec=vect(0,0,0)
myRot=rot(0,100,100)
这是因为vect和rot是unrealscript特别定义的“literals”,就像true和false一样
1、左手食指指前方,x正向
2、大拇指指上方,z正向
3、中指指右方,y正向
若以我们人头摆正时来参考:
1、目视的是前方,x正向
2、头顶的是上方,z正向
3、右边是右方,y正向
特殊的地方在于:
通常在d3d这样的系统里,地平面上是x、z两个轴,且“向着屏幕里面”的那个轴是z轴正向,而在unreal3里地平面上是x,y轴,且y轴负向指向屏幕。
关于Vector:
1、这是3维向量,另外还有Vector2D和Vector4
2、dot、cross、*(星号)都是是操作符,分别表示点乘、叉乘、各分量乘
3、常用函数:Sqrt,VSize,VSizeSq,VSize2D,Normal,IsZero,ClampLength,VRand,MirrorVectorByNormal,ProjectOnTo
4、坐标系变换:CamRot是一个Rotator,表示一次空间变换,则
V>>CamRot,从局部空间转到全局空间;V<<CamRot,从全局空间转到局部空间
关于Rotator:
[code]struct Rotator
{
var() config int Pitch, Yaw, Roll;
};
1、3个分量的应用顺序其实是:Yaw,Pitch,Roll,并且Roll是相对于自身的,对一纯vector而言,roll并没有意义
2、因为类型为int(而非传统的float),所以范围和精度有限制,用65536来表示2pi,其它常用值参考:
/********************
*****Reference*******
*********************
* 65536 = 360 degrees
* 32768 = 180 degrees
* 16384 = 90 degrees
* 8192 = 45 degrees
* 182 = 1 degree
*********************/
3、可以和Vector互相转换,但从Vector转回来的Rotator,roll分量为0
local rotator myRot; local vector myVec; ... myVec = vector(myRot); ... ... myRot = rotator(myVec); ...
最后,在代码里定义一个Vector或Rotator时可以写成:
myVec=vect(0,0,0)
myRot=rot(0,100,100)
这是因为vect和rot是unrealscript特别定义的“literals”,就像true和false一样
相关文章推荐
- Scipy 基础 —— 稀疏矩阵
- hdoj 1823 Luck and Love 【二维线段树】
- tinyos-2.1.1目录结构解析
- poj1201 Intervals--单源最短路径&差分约束
- View_01_LayoutInflater的原理、用法
- 使用CSSgram来实现类似Instagram上的简单的滤镜效果
- 简单形象又有趣地说说强大的神经网络
- 看论文
- 时间,日期格式化以及 格式化时间戳
- ubuntu 14.04 截图工具
- 从键盘输入中文显示其国标码和Unicode码
- easyUI单元格合并自定义封装
- 新增控件汇总
- JSON.parse()和JSON.stringify()
- 对ByteArrayInputStream/ByteArrayOutputStream类的应用里的transform函数的复用
- 打印出字符串对应的Unicode编码和GB2312编码
- 移动端web app自适应布局探索与总结
- HttpApplication IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable ps url System.Web.dll
- tomcat jar包加载顺序
- linux下qt的安装