OSG/OSGEarth开发
文章平均质量分 52
如何快速入门图形开发?目前国内C++图形开发基本绕不开OSG这个图形库。本专栏包含OSG/OSGEarth的编译环境搭建、基础知识篇以及一些实用技巧,可帮助你快速上手图形开发。
欧特克_Glodon
C++开发Qt/MFC,三维可视化OpenGL/osg/cesium,GIS应用开发,矿山智能通风算法研究,AutoCAD二次开发(Arx开发)。
展开
-
使用八叉树结构来管理场景
粗的级别就显示粗的内容,细的级别就加载细的内容,就像高清影像的瓦片一样,第0级可以是整个地球,分辨率是256X256,然后一分为八,每张图片的范围变成了第0级的八分之一,但是分辨率仍然是256x256,就越往下拉越清晰。本节我们就来构建这样一个八叉树的结构,本节如果你搞明白了,就入门了八叉树的结构,因为在构建树状结构的时候往往会用到递归。LOD和PagedLOD都大量的用作构建数字地球等,其实原理都和本节差不多。我们仍然来拿地球来想象,Level0是最粗的球,我们离的很远的时候是这个球。...转载 2022-07-18 16:38:09 · 688 阅读 · 2 评论 -
OSG管道建模及流动多路径动画模拟
1、实现几何计算来创建管道和弯头模型,然后将计算所得的点、法线、面索引转换为osg::Geometry及osg::Geode。支持纹理材质。不需要依赖建模三方库。2、用户可以通过传入路径点进行管道的自动创建,包括弯头。3、实现多条管道路径的路径动画模拟。原创 2024-06-03 17:52:16 · 1295 阅读 · 0 评论 -
基于OSG+ImGui制作三维模型编辑器,实现三轴方向的实时平移、旋转和缩放变化
基于OSG+ImGui制作三维模型编辑器,实现三轴方向的实时平移、旋转和缩放变化原创 2024-06-03 08:36:49 · 1518 阅读 · 0 评论 -
利用Cmake+VS2017+osgearth2.10.2+OSG3.6.4编译OSGEarth
利用Cmake+VS2017+osgearth2.10.2+OSG3.6.4编译OSGEarth原创 2021-04-06 23:30:14 · 1037 阅读 · 0 评论 -
OSG路径动画:osg::AnimationPath示例
OSG路径动画:osg::AnimationPath示例原创 2023-11-14 17:59:53 · 266 阅读 · 0 评论 -
OSG交互:选中场景模型并高亮显示
OSG交互:选中场景模型并高亮显示原创 2023-11-10 13:40:19 · 1292 阅读 · 0 评论 -
OSG多视口创建:osgViewer::CompositeViewer
osg使用类osgViewer::CompositeViewer创建多场景视图原创 2023-11-04 13:50:23 · 480 阅读 · 0 评论 -
OSG粒子系统特效-----雨雪、爆炸、烟雾
OSG粒子系统特效-----雨雪、爆炸、烟雾原创 2023-10-18 23:11:07 · 1026 阅读 · 0 评论 -
osg/CaptureCallback:添加键盘响应抓图
#include "stdafx.h"#include <windows.h>#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Geometry>#include <osg/Group>#include <osg/Billboard>#include <osg/Texture2D>#i原创 2021-06-03 21:10:07 · 361 阅读 · 0 评论 -
osgEarth——搭建MFC桌面端程序框架
本文主要介绍基于MFC创建osgEarth桌面端程序。1、新建MFC应用程序DigitalEarth,选择单个文档。2、实现osgEarth相关功能。2.1、创建OSGObject.h文件,输入如下代码:OSGObject.h#pragma once#include <osgViewer/Viewer>#include <osgDB/ReadFile>#......转载 2020-04-26 00:09:43 · 1789 阅读 · 2 评论 -
OSG/TextureCubeMap 立方贴图天空盒示例
原来实例带的图片不清楚,换做了opengl入门里面的图片:#include <osgViewer/Viewer>#include <osg/Vec3>#include <osg/Vec4>#include <osg/Quat>#include <osg/Matrix>#include <osg/ShapeDrawable>#include <osg/Geometry>#include <osg/Ge原创 2021-06-11 13:23:05 · 1738 阅读 · 2 评论 -
OSG/Geometry 索引绑定几何体绘制实例
#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Group>#include <osgDB/ReadFile>#include <osgDB/WriteFile>#include <osgUtil/Optimizer>#include <osgViewer/ViewerEventHand原创 2021-06-10 14:16:23 · 1015 阅读 · 1 评论 -
osg实例-写个简单的操作器
转自简书-杨石兴 https://www.jianshu.com/p/f634e7498093功能说明首先绘制一个场景如下,场景中间放着模型axes.osgt这个模型,它指明了xyz轴的方向,然后我们在xy方向,从-5~5,间隔0.5绘制网格,然后我们操作器的功能是:点击a围绕z轴,眼睛看着(0,0,0)点,高度在5,逆时针旋转 点击d则顺时针旋转。代码如下:#include <windows.h>#include <osgViewer/viewer>#include转载 2021-07-02 22:21:51 · 1304 阅读 · 0 评论 -
OSG/PageLOD osg分页细节层次节点
#include "stdafx.h"#include <windows.h>#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Geometry>#include <osg/Group>#include <osg/Switch>#include <osg/Billboard>#inc原创 2021-05-11 09:24:00 · 1658 阅读 · 2 评论 -
二、OSG(OSGEarth)在MFC中的使用——对话框或单文档窗口嵌套OSG
1、MFC显示效果对话框显示单文档显示2、具体实现过程2.1 对话框实现 1)利用MFC创建对话框,利用上一篇的方法将OSG通过Visual Studio 中的nuget插件集成到工程中,然后在你的osg sample里面找到两个文件:MFC_OSG.h 和 MFC_OSG.cpp,我的文件路径是D:\vcpkg_master\buildtrees\osg\src\raph-3.......原创 2020-05-03 13:36:43 · 2378 阅读 · 0 评论 -
osgearth加载倾斜摄影数据
osgearth运用的mapbox的XYZ瓦片地图,效果图如下:代码如下:#include <iostream>#include <string>using namespace std;#include <QDir>#include <osgViewer/Viewer>#include <osgDB/ReadFile>#include <osgDB/WriteFile>#include <osg/Geod原创 2022-05-19 14:28:06 · 940 阅读 · 3 评论 -
OSG/Simplifier osg简化几何体
// OSGExamples.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Geometry>#include <osg/Group>#include <osg/Billbo原创 2021-05-06 17:46:26 · 1534 阅读 · 0 评论 -
osgEarth2.10 加载arcgis瓦片数据和矢量shp数据
osgEarth加载arcgis瓦片数据和矢量shp数据原创 2021-06-20 17:52:59 · 2998 阅读 · 14 评论 -
OSG数据加载性能优化:纹理压缩
1、理论知识我们都知道,纹理的存储是RGBA,这四个数字假如不压缩的话其占用的存储空间是相当大的,每个通道按0~255 一个字节来计算,一个像素RGBA是4个字节(byte),一个1024x1024这么大的图片会占用1024x1024x4=4M。如果不经压缩,一个GPU显存在4GB的显卡,也只能存储1024张1024x1024的图片。这显然不合常理。有时候我们在处理tiff图像时,指定不使用压缩,则随便一个大小出来就是几十个GB,那就是什么显卡也存不了了。所以无论是CPU还是GPU都支持对纹理进行压缩转载 2021-07-06 08:48:08 · 3125 阅读 · 0 评论 -
osgEarth 加载矢量shp数据
#include "stdafx.h"#include <Windows.h>#include <iostream>#include <string>using namespace std;#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Geometry>#include <osg/Gro原创 2021-05-14 14:37:13 · 3004 阅读 · 4 评论 -
OSG/osg创建三维管线
首先上效果图:具体实现代码简单如下:int main(int argc, char *argv[]){ osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer; osg::ref_ptr<osg::Group> root = new osg::Group; // 添加场景数据 PipeParam pipeParam1, pipeParam2; pipeParam1.BeginPoint =原创 2021-06-21 23:37:47 · 1317 阅读 · 6 评论 -
OSG/Delaunay osg三角网绘制
#include "stdafx.h"#include <windows.h>#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Geometry>#include <osg/Group>#include <osg/Billboard>#include <osg/Texture2D>#原创 2021-05-06 22:45:27 · 1399 阅读 · 0 评论 -
osg/ClipPlane:平面裁剪示例(1)
#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Group>#include <osg/ClipPlane>#include <osg/StateAttribute>#include <osgDB/ReadFile>#include <osgDB/WriteFile>#include &原创 2021-05-17 14:11:51 · 1207 阅读 · 0 评论 -
osgearth2.10使用arcgis在线地图服务示例
#include "stdafx.h"#include <Windows.h>#include <iostream>#include <string>using namespace std;#include <osgViewer/Viewer>#include <osg/Node>#include <osg/Geode>#include <osg/Geometry>#include <osg/Gro原创 2021-05-18 09:16:25 · 1667 阅读 · 4 评论 -
利用osgQt创建osg模型显示器
1、先看效果图:2、版本osg3.6.4+Qt5.13.2如何为Qt项目 添加第三方库头文件和lib?打开“.pro”项目文件:在最结尾部位添加如下代码:win32: LIBS += -LD:/OSGCore/Debug/lib/ -lOpenThreadsd // 依赖的lib名称win32: LIBS += -LD:/OSGCore/Debug/lib/ -losgdwin32: LIBS += -LD:/OSGCore/Debug/lib/ -losgDBdwin32: LIBS +=原创 2021-07-11 23:38:02 · 988 阅读 · 1 评论 -
对比分析OSG与Cesium中模型LOD的异同
1. LOD 熟悉渲染的读者可能经常听到LOD(Level Of Detail),也就是用不同的细节层次来表达同一个对象。比如下图中的雕像,从左到右精细度越来越低,最后甚至仅剩一个轮廓,已经看不出人形。那可能有人会问:为什们要用这么多不同精细度的模型来表达同一个对象呢?归根到底,还是计算机算力不足导致的。 一个复杂的三维场景可能由很多对象组成,如果每个对象都用精细模型渲染,就会增加计算机的渲染负担,难以保证流畅的帧率。为了尽量保持渲染质量不变,图形学研究者提......转载 2021-11-25 14:50:45 · 2245 阅读 · 0 评论 -
OSG数据加载性能优化:合并几何体
1、理论知识OSG最终绘制的都是osg::Geometry,然后Geometry会存放在Node里。比如我们要绘制10条线,那么我们有两种方法,一种方法是定义10个Geometry,每个Geometry定义两个顶点绘制1条线。另一个方法是我们定义1个Geometry,里面放20个顶点,一次性绘制10条线。这两种方法的性能差异很大。方法一因为定义了10个Geometry,那么CPU端就会做Event、Cull、Update、Draw都会针对10个结点来做,很花性能。GPU也会接受10次来自CPU端的数据,转载 2021-07-05 13:36:17 · 3346 阅读 · 0 评论 -
OSG为模型或地形添加纹理图片
OSG为模型添加纹理图片共分为两种方式,一种是自动方式,一种自定义顶点方式设置纹理坐标。下面用两个例子来演示。纹理图片如下:1、自动方式以最熟悉的牛模型为例,将图片贴到牛身上,效果如下:代码如下:#include "pch.h"#include <iostream>#include <stdlib.h>#include <windows.h>#include <osgViewer/Viewer>#include <osg/No原创 2022-05-20 16:30:37 · 2044 阅读 · 1 评论