查看: 1729|回复: 10

osgViewer浏览vpb生成的影像报错

[复制链接]

该用户从未签到

发表于 2013-5-29 12:49:54 | 显示全部楼层 |阅读模式
本帖最后由 servicebbs 于 2013-5-30 12:55 编辑

使用vpbmaster生成带高程的影像,然后用osgViewer浏览时,不定时的会出现异常,
异常的位置有时也不一样,求指点
系统试过:
win7 64位,osgViewer编译为32位
win7 32位,osgViewer32位
OSG版本3.1.6,也试过3.1.5、3.0.1是一样的情况

大家帮忙啊!!!!!
异常截图:
error1.png
error2.png

该用户从未签到

 楼主| 发表于 2013-5-30 12:56:18 | 显示全部楼层
本帖最后由 servicebbs 于 2013-5-30 12:56 编辑

请大家帮忙,半个月了,搞不定

该用户从未签到

发表于 2013-5-30 21:07:23 | 显示全部楼层
这个只能检查您自己的代码,寻找可能存在什么问题

该用户从未签到

 楼主| 发表于 2013-5-30 21:16:30 | 显示全部楼层
array 发表于 2013-5-30 21:07
这个只能检查您自己的代码,寻找可能存在什么问题

我就是为了排除我代码的问题,我测试的所有代码都是osg svn上下的
使用vpb编译地形,使用osgviewer查看,没有一句我的代码,还是会出错啊

该用户从未签到

 楼主| 发表于 2013-5-30 21:23:46 | 显示全部楼层
为了这个,我重装了系统,试过win7 32,win7 64,及多个osg版本都不行啊,锐哥救命啊

该用户从未签到

发表于 2013-5-31 07:48:33 | 显示全部楼层
自己写一个最简单的 显示程序 调用 您生成的这个场景 debug 查看一下 哪里的问题 看看是在哪个函数调用时crash的

该用户从未签到

发表于 2013-5-31 18:59:40 | 显示全部楼层
与OSG版本一点关系都没有,
   主要是你的vpbmaster生成带高程的影像!
  
  1.用vpbmaster生成的是高程的影像,还是带影像文件的地形?
如果是高程的影像,说明是vpbmaster使用了相关的插件,识别读写该类型的影像文件;
osgviewer.exe 只是你编译环境下地能够识别的插件影像文件(与你的vpbmaster的识别环境是有区别的,你的osgviewer在生成时与vpbmaster的环境不同)
   如果osgviewer读取无法识别的相关类型的影像文件,它是不是就会报错呢?
2.
vpbmaster生成带高程的影像,vpbmaster他本身就有限制:
看看他在生成影像或地形时有什么限制!
比如:vpbmaster如果是使用个GDAL读取高程影像文件,那他本身就受GDAL插件的限制,如最大高程影像文件不能大于4GB,等等(另GDAL再读取影像文件时是支持很多格式的,但是写确不同,也就是要保存为某种类型的影像文件是受限制的,具体要看GDALD的详细相关说明)
3.
   a. 换个高程文件(类型,大小)试试,看到底是vpbmaster还是osgviewer.exe出的问题!
   b. 换个保存的影像文件类型(如常用的)再试试!
4.
如果还不能解决问题,那你只有查看vpbmaster源代码,看它生成你的这个影像文件的流程是怎样的了
   

该用户从未签到

 楼主| 发表于 2013-6-3 17:13:09 | 显示全部楼层
VR_user_happy 发表于 2013-5-31 18:59
与OSG版本一点关系都没有,
   主要是你的vpbmaster生成带高程的影像!
  

感谢回复了这么多字,刚出差回来,不好意思
我后来发现和OSG版本也是没太大关系。
1.“高程的影像,还是带影像文件的地形”不是一个东西吗?这句没理解你的意思。之前考虑到了这个版本的问题,OSG和VPB版本都是相同的。我也怀疑是不是vpb跑的地形有问题,我现在想找谁有自己用的影像,不涉密的发我一份试试?
2.因为影像和高程都是小文件,暂时没有碰到这个限制
3.这个还没试过,我现在只知道能用tif存储,还支持别的格式?我看看
4.我也怀疑是影像文件的问题,因为我自己切的模型金字塔,使用pagedlod,运行没有问题。

该用户从未签到

发表于 2013-6-3 19:01:32 | 显示全部楼层
1.高程的影像是(含有高程数据的)栅格文件,如*.IMG和带地理信息的*.TIF等
2.含带影像文件的地形是terrain,高程地形模型*.ive或*.osg(同时包含有影像图层)
形式的。
你用vpb是读取了高程的影像栅格文件,生成了terrain对象,但保存时应该是写出成模型文件*.ive或*.osg(同时包含有影像图层)
   另外不知道是不是你还写出了高程的影像是(含有高程数据的)栅格文件(图片文件),即带高程和地理信息的*.tif
所以我问你到底是生成了模型文件*.ive(OSGVIEWER中可以查看的 模型对象),还是纯栅格文件(图片对象)*.tif
3. 前面我提到过VPB与OSGVIEWER .EXE的生成环境是否相同,就是指这两个应用程序的插件环境是否相同
     VPB读取高程影像文件,估计是用了GDAL插件(先说明下没有用过VPB,但我了解高程影像文件生成地形的原理)读取*.TIF的
    你如果用OSGVIEWER .EXE去读高程影像文件(如*.TIF),它默认的应该是osgdb_tif.dll插件,
所以说,你如果是在OSGVIEWER .EXE中读取含高程影像*.TIF,它可能是有问题的。
   如果说你用的是OSGVIEWER .EXE读取的是*.ive模型文件,但如果他的图像层中如果还是使用含高程的*.TIF,也是有问题的,他的图像层只能是自带的影像文件识别插件(如osgdb_tif.dll)去识别能认识类型的影像文件。

3.还有就是好像一般要把大的地形影像文件进行分割处理(如果使用默认的GDAL插件形式,除非自己写源码处理),没有用过VPB,所以不知道是否有这种要求。

4.tif高程影像文件可以参考:
ftp://ftp.remotesensing.org/geotiff/samples/

该用户从未签到

 楼主| 发表于 2013-6-4 10:52:44 | 显示全部楼层
liuzhiyu123 发表于 2013-5-31 07:48
自己写一个最简单的 显示程序 调用 您生成的这个场景 debug 查看一下 哪里的问题 看看是在哪个函数调用时cr ...

直接使用osgViewer debug,出错信息如下:
e1.png
调用栈
e2.jpg

查看问题基本就是在GeometryTechnique文件1488行
_currentBufferData->_transform->accept(nv);这句,这里的_transform的值是正确的
e3.jpg
但是当进入到accept之后,_transform的值就是非法的了,如下图
e4.jpg

说明_transform被意外释放掉了,或者有访问越界的问题,但是找不到是哪里的原因引起的这个问题

该用户从未签到

 楼主| 发表于 2013-6-4 11:06:04 | 显示全部楼层
VR_user_happy 发表于 2013-6-3 19:01
1.高程的影像是(含有高程数据的)栅格文件,如*.IMG和带地理信息的*.TIF等
2.含带影像文件的地形是terrai ...

太详细了
1.学习了
2.我是使用vpbMaster读取的影像栅格Tif和高程栅格Tif,生成了地形*.ive文件
3.osgviewer浏览生成的地形(*.ive),是可以浏览的,只是偶尔出错,说明还是能够识别的。
4.vpb读取大的tif文件会出问题,所以我一般都是切成小块来用

我找了些以前用过的地形,正在测试是地形的问题还是别的问题。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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