查看: 1199|回复: 12

OSG无法读取MD2模型

[复制链接]

该用户从未签到

发表于 2014-8-19 09:56:21 | 显示全部楼层 |阅读模式
在论坛下了士兵模型,结果无法读取,不知道是怎么回事,还请大神们指教
无法读取.png

该用户从未签到

 楼主| 发表于 2014-9-8 19:29:03 | 显示全部楼层
nuaaqsm0915 发表于 2014-9-6 13:03
不推荐大家继续使用md2
用了osg3.0的运行库加载md2模型,能够成功加载。
于是对osg3.0和osg3.2.1的与md ...

3Q~

该用户从未签到

发表于 2014-8-20 10:19:39 | 显示全部楼层
如果您可以正常读取其他模型,那么最好的方式就是调试一下,最有可能还是模型数据库插件不匹配的问题

该用户从未签到

 楼主| 发表于 2014-8-23 18:18:21 | 显示全部楼层
gis_wudi 发表于 2014-8-20 10:19
如果您可以正常读取其他模型,那么最好的方式就是调试一下,最有可能还是模型数据库插件不匹配的问题

应该是插件的问题,3ds可以读出来

该用户从未签到

 楼主| 发表于 2014-8-23 18:24:54 | 显示全部楼层
gis_wudi 发表于 2014-8-20 10:19
如果您可以正常读取其他模型,那么最好的方式就是调试一下,最有可能还是模型数据库插件不匹配的问题

插件不匹配该怎么解决呢

该用户从未签到

发表于 2014-8-23 19:12:53 | 显示全部楼层
先调查一下Osg提供读取该模型格式的插件吗
如果有,再看看该插件编译成功了没

该用户从未签到

 楼主| 发表于 2014-8-23 20:35:34 | 显示全部楼层
cenfer 发表于 2014-8-23 19:12
先调查一下Osg提供读取该模型格式的插件吗
如果有,再看看该插件编译成功了没

生成了osgdb_md2.dll和osgdb_md2d.dll两个动态链接库,程序读取的时候一直卡在readNodeFile位置,显示内存冲突,试了一下3ds格式文件,正常读取

该用户从未签到

发表于 2014-8-23 21:46:05 | 显示全部楼层
我不认为有dll,代表一定编译成功。
先看看路径有没有问题,起码保证没有中文

该用户从未签到

发表于 2014-8-23 21:53:22 | 显示全部楼层
之所以这样说,是因为有的插件依赖第三方插件,而第三方插件缺失时有的插件也能编译出来,但功能会受限。

该用户从未签到

 楼主| 发表于 2014-8-24 09:05:32 | 显示全部楼层
cenfer 发表于 2014-8-23 21:53
之所以这样说,是因为有的插件依赖第三方插件,而第三方插件缺失时有的插件也能编译出来,但功能会受限。

读取的资源路径没有中文,至于如何检测是否成功生成插件还请多多指教

该用户从未签到

发表于 2014-9-2 00:21:12 | 显示全部楼层
我只想说两个问题
1 中文路径默认是会出错的 需要设置一下来解决
2 md2的山寨规范很多 不能读取是正常的 如果有心情能写好几篇论文都说不完

该用户从未签到

发表于 2014-9-2 11:02:58 | 显示全部楼层
我也是编译成功了 osgdb_md2.dll,但是md2模型依然无法加载。各位大侠想想办法!

该用户从未签到

发表于 2014-9-6 13:03:37 | 显示全部楼层

不推荐大家继续使用md2
用了osg3.0的运行库加载md2模型,能够成功加载。
于是对osg3.0和osg3.2.1的与md2有关的源代码进行分析,查看了一下,与md2有关的文件主要是ReaderWiterMD2.cpp这个文件,使用Beyond Compare 3这个各工具比较osg3.0和osg3.2.1的ReaderWiterMD2.cpp,发现不同的地方有两处。 分别在378行和388行,原来新版本的osg3.2.1使用新的的类 deprecated_osg::Geometry 代替了osg::Geometry。

那么deprecated_osg::Geometry又是个什么东东呢,在Geometry文件里找到了其定义,还有相关注释如下:
/** Contains deprecated features of namespace osg. */
namespace deprecated_osg {
/** Geometry class contaning deprecated features.
* Users should only use deprecatged_osg::Geometry when absolutely neccessary for keeping things compiling,
* it is recommended that you should migrate your code to work just with osg::Geometry as existing
* deprecated_osg::Geometry will be removed in future release.
*/
通过其注释明白了,deprecated是反对的意思,也就是说 deprecated_osg是一个包含不被推荐使用的命名空间,deprecated_osg::Geometry是一个要淘汰掉的类,其包含着不被推荐使用的函数。
因此不推荐大家继续使用这个插件!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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