osg
鱼月半
乏善可陈
展开
-
移植动态库到新的系统环境下的一个小提醒
如果库文件是动态库,只复制粘贴是不行的,还需要将动态库放入共享库的缓存中。等一系列的动态库,复制到新的一台linux设备中,并放在。原创 2024-02-21 18:01:01 · 246 阅读 · 0 评论 -
osgEarth中出现simsum.ttc: file not handled的告警信息的处理办法
解决simsun.ttc:file not handled的问题原创 2022-08-25 20:35:56 · 861 阅读 · 0 评论 -
osg::ref_ptr智能指针使用时的一个注意点
在使用OSG时,发现会出现一些报错,比如之前有过一些别的猜测,但是后来发现,引发类似报错的原因,还有可能是指针的使用错误。利用osg编程的同学应该都知道有一个超级指针,osg::ref_ptr的存在,他类似于指针,但又与普通指针不同如:与是相似但不同的,具体的区别可以自行百度,本案例只是提醒一下,如果混着用,会出现一些莫名其妙的报错。那什么时候会混着使用呢?比如在一个函数传参的时候:头文件如下:以上为错误示范,就会报错正确的写法为:即传参时,超级指针和普通指针并不能通用,直接赋值。原创 2022-07-09 15:39:25 · 773 阅读 · 0 评论 -
osgEarth2.10中用setNode替代setTetherNode设置视点跟踪
在以前的版本中,可以很简单的使用setTetherNode进行视点跟踪设置。以前的方法: osg::ref_ptr<osg::Group> mRoot = new osg::Group(); //设置根节点 osgViewer::Viewer * pViewer = new osgViewer::Viewer(); osg::MatrixTransform* mtFly = new osg::MatrixTransform;//创建一个模型 mRoot->addChild(mtF原创 2022-03-15 12:53:57 · 1357 阅读 · 0 评论 -
osg导入模型时,模型全黑的原因及解决方法分析
在导入飞机模型时,发现模型是黑咕隆咚一片,然后翻阅资料,找到三个可能性。(一)几何模型没有法线导致(二)模型放大缩小(三)没有给模型添加光源原创 2022-02-27 17:03:12 · 2499 阅读 · 2 评论 -
利用osgQOpenGLWidget将osgEarth嵌入Qt窗口界面时键盘无响应
在利用osgQOpenGLWidget将osg嵌入到Qt界面进行显示时,出现一个奇怪的现象。在窗口内,鼠标正常,但是键盘无响应。打印输出看了一下。确定是就没有响应。 if(ea.getEventType()!=ea.FRAME) qDebug()<<ea.getEventType();(一)原因分析后来发现,是因为osgQOpenGLWidget的窗口插件默认状态下,他的Focus策略是noFocus,所以键盘不会将焦点集中到这个插件里,因此对键盘原创 2022-02-25 13:08:34 · 1958 阅读 · 4 评论 -
利用osgText解决osgEarth控件中文显示问题
环境:操作系统:x86,ubuntu20.04。osgEarth 2.10。osg3.6.4.以LabelControl控件为例:划重点:利用osgText解决中文显示问题具体的做法:(一)pro文件添加osgText的引入。注意,引用目录根据自己的实际情况填写。unix:!macx: LIBS += -L$$PWD/../../osg/osg_osgearth_install/osg/lib/ -losgText(二)生成控件并显示中文#include <osgEarth原创 2022-02-25 10:26:03 · 1170 阅读 · 0 评论 -
简述OSG中osgQt和osgQOpenGL的关联和区别
如果想利用Qt平台进行OSG相关的开发,大概是绕不过去osgQt这个库的。每天都会有人问,osgQt相关的问题。在这里把我大概了解的部分内容,简单说明一下。以往通常说的osgQt,指的是在OSG的3.4版本以前使用的,在Qt中用来加载OSG相关功能模块并嵌入到QWidget中显示的一个库。在3.6以后的新版本中已经被淘汰了,在OSG的3.6版本以后,使用的类似功能的库,叫做osgQOpenGL。而osgQt和osgQOpenGL的区别,不是我要说的重点,可以自行百度了解。下面这个表格更清晰直观。原创 2022-02-23 17:49:54 · 1972 阅读 · 2 评论 -
Qt中undefined reference to报错的三种可能性和解决方法(以libgdal为例)
有一段代码很久没动了,今天想跑起来编译看看,突然发现出现一堆报错,如下:好吧,首先我能保证的是,有之前调试代码过程中,这些报错一定是没有出现的。最近也没什么动作,怎么就忽然就出现了。不管怎么说,解决问题是关键。单纯这个报错内容来看,很典型的undefined reference to的报错,这个报错在调用第三方库的编程中,简直是家常便饭,代表的含义也很明确,就是找不到函数的定义。用C++写代码的都知道,在C++中,代码是分为声明和定义的,声明就是告诉编译器有这个函数,换言之,就是个名字,而定义,就原创 2022-02-23 17:20:42 · 53092 阅读 · 3 评论 -
osgEarth的PlaceNode函数不显示中文或显示中文乱码的解决方法
解决方法很简单,就是添加一个风格函数,尤其是,注意设置字体和编码方式 osgEarth::Style style; osgEarth::Symbology::TextSymbol * textStyle = style.getOrCreateSymbol<osgEarth::Symbology::TextSymbol>(); textStyle->fill()=osgEarth::Symbology::Color(osg::Vec4f(1.0,0.0,0.0,0.5原创 2021-12-19 22:52:47 · 1728 阅读 · 0 评论 -
osgEarth2.10.2添加label标签不显示的一个可能原因及正确添加方法
最近在尝试给小地球添加一些标签,比如指示城市名,但是一直添加失败。1 不显示的原因后来发现,原来不是我添加失败,而是在添加标签的时候,如果不指定填充色和轮廓颜色,默认是白色,好巧不巧的,我添加标签的位置是白色背景,所以一直看不到,所以其实标签添加成功了,只是因为颜色的缘故,看不见罢了。2正确添加标签的方法在osgEarth2.10.2中正确添加标签的方法如下: osg::ref_ptr<osg::Group> mRoot = new osg::Group(); //智能指针方式原创 2021-12-18 22:55:18 · 2007 阅读 · 0 评论 -
osgEarth2.10.2中添加城市名称标签的一种方法
最近想添加一个城市标签名,折腾半天,后来发现,在osgEarth的安装文档里,有一个tests文件夹,里面有一个叫做feature_labels.earth的文件,里面如下显示:<!--osgEarth SampleThis shows how to label point features with an attribute.--><map name="Feature Geometry Demo" type="geocentric" version="2">原创 2021-12-18 21:12:55 · 1247 阅读 · 4 评论 -
使用osgearth_cache --list快速查看需加载影像的参考系,经纬度范围等信息
偶然之间,发现用osgearth_cache --list能看见被加载影像的参考系的信息,还有经纬度范围等,如下:ybw@ybw-MRC-WX0:~/work/qtproject/build-OSGObject-unknown-Debug$ osgearth_cache --list simple.earth Cache config: { "cache" : { "path" : "/media/ybw/SSD/OSG_DATA/MAIN_DATA/FileCache",原创 2021-12-10 20:57:16 · 310 阅读 · 0 评论 -
使用osgearth_cache对*.earth进行缓存时,包含矢量数据可能导致死循环的提醒
1 问题的发现最近在用osgearth_cache对*.earth进行缓存时,发现往往会卡在一个进程中:my@my-MRC-WX0:~/work/qtproject/build-OSGObject-unknown-Debug$ osgearth_cache --seed simple.earth[osgEarth] Seeding layerworld_boundaries就是进行不下去了。一开始我以为是卡住了,或者是那个图层的源数据太大了导致的。后来发现,保存缓存数据的文件夹还一直在增大,虽然原创 2021-12-10 20:31:14 · 827 阅读 · 0 评论 -
osgEarth2.10.2中关于空间参考系的一些理解
在利用osgEarth进行开发的过程中,尤其是在编写*.earth的过程中,如下:<map name="test" type="geocentric"> ………………</map>你可能会出现跟我类似的疑惑,这个geocentric,到底是个什么东西。通过翻阅osgEarth2.10的帮助文档(帮助文档是个好东西),会发现这么一个类osgEarth::SpatialReference,顾名思义,翻译成中文,就是空间参考。你还会发现一个出现频率很高的英文缩写,SRS,即Spa原创 2021-12-08 23:46:05 · 1855 阅读 · 1 评论 -
在使用osgdem时报错,“error:Now checking for plug-in osgPlugins-3.6.4/osgdb_nvtt.so“
错误是一眼就能看懂的,就是缺少一个osgdb_nvtt.so的库,回去查osg3.6.4的CMakeList.txt,发现在nvtt一栏,是NOFOUDND。解决起来也简单,如果是联网的ubuntu,只需要一句命令sudo apt-get install libnvtt-dev然后重新编译osg3.6.4就行。另外提一句,nvtt就是nvidia-texture-tools。于是顺便把NVIDIA的驱动和CUDA也安装上了。......原创 2021-12-05 23:46:22 · 528 阅读 · 0 评论 -
osgEarth-2.10.2中对Layer强制转换为XXX_Layer(如ImageLayer)的方法
osgEarth中对Layer强制转换为XXX_Layer的方法原创 2021-11-30 22:31:59 · 1879 阅读 · 0 评论 -
osgEarth-2.10.2读取*.earth文件后,对其option内容(如Image和elevation等)属性参数进行修改的方法
osgEarth读取*.earth文件后,对其option内容(如Image和elevation等)属性参数进行修改的方法原创 2021-11-30 22:12:26 · 1495 阅读 · 2 评论 -
在Qt中调用外部库(如osgEarth库)时,发生程序异常结束的一种可能性
在今天学习osgEarth的过程中,为了实现在地球上画一个国界线和省界线,在earth文件中加了这么一部分内容:<image name="world_boundaries" driver="agglite"> <features name="world" driver="ogr"> <url>/home/lccy/work/osg/data/worldShp/world.shp</url> <build_spatial_index>tr原创 2021-11-28 23:43:52 · 1099 阅读 · 0 评论 -
利用osgEarth在画国界线时报错“Crop failed - GEOS not available”
一、原因分析仔细观察,会发现,除了Crop failed - GEOS not available的报错外,还有please compile osgEarth with GEOS那么问题就很明显了,就是找不到GEOS的模块,我一开始很疑惑,编译osgEarth的过程中,GEOS应该是需要解决的依赖之一,后来仔细回忆,想起来了,我当前使用的系统,ubuntu,他安装的osgearth和osg,是通过命令行sudo apt-get install openscenegraphsudo apt-原创 2021-11-28 15:51:47 · 635 阅读 · 0 评论 -
使用Qt构建osgQt静态库在osg3.6.4中使用(附osgQt源码下载地址)
osgQt库在osg3.4以后就给取消了,现在一般使用osgQOpenGL库替代,但是网上能搜到的教程里,常见的使用方法,还是以osgQt居多,因此,逼得我只能自己去编译一套osgQt的库文件。有如下几个注意点。首先是下载osgQt的地址,github上的osgQt实际上是osgQOpenGL的代码,我们要找osgQt的源码。所使用的环境是ubuntu20.04,x86,Qt,qtCreator,系统自带的gcc和g++编译器。注意,生成动态库可能会不太好用,最好生成静态库,即libosgQt.a文原创 2021-10-31 23:37:27 · 1847 阅读 · 1 评论