理论教育 VegaPrime虚拟现实开发技术:控制物体缩放比例及透明

VegaPrime虚拟现实开发技术:控制物体缩放比例及透明

时间:2023-11-24 理论教育 版权反馈
【摘要】:对于vpObject 对象,使用函数setScale就能实现物体在x轴、y轴和z轴上缩放比例控制。图6.11.1几何体类继承图图6.11.2状态类继承图物体的透明控制可以实现物体的“隐身”,它比缩放比例的控制更复杂,不能采用单一函数实现。控制物体对象透明的完整代码如图6.11.3所示。图6.11.3Vega Prime应用程序透明控制函数透明控制函数的调用位置位于主线程中帧循环判断中,在这里通过控制汽车的透明性来决定是否需要隐身。

VegaPrime虚拟现实开发技术:控制物体缩放比例及透明

控制物体的放大缩小是经常需要使用的操作,而操作方法也非常简单。对于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 就把汽车设置为不透明。在主线程中,具体的透明控制函数在主线程中的调用代码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈