zoukankan      html  css  js  c++  java
  • OGRE里mesh和submesh的关系

    实体(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)与众不同。

  • 相关阅读:
    【读书笔记】iOS-验证应用内支付的凭证注意事项
    【读书笔记】iOS-防止通讯协议被轻易破解的方法
    【读书笔记】iOS-安全地传输用户密码的方法
    【读书笔记】iOS-使用应用内支付注意事项
    【读书笔记】iOS-UIFont-动态下载系统提供的字体-官方代码
    【读书笔记】iOS-UIFont-动态下载系统提供的多种中文字体网址
    【读书笔记】iOS-UIFont-如何知道字体的PostScript名称
    【读书笔记】iOS-UIWindow-密码框
    【读书笔记】iOS-UIWindow-WindowLevel
    【读书笔记】iOS-GCD-使用方法
  • 原文地址:https://www.cnblogs.com/lizhengjin/p/1866023.html
Copyright © 2011-2022 走看看