理论教育 VegaPrime虚拟现实开发技术的碰撞检测控制结果

VegaPrime虚拟现实开发技术的碰撞检测控制结果

时间:2023-11-24 理论教育 版权反馈
【摘要】:图6.12.1碰撞检测类继承图图6.12.2碰撞检测服务类继承图碰撞检测主要包括建立碰撞模式、设置碰撞检测、碰撞处理3个部分。建立碰撞模式的代码如图6.12.3所示,其中包含两个对象:一个是碰撞检测对象:pIsectorBump_bumpIsector,另一个是碰撞检测服务对象:pIsectorServiceInline_myIsectorService。图6.12.4Vega Prime应用程序碰撞检测主线程

VegaPrime虚拟现实开发技术的碰撞检测控制结果

实现对物体的碰撞检测,需要引入两个头文件,依次为:

#include "vpIsectorBump.h"(碰撞检测头文件),#include "vpIsectorServiceInline.h"(碰撞检测服务头文件)。

碰撞类视图如图6.12.1所示,碰撞检测服务类视图如图6.12.2所示。

图6.12.1 碰撞检测类继承图

图6.12.2 碰撞检测服务类继承图

碰撞检测主要包括建立碰撞模式、设置碰撞检测、碰撞处理3个部分。恰当地使用碰撞,能够让虚拟的场景更加真实。

建立碰撞模式的代码如图6.12.3所示,其中包含两个对象:

一个是碰撞检测对象:pIsectorBump_bumpIsector,另一个是碰撞检测服务对象:pIsectorServiceInline_myIsectorService。

图6.12.3 Vega Prime应用程序建立碰撞模式(www.daowen.com)

设置碰撞检测的代码如下:

pIsectorBump_bumpIsector->setTarget(pObject_farmhouse);

pIsectorBump_bumpIsector->setPositionReference(pObject_Hummer);

pIsectorServiceInline_myIsectorService->addIsector(pIsectorBump_bumpIsector);

第1句代码设置碰撞检测的目标是房子,第2句代码设置碰撞的位置参考为汽车,第3句把碰撞检测添加到碰撞服务对象里面。第1句与第2句实际上是设置了产生碰撞的两个对象,即房子和车子,第3句就是为这个碰撞提供了一个服务对象。

怎么发现碰撞已经发生呢?有一句关键的代码如下:

在这里发现碰撞后只是弹出一个消息框,提示碰撞已经发生。当然,也可以做自己的处理,例如,让汽车停下来或者用另外一个破损的房屋来代替原来完好的房屋。在主线程中获取碰撞检测及弹出消息框的具体代码如图6.12.4所示。

图6.12.4 Vega Prime应用程序碰撞检测主线程

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

我要反馈