ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvMaterialSet.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 // Local
11 #include "CVShareable.h"
12 #include "ecvHObject.h"
13 #include "ecvMaterial.h"
14 
16 class CV_DB_LIB_API ccMaterialSet : public std::vector<ccMaterial::CShared>,
17  public CCShareable,
18  public ccHObject {
19 public:
21  ccMaterialSet(const QString& name = QString());
22 
23  // inherited from ccHObject
24  virtual CV_CLASS_ENUM getClassID() const override {
26  }
27  virtual bool isShareable() const override { return true; }
28 
30 
32  int findMaterialByName(QString mtlName) const;
33 
35 
37  int findMaterialByUniqueID(QString uniqueID) const;
38 
40 
46  int addMaterial(ccMaterial::CShared mat, bool allowDuplicateNames = false);
47 
49 
52  static bool ParseMTL(QString path,
53  const QString& filename,
54  ccMaterialSet& materials,
55  QStringList& errors);
56 
58  bool saveAsMTL(QString path,
59  const QString& baseFilename,
60  QStringList& errors) const;
61 
63  ccMaterialSet* clone() const;
64 
66  bool append(const ccMaterialSet& source);
67 
68  // inherited from ccSerializableObject
69  virtual bool isSerializable() const override { return true; }
70 
71 protected:
72  // inherited from ccHObject
73  bool toFile_MeOnly(QFile& out, short dataVersion) const override;
74  short minimumFileVersion_MeOnly() const override;
75  bool fromFile_MeOnly(QFile& in,
76  short dataVersion,
77  int flags,
78  LoadedIDMap& oldToNewIDMap) override;
79 };
int64_t CV_CLASS_ENUM
Type of object type flags (64 bits)
Definition: CVTypes.h:97
std::string filename
#define CV_DB_LIB_API
Definition: CV_db.h:15
std::string name
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
Mesh (triangle) material.
bool fromFile_MeOnly(QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
Loads own object data.
int findMaterialByName(QString mtlName) const
Finds material by name.
ccMaterialSet(const QString &name=QString())
Default constructor.
virtual CV_CLASS_ENUM getClassID() const override
Returns class ID.
int addMaterial(ccMaterial::CShared mat, bool allowDuplicateNames=false)
Adds a material.
bool saveAsMTL(QString path, const QString &baseFilename, QStringList &errors) const
Saves to an MTL file (+ associated texture images)
static bool ParseMTL(QString path, const QString &filename, ccMaterialSet &materials, QStringList &errors)
MTL (material) file parser.
short minimumFileVersion_MeOnly() const override
virtual bool isShareable() const override
Returns whether object is shareable or not.
virtual bool isSerializable() const override
Returns whether object is serializable of not.
bool toFile_MeOnly(QFile &out, short dataVersion) const override
Save own object data.
int findMaterialByUniqueID(QString uniqueID) const
Finds material by unique identifier.
bool append(const ccMaterialSet &source)
Appends materials from another set.
ccMaterialSet * clone() const
Clones materials set.
QSharedPointer< const ccMaterial > CShared
Const + Shared type.
Definition: ecvMaterial.h:31
QMultiMap< unsigned, unsigned > LoadedIDMap
Map of loaded unique IDs (old ID --> new ID)
@ MATERIAL_SET
Definition: CVTypes.h:132
static const std::string path
Definition: PointCloud.cpp:59