• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Codejie's C++ Space

            Using C++

            .x練習(xí) - 建立Mesh

            ??? 終于寫好了供練習(xí)用的.x文件,只是靜態(tài)Mesh內(nèi)容,以后要在這個(gè)基礎(chǔ)上添加Animation內(nèi)容的。顯示如下:
            test.x_ok.jpg
            ??? 這里是.x文件內(nèi)容:
            xof?0303txt?0032

            template?Frame?{
            ?
            <3d82ab46-62da-11cf-ab39-0020af71e433>
            ?[]
            }

            template?Matrix4x4?{
            ?
            <f6f23f45-7686-11cf-8f52-0040333594a3>
            ?array?FLOAT?matrix[16];
            }

            template?FrameTransformMatrix?{
            ?
            <f6f23f41-7686-11cf-8f52-0040333594a3>
            ?Matrix4x4?frameMatrix;
            }

            template?Vector?{
            ?
            <3d82ab5e-62da-11cf-ab39-0020af71e433>
            ?FLOAT?x;
            ?FLOAT?z;
            ?FLOAT?y;
            }

            template?MeshFace?{
            ?
            <3d82ab5f-62da-11cf-ab39-0020af71e433>
            ?DWORD?nFaceVertexIndices;
            ?array?DWORD?faceVertexIndices[nFaceVertexIndices];
            }

            template?Mesh?{
            ?
            <3d82ab44-62da-11cf-ab39-0020af71e433>
            ?DWORD?nVertices;
            ?array?Vector?vertices[nVertices];
            ?DWORD?nFaces;
            ?array?MeshFace?faces[nFaces];
            ?[]
            }

            template?MeshNormals?{
            ?
            <f6f23f43-7686-11cf-8f52-0040333594a3>
            ?DWORD?nNormals;
            ?array?Vector?normals[nNormals];
            ?DWORD?nFaceNormals;
            ?array?MeshFace?faceNormals[nFaceNormals];
            }

            template?Coords2d?{
            ?
            <f6f23f44-7686-11cf-8f52-0040333594a3>
            ?FLOAT?u;
            ?FLOAT?v;
            }

            template?MeshTextureCoords?{
            ?
            <f6f23f40-7686-11cf-8f52-0040333594a3>
            ?DWORD?nTextureCoords;
            ?array?Coords2d?textureCoords[nTextureCoords];
            }

            template?ColorRGBA?{
            ?
            <35ff44e0-6c7c-11cf-8f52-0040333594a3>
            ?FLOAT?red;
            ?FLOAT?green;
            ?FLOAT?blue;
            ?FLOAT?alpha;
            }

            template?IndexedColor?{
            ?
            <1630b820-7842-11cf-8f52-0040333594a3>
            ?DWORD?index;
            ?ColorRGBA?indexColor;
            }

            template?MeshVertexColors?{
            ?
            <1630b821-7842-11cf-8f52-0040333594a3>
            ?DWORD?nVertexColors;
            ?array?IndexedColor?vertexColors[nVertexColors];
            }

            template?VertexElement?{
            ?
            <f752461c-1e23-48f6-b9f8-8350850f336f>
            ?DWORD?Type;
            ?DWORD?Method;
            ?DWORD?Usage;
            ?DWORD?UsageIndex;
            }

            template?DeclData?{
            ?
            <bf22e553-292c-4781-9fea-62bd554bdd93>
            ?DWORD?nElements;
            ?array?VertexElement?Elements[nElements];
            ?DWORD?nDWords;
            ?array?DWORD?data[nDWords];
            }
            Frame?Root?{
            ????FrameTransformMatrix?{
            ????1.000000,?0.000000,?0.000000,?0.000000,
            ????0.000000,?1.000000,?0.000000,?0.000000,
            ????0.000000,?0.000000,?1.000000,?0.000000,
            ????0.000000,?0.000000,?0.000000,?1.000000;;
            ????}

            ????Frame?SubFrame?{
            ????????FrameTransformMatrix?{
            ????????1.000000,?0.000000,?0.000000,?0.000000,
            ????????0.000000,?1.000000,?0.000000,?0.000000,
            ????????0.000000,?0.000000,?1.000000,?0.000000,
            ????????0.000000,?0.000000,?0.000000,?1.000000;;
            ????????}????
            ????
            ????????Mesh?MeshObj?{
            ????????????12;
            ????????????0.000000;?0.000000;?1.000000;,
            ????????????1.000000;?0.000000;?1.000000;,
            ????????????1.000000;?1.000000;?1.000000;,
            ????????????0.000000;?1.000000;?1.000000;,
            ????????????0.000000;?0.000000;?0.000000;,
            ????????????1.000000;?0.000000;?0.000000;,
            ????????????1.000000;?1.000000;?0.000000;,
            ????????????0.000000;?1.000000;?0.000000;,
            ????????????0.000000;?0.000000;?-1.000000;,
            ????????????1.000000;?0.000000;?-1.000000;,
            ????????????1.000000;?1.000000;?-1.000000;,
            ????????????0.000000;?1.000000;?-1.000000;;
            ????????????
            ????????????20;
            ????????????3;?0,?4,?1;,
            ????????????3;?4,?5,?1;,
            ????????????3;?1,?2,?0;,
            ????????????3;?2,?3,?0;,
            ????????????3;?6,?2,?5;,
            ????????????3;?2,?1,?5;,
            ????????????3;?3,?2,?7;,
            ????????????3;?2,?6,?7;,
            ????????????3;?7,?4,?3;,
            ????????????3;?4,?0,?3;,
            ????????????3;?4,?8,?5;,
            ????????????3;?5,?8,?9;,
            ????????????3;?5,?9,?6;,
            ????????????3;?9,?10,?6;,
            ????????????3;?6,?10,?11;,
            ????????????3;?7,?6,?11;,
            ????????????3;?7,?11,?8;,
            ????????????3;?4,?7,?8;,
            ????????????3;?8,?10,?9;,
            ????????????3;8,?11,?10;;
            ????????????
            ????????????MeshNormals?{
            ????????????????12;
            ????????????????-0.333333;?-0.333333;?0.333333;,
            ????????????????0.333333;?-0.333333;?0.333333;,
            ????????????????0.333333;?0.333333;?0.333333;,
            ????????????????-0.333333;?0.333333;?0.333333;,
            ????????????????-0.500000;?-0.500000;?0.000000;,
            ????????????????0.500000;?-0.500000;?0.000000;,
            ????????????????0.500000;?0.500000;?0.000000;,
            ????????????????-0.500000;?0.500000;?0.000000;,
            ????????????????-0.333333;?-0.333333;?-0.333333;,
            ????????????????0.333333;?-0.333333;?-0.333333;,
            ????????????????0.333333;?0.333333;?-0.333333;,
            ????????????????-0.333333;?0.333333;?-0.333333;,
            ????????????????
            ????????????????20;
            ????????????????3;?0,?4,?1;,
            ????????????????3;?4,?5,?1;,
            ????????????????3;?1,?2,?0;,
            ????????????????3;?2,?3,?0;,
            ????????????????3;?6,?2,?5;,
            ????????????????3;?2,?1,?5;,
            ????????????????3;?3,?2,?7;,
            ????????????????3;?2,?6,?7;,
            ????????????????3;?7,?4,?3;,
            ????????????????3;?4,?0,?3;,
            ????????????????3;?4,?8,?5;,
            ????????????????3;?5,?8,?9;,
            ????????????????3;?5,?9,?6;,
            ????????????????3;?9,?10,?6;,
            ????????????????3;?6,?10,?11;,
            ????????????????3;?7,?6,?11;,
            ????????????????3;?7,?11,?8;,
            ????????????????3;?4,?7,?8;,
            ????????????????3;?8,?10,?9;,
            ????????????????3;8,?11,?10;;
            ????????????}
            ????????}
            ????}
            ????
            }

            ???? 這里需要說明的是:如何保證一個(gè)Mesh(或者叫做MeshFace)的面是“正面”朝上的。這個(gè)面的朝向是由MeshNormals定義的,其模版定義如下:
            MeshNormals
            Defines?normals?for?a?mesh.?The?first?array?of?vectors?is?the?normal?vectors?themselves,?and?the?second?array?is?an?array?of?indexes?specifying?which?normals?should?be?applied?to?a?given?face.?The?value?of?the?nFaceNormals?member?should?be?equal?to?the?number?of?faces?in?a?mesh.

            template?MeshNormals
            {
            ????
            <?F6F23F43-7686-11cf-8F52-0040333594A3?>
            ????DWORD?nNormals;
            ????array?Vector?normals[nNormals];
            ????DWORD?nFaceNormals;
            ????array?MeshFace?faceNormals[nFaceNormals];
            }?

            Where:

            nNormals?-?Number?of?normals.?
            array?Vector?normals[nNormals]?-?Array?of?normals.?See?Vector.?
            nFaceNormals?-?Number?of?face?normals.?
            array?MeshFace?faceNormals[nFaceNormals]?-?Array?of?mesh?face?normals.?See?MeshFace.?

            ??? 由其定義可以看出,Vertex的法線向量和Face的法線向量共同決定Triangle的面朝向。如何確定兩個(gè)的法線向量呢?有個(gè)簡單步驟:首先確定Vertex的法線向量,方法是將使用到指定Vertex的多個(gè)面的“正(或朝向)”方向的法線向量相加,再除以面?zhèn)€數(shù),就得到了指定Vertex的法線向量;然后定義Mesh的三個(gè)Vertex順序,方法是伸出右手,大拇指指向Mesh“正”方向,彎曲其他四指,則三個(gè)Vetex的定義順序按照四指旋轉(zhuǎn)方向確定,簡單點(diǎn)就是繞大拇指,逆時(shí)針定義;最后將Mesh的Vertex索引定義,拷貝到MeshNormals模版中即可。下面說個(gè)實(shí)例,如下圖所示,我們來定義MeshA和MeshB。
            sample_normals.JPG


            ??? Mesh {
            ????? 8;
            ????? 0.000000;?0.000000;?1.000000;,//0
            ????? 1.000000;?0.000000;?1.000000;,//1
            ????? 1.000000;?1.000000;?1.000000;,//2
            ????? 0.000000;?1.000000;?1.000000;,//3

            ????? ...

            ????? 12;
            ?????? 3;0, 1, 2;,
            ?????? 3;0, 2, 3;,
            ?????? ...

            ????? }

            ????? 則Vertex0的法線向量為((0,0,1) + ( -1,0,0) +(0,-1, 0))/3 = (-0.333333,-0.333333,0.333333)。說明下,由于A,B在同一水平面,因此將AB算作了一個(gè)面,因此這認(rèn)為Vertex0被三個(gè)面使用,而不是標(biāo)準(zhǔn)的4個(gè)面。??????

            ??? 具體可以參考loveddy的“網(wǎng)格模型高級技術(shù)”,寫的很好。

            posted on 2009-04-16 00:43 codejie 閱讀(507) 評論(0)  編輯 收藏 引用 所屬分類: 隨筆而已MPQ - WOW

            公告

            Using C++

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            国内精品伊人久久久久AV影院| 色婷婷综合久久久久中文| 国产激情久久久久影院老熟女免费| 国产成人精品免费久久久久| 99久久精品国产一区二区| 久久久久久精品免费看SSS| 丁香五月网久久综合| 精品水蜜桃久久久久久久| 日日噜噜夜夜狠狠久久丁香五月| 久久香蕉超碰97国产精品| 久久综合久久性久99毛片| 欧美一区二区三区久久综| 青青热久久国产久精品 | 国产精品久久网| 色8激情欧美成人久久综合电| 香蕉99久久国产综合精品宅男自| 成人资源影音先锋久久资源网| 亚洲伊人久久成综合人影院 | 久久99国产精品久久久| 久久SE精品一区二区| 久久夜色撩人精品国产| 亚洲国产天堂久久综合网站 | 久久国产福利免费| 精品综合久久久久久97超人 | 丰满少妇人妻久久久久久| 久久亚洲精品无码播放| 国产L精品国产亚洲区久久| 国产国产成人精品久久| 欧美噜噜久久久XXX| 亚洲第一极品精品无码久久| 国产精品久久久久a影院| 久久精品这里热有精品| 亚洲AV日韩AV天堂久久| 精品久久久久久久国产潘金莲| 久久综合九色欧美综合狠狠| 亚洲国产综合久久天堂 | 国产一区二区三区久久精品| 999久久久免费精品国产| 狠狠色丁香婷综合久久| 国产精品久久影院| 国产99久久久久久免费看|