美文网首页
理解坐标系

理解坐标系

作者: v_d0f2 | 来源:发表于2018-10-06 15:03 被阅读0次

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

    构建三维坐标系后,空间某点可用(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.左右手坐标系有什么差别、对数学库或其他有什么影响?

    相关文章

      网友评论

          本文标题:理解坐标系

          本文链接:https://www.haomeiwen.com/subject/bzthaftx.html