理解坐标系

坐标系作用----描述空间中确切的一个点。

构建三维坐标系后,空间某点可用(x,y,z)表示


流水线中坐标变换

WebGL里面的6大坐标系(同OpenGL):

1. Object or model coordinates(物体或模型坐标系)

2. World coordinates(世界坐标系)

3. Eye (or Camera) coordinates(眼(或相机)坐标系)

4. Clip coordinates(裁剪坐标系)

5. Normalized device coordinates(标准设备坐标系)

6. Window (or screen) coordinates(屏幕坐标系)

我们要在屏幕上看到一个物体一般要经过一下几个步骤:物体的坐标从object coordainates到world coordinates再到camera coordinate的变换,在OPENGL中统一称为model-view转换,眼坐标通过乘以GL_PROJECTION变成了裁剪坐标,再除以w,即透视除法,变到NDC,NDC坐标通过平移和缩放来适应渲染的屏幕,屏幕坐标最终传递给绘制流水线中的光栅化处理部分来变成片元。

模型文件中、mesh(unity3d)中顶点数据(vertexData)-------------------物体坐标系

unity3d中 位于世界中某transform 的localposition              ------------------世界坐标系

演算变换过程:

vertexpos(物体vertex某个顶点)                                         ----------------物体坐标系

worldpos=vertexpos*modelMatrix                                        ----------------世界坐标系

eyepos=vertexpos*modelMatrix*viewMatrix                        ----------------相机坐标系

clippos=vertexpos*modelMatrix*viewMatrix*projectmatrix   ------------------裁剪坐标系


坐标系常识

1. unity世界坐标系为左手坐标系。

2. 说opengl是右手坐标系是因为很多opengl程序使用右手坐标系,opengl/webgl在归一化空间是左手坐标系(见webgl 编程指南439页)

3. unity3d 屏幕坐标系 以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height)。

4. unity3d 视口坐标系 以屏幕的左下角为(0,0)点,右上角为(1,1)。

5. uv坐标系,webgl 左上为屏幕原点,unity左下为屏幕原点

unity3d uv坐标系

坐标系计算相关


1.  unity3d中transform localrotation和localscale都是相对物体本身、localpositon是物体相对于父物体的概念。于是 localpositon*parent.worldmatrix=worldpostion;当setworldpsotion 数学演算的时候,使用的是parent的而不是自己的worldmatrix;

2.  分解worldmatrix:

     pos1 =p.localmat * pos ;                                            --------------------物体p上某点pos在父物体p1坐标系中的坐标系(p.parent=p1)

     pos2 = p1.localmat * p.localmat * pos                           --------------------物体p上某点pos在父物体p2坐标系中的坐标系(p1.parent=p2)

     pos3 = p2.localmat * p1.localmat * p.localmat * pos       --------------------物体p上某点pos在父物体p3坐标系中的坐标系(p2.parent=p3)

.    ................................  

    物体p在世界坐标系中的位置:

    p.worldpos=pn.localmat*............* p3.localmat * p2.localmat * p1.localmat * p.localpos;

3.  物体p的worldrot计算过程:

     p.worldrot =pn.localrot*.............* p3.localrot * p2.localrot * p1.localrot * p.localrot;



坐标系思考

1.矩阵是怎么能够达到变换顶点的?

2.w分量存在的意义?

3.左右手坐标系有什么差别、对数学库或其他有什么影响?

你可能感兴趣的:(理解坐标系)