展开异次空间

:: 相对折叠空间/讨论游戏/软件设计.技术 ::

 

物理引擎 < ODE > 学习实践经验笔记

经验笔记 [ 原创 - by T.T ]

基础的就是几个流程
1. 初始化
dInitODE
创建 Contact Group
设置世界对象的 ERP (错误修正系数),这东西直接和精度相关的,但设置太低又经常CRASH。。所以很郁闷啊
设置世界对象的 CFM,这个的效果就是软硬程度的,石头、金属就设低点,要有那种有弹性的质感就设高点。。
然后就是重力之类的全局参数

2. 创建 ODE 运动或者静态对象
静态的直接就用 GEOM ID 构造一个物体,怎么都撞不动。。。 重力也不影响这东西
动态对象就创建个 dBody, 然后用 dGeom 设置附加到该BODY上就可以动了。想不动都不行~

如果要创建 TRI-MESH 的 ODE 对象就比较麻烦了 问题很多,官方的解决方案也不能很好解决。。。
还经常堆栈上溢!-___-#
如果非要在 ODE 里用 TRIMESH 就把工程的参数改改加个 /stack:99999999 ,就不溢出了。
不过碰撞不精确而且问题很多 特别是模型定点坐标不是 0.0~1.0 的话,那就等着到处飞吧~~

3. 用自己的3D引擎或者D3D创建物体,建立与ODE对象的关系。
4. 更新ODE运动对象,获取运动对象的信息(坐标或者四元数),设置到渲染对象上就OK了。
5. 循环4,直到退出。。。

几个注意的地方
- ode 本身接口还是很方便,容易上手的物理引擎,但大场景管理真的不好,很慢很不稳定。。
- 在ODE中使用 TRI-MESH 我在ODE论坛上看到的是说问题很多,效率不怎么高,如果非要用TRIMESH就用
上面的方法,或者改用其他物理引擎。-__-# (太不负责了)
- 最近 PhysX 授权协议改了,商业用处也免费了,就是没源码~ 对于我们来说比用ODE好太多了,ode有
源码也没这么多精力修改~ 引擎中需要修改完善的太多了!让奥加帮我们去做吧!

值得庆贺的事
PHYS-X 已经在测试中了,替代ODE之后会加入到引擎中
以后物理这块就更牛逼了!

posted on 2008-01-02 12:00 Updraft Studio 阅读(1948) 评论(1)  编辑 收藏 引用

评论

# re: 物理引擎 学习实践经验笔记 2014-12-08 21:45 winjan

3D或D3D+ODE具体怎么实现呢?
email:winjan163@163.com  回复  更多评论   

只有注册用户登录后才能发表评论。

导航

统计

公告

激情,努力

常用链接

留言簿(9)

随笔档案(53)

文章档案(25)

@Updraft Studio@

搜索

最新评论

阅读排行榜

评论排行榜

Freelance Jobs