summaryrefslogtreecommitdiff
path: root/libs/assimp/code/AssetLib/Obj/ObjFileData.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/assimp/code/AssetLib/Obj/ObjFileData.h')
-rw-r--r--libs/assimp/code/AssetLib/Obj/ObjFileData.h344
1 files changed, 0 insertions, 344 deletions
diff --git a/libs/assimp/code/AssetLib/Obj/ObjFileData.h b/libs/assimp/code/AssetLib/Obj/ObjFileData.h
deleted file mode 100644
index 3d504d0..0000000
--- a/libs/assimp/code/AssetLib/Obj/ObjFileData.h
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2020, assimp team
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the
- following disclaimer in the documentation and/or other
- materials provided with the distribution.
-
-* Neither the name of the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------------------------------------
-*/
-
-#pragma once
-#ifndef OBJ_FILEDATA_H_INC
-#define OBJ_FILEDATA_H_INC
-
-#include <assimp/mesh.h>
-#include <assimp/types.h>
-#include <map>
-#include <vector>
-
-namespace Assimp {
-namespace ObjFile {
-
-struct Object;
-struct Face;
-struct Material;
-
-// ------------------------------------------------------------------------------------------------
-//! \struct Face
-//! \brief Data structure for a simple obj-face, describes discredit,l.ation and materials
-// ------------------------------------------------------------------------------------------------
-struct Face {
- using IndexArray = std::vector<unsigned int>;
-
- //! Primitive type
- aiPrimitiveType m_PrimitiveType;
- //! Vertex indices
- IndexArray m_vertices;
- //! Normal indices
- IndexArray m_normals;
- //! Texture coordinates indices
- IndexArray m_texturCoords;
- //! Pointer to assigned material
- Material *m_pMaterial;
-
- //! \brief Default constructor
- Face(aiPrimitiveType pt = aiPrimitiveType_POLYGON) :
- m_PrimitiveType(pt), m_vertices(), m_normals(), m_texturCoords(), m_pMaterial(0L) {
- // empty
- }
-
- //! \brief Destructor
- ~Face() {
- // empty
- }
-};
-
-// ------------------------------------------------------------------------------------------------
-//! \struct Object
-//! \brief Stores all objects of an obj-file object definition
-// ------------------------------------------------------------------------------------------------
-struct Object {
- enum ObjectType {
- ObjType,
- GroupType
- };
-
- //! Object name
- std::string m_strObjName;
- //! Transformation matrix, stored in OpenGL format
- aiMatrix4x4 m_Transformation;
- //! All sub-objects referenced by this object
- std::vector<Object *> m_SubObjects;
- /// Assigned meshes
- std::vector<unsigned int> m_Meshes;
-
- //! \brief Default constructor
- Object() = default;
-
- //! \brief Destructor
- ~Object() {
- for (std::vector<Object *>::iterator it = m_SubObjects.begin(); it != m_SubObjects.end(); ++it) {
- delete *it;
- }
- }
-};
-
-// ------------------------------------------------------------------------------------------------
-//! \struct Material
-//! \brief Data structure to store all material specific data
-// ------------------------------------------------------------------------------------------------
-struct Material {
- //! Name of material description
- aiString MaterialName;
- //! Texture names
- aiString texture;
- aiString textureSpecular;
- aiString textureAmbient;
- aiString textureEmissive;
- aiString textureBump;
- aiString textureNormal;
- aiString textureReflection[6];
- aiString textureSpecularity;
- aiString textureOpacity;
- aiString textureDisp;
- aiString textureRoughness;
- aiString textureMetallic;
- aiString textureSheen;
- aiString textureRMA;
-
- enum TextureType {
- TextureDiffuseType = 0,
- TextureSpecularType,
- TextureAmbientType,
- TextureEmissiveType,
- TextureBumpType,
- TextureNormalType,
- TextureReflectionSphereType,
- TextureReflectionCubeTopType,
- TextureReflectionCubeBottomType,
- TextureReflectionCubeFrontType,
- TextureReflectionCubeBackType,
- TextureReflectionCubeLeftType,
- TextureReflectionCubeRightType,
- TextureSpecularityType,
- TextureOpacityType,
- TextureDispType,
- TextureRoughnessType,
- TextureMetallicType,
- TextureSheenType,
- TextureRMAType,
- TextureTypeCount
- };
- bool clamp[TextureTypeCount];
-
- //! Ambient color
- aiColor3D ambient;
- //! Diffuse color
- aiColor3D diffuse;
- //! Specular color
- aiColor3D specular;
- //! Emissive color
- aiColor3D emissive;
- //! Alpha value
- ai_real alpha;
- //! Shineness factor
- ai_real shineness;
- //! Illumination model
- int illumination_model;
- //! Index of refraction
- ai_real ior;
- //! Transparency color
- aiColor3D transparent;
-
- //! PBR Roughness
- ai_real roughness;
- //! PBR Metallic
- ai_real metallic;
- //! PBR Metallic
- aiColor3D sheen;
- //! PBR Clearcoat Thickness
- ai_real clearcoat_thickness;
- //! PBR Clearcoat Rougness
- ai_real clearcoat_roughness;
- //! PBR Anisotropy
- ai_real anisotropy;
-
- //! bump map multipler (normal map scalar)(-bm)
- ai_real bump_multiplier;
-
- //! Constructor
- Material() :
- diffuse(ai_real(0.6), ai_real(0.6), ai_real(0.6)),
- alpha(ai_real(1.0)),
- shineness(ai_real(0.0)),
- illumination_model(1),
- ior(ai_real(1.0)),
- transparent(ai_real(1.0), ai_real(1.0), ai_real(1.0)),
- roughness(ai_real(1.0)),
- metallic(ai_real(0.0)),
- sheen(ai_real(1.0), ai_real(1.0), ai_real(1.0)),
- clearcoat_thickness(ai_real(0.0)),
- clearcoat_roughness(ai_real(0.0)),
- anisotropy(ai_real(0.0)),
- bump_multiplier(ai_real(1.0)) {
- std::fill_n(clamp, static_cast<unsigned int>(TextureTypeCount), false);
- }
-
- // Destructor
- ~Material() = default;
-};
-
-// ------------------------------------------------------------------------------------------------
-//! \struct Mesh
-//! \brief Data structure to store a mesh
-// ------------------------------------------------------------------------------------------------
-struct Mesh {
- static const unsigned int NoMaterial = ~0u;
- /// The name for the mesh
- std::string m_name;
- /// Array with pointer to all stored faces
- std::vector<Face *> m_Faces;
- /// Assigned material
- Material *m_pMaterial;
- /// Number of stored indices.
- unsigned int m_uiNumIndices;
- /// Number of UV
- unsigned int m_uiUVCoordinates[AI_MAX_NUMBER_OF_TEXTURECOORDS];
- /// Material index.
- unsigned int m_uiMaterialIndex;
- /// True, if normals are stored.
- bool m_hasNormals;
- /// True, if vertex colors are stored.
- bool m_hasVertexColors;
-
- /// Constructor
- explicit Mesh(const std::string &name) :
- m_name(name),
- m_pMaterial(nullptr),
- m_uiNumIndices(0),
- m_uiMaterialIndex(NoMaterial),
- m_hasNormals(false) {
- memset(m_uiUVCoordinates, 0, sizeof(unsigned int) * AI_MAX_NUMBER_OF_TEXTURECOORDS);
- }
-
- /// Destructor
- ~Mesh() {
- for (std::vector<Face *>::iterator it = m_Faces.begin();
- it != m_Faces.end(); ++it) {
- delete *it;
- }
- }
-};
-
-// ------------------------------------------------------------------------------------------------
-//! \struct Model
-//! \brief Data structure to store all obj-specific model data
-// ------------------------------------------------------------------------------------------------
-struct Model {
- using GroupMap = std::map<std::string, std::vector<unsigned int> *>;
- using GroupMapIt = std::map<std::string, std::vector<unsigned int> *>::iterator;
- using ConstGroupMapIt = std::map<std::string, std::vector<unsigned int> *>::const_iterator;
-
- //! Model name
- std::string m_ModelName;
- //! List ob assigned objects
- std::vector<Object *> m_Objects;
- //! Pointer to current object
- ObjFile::Object *m_pCurrent;
- //! Pointer to current material
- ObjFile::Material *m_pCurrentMaterial;
- //! Pointer to default material
- ObjFile::Material *m_pDefaultMaterial;
- //! Vector with all generated materials
- std::vector<std::string> m_MaterialLib;
- //! Vector with all generated vertices
- std::vector<aiVector3D> m_Vertices;
- //! vector with all generated normals
- std::vector<aiVector3D> m_Normals;
- //! vector with all vertex colors
- std::vector<aiVector3D> m_VertexColors;
- //! Group map
- GroupMap m_Groups;
- //! Group to face id assignment
- std::vector<unsigned int> *m_pGroupFaceIDs;
- //! Active group
- std::string m_strActiveGroup;
- //! Vector with generated texture coordinates
- std::vector<aiVector3D> m_TextureCoord;
- //! Maximum dimension of texture coordinates
- unsigned int m_TextureCoordDim;
- //! Current mesh instance
- Mesh *m_pCurrentMesh;
- //! Vector with stored meshes
- std::vector<Mesh *> m_Meshes;
- //! Material map
- std::map<std::string, Material *> m_MaterialMap;
-
- //! \brief The default class constructor
- Model() :
- m_ModelName(),
- m_pCurrent(nullptr),
- m_pCurrentMaterial(nullptr),
- m_pDefaultMaterial(nullptr),
- m_pGroupFaceIDs(nullptr),
- m_strActiveGroup(),
- m_TextureCoordDim(0),
- m_pCurrentMesh(nullptr) {
- // empty
- }
-
- //! \brief The class destructor
- ~Model() {
- for (auto & it : m_Objects) {
- delete it;
- }
- for (auto & Meshe : m_Meshes) {
- delete Meshe;
- }
- for (auto & Group : m_Groups) {
- delete Group.second;
- }
- for (auto & it : m_MaterialMap) {
- delete it.second;
- }
- }
-};
-
-// ------------------------------------------------------------------------------------------------
-
-} // Namespace ObjFile
-} // Namespace Assimp
-
-#endif // OBJ_FILEDATA_H_INC