delta3d碰撞检测BUG及修复

在使用Delta3D引擎进行碰撞检测时,遇到一个bug:在调用box->SetCollisionMesh()后,bNormalizationResult出现问题导致程序崩溃。经过调查,发现默认的SetCollisionBox方法可以正常工作。为解决这一不定时出现的错误,需要深入分析和修复这个错误。
摘要由CSDN通过智能技术生成
 
我在上传我做的这个源码之前,我在自己的程序中遇到一个BUG,但我发现delta3d也出现同样
的错误,因此先解决delta3d本身的BUG
l        delta3d中将例子testPhysics中空中下落物块,比如按下’b’键掉下盒子,默认将碰
撞模型设为setCollisionBox,程序运行正常,如果我们采取三角形片检测,设为
testPysics.cpp line230中修改为

box->SetCollisionMesh();//bNormalizationResult有错!,默认的SetCollisionBox正确,程序总是不定时地弹出错误,

并终止程序

 

l         同样的问题出现在ODE中,我们下载ODE0.9的源码,编译运行“demoMovingTrimesh

例子,当我们按下键盘“m”,天上掉下兔子,如果我们一直按下m键,则程序也会弹出消息框:

 

两者错误出处函数来自odemath.h 302

static __inline void _dNormalize3(dVector 3 a )

{

     int bNormalizationResult = dSafeNormalize3(a);//返回矢量是否为

     dIASSERT(bNormalizationResult);//容易出错的地方

     dVARIABLEUSED(bNormalizationResult);

}

BUG产生的可能原因:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值