MeshContent, GeometryContent and VertexContent

來源:互聯網
上載者:User

   MeshContent, GeometryContent and VertexContent

僅供個人學習使用,請勿轉載,勿用於任何商業用途。 

    相信所有第一次寫custom content pipeline的人都會被這三個類弄暈,我也一樣,這裡做一個簡單的小結。

    MeshContent(MC)可以包含一系列子MeshContent和GeometryContent(GC)。MC也儲存了一系列頂點位置(MC.Positions),注意是*頂點位置*,不是*頂點*。這一系列頂點位置被它所包含的GC所共用。GC代表了一個由若干頂點組成的最小渲染單元,類似一個ModelMeshPart。GC和VertexContent(VC)是一一對應的關係,每個GC對象都有一個VC。VC的作用是把一些本屬於GC的資料單獨打包為一個對象,讓GC看起來更簡潔,邏輯更清楚。MC有如下結構:

MC
|
|------------GC1-----VC1
|    |
|    |---GC2 -----VC2
|    |
|    |---GC3---- VC3
|
|
|------------SubMC1………
|    |
|    |---SubMC2---……..
|    |
|    |---SubMC3----………
|
|----Positions
|

 

    GC通過VC對象中的PositionIndices知道自己引用了MC.Positions中的哪些位置,也可以直接存取VC的Positions屬性活得這些所引用的位置。特別要注意的是VC.Positions中的元素可能會大於MC.Positions的元素個數,也就是說VC.Positions中可能會包含對MC.Positions中元素的重複引用。Why?? 如前所述,這裡的position只是位置,可能有2個頂點都處在同一位置,但是他們有不同的法線和紋理座標,所以他們是不同的頂點。VC.Positions中的元素個數,才是當前GC所包含的實際頂點個數。

    那麼頂點的紋理和法線儲存在哪裡呢?這些資料以VertexChannel的形式,儲存在VC中。每種不同類型的資料對應一個channel,比如法線在channel1,第一組紋理座標在channel2,第二組紋理座標在channel3,等等。每個channel中的元素個數都與VC.Positions中的相同。

    頂點或者說三角形索引是如何儲存的呢?索引儲存在GC. Indices,注意,這裡的索引對應的是VC.Positions中的元素,而不是MC.Position,因為只有VC中的位置才是與最終頂點一一對應的。

    最後看一個例子,假設匯入一個人物模型,包含6個部分,軀幹,兩條手臂,兩條腿和頭,那麼根據在建模軟體裡的組織形式不同,content pipeline匯入之後的資料也可能有2種:

RootMC
|
|-----Positions
|
|-----GC_body---VC_body
|-----GC_head---VC_head
|-----GC_LeftHand---VC_LeftHand
|-----GC_RightHand---VC_RightHand
|…………
|………..

 或者

RootMC
|
|-----Positions
|
|-----GC_body---VC_body
|
|-------MC_head--------Positions
|             |
|             |---GC_head---VC_body
|
|-----MC_LeftHand-----------Positions
|                 |
|                 |---GC_LeftHand—VC_LeftHand
|…………………..
|……………………

 

    在Creator.com的眾多sample中,dude.fbx是以第一種方式匯出的,而tank.fbx則是第二種。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.