osgDB::writeNodeFile(node, path, new osgDB::Options("noTexturesInIVEFile")); noTexturesInIVEFile:选项可以在写ive模型文件的时候只写纹理文件对应的路径,而不是默认的将纹理数据写入ive文件 更多参数,可以查看ReaderWriterIVE.cpp文件中的定义 osg::Node* osgbNode=osgDB::readNodeFile(osgbModelFile, new osgDB::…
参考:http://blog.sina.com.cn/s/blog_7cdaf8b60102uzu3.html http://blog.csdn.net/wang15061955806/article/details/51011466 osgDB机制概述 osgDB库允许用户程序加载.使用和写入3D数据库,它采用插件管理的架构,可以支持大量常见的2D图形和3D图形文件格式.osgDB负责维护插件的信息注册表,并负责检查将要被载入的OSG插件接口的合法性.由于大型3D地形数据通常是多段数据块的组合…
参考: osgPlugins相关 osg读取文件的原理(插件工作机制) 当使用osgDB读取文件时,会自动根据文件的扩展名来到插件目录中寻找相应的插件,来实现. 比如: osgviewer cow.osg 调用了osgdb_osg插件去读*.osg文件. osgviewer model.flt 调用了osgdb_flt插件去读*.flt文件. 使用代码我们是使用如下代码读取写入模型: //读取 #include <osgDB/ReadFile> osg::ref_ptr<Node>…
/** Gets the parent path from full name (Ex: /a/b/c.Ext => /a/b). */extern OSGDB_EXPORT std::string getFilePath(const std::string& filename);/** Gets the extension without dot (Ex: /a/b/c.Ext => Ext). */extern OSGDB_EXPORT std::string getFileExt…
你的PagedLOD 为什么没有卸载 转自:http://bbs.osgchina.org/forum.php?mod=viewthread&tid=7612&highlight=PagedLOD&_dsign=ed8fb143 分页对于大型场景而言是一个必不可少的调度渲染技术.当你发现osg自身就带有PagedLOD 功能时,何尝不兴致冲冲的立即使用.可是,在使用时突然发现只有加载没有卸载,内存随着运行不断攀升,过期的PagedLOD 节点竟然没有被osg踢出内存?苦恼啊,纠结啊…
DatabasePager加载数据的过程: 多线程 使用DatabasePager加载数据的流程: 左侧的图框表示数据的检索和输入, 中间的白色框表示用于数据存储的内存空间,而右边的图框表示存储数据的输出.此外,蓝色图框表示可以在DatabaseThread线程中完成的工作, 而橙色图框表示由线程之外的函数完成的工作. void DatabasePager::DatabaseThread::run() { OSG_INFO<<_name<<": DatabasePager…
原文:https://blog.csdn.net/u011310341/article/details/51179948 #include "stdafx.h" #include<osgViewer/Viewer> #include<osgDB/ReadFile> int main(int argc, char **argv){ osgViewer::Viewer viewer;//定义一个视景器 osgDB::Options *a = new osgDB::O…
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Release x64 ------1> Checking Build System1> CMake does not need to re-run because O:/OpenSceneGraph/OpenSceneGraph_3_6_build/CMakeFiles/generate.stamp is up-to-date.1> CMake does not need to re-run because…
使用osg加载fbx模型,需要自己编译fbx插件,编译流程与插件使用案例如下 代码地址:https://github.com/shelltdf/osgFBX CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctly in the CMake fil…
1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了,1998年Don burns 遇到了同样喜欢滑翔机和计算机图形学的Robert Osfield ,从此Robert Osfield加入了osg小组的开发并一直担任开发小组的组长. Ø OSG不但有openGL的跨平台的特性和较高的渲染性能,还提供了一系列可供3D程序开发…
测试平台(1)Fedora19 x86 [cc@localhost ~]$ lspci | grep VGA :) :00.0 VGA compatible controller: NVIDIA Corporation GK107M [GeForce GT 645M] (rev a1) (2)Python 2.7(3)Osg 3.2.0(4)cmake 2.8(5)gcc 4.8.2 #include <Python.h> #include <iostream> #include…
OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了,1998年Don burns 遇到了同样喜欢滑翔机和计算机图形学的Robert Osfield ,从此Robert Osfield加入了osg小组的开发并一直担任开发小组的组长. Ø OSG不但有openGL的跨平台的特性和较高的渲染性能,还提供了一系列…
参考:http://blog.csdn.net/cccstudyer/article/details/17691893 通过\src\osgEarthDrivers\earth\ReaderWriterOsgEarth.cpp文件 ReaderWriterEarth类,用来解析“earth”文件 在文件225行的readNode函数 virtual ReadResult readNode(std::istream& in, const osgDB::Options* readOptions) c…
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake does not need to re-run because E:/OpenSourceGraph/VirtualPlanetBuilder_0_9_build/CMakeFiles/generate.stamp is up-to-date.1> CMake does not need to re-run…
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library is open source and may be redistributed and/or modified under * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * (at your option) any later v…
virtual void apply(osg::Geode& node) { ; i < node.getNumDrawables(); i++) { osg::Geometry* geometry = dynamic_cast<osg::Geometry*>(node.getDrawable(i)); if (geometry) { //apply(*g); //*********************************************** //解析顶点 osg…
OSGB数据输出时压缩数据大小,采用如下设置 osgDB::writeNodeFile(*osgbNode, "xxx/xxxx.osgb", new osgDB::Options("WriteImageHint=IncludeData Compressor=zlib")); 即可.…
前言: 最近工作需要将arcgis的wmts服务接入我们的3DGis系统平台,要求用户只输入一个rest模式的wmts服务地址,系统即可自动获取并解析其元数据信息,生成wmts图层,并渲染显示.经过多种尝试,最终通过参考修正osgEarth,获得了我们需要的效果.过程中竟然花了3天编译osgEarth,搞的很崩溃,还好最终搞定了.现将过程和收获及教训写下! 正文: 开始计划用libcurl获取服务xml文档,然后用libxml2进行解析,实际使用中发现 http://localhost:6080…
本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相互分形并学习的平台,我希望我每个人可以将我们认为有价值的东西,在不损害他人利益的情况下分享给更多的人. 多视口 多视口的原理是自己创建所有的相机,包括主相机,这样我们可以随意的添加相机. 首先我们要创建视口必须有以下几件东西,第一,了解整个屏幕的分辩率有多大,这样可以分辩视口的大小,好分割开来.第二…
支持手机,PC最好的是jquery photoClip插件,下载地址&示例:https://github.com/topoadmin/photoClip demo.html 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge&quo…
ReadResult result; osg::ref_ptr<osgDB::ReaderWriter> reader = osgDB::Registry::instance()->getReaderWriterForExtension("tif"); std::string name("D:\\gd.tif"); osgDB::ReaderWriter::Options* opt= NULL; osgDB::ReaderWriter::ReadR…
  在使用OSG(OpenSceneGraph)存储带纹理osgb格式的过程中,大家会遇到这样一种情况:存储后的osgb文件所占用的大小远大于原始文件的大小,几倍至几十倍.这是为何呢?原因是OSG默认的存储格式是不压缩存储,所以解决方案就是设置参数将存储格式改为压缩存储.方法如下: osg::ref_ptr<osgDB::ReaderWriter::Options> options = new osgDB::ReaderWriter::Options; options->setOptio…
osg实例介绍 转自:http://blog.csdn.net/yungis/article/list/1 [原]osgmotionblur例子 该例子演示了运动模糊的效果.一下内容是转自网上的:原理:引用内容对于运动画面,将当前帧画面与上一帧画面进行alpha融合,以产生出残影——运动模糊效果.通过使用累积缓存来完成这项工作.OpenGL提供一个累积缓存,可以用来存储当前指定的颜色缓存里面的内容,并进行一定的运算操作.通过函数glAccum可以对累积缓存进行操作. glAccum介绍如下:引用…
转自:http://blog.csdn.net/timothyfly/article/details/7826139 osg格式文件中如何处理多个节点共享一个子节点 下面一段程序中,共有三个Group类型根节点:root,grp1和grp2:两个Geode类型节点:geode1和geode2.他们之间的从属关系是:grp1,grp2和geode2是root的孩子,geode1和geode2是grp1的孩子,geode2是grp2的孩子. .osg格式的文件存储像geode2这个的节点时,采用'U…
数据库的应用——直接从内存中读取osg节点 目的:要从数据库中读取节点数据到osg. 一开始的方法是这样的,每当我要添加一个数据库中的节点数据时,首先把它读取到内存中,然后写入一个文件,最后再次从文件中用osg的osgDB::readNodeFile()读取,这个方法是可行的,但是却很糟糕.我的初衷是不要经过文件转换. 现在问题解决了,多亏了osg::ReaderWriter提供一个虚函数: virtual ReadResult  readNode (std::istream &, const…
观察MyReadFileCallback结构体的内容,可以发现它继承自osgDB::Registry::ReadFileCallback,并重载了一个函数readNode,分析源代码可知,该函数在osgDB::readNodeFile函数中被调用,即,在加载模型文件时,即会调用 MyReadFileCallback结构体所重载的readNode函数并执行相应的内容.示例程序中该函数的内容如下:class MyReadFileCallback : public osgDB::Registry::R…
因为对于globalmap不熟悉,不怎么怎么修改高程,好像也没有这功能. 干脆自己手动修改了高程图tiff了 由于自身一直使用osg的 自己使用了osgDB直接读取tiff,修改后保存的. 同事小周一直研究gdal,她使用了gdal库直接改的,事实证明在专业gis处理上还是gdal更合适,现在把两种方式都总结一下: 第一种:通过osgDB修改tiff #include <osg/Image> #include <osgViewer/Viewer> #include <osgE…
VS新建一个空的DLL工程 ReaderWriterS3C.cpp源文件 #include <osg/Notify> #include <osgDB/FileNameUtils> #include <osgDB/FileUtils> #include <osgDB/fstream> #include <osgDB/Registry> #include <iostream> #include <stdio.h> #inclu…
1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Debug x64 ------1> Checking Build System1> CMake does not need to re-run because E:/OpenSourceGraph/OSG_VS2013/OpenSceneGraph-3.4.0/build_vs201304/CMakeFiles/generate.stamp is up-t…
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake does not need to re-run because O:/OpenSceneGraph/OpenSceneGraph_build/CMakeFiles/generate.stamp is up-to-date.1> CMake does not need to re-run because O:/Ope…