QGIS API Documentation  3.22.4-Białowieża (ce8e65e95e)
qgs3dexportobject.h
Go to the documentation of this file.
1 /***************************************************************************
2  Qgs3DExportObject.h
3  --------------------------------------
4  Date : June 2020
5  Copyright : (C) 2020 by Belgacem Nedjima
6  Email : gb underscore nedjima at esi dot dz
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef Qgs3DExportObject_H
17 #define Qgs3DExportObject_H
18 
19 #include <QObject>
20 #include <QTextStream>
21 #include <QVector>
22 #include <QVector3D>
23 #include <QImage>
24 #include <Qt3DRender/QAttribute>
25 
26 #include "qgis_3d.h"
27 
28 #define SIP_NO_FILE
29 
31 
40 class _3D_EXPORT Qgs3DExportObject
41 {
42  public:
45  {
48  Points
49  };
50 
56  Qgs3DExportObject( const QString &name ) : mName( name ) { }
57 
59  QString name() const { return mName; }
61  void setName( const QString &name ) { mName = name; }
62 
64  ObjectType type() const { return mType; }
66  void setType( ObjectType type ) { mType = type; }
67 
69  bool smoothEdges() { return mSmoothEdges; }
71  void setSmoothEdges( bool smoothEdges ) { mSmoothEdges = smoothEdges; }
72 
74  void setupPositionCoordinates( const QVector<float> &positionsBuffer, float scale = 1.0f, const QVector3D &translation = QVector3D( 0, 0, 0 ) );
76  void setupFaces( const QVector<uint> &facesIndexes );
78  void setupLine( const QVector<uint> &facesIndexes );
79 
81  void setupNormalCoordinates( const QVector<float> &normalsBuffer );
83  void setupTextureCoordinates( const QVector<float> &texturesBuffer );
85  void setupMaterial( QgsAbstractMaterialSettings *material );
86 
88  void setTextureImage( const QImage &image ) { this->mTextureImage = image; };
90  QImage textureImage() { return mTextureImage; }
91 
97  void objectBounds( float &minX, float &minY, float &minZ, float &maxX, float &maxY, float &maxZ );
98 
100  void setMaterialParameter( const QString &parameter, const QString &value ) { mMaterialParameters[parameter] = value; }
101 
103  void saveTo( QTextStream &out, float scale, const QVector3D &center );
105  QString saveMaterial( QTextStream &mtlOut, const QString &folder );
106 
107  private:
108  QString mName;
109  ObjectType mType = ObjectType::TriangularFaces;
110  QString mParentName;
111  QVector<float> mVertexPosition;
112  QVector<float> mNormals;
113  QVector<float> mTexturesUV;
114  QVector<unsigned int> mIndexes;
115  QMap<QString, QString> mMaterialParameters;
116 
117  QImage mTextureImage;
118 
119  bool mSmoothEdges = false;
120 };
121 
122 #endif // Qgs3DExportObject_H
Manages the data of each object of the scene (positions, normals, texture coordinates ....
void setMaterialParameter(const QString &parameter, const QString &value)
Sets a material parameter to be exported in the .mtl file.
QImage textureImage()
Returns the texture image used by the object.
void setType(ObjectType type)
Sets the object type.
Qgs3DExportObject(const QString &name)
Qgs3DExportObject Constructs an export object that will be filled with coordinates later.
ObjectType type() const
Returns the object type.
ObjectType
The type of exported geometry.
QString name() const
Returns the object name.
void setTextureImage(const QImage &image)
Sets the texture image used by the object.
bool smoothEdges()
Returns whether object edges will look smooth.
void setName(const QString &name)
Sets the object name.
void setSmoothEdges(bool smoothEdges)
Sets whether triangles edges will look smooth.
@ Points
Point based rendering, requires point data.