查看: 4903|回复: 23

vpb生成的带纹里贴图的IVE文件在osgviewer里面能显示正常,加载到osgearth里面无效...

[复制链接]

该用户从未签到

发表于 2014-5-16 10:23:00 | 显示全部楼层 |阅读模式
1.jpg
这是在osgviewer显示的效果,能看出有地形的。


2.jpg
但用osgearth加载.ive文件时就没有地形效果了。只有影像

我生成IVE文件的命令是:
3.jpg

我在.earth文件添加的节点是:
   <image name="imagery layer 0" driver="vpb">

        <url>E:/OsgEarthSupport/bin/output.ive</url>   
        <primary_split_level>11</primary_split_level>
        <secondary_split_level>20</secondary_split_level>
        <profile>global-geodetic</profile>
    </image>

同时我也试了,生成局部的.IVE文件,.earth文件中添加节点的方式如下:
<heightfield name="dem" driver="vpb">
      <url>E:/OsgEarthSupport/bin/test2.ive </url>    <--!改成本地文件-->
      </heightfield>

求各位大神帮忙看看。。。

该用户从未签到

发表于 2014-5-16 22:04:55 | 显示全部楼层
没用过osgEarth,但从效果看,应该是没有加进去地形IVE模型;
  2中可能性:
  一是,视点的视距没有达到该PageLod调用对应的地形模型的视距要求;(可试着加载顶级地形看看)
  二是,地形本身加载的路径就不正确;(可先试着加载其它大的明显得模型,不一定是此地形模型
  
  其它,网上搜下,osgEarth加载模型到地球的步奏,或是要求,看看是否相符!

该用户从未签到

 楼主| 发表于 2014-5-16 22:30:12 | 显示全部楼层
VR_user_happy 发表于 2014-5-16 22:04
没用过osgEarth,但从效果看,应该是没有加进去地形IVE模型;
  2中可能性:
  一是,视点的视距没有达到 ...

地形文件是和影像纹里一起生成的。就那一个文件。路径没问题,我也放大到很大的;

该用户从未签到

 楼主| 发表于 2014-5-16 22:30:42 | 显示全部楼层
VR_user_happy 发表于 2014-5-16 22:04
没用过osgEarth,但从效果看,应该是没有加进去地形IVE模型;
  2中可能性:
  一是,视点的视距没有达到 ...

网上的方法我都试了

该用户从未签到

发表于 2014-5-17 15:21:06 | 显示全部楼层
本帖最后由 VR_user_happy 于 2014-5-17 15:32 编辑

我不是都说了吗?
自己要多做测试,先用简单的模型,或者地形测试;
   看是否是加载其它模型或者地形也出现同样的问题
   然后再看是否是模型的问题,路径的问题,或是高程比例的问题,可以把高程比例放大到明显的级别(生成地形ive是主要参数设置)
   然后再看到底出问题在哪?

另环境变量是否也设置正确?
(如你模型路径正确,但是没有配置好环境变量,程序一样有可能找不到该路径下的文件)
  可以再调用模型位置设断点,看是否成功调用IVE
   (自己跟踪下调用模型的osgEarth源程序代码)

另外你理解调用模型的那几个leveL设置没有,如果是否有你设置级别的细分模型?

该用户从未签到

发表于 2014-5-17 15:48:36 | 显示全部楼层
本帖最后由 VR_user_happy 于 2014-5-17 15:52 编辑

另给你个连接地址,阅读参考下!
OSGEARTH三维地形开源项目

另外,你的模型放在/bin/目录下,就知道你的结构比较乱,那是可执行文件的目录

该用户从未签到

发表于 2014-5-17 16:20:34 | 显示全部楼层
本帖最后由 VR_user_happy 于 2014-5-17 16:31 编辑

1.你使用的是vpb驱动器(driver="vpb"),就应该遵循该驱动器的调用模型格式:

而不是用gdal驱动器格式,那你怎么能调用成功呢?

注:(gdal驱动器可以单独调用图像<image>或是高程地形<heightfield>)





2.而且你是使用的gdal驱动器调用了图像层的格式<image>(但驱动器却用vpb)

该用户从未签到

 楼主| 发表于 2014-5-17 17:00:25 | 显示全部楼层
VR_user_happy 发表于 2014-5-17 15:48
另给你个连接地址,阅读参考下!
OSGEARTH三维地形开源项目

什么人啊!!!

该用户从未签到

 楼主| 发表于 2014-5-17 17:06:07 | 显示全部楼层
VR_user_happy 发表于 2014-5-17 15:48
另给你个连接地址,阅读参考下!
OSGEARTH三维地形开源项目

我只是为了测试,不用复制两下。

该用户从未签到

发表于 2014-5-17 17:35:58 | 显示全部楼层
<elevation>
<directory_structure>参数</directory_structure>
</elevation>

Default is nested; options are nested, flat and task(建议)
你可以尝试一下几个参数,记得好像task可以解决这个问题

该用户从未签到

发表于 2014-5-17 21:25:34 | 显示全部楼层
本帖最后由 VR_user_happy 于 2014-5-17 22:13 编辑
gapgq 发表于 2014-5-17 17:06
我只是为了测试,不用复制两下。


你理解了没有?只会乱复制代码!
用不同的驱动器,可以识别的文件就不同

<map name="Virtual Planet Builder inset" type="geocentric" version="2">

    <image name="imagery layer 0" driver="vpb">
       <url>http://www.openscenegraph.org/data/earth_bayarea/earth.ive</url>
        <primary_split_level>5</primary_split_level>
        <secondary_split_level>11</secondary_split_level>
    </image>

    <image name="vpb hires inset" driver="gdal">
            <url>../data/boston-inset-wgs84.tif</url>
    </image>

    <options>
        <lighting>false</lighting>
                <cache_policy usage="no_cache"/>
    </options>
   
</map>

这才是用VPB 驱动器的方式
前面的红色字段是加载整个地球模型的,估计是放在坐标系原点位置!
蓝色字段才是你加载地形得到地方是用gdal驱动器,而且是TIF文件

格式都没理解就乱套用

该用户从未签到

 楼主| 发表于 2014-5-18 23:30:10 | 显示全部楼层
VR_user_happy 发表于 2014-5-17 21:25
你理解了没有?只会乱复制代码!
用不同的驱动器,可以识别的文件就不同

这个不是那例子上的东西吗?没用。你能不能给我一个可以测试的.IVE文件

该用户从未签到

发表于 2014-5-20 11:36:56 | 显示全部楼层
本帖最后由 VR_user_happy 于 2014-5-20 11:46 编辑

把你的
我在.earth文件添加的节点是:
   <image name="imagery layer 0" driver="vpb">

       <url>E:/OsgEarthSupport/bin/output.ive</url>    <--!这里就加载earth.ive的地球模型,其他的模型会被放在原点,即3D地球的内部球心-->
        <primary_split_level>11</primary_split_level>
        <secondary_split_level>20</secondary_split_level>
        <profile>global-geodetic</profile>
    </image>

后面添加
<image name="vpb hires inset" driver="gdal">
            <url>../baojidem.tif</url>   <--!一定要改成本tif地文件路径-->
    </image>

或者后面添加
<heightfield name="dem" driver="gdal">
      <url>../baojidem.tif</url>   <--!这里一定要改成本tif地文件路径-->
      </heightfield>

我想,VPB 驱动器也许会根据你的高程地形tif,自动在数据缓冲区建立地形的IVE模型(有待考证,理论上是行的通的,所以有可能不需要你自己手动加载建立IVE的地形模型。)

试试后再说
      

该用户从未签到

发表于 2014-5-20 11:48:07 | 显示全部楼层
另外如果想自己加载3D的ive模型:(见下方方法,一定要给模型指定对应的经纬度坐标点)

官方介绍了一种放置3D模型的方法是使用ModelNode.
using namespace osgEarth;
using namespace osgEarth::Symbology;
...

//加载模型
osg::Node* myModel = osgDB::readNodeFile(...);

//构建坐标系统
const SpatialReference* latLong = SpatialReference::get("wgs84");

//创建符号
Style style;
style.getOrCreate<ModelSymbol>()->SetModel(myModel);

//创建ModelNode
ModelNode* model = new ModelNode(mapNode, style);

//设置位置
model.setPosition(GeoPoint(latLong, -121.0, 34.0, 1000.0,  ALTMODEL_ABSOLUTE));

该用户从未签到

发表于 2014-6-11 14:38:16 | 显示全部楼层

解决没有,我也遇到你一样的问题了

该用户从未签到

发表于 2014-6-11 18:24:14 | 显示全部楼层
<heightfield name="dem" driver="vpb">
       <url>E:/OsgEarthSupport/bin/test2.ive </url>    <--!改成本地文件-->
       </heightfield>
heightfield 该为elevation试试

该用户从未签到

发表于 2014-6-12 17:02:43 | 显示全部楼层
楼主,这个问题你解决没有

该用户从未签到

发表于 2015-3-2 08:55:34 | 显示全部楼层
我也是类似的问题,earth.ive可以看到有起伏,但是在osgearth_viewer查看时,貌似根本模型就没加进去,而如果earth.ive本身是dem+纹理的话,在osgearth_viewer里面查看时可以看到纹理,缺看不到地形起伏

该用户从未签到

发表于 2015-3-3 11:10:02 | 显示全部楼层
可以在earth文件把image和heightfield都写上,再试一下看行不行。

  <image name="all" driver="VPB">
    <url>../aaa.ive</url>
  </image>
  
  <heightfield name="all-1" driver="VPB">
    <url>../aaa.ive</url>
  </heightfield>

该用户从未签到

发表于 2015-8-17 15:41:32 | 显示全部楼层
发现地形创建这块,问题好多啊,就没有大神能普及一下吗?

该用户从未签到

发表于 2015-12-2 09:09:19 | 显示全部楼层
osgEarth编辑器帮助手册有介绍vpb加载方法:

编辑器下载地址:http://www.sxsim.com/h-col-106.html


sxearth2.0_500_375_2.jpg

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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