QGIS API Documentation 3.29.0-Master (53715c36dc)
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 <QMap>
25
26#include "qgis_3d.h"
27
28#define SIP_NO_FILE
29
31
40class _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() 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
Manages the data of each object of the scene (positions, normals, texture coordinates ....
QImage textureImage() const
Returns the texture image used by the object.
void setMaterialParameter(const QString &parameter, const QString &value)
Sets a material parameter to be exported in the .mtl file.
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() const
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.