您好,登錄后才能下訂單哦!
Qt+OSG三維點(diǎn)云引擎的示例分析,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
<br>
??開發(fā)基于osg的三維點(diǎn)云引擎模塊。 ??1.基于x,y,z坐標(biāo)軸。 ??2.可設(shè)置原點(diǎn),設(shè)置縮放比例。 ??3.可設(shè)置y軸和z軸單位。 ??4.三軸中,XY為2D圖的水平、豎直方向;Z軸,對應(yīng)高度圖中的double型高度。 ??5.引擎中心可設(shè)置。 ??6.可設(shè)置引擎中心點(diǎn),可以拽拖繞中心點(diǎn)旋轉(zhuǎn)模型。 ??7.可以單獨(dú)以引擎中心點(diǎn)繞X,Y,Z軸旋轉(zhuǎn),拽拖時(shí)旋轉(zhuǎn). ??8.可以組合XY,XZ,YZ軸旋轉(zhuǎn),拽拖時(shí)旋轉(zhuǎn)。 ??9.根據(jù)輸入的bmp圖片以及建模的txt高度文件,呈現(xiàn)點(diǎn)云。 ??10.可復(fù)位坐標(biāo)系,可清楚導(dǎo)入的點(diǎn)云。
??11.支持導(dǎo)入圖片,隨機(jī)高度進(jìn)行點(diǎn)云模擬。 ??12.支持導(dǎo)入cvs點(diǎn)云文件(當(dāng)前僅解析點(diǎn))。
??CSDN免積分下載地址:https://download.csdn.net/download/qq21497936/16388051 ??QQ群下載地址:1047134658(點(diǎn)擊“文件”搜索“osg3D”,群內(nèi)與博文同步更新)
<br>
?? ?? ?? ?? ?? ??
<br>
#ifndef OSGWIDGET_H #define OSGWIDGET_H /************************************************************\ * 控件名稱: osg3D點(diǎn)云定制 * 控件描述: * 1.基礎(chǔ)三維框架 * 2.可設(shè)置中心點(diǎn) * 3.鼠標(biāo)中鍵按下后可移動(dòng)中心點(diǎn) * 4.支持導(dǎo)入bmp,bmp+z文件,cvs點(diǎn)云文件 * 5.支持清空數(shù)據(jù),復(fù)位視角等操作 * 作者:紅模仿 聯(lián)系方式:QQ21497936 * 博客地址:https://blog.csdn.net/qq21497936 * 著作權(quán)信息 * 作者:紅胖子(AAA紅模仿) * 公司:長沙紅胖子網(wǎng)絡(luò)科技有限公司 * 博客專家地址:blog.csdn.net/qq21497936/article/details/102478062 * 聯(lián)系方式:QQ(21497936) 微信(yangsir198808) * 版本信息 * 日期 版本 描述 * ... ... ... * 2021年04月02日 v2.0.0 3D點(diǎn)云導(dǎo)入,XYZ周固定旋轉(zhuǎn),復(fù)位,清空 導(dǎo)入文件格式支持導(dǎo)入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); // 加載場景根節(jié)點(diǎn) protected: osg::ref_ptr<osg::Node> create3DPointCloud(); // 創(chuàng)建總場景 osg::ref_ptr<osg::Node> createAxisAndGrid(); // 創(chuàng)建坐標(biāo)軸和線格 osg::ref_ptr<osg::Node> createTickLabel(); // 創(chuàng)建坐標(biāo)軸的tickLabel和單位 osg::ref_ptr<osg::Node> createCloud(std::vector<osg::Vec3> &vectorVec3Vectex, std::vector<osg::Vec4> &vectorVec4VectexColor); // 創(chuàng)建點(diǎn)云 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場景根節(jié)點(diǎn) private: float _xDistance; // x軸單個(gè)tick間距 int _xTickNumber; // x軸tick數(shù)(例如:5的時(shí)候,是6個(gè),0~5) float _yDistance; // y軸單個(gè)tick間距 int _yTickNumber; // y軸tick數(shù)(例如:5的時(shí)候,是6個(gè),0~5) float _zDistance; // z軸單個(gè)tick間距 int _zTickNumber; // z軸tick數(shù)(例如:5的時(shí)候,是6個(gè),0~5) QString _zUnit; // z軸單位 float _zTickLabelOffset; // z軸坐標(biāo)偏移 QString _yUnit; // y軸單位 float _zTickUnitLabelOffset; // z軸坐標(biāo)偏移 QColor _gridColor; // 軸顏色 QColor _labelColor; // 軸tickLabel的顏色 osg::ref_ptr<osg::Node> _pNode; // 模型 osg::ref_ptr<MyManipulator> _pManipulator; // 自定義漫游器 osg::Vec3d _eyeVect3D; // 原始坐標(biāo),用于復(fù)位原始視角 osg::Vec3d _centerVect3D; // 原始坐標(biāo),用于復(fù)位原始視角 osg::Vec3d _upVect3D; // 原始坐標(biāo),用于復(fù)位原始視角 }; #endif // OSGWIDGET_H
<br>
看完上述內(nèi)容,你們掌握Qt+OSG三維點(diǎn)云引擎的示例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。