實體(Entity)是情境中可移動對象的執行個體,它可以是一輛車、一個人、一條狗等等,實體(Entity)在世界(World)情境中不一定非要一個固定的座標位置。
實體(Entities)是以網格(Meshes)作為自身基礎的,網格(Mesh)對象包括了一整套用來描述自身模型的資料,在廣域範圍(World Scale)內,網格(Mesh)對象相對比較小。多個實體(Entities)可以共用一種網格,比如,你常常會在一個情境下建立同一種對象的多個拷貝。
你可以通過調用SceneManager::createEntity方法建立一個實體(Entity),然後,給該實體(Entity)命名,並且將與其相關的網格(Mesh)對象關聯起來(比如:“muscleboundhero.mesh”)。情境管理器(SceneManager)會通過“MeshManager”這種資源管理員(Resource Manager)為你載入該網格(Mesh),每類網格(Mesh)只會被載入一次。
只有當你將實體(Entities)與一個情境結點(SceneNode)關聯起來後,該實體(Entities)才真正成為了情境中的一部分。通過關聯不同的實體(Entities)到不同的情境結點(SceneNodes),你可以在實體(Entities)之間建立出複雜的位置及方向的繼承關係。你可以通過修改情境結點(SceneNodes)的位置來改變與之關聯的實體(Entity)的位置。
當網格(Mesh)被載入後,與該網格(Mesh)相關的材質(Materials)資料也會隨之載入。一類網格(Mesh)可以包含多種材質(Material)資料,因為一個網格的不同部分可能採用了不同種的材質(Materials)。任何在網格(Mesh)基礎上建立的實體,會自動採用該網格(Mesh)上所採用的預設的材質(Materials)。當然,你也可以為這些相同的實體分配不同的紋理(Textures)。
想要理解如何分配不同的紋理(Textures),你必須首先理解所有的網格(Mesh)對象實際上是由子網格對象(SubMesh)構成的,每個子網格對象(SubMesh)代表了網格(Mesh)對象的一部分,該部分只能使用一種材質(Meterial)。如果一個網格(Mesh)只採用了一種材質(Material),那麼,它可能只包含了一個子網格(SubMesh)。
當基於網格(Mesh)建立出一個實體(Entity)時,該實體(Entity)可能由多個子實體(SubEntity)構建而成,子實體(SubEntity)與網格(Mesh)中的子網格(SubMesh)一一對應。你可以通過調用Entity::getSubEntity方法獲得子實體(SubEntity)。一旦你得到子實體(SubEntity)的指標,你可以通過調用setMaterialName方法改變其材質(Material)。通過這種方法,你可以改變你所建立的實體(Entity)的預設材質(Materials),從而使你建立出來的實體(Entity)與眾不同。
原文:http://www.cnblogs.com/lizhengjin/archive/2010/11/01/1866023.html