Main Page Class List Class Members

- Main Page
- User's Guide
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

# sdk/extensions/authoring/source/NvBlastExtAuthoringTriangulator.h

Go to the documentation of this file.

    00001 // This code contains NVIDIA Confidential Information and is disclosed to you
    00002 // under a form of NVIDIA software license agreement provided separately to you.
    00003 //
    00004 // Notice
    00005 // NVIDIA Corporation and its licensors retain all intellectual property and
    00006 // proprietary rights in and to this software and related documentation and
    00007 // any modifications thereto. Any use, reproduction, disclosure, or
    00008 // distribution of this software and related documentation without an express
    00009 // license agreement from NVIDIA Corporation is strictly prohibited.
    00010 //
    00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
    00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
    00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
    00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
    00015 //
    00016 // Information and code furnished is believed to be accurate and reliable.
    00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
    00018 // information or for any infringement of patents or other rights of third parties that may
    00019 // result from its use. No license is granted by implication or otherwise under any patent
    00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
    00021 // This code supersedes and replaces all information previously supplied.
    00022 // NVIDIA Corporation products are not authorized for use as critical
    00023 // components in life support devices or systems without express written approval of
    00024 // NVIDIA Corporation.
    00025 //
    00026 // Copyright (c) 2016-2020 NVIDIA Corporation. All rights reserved.
    00027
    00028
    00029 #ifndef NVBLASTEXTAUTHORINGTRIANGULATOR_H
    00030 #define NVBLASTEXTAUTHORINGTRIANGULATOR_H
    00031
    00032
    00033 #include <vector>
    00034 #include <map>
    00035 #include "NvBlastExtAuthoringTypes.h"
    00036 #include "NvBlastExtAuthoringMesh.h"
    00037 #include "NvBlastExtAuthoringInternalCommon.h"
    00038
    00039 namespace Nv
    00040 {
    00041 namespace Blast
    00042 {
    00043
    00044
    00048 class Triangulator
    00049 {
    00050 public:
    00055     void                            triangulate(const Mesh* mesh);
    00056
    00060     std::vector<Triangle>&          getBaseMesh()
    00061     {
    00062         return mBaseMeshUVFittedTriangles;
    00063     }
    00064
    00065     std::vector<Triangle>&          getBaseMeshNotFitted()
    00066     {
    00067         return mBaseMeshResultTriangles;
    00068     }
    00069
    00070
    00074     std::vector<TriangleIndexed>&   getBaseMeshIndexed()
    00075     {
    00076         return mBaseMeshTriangles;
    00077     }
    00081     std::vector<uint32_t>&          getBaseMapping()
    00082     {
    00083         return mBaseMapping;
    00084     };
    00088     std::vector<int32_t>&           getPositionedMapping()
    00089     {
    00090         return mPositionMappedVrt;
    00091     };
    00095     uint32_t                        getWeldedVerticesCount()
    00096     {
    00097         return static_cast<uint32_t>(mVertices.size());
    00098     }
    00099
    00103     void                            reset();
    00104
    00105     int32_t&                        getParentChunkId() { return parentChunkId; };
    00106
    00107 private:
    00108
    00109     int32_t                         parentChunkId;
    00110
    00111     int32_t                         addVerticeIfNotExist(const Vertex& p);
    00112     void                            addEdgeIfValid(EdgeWithParent& ed);
    00113
    00114     /* Data used before triangulation to build polygon loops*/
    00115
    00116     std::vector<Vertex>                                 mVertices;
    00117     std::vector<EdgeWithParent>                         mBaseMeshEdges;
    00118     std::map<Vertex, int32_t, VrtComp>                  mVertMap;
    00119     std::map<EdgeWithParent, int32_t, EdgeComparator>   mEdgeMap;
    00120     std::vector<uint32_t>                               mBaseMapping;
    00121     std::vector<int32_t>                                mPositionMappedVrt;
    00122     /* ------------------------------------------------------------ */
    00123
    00124
    00128     void                            prepare(const Mesh* mesh);
    00129
    00130
    00131
    00132     void                            triangulatePolygonWithEarClipping(std::vector<uint32_t>& inputPolygon, Vertex* vert, ProjectionDirections dir);
    00133     void                            buildPolygonAndTriangulate(std::vector<Edge>& edges, Vertex* vertices, int32_t userData, int32_t materialId, int32_t smoothingGroup);
    00134     void                            computePositionedMapping();
    00135
    00136     std::vector<TriangleIndexed>                        mBaseMeshTriangles;
    00140     std::vector<Triangle>                               mBaseMeshResultTriangles;
    00141     std::vector<Triangle>                               mBaseMeshUVFittedTriangles;
    00142 };
    00143
    00144 } // namespace Blast
    00145 } // namespace Nv
    00146
    00147
    00148 #endif  // ifndef NVBLASTEXTAUTHORINGTRIANGULATOR_H

Copyright © 2015-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com