查看: 1954|回复: 4

Android osgDB::readNodeFile读取网络数据

[复制链接]
  • TA的每日心情
    开心
    2020-1-14 14:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2014-3-25 17:22:38 | 显示全部楼层 |阅读模式
    刚接触osg2个月的小菜鸟,遇问题通不过,外界催得紧压力大,故来求援。
    系统:windows xp  sp3
             osg版本301  ndk 8.0  cygwin编译android版本成功
            Eclipse版本v22.3.0-887826
    问题描述:想在android上调用osg,其中涉及osgDB::readNodeFile从网络上读取模型数据。
    AndroidManifest.xml中添加权限:
      <!-- 访问网络和操作SD卡 加入的两个权限配置 -->
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
            <uses-permission android:name="android.permission.INTERNET" />  
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />     
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />

    Android.mk文件部分配置:
    LOCAL_LDFLAGS   :=-L $(LIBDIR) \
    -losgdb_dds \
    -losgdb_openflight \
    -losgdb_tga \
    -losgdb_curl \
    -losgdb_jpeg \
    -losgdb_gdal \
    -losgdb_rgb \
    -losgdb_osgterrain \
    -losgdb_osg \
    -losgdb_osga \
    -losgdb_ive \
    -losgdb_deprecated_osgviewer \
    -losgdb_deprecated_osgvolume \
    -losgdb_deprecated_osgtext \
    -losgdb_deprecated_osgterrain \
    -losgdb_deprecated_osgsim \
    -losgdb_deprecated_osgshadow \
    -losgdb_deprecated_osgparticle \
    -losgdb_deprecated_osgfx \
    -losgdb_deprecated_osganimation \
    -losgdb_deprecated_osg \
    -losgdb_serializers_osgvolume \
    -losgdb_serializers_osgtext \
    -losgdb_serializers_osgterrain \
    -losgdb_serializers_osgsim \
    -losgdb_serializers_osgshadow \
    -losgdb_serializers_osgparticle \
    -losgdb_serializers_osgmanipulator \
    -losgdb_serializers_osgfx \
    -losgdb_serializers_osganimation \
    -losgdb_serializers_osg \
    -losgViewer \
    -losgVolume \
    -losgTerrain \
    -losgText \
    -losgShadow \
    -losgSim \
    -losgParticle \
    -losgManipulator \
    -losgGA \
    -losgFX \
    -losgDB \
    -losgAnimation \
    -losgUtil \
    -losg \
    -lcurl \
    -lOpenThreads \
    -lgdal \
    -ljpeg

    cpp文件使用:
    USE_OSGPLUGIN(ive);
    USE_OSGPLUGIN(osg);
    USE_OSGPLUGIN(osg2);
    USE_OSGPLUGIN(jpeg)
    USE_OSGPLUGIN(curl);
    。。。。。。。。省略

    调用:
    std::string file = "\\\\http://trac.openscenegraph.org/p ... nk/glsl_simple.osgt";
            file = "/mnt/sdcard/OSGFiles/glsl_simple.osgt";//可以的
            file="http://trac.openscenegraph.org/projects/osg/browser/OpenSceneGraph-Data/trunk/glsl_simple.osgt";

            osg::ref_ptr<osg::Node> loadedModel;
            loadedModel = osgDB::readNodeFile(file);
            _root->addChild(loadedModel);
    其中:http的两个路径都不可以,而sdcard的路径可以读取数据并显示。


    手机能连接网络,能启动浏览器并访问到http路径指定的数据。

    请大神指点。




  • TA的每日心情
    开心
    2020-1-14 14:24
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2014-4-9 16:47:03 | 显示全部楼层
    找到了原因,来跟大家分享下
    主要是网络文件地址及网络文件的服务方式的问题
    这样的网址可以加载模型文件:
    http://trac.openscenegraph.org/p ... ta/trunk/glider.osg
    http://trac.openscenegraph.org/data/earth_bayarea/earth.ive
    下面这样的网址不可以:
    https://raw.githubusercontent.co ... data/master/cow.osg

    希望能帮助到那些需要的人

    该用户从未签到

    发表于 2014-4-9 22:56:25 | 显示全部楼层
    谢谢分享,下一步也准备在andoird上读服务器上的模型文件,恬逢其时。
  • TA的每日心情
    开心
    2020-1-14 14:24
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2014-7-23 09:08:58 | 显示全部楼层
    续:
    找到了osgviewer从网络地址获取文件的概况:
    类似这样的地址可以:http://trac.openscenegraph.org/p ... -Data/trunk/cow.osg
    类似这样的地址不可以:https://raw.githubusercontent.co ... data/master/cow.osg

    假如我有一堆生成好的文件,我该如何把它存放到网络上呢?以前是挂在google代码管理器上的,输入文件的网络地址给osgviewer http://XXX.googlecode.com/svn/trunk/XXX/XXX.osg能够正常读取文件,现在google屏蔽了。

    尝试过把文件放到CodePlex,CodeProject,GitHub等上面,都没能成功通过文件的网络地址读取文件。

    目前还不想自己建立网站来挂载文件。

    主要问题是不明白文件应该以怎样的参数设置挂载到网站才会被osgviewer识别,知道osgviewer内部用的curl来处理的网络地址,但是略知一二,对解决目前的问题没有帮助。

    求教大神指点。谢谢。



  • TA的每日心情
    开心
    2020-1-14 14:24
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2014-10-29 14:22:14 | 显示全部楼层
    续:
    readNodeFile要读取的网络文件地址能否成功和mime类型有关。
    将文件放置到网站文件夹下,设置网站MIME类型为下载。
    在浏览器打开文件地址,如果出现的是下载文件处理则该网络文件地址可用.
    可在局域网测试
    局域网服务器建立局域网网站,假定网站放置在文件夹aaa下。
    将osg文件放置到aaa下面,假定:test.ive
    设置网站mime类型,后缀.ive文件为下载。
    打开浏览器,输入地址:http://192.168.1.202/aaa/test.ive,如果出现下载处理,
    则readNodeFile("http://192.168.1.202/aaa/test.ive")应该可用。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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