控制物体的放大缩小是经常需要使用的操作,而操作方法也非常简单。对于vpObject 对象,使用函数setScale(x,y,z)就能实现物体在x轴、y轴和z轴上缩放比例控制。例如:
vpObject * pObject;
pObject->setScale(0.500000,1.000000,2.000000);
就能实现对物体pObject 在x轴上的尺寸缩小一半、在y轴上的尺寸保持原样和在z轴上的尺寸放大到两倍。
控制物体透明的最简单的方法是设置其渲染掩码为0x0000000:
PublicMember::pObject001->setRenderMask(0x0000000);
实现对物体的透明控制,需要引入3个头文件依次为:#include "vsGeometry.h"(几何体头文件),#include "vrMode.h"(方式头文件),#include "vrState.h"(状态头文件)。
几何类视图如图6.11.1所示,状态类视图如图6.11.2所示。
图6.11.1 几何体类继承图
图6.11.2 状态类继承图
物体的透明控制可以实现物体的“隐身”,它比缩放比例的控制更复杂,不能采用单一函数实现。在物体的透明控制中,首先要使用结构体vrAlphaTest::Element,它包含3个数据成员:bool m_enable,默认值为false,如果需要修改,必须把值设置为true;Mode m_mode,默认值为vrAlphaTest::MODE_ALWAYS;float m_ref,值为1.0时设置为透明,值为0.0时设置为不透明。其次,要使用物体对象的几何体,获取几何体的状态,利用状态对象修改元素的值。(www.daowen.com)
为了便于使用,把控制物体透明的功能编写成一个静态函数:
void PublicMember::CTS_SetObjectTrasnparent(vpObject *pObject,bool transparent)
其中,参数vpObject *pObject 表示物体对象指针,参数bool transparent 表示是否设置为透明,true时为透明,false时为不透明。
控制物体对象透明的完整代码如图6.11.3所示。
图6.11.3 Vega Prime应用程序透明控制函数
透明控制函数的调用位置位于主线程中帧循环判断中,在这里通过控制汽车的透明性来决定是否需要隐身。前面已经定义了汽车对象的静态指针变量 PublicMember::CTS_ pObject_observer,这里再定义一个静态逻辑值:
bool PublicMember::CTS_SettingHide;
当PublicMember::CTS_SettingHide 取值为true时,m_ref=1.0f 就把汽车设置为透明;当PublicMember::CTS_SettingHide 取值为false时,m_ref=0.0f 就把汽车设置为不透明。在主线程中,具体的透明控制函数在主线程中的调用代码如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。