场景的管理 :MovableObject

MovableObject :是可移动的对象,对象是挂接到节点上的,它才是场景中我们真实看的见的东西。

 

 

父类:

1.AnimableObject :

 

virtual AnimableValuePtr createAnimableValue(const String& valueName)
		{
			OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, 
				"No animable value named '" + valueName + "' present.", 
				"AnimableObject::createAnimableValue");
		}

 

 这个类比较重要的一个比较重要的方法就是这个方法,能够获取一个AnimableValuePtr指针,而AnimableValuePtr
 指针是用于数值动画的,继承这个类说明MovableObject具备数值动画的能力。

2.ShadowCaster :

这个类是用于创建阴影的,ogre创建阴影是采用Z-PASS和Z-PAIL 这两种阴影体方式,产生阴影的细节比较复杂,尤其是建立在一个复杂场景之上的时候。

继承这两个类,使MovableObject 获得了播放数值动画和产生阴影的能力。

 

MovableObject :

 

String mName;
MovableObjectFactory* mCreator;
SceneManager* mManager;
Node* mParentNode;
bool mParentIsTagPoint;
bool mVisible;
bool mDebugDisplay;
Real mUpperDistance;               // ??? 
Real mSquaredUpperDistance;  // ??? 
Real mMinPixelSize;                   // ??? 
bool mBeyondFarDistance;	  // 是否隐藏,超过距离
UserObjectBindings mUserObjectBindings; // 用户对象的约束,一个存放属性的map
uint8 mRenderQueueID; 
bool mRenderQueueIDSet;
ushort mRenderQueuePriority;
bool mRenderQueuePrioritySet;
uint32 mQueryFlags;    // 标志位,标志该对象是否可以被查询
uint32 mVisibilityFlags; // 标志位,标志该对象是否被场景管理器可见
mutable AxisAlignedBox mWorldAABB;  // 此物体的边界框
mutable Sphere mWorldBoundingSphere; // 此物体的边界球
mutable AxisAlignedBox mWorldDarkCapBounds; // 我的理解,此物体产生的阴影体,不一定对 - -
bool mCastShadows; // 是否被阴影遮盖,此物体
bool mRenderingDisabled; // 渲染监听器是否禁用
Listener* mListener; 
mutable LightList mLightList; // 能照到此物体的所有的光
mutable ulong mLightListUpdated;
uint32 mLightMask;
static uint32 msDefaultQueryFlags;
static uint32 msDefaultVisibilityFlags;

MovableObject 里面没有特别复杂的逻辑,主要是维护这些字段,从这些字段可以看出,MovableObject 依旧是对可移动物体的抽象描述。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值