• <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)容,以后要在這個基礎(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;;
            ????????????}
            ????????}
            ????}
            ????
            }

            ???? 這里需要說明的是:如何保證一個Mesh(或者叫做MeshFace)的面是“正面”朝上的。這個面的朝向是由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的面朝向。如何確定兩個的法線向量呢?有個簡單步驟:首先確定Vertex的法線向量,方法是將使用到指定Vertex的多個面的“正(或朝向)”方向的法線向量相加,再除以面?zhèn)€數(shù),就得到了指定Vertex的法線向量;然后定義Mesh的三個Vertex順序,方法是伸出右手,大拇指指向Mesh“正”方向,彎曲其他四指,則三個Vetex的定義順序按照四指旋轉(zhuǎn)方向確定,簡單點(diǎn)就是繞大拇指,逆時針定義;最后將Mesh的Vertex索引定義,拷貝到MeshNormals模版中即可。下面說個實(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算作了一個面,因此這認(rèn)為Vertex0被三個面使用,而不是標(biāo)準(zhǔn)的4個面。??????

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

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

            公告

            Using C++

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品内射久久久久欢欢| 亚洲国产欧美国产综合久久 | 国产午夜久久影院| 久久精品嫩草影院| 亚洲精品午夜国产va久久| 亚洲狠狠婷婷综合久久蜜芽| 曰曰摸天天摸人人看久久久| 国产精品内射久久久久欢欢| 亚洲精品国精品久久99热一| 久久精品国产一区| 久久99久久99精品免视看动漫| 欧美777精品久久久久网| 偷偷做久久久久网站| 久久99精品久久久久久齐齐 | 性做久久久久久久久久久| 久久精品午夜一区二区福利 | 少妇熟女久久综合网色欲| 成人免费网站久久久| 日韩人妻无码一区二区三区久久99| 久久国产精品国产自线拍免费| 国产毛片欧美毛片久久久| 久久久久亚洲AV无码专区网站| 久久91精品国产91久久麻豆| 久久婷婷五月综合色奶水99啪| 久久露脸国产精品| www亚洲欲色成人久久精品| 国产精品久久亚洲不卡动漫| 久久精品国产久精国产果冻传媒| 久久毛片免费看一区二区三区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久精品a亚洲国产v高清不卡| 亚洲欧洲久久av| 久久久久久久亚洲精品| 久久精品国产亚洲5555| 国产午夜精品理论片久久| 麻豆精品久久精品色综合| 人人狠狠综合久久亚洲88| 精品久久香蕉国产线看观看亚洲| 97r久久精品国产99国产精| 99久久免费国产精品热| 久久免费小视频|