u3d Mesh網格基礎知識

2021-06-27 02:24:55 字數 3461 閱讀 8241

下面是摘自網上的一篇教程,寫得不錯

通過object物件名 face 得到網格渲染器物件   

meshfilter meshfilter = (meshfilter)gameobject.find(

"face

").getcomponent(

typeof(meshfilter));   //

通過渲染器物件得到網格物件   

mesh mesh = meshfilter.mesh;   //

api中寫的不是提清楚,我詳細的在說一遍   

//設定頂點,這個屬性非常重要   

//三個點確定乙個面,所以vector3陣列的數量一定是3個倍數   

//遵循順時針三點確定一面   

//這裡的數量為6 也就是我建立了2個三角面   

//依次填寫3d座標點   

mesh.vertices = 

new vector3 ;   //

mesh.vertices = new vector3 ;  

//設定貼圖點,因為面確定出來以後就是就是2d    

//所以貼紙貼圖數量為vector2    

//第乙個三角形設定5個貼圖   

//第二個三角形設定乙個貼圖   

//數值數量依然要和頂點的數量一樣   

mesh.uv = 

new vector2 ;   //

mesh.uv = new vector2 ;

//設定三角形索引,這個索引是根據上面頂點座標陣列的索引   

//對應著定點陣列vector3中的每一項   

//最後將兩個三角形繪製在平面中   

//數值數量依然要和頂點的數量一樣   

mesh.********s= 

newint ;  

我測試時匯入了乙個立方體,測試時發現匯入的立方體頂點是由4*6組成的,也就是說4個點組成乙個面,立方體共6個面

頂點是由4*6組成的,但u3d還是會以三角網去解析,關鍵就是********s,它負責儲存每個三角網的頂點,也就是立方體的乙個面由兩個三角形組成

meshfilter meshfilter = (meshfilter)gameobject.find(

"box

").getcomponent(

typeof(meshfilter));

mesh mesh = meshfilter.mesh;

string strvertices = 

"";foreach(vector3 v3 

in mesh.vertices)

else }

debug.log(mesh.vertices.length + 

"" + strvertices);

string struv = 

"";foreach(vector2 v2 

in mesh.uv)

else }

debug.log(mesh.uv.length + 

""+ struv);

string str********s = 

"";foreach(

int t 

in mesh.********s)

else }

debug.log(mesh.********s.length + 

"" + str********s);

輸出的資訊如下:

(0.6, -0.6, 0.0),(-0.6, -0.6, 0.0),(0.6, 0.6, 0.0),(-0.6, 0.6, 0.0),

(0.6, -0.6, 0.7),(-0.6, -0.6, 0.7),(0.6, 0.6, 0.7),(-0.6, 0.6, 0.7),

(0.6, -0.6, 0.0),(-0.6, -0.6, 0.7),(-0.6, -0.6, 0.0),(0.6, -0.6, 0.7),

(-0.6, -0.6, 0.0),(-0.6, 0.6, 0.7),(-0.6, 0.6, 0.0),(-0.6, -0.6, 0.7),

(-0.6, 0.6, 0.0),(0.6, 0.6, 0.7),(0.6, 0.6, 0.0),(-0.6, 0.6, 0.7),

(0.6, 0.6, 0.0),(0.6, -0.6, 0.7),(0.6, -0.6, 0.0),(0.6, 0.6, 0.7)

(0.6, 0.1),(0.4, 0.1),(0.6, 0.4),(0.4, 0.4),

(0.4, 0.4),(0.6, 0.4),(0.4, 0.6),(0.6, 0.6),

(0.6, 0.4),(0.9, 0.6),(0.9, 0.4),(0.6, 0.6),

(0.3, 0.7),(0.6, 0.9),(0.6, 0.7),(0.3, 0.9),

(0.6, 0.7),(0.9, 0.9),(0.9, 0.7),(0.6, 0.9),

(0.1, 0.4),(0.3, 0.6),(0.3, 0.4),(0.1, 0.6)

2,0,3,

3,0,1,

5,4,7,

7,4,6,

10,8,9,

9,8,11,

14,12,13,

13,12,15,

18,16,17,

17,16,19,

22,20,21,

21,20,23

可以看出第乙個平面是由0,1,2,3這四個點組成,在********s中指定2,0,3這三個點繪製乙個三角網,3,0,1這三個點繪製乙個三角網。

另外一篇:繪製立方體

我的菜鳥問題:

1.網格怎麼設定大小?   直接頂點設定就好鳥,單位是公尺。把子彈邏輯單位轉換成u3d的世界單位即可。

2.要用網格畫個矩形,2個3角行,但是u3d是x y z3個點的,我矩形是平面的該怎麼畫? x z 就是平面的 x y, u3d的y就是突出來的地表,把y設定成地表高度就可以貼著地表了。

xbulletinfo info = logicbullet.info;

xpoint centerpoint = logicbullet.logicpoint + logicbullet.centeroffset;

float y = (float)info.width / 2 * xgamedefine.game_mpu;

float x = (float)info.height / 2 * xgamedefine.game_mpu;

m.clear();

m.vertices = new vector3 ;//網格的頂點陣列:三角形有三角形的頂點,矩形有矩形的4個頂點    扇形和矩形的頂點有公式可以找的

m.uv = new vector2        //網格的基礎紋理座標

;m.********s = new int ;// 2個三角形,6個點 //包含所有三角形的陣列

AS3 基礎知識

1 addchild相當於2.0裡面把庫中的元件載入到場景中,用了addchild後我們畫的那個圓就顯示在場景中了,與之對應的是removechild,是從場景中刪除 2 庫中的元件與類的鏈結?我猜,元件就好比是類的例項,給元件取名,是為了方便我們程式來引用。3 文件類?文件類就相當於第一幀的位置,...

CSS基礎知識 3

標題字 字型 大小 顏色 正文本 字型 大小 顏色 重點強調 顏色 字型樣式 控制字型 指定字型 font family value1,value2 字型可寫多個,中間用逗號隔開,字型間的優先順序按照先讀到哪個就用哪個,第乙個字型沒有會查詢下乙個字型,如果使用者電腦裡所有字型都沒有,那麼就按照預設的...

java基礎知識(3)

構造方法 構造方法是一種特殊的方法,其主要功能是用來建立物件時初始化物件,即為物件成員變數賦初始值。構造方法與類名相同,可過載多個不同的構造方法。package com.zjm.www.day10 動物練習 author zjm public class ex animal class animal...