5 #include <QOpenGLWidget> 13 #include <qopenglshaderprogram.h> 14 #include <qopenglvertexarrayobject.h> 15 #include <qopenglbuffer.h> 17 #include <glm/glm.hpp> 18 #include <glm/gtc/matrix_transform.hpp> 19 #include <glm/gtc/type_ptr.hpp> 20 #include <glm/gtx/quaternion.hpp> 28 #include "HierarchyModel.h" 29 #include "HierarchyObject.h" 31 #include "PointCloudRenderer.h" 32 #include "LineRenderer.h" 33 #include "SkyboxRenderer.h" 34 #include "commondefs.h" 38 #include <QDragEnterEvent> 43 #include <qcoreapplication.h> 47 #include <Qt3Drender/qcamera.h> 48 #include <Qt3Drender/qrendercapture.h> 52 #include <QMessageBox> 53 #include <QDesktopWidget> 54 #include <QFileDialog> 59 #include "mainwindow.h" 63 #include <opencv2\opencv.hpp> 64 #include <opencv2\core\core.hpp> 65 #include <opencv2\highgui\highgui.hpp> 66 #include "qttoopencv.h" 67 #include <opencv2/videoio.hpp> 74 class Widget :
public QOpenGLWidget,
protected OpenGLFunctions
79 Widget(QWidget *parent =
nullptr);
86 std::map<QString, QOpenGLShaderProgram*>
shaders;
121 unsigned int screenWidth, screenHeight;
123 glm::vec3 camPos, camTarget;
125 glm::mat4 view, projection;
127 int camDx = 0, camDy = 0;
129 int windowX = 0,windowY = 0;
130 float videoRecordSpeed = 0.01;
131 bool videoRecordFlag =
false;
141 void changedaytime(
int value);
156 bool mousepick(
int mousex,
int mousey,
HierarchyObject*& objout,
int& iout);
157 glm::vec3 get_ray(
int mousex,
int mousey,
int screenWidth,
int screenHeight,
158 glm::mat4 matModel, glm::vec4& init_point);
159 void getRayWorld(
int mousex,
int mousey, glm::vec3 out_source, glm::vec3 out_direction);
162 void initializeGL()
override;
163 void resizeGL(
int w,
int h)
override;
164 void handleDefaultShader(
Renderer * renderer);
165 void renderObjectRecursively(
const glm::mat4 & proj,
const glm::mat4 & view,
const glm::mat4 & parentTransform,
HierarchyObject * obj);
166 void paintGL()
override;
169 void mousePressEvent(QMouseEvent * e);
170 void mouseMoveEvent(QMouseEvent * e);
171 void mouseReleaseEvent(QMouseEvent * e);
173 void wheelEvent(QWheelEvent* wheel);
175 void keyPressEvent(QKeyEvent* key);
176 void keyReleaseEvent(QKeyEvent* key);
178 void dropEvent(QDropEvent * e);
179 void dragEnterEvent(QDragEnterEvent * e);
Definition: Renderer.h:18
继承自Renderer,用于渲染天空
Definition: SkyboxRenderer.h:8
对场景树的ui显示进行统一的管理
Definition: HierarchyModel.h:19
表示场景树中的节点
Definition: HierarchyObject.h:27
Widget * widget
对应的widget
Definition: HierarchyModel.h:36