项目实战:Qt+OSG三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)
需求
开发基于osg的三维点云引擎模块。
1.基于x,y,z坐标轴。
2.可设置原点,设置缩放比例。
3.可设置y轴和z轴单位。
4.三轴中,XY为2D图的水平、竖直方向;Z轴,对应高度图中的double型高度。
5.引擎中心可设置。
6.可设置引擎中心点,可以拽拖绕中心点旋转模型。
7.可以单独以引擎中心点绕X,Y,Z轴旋转,拽拖时旋转.
8.可以组合XY,XZ,YZ轴旋转,拽拖时旋转。
9.根据输入的bmp图片以及建模的txt高度文件,呈现点云。
10.可复位坐标系,可清楚导入的点云。
附赠功能:
11.支持导入图片,随机高度进行点云模拟。
12.支持导入cvs点云文件(当前仅解析点)。
体验下载地址
CSDN免积分下载地址:https://download.csdn.net/download/qq21497936/16388051
QQ群下载地址:1047134658(点击“文件”搜索“osg3D”,群内与博文同步更新)
Demo
Demo部分源码
#ifndef OSGWIDGET_H
#define OSGWIDGET_H
/************************************************************\
* 控件名称: osg3D点云定制
* 控件描述:
* 1.基础三维框架
* 2.可设置中心点
* 3.鼠标中键按下后可移动中心点
* 4.支持导入bmp,bmp+z文件,cvs点云文件
* 5.支持清空数据,复位视角等操作
* 作者:红模仿 联系方式:QQ21497936
* 博客地址:https://blog.csdn.net/qq21497936
* 著作权信息
* 作者:红胖子(AAA红模仿)
* 公司:长沙红胖子网络科技有限公司
* 博客专家地址:blog.csdn.net/qq21497936/article/details/102478062
* 联系方式:QQ(21497936) 微信(yangsir198808)
* 版本信息
* 日期 版本 描述
* ... ... ...
* 2021年04月02日 v2.0.0 3D点云导入,XYZ周固定旋转,复位,清空
导入文件格式支持导入bmp,定制bmp+z,cvs文件
\************************************************************/
#include <QWidget>
#include "OsgViewerWidget.h"
#include "MyManipulator.h"
class AnimationPathCameraMainpulator;
namespace Ui {
class OsgWidget;
}
class OsgWidget : public QWidget
{
Q_OBJECT
public:
explicit OsgWidget(QWidget *parent = 0);
~OsgWidget();
public:
bool getFixXAxis() const;
void setFixXAxis(bool fixXAxis);
bool getFixYAxis() const;
void setFixYAxis(bool fixYAxis);
bool getFixZAxis() const;
void setFixZAxis(bool fixZAxis);
public:
bool loadFile(QString imageFile, int minZ, int maxZ);
bool loadFile(QString imageFile, float z);
bool loadFile(QString imageFile, QString cloudZFile);
bool loadFile(QString cvsFile, QColor color);
void clear();
void resetCoordinate();
protected:
void initOsg(); // osg初始化
void loadNode(osg::ref_ptr<osg::Node> pNode);
// 加载场景根节点
protected:
osg::ref_ptr<osg::Node> create3DPointCloud(); // 创建总场景
osg::ref_ptr<osg::Node> createAxisAndGrid(); // 创建坐标轴和线格
osg::ref_ptr<osg::Node> createTickLabel(); // 创建坐标轴的tickLabel和单位
osg::ref_ptr<osg::Node> createCloud(std::vector<osg::Vec3> &vectorVec3Vectex,
std::vector<osg::Vec4> &vectorVec4VectexColor);
// 创建点云
protected:
void resizeEvent(QResizeEvent *event);
void keyPressEvent(QKeyEvent* event);
void keyReleaseEvent(QKeyEvent* event);
void mousePressEvent(QMouseEvent* event);
void mouseReleaseEvent(QMouseEvent* event);
void mouseDoubleClickEvent(QMouseEvent* event);
void mouseMoveEvent(QMouseEvent* event);
void wheelEvent(QWheelEvent* event);
private:
Ui::OsgWidget *ui;
private:
OsgViewerWidget *_pViewer; // osg场景嵌入Qt核心类
osg::ref_ptr<osg::MatrixTransform> _pRoot; // osg场景根节点
private:
float _xDistance; // x轴单个tick间距
int _xTickNumber; // x轴tick数(例如:5的时候,是6个,0~5)
float _yDistance; // y轴单个tick间距
int _yTickNumber; // y轴tick数(例如:5的时候,是6个,0~5)
float _zDistance; // z轴单个tick间距
int _zTickNumber; // z轴tick数(例如:5的时候,是6个,0~5)
QString _zUnit; // z轴单位
float _zTickLabelOffset; // z轴坐标偏移
QString _yUnit; // y轴单位
float _zTickUnitLabelOffset; // z轴坐标偏移
QColor _gridColor; // 轴颜色
QColor _labelColor; // 轴tickLabel的颜色
osg::ref_ptr<osg::Node> _pNode; // 模型
osg::ref_ptr<MyManipulator> _pManipulator; // 自定义漫游器
osg::Vec3d _eyeVect3D; // 原始坐标,用于复位原始视角
osg::Vec3d _centerVect3D; // 原始坐标,用于复位原始视角
osg::Vec3d _upVect3D; // 原始坐标,用于复位原始视角
};
#endif // OSGWIDGET_H
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/115416147
项目实战:Qt+OSG三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)的更多相关文章
- Python+Django+ansible playbook自动化运维项目实战☝☝☝
Python+Django+ansible playbook自动化运维项目实战☝☝☝ 一.入门引导 DevOPSDevOps(英文Development和Operations的组合)是一组过程.方法 ...
- 项目实战:Qt手机模拟器拉伸旋转框架
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 项目实战:Qt+Ffmpeg+OpenCV相机程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL
QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1 C语言程序设计高级实用速成课程 基础+进阶+自学 课程2 C语言程序设计Windows GDI图形绘 ...
- 【阿里云产品公测】云引擎ACE新手实战基于Wordpress
[阿里云产品公测]云引擎ACE新手实战基于Wordpress 作者:阿里云用户imnpc ACE(Aliyun Cloud Engine) 是一款弹性.分布式的应用托管环境,支持Java.php多种语 ...
- Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码) 转 https://blog.csdn.net/lhl1124281072/article/details/800 ...
- 【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战
"使用ctkPluginFramework插件系统构建项目实战",这篇文章是写博客以来最纠结的一篇文章. 倒不是由于技术都多么困难,而是想去描写叙述一个项目架构採用ctkPlugi ...
- 从0使用Ruby on Rails打造企业级RESTful API项目实战之我的云音乐
本节对我们项目实现的功能和知识点做一个简单的介绍,因为是RESTful API项目,所以对于后端来说基本上没有什么UI界面可展示,那我们就在关键的点,使用客户端(Android)实现的效果图. 课程简 ...
- 项目实战:Qt+C#轨道交通行业高性能高流畅度模拟火车移动图像控件
需求 高清线阵相机扫描火车并自动切割单节车厢完成图像合成.通过视频图像处理组件流畅模拟火车行驶整个过程的视频图像: 1.模拟火车通过时的滚动图像,图像主要以两侧和顶部图像的预览为主; 2.模拟 ...
- Unity3D项目实战笔记(5):延时功能的几种实现
我所做过的系统,分单机版系统(2005年).CS系统(2010年).实时系统(2015年),各个系统均有“延时”功能:定时调度的: 本博客说的是实时系统中的延时功能(基于Unity3D游戏引擎). 在 ...
随机推荐
- [转帖]PostgreSQL 10.0 preview 功能增强 - 国际化功能增强,支持ICU(International Components for Unicode)
https://developer.aliyun.com/article/72935 标签 PostgreSQL , 10.0 , International Components for Unico ...
- [转帖]磁盘负载指标 %iowait, await, %util 的正确理解
说明 %iowait, await, %util 是用来衡量硬盘负载的三个指标, 但是这几个指标通常容易被误解, 实际上, 这三个指标单纯的高, 并不一定能说明相应的磁盘有问题或者有瓶颈, 而是需要结 ...
- export default 和 export 这两种方式导出的区别
参考地址 https://blog.csdn.net/sleepwalker_1992/article/details/81461543 使用export向外暴露的成员,只能使用{ }的形式来接收,这 ...
- 提高Android Studio的编译速度(更快出包减少等待)
硬件和软件的准备 对于经常要出包而且一次要出多个渠道APK的同事来说,每次漫长的打包等待是一件消耗生命且无意义事情. google官方提高编译速度的文档:https://developer.andro ...
- 图学习初探Paddle Graph Learning 构建属于自己的图【系列三】
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5000517?contributionType=1 如遇到问题查看原项目解决 图学习温故 ...
- 【深度学习项目三】ResNet50多分类任务【十二生肖分类】
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...
- C/C++ 常见数组排序算法
本文介绍了几种常见的排序算法的实现,包括冒泡排序.选择排序.插入排序.希尔排序.归并排序和快速排序.冒泡排序通过多次遍历数组,比较并交换相邻元素,逐步将较小元素"浮"到数组顶端,时 ...
- 从嘉手札<2023-10-30 >
杂诗 壬戌辛酉日夜,闲看日月,秋风萧瑟,感怀予身期年孑然,岁月难留,故有所感,藉以此诗. 闲来无事,细数春秋. 初月难盈,残烛易收. 未若知人意,夜夜息绝游. 红叶醉天水,星河绕满楼. 竹影戚戚乱,岁 ...
- Java多线程-JUC-1(八)
前面把线程相关的生命周期.关键字.线程池(ThreadPool).ThreadLocal.CAS.锁和AQS都讲完了,现在就剩下怎么来用多线程了.而要想用好多线程,其实是可以取一些巧的,比如JUC(好 ...
- Visual Studio 2017高级编程(第7版)中文版
发布一个Visual Studio 2017的编程书籍: 链接:https://pan.baidu.com/s/1-RL9wkNYXwvQOdWrnAsSZQ 提取码:ig0c