QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
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  {
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() const { 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() const { 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
Qgs3DExportObject::setName
void setName(const QString &name)
Sets the object name.
Definition: qgs3dexportobject.h:61
Qgs3DExportObject::TriangularFaces
@ TriangularFaces
Definition: qgs3dexportobject.h:46
Qgs3DExportObject::setSmoothEdges
void setSmoothEdges(bool smoothEdges)
Sets whether triangles edges will look smooth.
Definition: qgs3dexportobject.h:71
Qgs3DExportObject::ObjectType
ObjectType
The type of exported geometry.
Definition: qgs3dexportobject.h:44
Qgs3DExportObject::setTextureImage
void setTextureImage(const QImage &image)
Sets the texture image used by the object.
Definition: qgs3dexportobject.h:88
Qgs3DExportObject
Manages the data of each object of the scene (positions, normals, texture coordinates ....
Definition: qgs3dexportobject.h:40
Qgs3DExportObject::name
QString name() const
Returns the object name.
Definition: qgs3dexportobject.h:59
Qgs3DExportObject::setType
void setType(ObjectType type)
Sets the object type.
Definition: qgs3dexportobject.h:66
Qgs3DExportObject::textureImage
QImage textureImage() const
Returns the texture image used by the object.
Definition: qgs3dexportobject.h:90
QgsAbstractMaterialSettings
Abstract base class for material settings.
Definition: qgsabstractmaterialsettings.h:114
Qgs3DExportObject::LineStrip
@ LineStrip
Definition: qgs3dexportobject.h:47
Qgs3DExportObject::smoothEdges
bool smoothEdges() const
Returns whether object edges will look smooth.
Definition: qgs3dexportobject.h:69
Qgs3DExportObject::type
ObjectType type() const
Returns the object type.
Definition: qgs3dexportobject.h:64
QgsMaterialSettingsRenderingTechnique::Points
@ Points
Point based rendering, requires point data.
Qgs3DExportObject::Qgs3DExportObject
Qgs3DExportObject(const QString &name)
Qgs3DExportObject Constructs an export object that will be filled with coordinates later.
Definition: qgs3dexportobject.h:56
Qgs3DExportObject::setMaterialParameter
void setMaterialParameter(const QString &parameter, const QString &value)
Sets a material parameter to be exported in the .mtl file.
Definition: qgs3dexportobject.h:100