查看: 5047|回复: 14

请教osgEarth使用问题

[复制链接]

该用户从未签到

发表于 2010-8-11 06:55:39 | 显示全部楼层 |阅读模式

按照论坛上相关资源改写了一个maps..earth文件,文件中的Test.ive是利用vpb生成的一个地形文件,采用了高斯投影坐标系,故.earthtype项设为projected.earth文件如下:
<map name="tkm" type="projected">
        <heightfield name="terrain-dem" driver="vpb">
                <url> C:\Test.ive </url>
        </heightfield>
</map>

采用win32下的vs2005写如下代码(参考zhufu0208代码)
int _tmain(int argc, _TCHAR* argv[])
{
        int num =1;
        char* path = "D:/maps.earth";
        osg::ArgumentParser arguments(&num,&path);        
        osgViewer::Viewer viewer(arguments);
        osg::ref_ptr<osg::Node> Test_node = osgDB::readNodeFile(D:/maps.earth);
        viewer.setSceneData(Test_node.get());
        viewer.realize();
        std::cout<<path<<std::endl;
        viewer.run();
        return 0;
}

编译通过。调试显示Test_node指针非空,可是整个场景中并没有读入的ive地形文件。将.earth中的C:\Test.ive替换成C:\cow.osg也是同样无法显示出奶牛,不过Test_node指针仍然非空。所有的osgEarth的库已经放入环境变量了。
请教高手这是怎么回事呢,是否.earth中的坐标系设置有错呢?谢谢

该用户从未签到

发表于 2010-8-11 08:28:15 | 显示全部楼层
您查看一下您的osgdb_vpb编译好没,osgdb_vpb.dll 是否加入,您跟踪一下Test_node的节点树试试

该用户从未签到

 楼主| 发表于 2010-8-11 09:47:03 | 显示全部楼层
osgdb_vpb编译成功的阿,osgdb_vpb.dll也加入到环境变量中了的。

该用户从未签到

发表于 2010-8-11 11:52:39 | 显示全部楼层
osgdb_osgearth_vpb.dll,,还有其他的osgEarth生成的库,你都拷贝到osgviewer下,,你用osgviewer读下这个.earth文件看看

该用户从未签到

 楼主| 发表于 2010-8-11 21:32:12 | 显示全部楼层
谢谢,不过试了试还是不行啊,只有蓝色背景,没有看到场景中有任何物体。

该用户从未签到

发表于 2010-8-12 00:01:25 | 显示全部楼层
你试试例子里面带的关于VPB从网络读取模型的earth文件~~~~~~

    <heightfield name="dem" driver="vpb">
        <url>http://www.openscenegraph.org/data/earth_bayarea/earth.ive&lt;/url>
    </heightfield>

该用户从未签到

 楼主| 发表于 2010-8-12 07:32:57 | 显示全部楼层
本帖最后由 hello! 于 2010-8-12 07:34 编辑

谢谢您。按照您的方法,我写了2个.earth文件,一个利用链接,一个利用本地硬盘,分别如下:
    map1.earth文件
<heightfield name="dem" driver="vpb">      <url>http://www.openscenegraph.org/data/earth_bayarea/earth.ive
  </url>
    </heightfield>
map2.earth文件
    <heightfield name="dem" driver="vpb">
        <url>e:\earth.ive</url>
    </heightfield>
两种方式下利用osgviewer都可以成功读入一个球体,但是球上面的纹理全部消失。该earth.ive直接利用osgviewer(没有用osgviewer打开.earth文件)观察如图1所示,但是利用osgviewer map1.earth或osgviewer map2.earth,得到的结果如图2,请问如何才能恢复球体上的纹理呢?谢谢
图1.jpg
图2.jpg

该用户从未签到

发表于 2010-8-12 08:25:48 | 显示全部楼层
<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>

    <heightfield name="dem" driver="vpb">
        <url>http://www.openscenegraph.org/data/earth_bayarea/earth.ive</url>
    </heightfield>

这样试试

该用户从未签到

 楼主| 发表于 2010-8-12 12:50:12 | 显示全部楼层
谢谢啊,按照您的例子,我写了一个.earth文件。不过试了下,没有图形显示。

该用户从未签到

发表于 2010-8-13 00:11:53 | 显示全部楼层
您下载最新的osgEarth的SVN,,里面的test有几个关于VPB的例子,,您编译下试试,同时,请您设置输出详细调试信息,看看输出什么,如果还不行的话,那就没办法了

该用户从未签到

发表于 2011-2-2 18:10:09 | 显示全部楼层
我遇到和楼主相同的问题,不知楼主解决了没有,谢谢

该用户从未签到

发表于 2011-2-2 23:33:35 | 显示全部楼层
这个要根据您个人具体的提示信息来确定,,可能是您编译OSG的问题等等~~~请给出具体详细的提示信息~~~~~~

该用户从未签到

发表于 2011-4-17 11:54:45 | 显示全部楼层
我遇到和楼主相同的问题,osgviewer map.earth在一台机器上没问题,在另一台机器上就看不到什么了,但是利用osgviewer e:\earth.ive 就没问题可以看到地球。
在出错的机器上控制台中出现
warning: detected opengl error “无效操作” at after renderbin::draw()的提示
请问这是什么问题

该用户从未签到

发表于 2011-4-18 08:48:16 | 显示全部楼层
可能是显卡驱动没有更新或者显卡本身对OpenGL某些功能的支持不足

该用户从未签到

发表于 2011-4-19 18:09:33 | 显示全部楼层
感谢array,我把xps的显卡驱动重新安装,竟然就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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