我在上传我做的这个源码之前,我在自己的程序中遇到一个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产生的可能原因: