ogre框架

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值