青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

網格模型高級技術(2)

我們在cube_1.x的基礎上添加材質、法線和紋理,構成cube_2.x:

xof 0302txt 0064
Header {
1;
0;
1;
}
Material RedMaterial {                    //第一塊材料
1.000000;0.000000;0.000000;1.000000;; // R = 1.0, G = 0.0, B = 0.0
0.000000;
0.000000;0.000000;0.000000;;
0.000000;0.000000;0.000000;;
	TextureFilename 
{
"Tex1.jpg"; //紋理文件名
}
}
Material GreenMaterial {                  //第二塊材料
0.000000;1.000000;0.000000;1.000000;; // R = 0.0, G = 1.0, B = 0.0
0.000000;
0.000000;0.000000;0.000000;;
0.000000;0.000000;0.000000;;
	TextureFilename 
{
"Tex2.jpg"; //紋理文件名
}
}
Mesh Cube {   //網格
8; //8個頂點,以下為8個頂點的坐標
1.000000;1.000000;-1.000000;,
-1.000000;1.000000;-1.000000;,
-1.000000;1.000000;1.000000;,
1.000000;1.000000;1.000000;,
1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000;1.000000;,
1.000000;-1.000000;1.000000;;
	12;            // 12個面, 以下為每個面三個頂點的索引
3;0,1,2;,
3;0,2,3;,
3;0,4,5;,
3;0,5,1;,
3;1,5,6;,
3;1,6,2;,
3;2,6,7;,
3;2,7,3;,
3;3,7,4;,
3;3,4,0;,
3;4,7,6;,
3;4,6,5;;
	//網格材質列表
MeshMaterialList {
2; //使用材質的數量:2塊材質
12; //為12個面指定材質
0, //為前6個面使用第一塊材質
0,
0,
0,
0,
0,
1, //為后面的6個面使用第二塊材質
1,
1,
1,
1,
1;;
		{RedMaterial}       //第一塊材質,引用前面定義的RedMaterial材質
{GreenMaterial} //第二塊材質,引用前面定義的GreenMaterial材質
}
	//頂點法線
MeshNormals {
8; //定義8個法線向量
0.333333;0.666667;-0.666667;,
-0.816497;0.408248;-0.408248;,
-0.333333;0.666667;0.666667;,
0.816497;0.408248;0.408248;,
0.666667;-0.666667;-0.333333;,
-0.408248;-0.408248;-0.816497;,
-0.666667;-0.666667;0.333333;,
0.408248;-0.408248;0.816497;;
		12;                   //為12個面的每個頂點指定法線
3;0,1,2;,
3;0,2,3;,
3;0,4,5;,
3;0,5,1;,
3;1,5,6;,
3;1,6,2;,
3;2,6,7;,
3;2,7,3;,
3;3,7,4;,
3;3,4,0;,
3;4,7,6;,
3;4,6,5;;
}
	//紋理坐標
MeshTextureCoords {
8; //定義8對紋理坐標
0.000000;1.000000;
1.000000;1.000000;
0.000000;1.000000;
1.000000;1.000000;
0.000000;0.000000;
1.000000;0.000000;
0.000000;0.000000;
1.000000;0.000000;;
}
}
 

效果圖如下:


 

可以看到在Mesh模板中嵌套著一個子模板MeshMaterialList,它是Mesh模板的一部分,用來將每個面與材質相關聯,其定義如下:

Used in a mesh object to specify which material applies to which faces. The nMaterials member specifies how many materials are present, and materials specify which material to apply.

template MeshMaterialList
{
< F6F23F42-7686-11CF-8F52-0040333594A3 >
DWORD nMaterials;
DWORD nFaceIndexes;
array DWORD faceIndexes[nFaceIndexes];
[Material <3D82AB4D-62DA-11CF-AB39-0020AF71E433>]
}

Where:

  • nMaterials - A DWORD. The number of materials.
  • nFaceIndexes - A DWORD. The number of indices.
  • faceIndexes[nFaceIndexes] - An arrray of DWORDs containing the face indices.

MeshMaterialList是一個受限的模板,它只能包含Material模板,其定義如下:

Defines a basic material color that can be applied to either a complete mesh or a mesh's individual faces. The power is the specular exponent of the material.

Note     The ambient color requires an alpha component.

TextureFilename is an optional data object. If this object is not present, the face is untextured.

template Material
{
< 3D82AB4D-62DA-11CF-AB39-0020AF71E433 >
ColorRGBA faceColor;
FLOAT power;
ColorRGB specularColor;
ColorRGB emissiveColor;
[...]
}

Where:

  • faceColor - Face color. A ColorRGBA template.
  • power - Material specular color exponent.
  • specularColor - Material specular color. A ColorRGB template.
  • emissiveColor - Material emissive color. A ColorRGB template.

 

Defines a color object with an alpha component. This is used for the face color in the material template definition.

template ColorRGBA
{
< 35FF44E0-6C7C-11cf-8F52-0040333594A3 >
float red;
float green;
float blue;
float alpha;
}

Defines the basic RGB color object.

template ColorRGB
{
< D3E16E81-7835-11cf-8F52-0040333594A3 >
float red;
float green;
float blue;
}

在cube_2.x中,首先定義了兩個材質RedMaterial和GreenMaterial:

Material RedMaterial {                    //第一塊材料
1.000000;0.000000;0.000000;1.000000;; // R = 1.0, G = 0.0, B = 0.0
0.000000;
0.000000;0.000000;0.000000;;
0.000000;0.000000;0.000000;;
	TextureFilename 
{
"Tex1.jpg"; //紋理文件名
}
}
Material GreenMaterial {                  //第二塊材料
0.000000;1.000000;0.000000;1.000000;; // R = 0.0, G = 1.0, B = 0.0
0.000000;
0.000000;0.000000;0.000000;;
0.000000;0.000000;0.000000;;
	TextureFilename 
{
"Tex2.jpg"; //紋理文件名
}
}

在模板MeshMaterialList中則給出了各個面與材質的關聯信息:

//網格材質列表
MeshMaterialList {
2; //使用材質的數量:2塊材質
12; //為12個面指定材質
0, //為前6個面使用第一塊材質
0,
0,
0,
0,
0,
1, //為后面的6個面使用第二塊材質
1,
1,
1,
1,
1;;
	{RedMaterial}       //第一塊材質,引用前面定義的RedMaterial材質
{GreenMaterial} //第二塊材質,引用前面定義的GreenMaterial材質
}

其中,{RedMaterial}和{GreenMaterial}是對上面定義的材質模板對象的引用。

在光照模型運算時需要用到法向量,法向量分為面法向量和頂點法向量。在基于逐頂點計算的光照模型中,需要使用頂點法向量。通常頂點法向量的計算過程是:先將共享該頂點的幾個面的面法向量相加并除以共享該頂點的面的個數,接著歸一化這個結果。模板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.
  • nFaceNormals - Number of face normals.
  • array MeshFace faceNormals[nFaceNormals] - Array of mesh face normals.

在文件cube_2.x中,法向量的定義以及為面指定法向量的內容如下:

//頂點法線
MeshNormals {
8; //定義8個法線向量
0.333333;0.666667;-0.666667;,
-0.816497;0.408248;-0.408248;,
-0.333333;0.666667;0.666667;,
0.816497;0.408248;0.408248;,
0.666667;-0.666667;-0.333333;,
-0.408248;-0.408248;-0.816497;,
-0.666667;-0.666667;0.333333;,
0.408248;-0.408248;0.816497;;
	12;                   //為12個面的每個頂點指定法線
3;0,1,2;,
3;0,2,3;,
3;0,4,5;,
3;0,5,1;,
3;1,5,6;,
3;1,6,2;,
3;2,6,7;,
3;2,7,3;,
3;3,7,4;,
3;3,4,0;,
3;4,7,6;,
3;4,6,5;;
}

模板TextureFilename用于引用紋理,它通常作為Material模板對象的子對象出現,其定義如下:

Enables you to specify the file name of a texture to apply to a mesh or a face. This template should appear within a material object.

template TextureFilename 
{
< A42790E1-7810-11cf-8F52-0040333594A3 >
string filename;
}

在使用TextureFilename模板時,只需要使用字符串filename指定一個紋理文件名即可,但要將這幅紋理映射到網格模型中,還需要指定紋理坐標:

Defines a mesh's texture coordinates.

template MeshTextureCoords
{
< F6F23F40-7686-11cf-8F52-0040333594A3 >
DWORD nTextureCoords;
array Coords2d textureCoords[nTextureCoords] ;
}

Where:

  • nTextureCoords - Number of texture coordinates.
  • array Coords2d textureCoords[nTextureCoords] - Array of 2D texture coordinates.

Defines a two dimensional vector used to define a mesh's (u, v) texture coordinates.

template Coords2d
{
< F6F23F44-7686-11cf-8F52-0040333594A3 >
float u;
float v;
}
  • u - u coordinate value.
  • v - v coordinate value.

在cube_2.x中,定義紋理坐標的代碼如下:

//紋理坐標
MeshTextureCoords {
8; //定義8對紋理坐標
0.000000;1.000000;
1.000000;1.000000;
0.000000;1.000000;
1.000000;1.000000;
0.000000;0.000000;
1.000000;0.000000;
0.000000;0.000000;
1.000000;0.000000;;
}

posted on 2008-05-27 14:49 lovedday 閱讀(1773) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久综合一区| 欧美裸体一区二区三区| 国产色婷婷国产综合在线理论片a| 久久野战av| 国产欧美亚洲日本| 久久亚洲电影| 欧美超级免费视 在线| 一本色道久久88综合日韩精品| 亚洲深夜福利视频| 亚洲综合色婷婷| 精品99一区二区三区| 亚洲国产高清视频| 欧美三区在线视频| 久久久久久一区二区三区| 久久蜜臀精品av| 亚洲精选久久| 亚洲专区一区| 亚洲国内在线| 亚洲欧美日韩精品久久亚洲区 | 香蕉视频成人在线观看| 国产综合视频在线观看| 亚洲国产99精品国自产| 欧美日韩成人在线播放| 欧美亚洲一区二区在线| 乱中年女人伦av一区二区| 一区二区av| 久久女同互慰一区二区三区| 99综合在线| 久久久精品一区二区三区| 一本色道久久综合亚洲精品小说| 欧美va天堂在线| 欧美日韩在线综合| 免费成人高清视频| 国产精品久久一级| 亚洲国产精品一区二区第四页av| 欧美在线视频免费播放| 日韩小视频在线观看| 久久国产66| 亚洲欧美日韩一区二区在线 | 亚洲精品乱码视频| 国精品一区二区| 一区二区三区四区五区精品视频 | 一本色道久久综合亚洲91| 国内精品免费在线观看| 一本久道久久综合狠狠爱| 亚洲高清在线观看| 亚洲欧美日本另类| 亚洲午夜性刺激影院| 免费观看成人www动漫视频| 久久久久久久国产| 国产日产亚洲精品| 亚洲深夜影院| 亚洲一区二区三区免费观看| 嫩草国产精品入口| 欧美电影在线免费观看网站| 黄色成人精品网站| 午夜精品在线观看| 久久av资源网站| 国产精自产拍久久久久久| 在线视频精品一| 亚洲一区久久久| 国产精品国产三级国产专播精品人 | 欧美日韩亚洲一区| 亚洲国产影院| 亚洲激情网站免费观看| 美女999久久久精品视频| 玖玖玖国产精品| 国产一级揄自揄精品视频| 亚洲欧美怡红院| 久久成人精品一区二区三区| 国产欧美日韩免费| 欧美影视一区| 欧美电影在线观看完整版| 亚洲国产视频一区| 欧美久久精品午夜青青大伊人| 亚洲一区欧美一区| 国产精品二区影院| 亚洲影音一区| 久久夜色精品国产| 亚洲国产精品黑人久久久| 欧美电影打屁股sp| 99国产精品视频免费观看一公开 | 国产精品激情| 亚洲网在线观看| 久久大逼视频| 亚洲电影毛片| 欧美国产亚洲视频| 亚洲一区二区三区久久| 久久精品视频在线免费观看| 亚洲国产成人不卡| 欧美三级黄美女| 欧美怡红院视频一区二区三区| 一区二区三区欧美在线观看| 欧美日韩四区| 欧美一二三区在线观看| 欧美承认网站| 午夜精品久久久久久久99水蜜桃 | 狠狠v欧美v日韩v亚洲ⅴ| 久久亚洲免费| 一区二区三区**美女毛片| 久久国产一二区| 91久久精品国产91久久| 国产精品进线69影院| 久久久久久穴| 亚洲午夜免费福利视频| 久久久水蜜桃av免费网站| 夜夜嗨av色一区二区不卡| 国产日韩欧美三级| 欧美日韩国产在线观看| 久久riav二区三区| 夜夜爽夜夜爽精品视频| 猫咪成人在线观看| 亚洲欧美在线观看| 亚洲精品视频啊美女在线直播| 美女国产精品| 午夜在线观看免费一区| 亚洲精品欧美| 美女网站在线免费欧美精品| 午夜视频一区| 夜夜嗨av色一区二区不卡| 国内偷自视频区视频综合| 欧美日韩国产一区二区三区| 久久久久久成人| 性色一区二区三区| 国产精品99久久久久久久女警| 亚洲婷婷国产精品电影人久久| 欧美激情第二页| 久久乐国产精品| 欧美中文字幕| 欧美怡红院视频一区二区三区| 欧美一区二区观看视频| 这里只有精品在线播放| 亚洲欧洲日韩女同| 亚洲国产成人久久综合| 国产真实久久| 国产色产综合产在线视频| 欧美特黄一级| 国产精品久久久久久久久果冻传媒| 亚洲视屏在线播放| 亚洲精品三级| 亚洲人永久免费| 亚洲国产高清aⅴ视频| 欧美韩日一区二区三区| 欧美成人精品在线播放| 欧美大片在线看| 亚洲国产福利在线| 亚洲人成在线观看| 亚洲美女在线观看| 一本色道久久99精品综合| 一区二区精品在线| 亚洲一级二级| 欧美一级淫片aaaaaaa视频| 欧美在线地址| 久久久久久久网| 免费欧美在线| 欧美日韩小视频| 国产精品一区二区在线观看| 国产偷久久久精品专区| 激情久久久久久久| 亚洲国产欧美另类丝袜| av成人老司机| 久久av一区二区三区漫画| 久久精品国产一区二区三| 久久夜色撩人精品| 亚洲国产日韩在线一区模特| 亚洲精品中文字幕有码专区| 一区二区三区av| 久久精彩视频| 欧美人交a欧美精品| 国产精品视频第一区| 一区在线播放视频| 夜夜夜精品看看| 久久国产免费看| 亚洲国产一二三| 亚洲亚洲精品三区日韩精品在线视频 | 一本大道久久a久久精品综合| 国产视频一区免费看| 黄色日韩网站| 亚洲天堂网在线观看| 久久久久久网站| 亚洲精品欧美在线| 欧美一区二区精品| 欧美精彩视频一区二区三区| 国产欧美日韩伦理| 亚洲另类一区二区| 久久激情中文| 亚洲毛片在线| 久久久久久久久久码影片| 欧美日韩在线看| 在线观看欧美成人| 亚洲欧美在线看| 亚洲精品乱码久久久久| 久久久久久亚洲综合影院红桃| 久久久999精品免费| 欧美日韩国产成人在线91| 激情综合色丁香一区二区| 亚洲综合国产精品| 亚洲激情在线观看视频免费| 欧美在线网址| 国产九九精品|