查看: 2896|回复: 11

一小段OSG与ODE结合的程序

[复制链接]

该用户从未签到

发表于 2009-3-31 15:44:06 | 显示全部楼层 |阅读模式
写了一小段OSG与ODE结合的碰撞检测小程序
盒子模型使用3DMAX制作
球体使用的是osg::Sphere
用osg::ComputeBoundsVisitor得到模型的包围盒信息
按F键可以推动最左边的盒子向右侧运动[附图]
正常运行的话,需要电脑上配置有ODE环境
ps:个人在做虚拟装配的毕业设计,论坛上少有OSG与ODE结合的例子,很苦恼,呵呵
希望能够抛砖引玉

代码见附件

OSG_ODE_BoundingBox

OSG_ODE_BoundingBox

OSG_ODE_BoundingBox.rar

236.78 KB, 下载次数: 766, 下载积分: 威望 1

Code

该用户从未签到

 楼主| 发表于 2009-3-31 15:52:19 | 显示全部楼层

还有一个生成无限多小球的 :)

对上面的代码稍加改造
就成了一个可以按某键,从高处落下无限多小球的

AnotherOne

 AnotherOne

该用户从未签到

发表于 2009-3-31 17:49:20 | 显示全部楼层
嗯,嗯,很不错啊。
不知楼主有没有兴趣把这个例子改造之后加入到osgPhysics中?此外Sukender的PVLE工程应当也是您的很好的借鉴

该用户从未签到

 楼主| 发表于 2009-4-1 10:40:00 | 显示全部楼层
呵呵
我倒是有兴趣呀
就是怕你跟Sukender嫌我写的代码太烂

该用户从未签到

发表于 2009-4-1 10:51:50 | 显示全部楼层
您可以先看一看osgPlugins/EnginePAL的写法,其中主要使用osgPhysics的派生类完成具体物理引擎的功能。因此您的插件可以写作EngineODE,并使用loadManager( "ODE" )来实现加载。

该用户从未签到

发表于 2009-8-17 11:08:54 | 显示全部楼层
楼主,我运行你的例子,出现如下错误,请指教:
error.jpg

该用户从未签到

发表于 2009-8-17 13:54:09 | 显示全部楼层
支持

该用户从未签到

发表于 2009-8-17 13:58:05 | 显示全部楼层
dMassSetBoxTotal(&mass, 20.0, length, width, height);
dBodySetMass(testBody, &mass);

执行完如上第一句的时候,mass.mass = 20.0;
可是再往下执行下面的dBodySetMass的时候,我F11跟进去,mass.mass 变成了一个小于0的数,好像没有道理啊,dBodySetMass 的第一句并没有对mass.mass进行任何赋值操作啊,程序执行到dAASSERT ()的时候,那个mass.mass就无缘无故的变了,谢谢大仙能指点迷津

void dBodySetMass (dBodyID b, const dMass *mass)
{
  dAASSERT (b && mass );  //断点执行到这句,mass.mass就变了
  。。。。
}

该用户从未签到

发表于 2009-9-11 15:56:06 | 显示全部楼层
我遇到并解决过ODE的这类问题。我的理解是(不知道对不对,请大家指点):
因为你编译的ODE的机器位数和你本机的位数不一致。ODE可以编译出double(64位)和single(32位)两种库。如果你的机器是32位,就使用single。否则就会滁县函数的参数传递出现错误。

该用户从未签到

发表于 2009-9-12 11:44:38 | 显示全部楼层
大家可以参考delta3d中有一个例子就是专门做ODE的,叫TestPhysics,也是按下某键,会在鼠标的位置从高空落下盒子或是小球,做的挺好的。

该用户从未签到

发表于 2011-3-6 22:05:47 | 显示全部楼层
本帖最后由 liuzhiyu123 于 2013-5-22 09:07 编辑

回复 1# mengxk
现在遇到碰撞检测的问题了,向你请教请教。

该用户从未签到

发表于 2011-3-7 11:48:56 | 显示全部楼层
感谢楼主的分享~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表