查看: 5451|回复: 23

有关osgPhysics的问题

[复制链接]

该用户从未签到

发表于 2009-3-23 22:39:05 | 显示全部楼层 |阅读模式
周末在SF上下了array的osgPhysics,编译很顺利,
在执行Examples下的osgPhysicsDrop的时候,有一个警告如附件所示。
问一下array或者其他用过osgPhysics的同学:
这个问题是不是由于缺少某个物理引擎造成的?
应该如何把物理引擎和osgPhysics结合起来呢?

osgPhysics例子的警告

osgPhysics例子的警告

该用户从未签到

发表于 2009-3-23 22:46:48 | 显示全部楼层
没有安装物理引擎PAL。osgPhysics是插件式的,所有底层的物理引擎都以插件的形式存在,目前有一个PAL插件(打开CMake的BUILD_PAL_SUPPORT选项),branches目录的那个版本还包含了一个支持physX的插件

该用户从未签到

发表于 2009-3-24 17:56:21 | 显示全部楼层
原帖由 array 于 2009-3-23 22:46 发表
没有安装物理引擎PAL。osgPhysics是插件式的,所有底层的物理引擎都以插件的形式存在,目前有一个PAL插件(打开CMake的BUILD_PAL_SUPPORT选项),branches目录的那个版本还包含了一个支持physX的插件



This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

我这个又是缺什么呢?

该用户从未签到

发表于 2009-3-24 19:16:16 | 显示全部楼层
是不是没有附带PAL的动态链接库?

该用户从未签到

 楼主| 发表于 2009-3-24 21:42:40 | 显示全部楼层
请问array:
现阶段物理引擎一定要使用PAL吗?
Open PAL可以不?

该用户从未签到

发表于 2009-3-24 22:16:59 | 显示全部楼层
暂时没有写这方面的插件,mengxk有兴趣的话欢迎加入这个工程的开发

该用户从未签到

发表于 2009-3-25 10:02:39 | 显示全部楼层
原帖由 array 于 2009-3-24 19:16 发表
是不是没有附带PAL的动态链接库?


我的疑问就在这:我是自己编译的PAL,不过在编译的时候没有用Box2D、AGEIA PhysX 等,因为太多,我也不知道osgPhysics需要哪个,所以一个也没有用。PAL  camke的时候相关选项都OFF,编译顺利通过,osgPhysics编译时也没有出错。

该用户从未签到

发表于 2009-3-25 10:44:18 | 显示全部楼层
PAL的特色就在于它本身封装了这些物理库的内容,因此您可以选上其中所有的或者任意一个,然后把生成的dll文件放在运行的目录下;只要设置了PAL支持,osgPhysics就不会再关心具体的物理引擎是谁。

该用户从未签到

发表于 2009-3-25 13:20:00 | 显示全部楼层
我选择了SPE_SDK ,编译PAL得到了libpal_spe.dll 和 SPE.dll ,可osgphysicsdrop还是不能运行,错误信息:

错误信息

错误信息

该用户从未签到

发表于 2009-3-25 15:09:19 | 显示全部楼层
修改一下例子里面的源代码,把
  1. osgPhysics::Manager* mgr = osgPhysics::Manager::loadManager();
复制代码
这一行改为:
  1. osgPhysics::Manager* mgr = osgPhysics::Manager::loadManager("PAL", "INTERNAL_ENGINE=SPE");
复制代码
再试试看。不过PAL本身的问题很多,我和Sukender只在pal&ode下实验过,目前还不知道其它引擎的支持情况

该用户从未签到

发表于 2009-3-26 16:05:44 | 显示全部楼层
array老大哥,还是不行啊,我也加上了ode,还是老样子。
您有没有已经编译好的osgPhysics(例子能运行的),有例子也行啊,现在只有这一个例子,还不能运行,没有心思看源代码
未命名.GIF

该用户从未签到

发表于 2009-3-26 19:38:16 | 显示全部楼层
这个例子在我和Sukender那里都是可以运行的,看起来是您的PAL有些毛病。
PAL本身问题很多,作为osgPhysics的开发者,Sukender正在对它进行全面的诊断,我则暂时怠工~~

该用户从未签到

发表于 2009-3-27 11:28:32 | 显示全部楼层
我提个过分的要求,希望array大哥不要鄙视我啊
您能不能把您编译好的pal发一份给我 :L
邮箱lihui206@qq.com

该用户从未签到

发表于 2009-3-27 12:14:22 | 显示全部楼层
我的PAL是用CMake生成脚本,并使用vs2008编译的,如果您和我的版本不符的话,就无法正确编译。如果您依然认为必需的话,我晚上发给您

该用户从未签到

发表于 2009-3-27 14:28:34 | 显示全部楼层
我用的vs2005 ,那就算了吧。
我再自己琢磨琢磨吧

该用户从未签到

发表于 2009-3-30 12:00:38 | 显示全部楼层
还是没有一点进展,想放弃了,可有点心不甘,再麻烦一次array,osgPhysicsDrop调试的时候,到
    osg::ref_ptr<osgPhysics::World> world = new osgPhysics::World();
中断

该用户从未签到

发表于 2009-3-30 13:10:05 | 显示全部楼层
估计还是您的PAL的问题,也可以用physX作为底层试试看,并下载branches版本的osgPhysics~~
osgPhysics现有的功能还是基本可用的,当然您也可以再观望一段时间,等它有更多进展之后再参与进来。osgPhysics是目前唯一会继续更新的OSG物理接口库,如果您不是因为紧急的任务要求才使用这个库的话,希望您不要轻言弃之。

该用户从未签到

发表于 2009-3-30 13:11:30 | 显示全部楼层
估计还是您的PAL的问题,我们之前也常常遇到PAL自身加载失败的问题(它的加载位于World的构造函数中),也可以用physX作为底层试试看,并下载branches版本的osgPhysics~~
osgPhysics现有的功能还是基本可用的,当然您也可以再观望一段时间,等它有更多进展之后再参与进来。osgPhysics是目前唯一会继续更新的OSG物理接口库,如果您不是因为紧急的任务要求才使用这个库的话,希望您不要轻言弃之。

该用户从未签到

发表于 2009-3-31 09:29:58 | 显示全部楼层
按您说的试了两下(在两台机器上),还是不行,osgPhysicsdrop 在
    if ( !mgr->init() )
    {
        std::cout << "Can't initialize the manager." << std::endl;
        return 1;
    }
退出了

我装的是PhysX SDK 2.8.1 ,其中的PhysXViewer.exe 运行出错,其他程序也一样运行出错,本来怀疑是我机子的问题,可在另一台机子结果一样。难道是系统的问题?系统是ghost 版的xp sp3
1.GIF

该用户从未签到

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

继续关注osgPhysics

继续关注osgPhysics
呵呵
毕竟如array所说,它现在是唯一一个会继续更新的OSG物理接口库了
昨天还在gamedev.net上看到Sukender发的有关osgPhysics的帖子

暂时还是考虑直接对ODE进行封装吧
等osgPhysics成熟了,俺再改

该用户从未签到

发表于 2009-4-25 13:40:59 | 显示全部楼层
我一开始遇到你这个问题的原因是OSG版本太低,重新编译OSG2.8;
然后,修改_sceneDesc.simType = NX_SIMULATION_HW为SW就可以了;
按照box代码,我加了一段代码创建球,结果没有自由落体的效果。
球的代码如下:
  1. //建立空间球对象
  2. osg::Node * createSphere( const osg::Vec3f& pos )
  3. {
  4.         osg::Sphere* sphereShape = new osg::Sphere(osg::Vec3(0,0,0),10.0f);
  5.    
  6.     osgPhysics::RigidActor * sphereActor = new osgPhysics::RigidActor;
  7.         sphereActor->addChannel(osg::Matrix::translate(pos),sphereShape,new osgPhysics::BodyBase);
  8.    
  9.     osg::Geode* sphereGeode = new osg::Geode;
  10.         sphereGeode->addDrawable(new osg::ShapeDrawable(sphereShape));
  11.         sphereActor->addChild(sphereGeode);

  12.     return sphereActor;
  13. }
复制代码

程序截图

程序截图

该用户从未签到

发表于 2009-4-25 13:54:59 | 显示全部楼层
相同的代码将osg::Sphere换成osg::Box就可以。
错误提示如下:
Supplied NxActorDesc is not valid. creatActor return null.
难道osgPhysicx只能支持box,

该用户从未签到

发表于 2009-4-25 20:42:35 | 显示全部楼层
这到没错,还没编写其它形状相关的代码。欢迎湖面之舟补充

该用户从未签到

发表于 2009-4-26 13:22:21 | 显示全部楼层
很乐于去为改工程做贡献,只是不知道自己水平够不够,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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