需求

  开发基于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三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)的更多相关文章

  1. Python+Django+ansible playbook自动化运维项目实战☝☝☝

    Python+Django+ansible playbook自动化运维项目实战☝☝☝  一.入门引导 DevOPSDevOps(英文Development和Operations的组合)是一组过程.方法 ...

  2. 项目实战:Qt手机模拟器拉伸旋转框架

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. 项目实战:Qt+Ffmpeg+OpenCV相机程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  4. QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL

    QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1   C语言程序设计高级实用速成课程 基础+进阶+自学 课程2   C语言程序设计Windows GDI图形绘 ...

  5. 【阿里云产品公测】云引擎ACE新手实战基于Wordpress

    [阿里云产品公测]云引擎ACE新手实战基于Wordpress 作者:阿里云用户imnpc ACE(Aliyun Cloud Engine) 是一款弹性.分布式的应用托管环境,支持Java.php多种语 ...

  6. Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)

    Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)    转 https://blog.csdn.net/lhl1124281072/article/details/800 ...

  7. 【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战

    "使用ctkPluginFramework插件系统构建项目实战",这篇文章是写博客以来最纠结的一篇文章. 倒不是由于技术都多么困难,而是想去描写叙述一个项目架构採用ctkPlugi ...

  8. 从0使用Ruby on Rails打造企业级RESTful API项目实战之我的云音乐

    本节对我们项目实现的功能和知识点做一个简单的介绍,因为是RESTful API项目,所以对于后端来说基本上没有什么UI界面可展示,那我们就在关键的点,使用客户端(Android)实现的效果图. 课程简 ...

  9. 项目实战:Qt+C#轨道交通行业高性能高流畅度模拟火车移动图像控件

    需求   高清线阵相机扫描火车并自动切割单节车厢完成图像合成.通过视频图像处理组件流畅模拟火车行驶整个过程的视频图像:  1.模拟火车通过时的滚动图像,图像主要以两侧和顶部图像的预览为主;  2.模拟 ...

  10. Unity3D项目实战笔记(5):延时功能的几种实现

    我所做过的系统,分单机版系统(2005年).CS系统(2010年).实时系统(2015年),各个系统均有“延时”功能:定时调度的: 本博客说的是实时系统中的延时功能(基于Unity3D游戏引擎). 在 ...

随机推荐

  1. [转帖]新版 Elasticsearch 中的强悍插件 X-pack

    https://zhuanlan.zhihu.com/p/36337697   3 人赞同了该文章 作者:Alan 岂安科技运维工程师努力踏上一条为后人留坑的运维之路.(逃 1 前言 Elk 日志可视 ...

  2. [转帖]Jmeter常用配置元件(二):“HTTP Cookie管理器”登录状态保持

    在API接口测试过程中,我们需要传递cookie值作为连接状态的保持,例如登录后状态信息.通过使用Jmeter提供的"HTTP Cookie管理器"来实现. 一般情况下不需要输入什 ...

  3. [转帖]linux下 进程io队列,IO队列和IO调度

    IO体系概览 先看看本文主题IO调度和IO队列处于整个IO体系的哪个位置,这个IO体系是非常重要的,了解IO体系我们可以对整个IO过程有个全面的认识.虽然一下两下并不清楚IO体系各个部分的细节,但是我 ...

  4. 《HelloGitHub》第 94 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  5. 【解决了一个小问题】在某个linux基础镜像中安装python特定的版本

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 在某个基础镜像中,安装了python3.6.但是一个测试需 ...

  6. 当爬虫工程师遇到 CTF丨B 站 1024 安全攻防题解

    答案参考 第一题:a1cd5f84-27966146-3776f301-64031bb9 第二题:36c7a7b4-cda04af0-8db0368d-b5166480 第三题:9d3c3014-6c ...

  7. 从 WebStorm 转到 VSCode!使用一周体验报告

    前言 最近我的 Jetbrains 开源项目授权到期了,想要续订的时候发现 Jetbrains 提高了开源项目申请门槛,我的 StarBlog 项目因为名字里包含 blog 这个词无法申请,虽然我在 ...

  8. TienChin-课程管理-课程导出

    更改 Course.java: /** * 课程ID */ @TableId(value = "course_id", type = IdType.AUTO) @NotNull(m ...

  9. MySQL 常见面试题/知识点总结!(2021 最新版)| JavaGuide

    相关阅读: 2.7w字!Java基础面试题/知识点总结!(2021 最新版) 这篇文章之前发过,不过,我最近对其进行了重构完善并且修复了很多小问题.所以,在公号再同步一下! 内容很硬!强烈建议小伙伴们 ...

  10. 从github上下载代码到本地

    相关链接: 码云(gitee)配置SSH密钥 码云gitee创建仓库并用git上传文件 git 上传错误This oplation equires one of the flowi vrsionsot ...