35 #ifndef IECORE_MESHPRIMITIVE_H
36 #define IECORE_MESHPRIMITIVE_H
38 #include "IECore/Export.h"
39 #include "IECore/Primitive.h"
40 #include "IECore/VectorTypedData.h"
45 IE_CORE_FORWARDDECLARE( MeshPrimitive )
47 class PolygonIterator;
67 MeshPrimitive( ConstIntVectorDataPtr verticesPerFace, ConstIntVectorDataPtr vertexIds,
68 const std::string &interpolation =
"linear", V3fVectorDataPtr p =
nullptr );
74 size_t numFaces()
const;
75 const IntVectorData *verticesPerFace()
const;
76 int minVerticesPerFace()
const;
77 int maxVerticesPerFace()
const;
78 const IntVectorData *vertexIds()
const;
79 const std::string &interpolation()
const;
80 void setTopology( ConstIntVectorDataPtr verticesPerFace, ConstIntVectorDataPtr vertexIds,
const std::string &interpolation =
"linear" );
81 void setTopologyUnchecked( ConstIntVectorDataPtr verticesPerFace, ConstIntVectorDataPtr vertexIds,
size_t numVertices,
const std::string &interpolation =
"linear" );
82 void setInterpolation(
const std::string &interpolation );
83 PolygonIterator faceBegin();
84 PolygonIterator faceEnd();
90 void render(
Renderer *renderer )
const override;
94 static MeshPrimitivePtr createBox(
const Imath::Box3f &b );
96 static MeshPrimitivePtr createPlane(
const Imath::Box2f &b,
const Imath::V2i &divisions = Imath::V2i( 1 ) );
98 static MeshPrimitivePtr createSphere(
float radius,
float zMin = -1.0f,
float zMax = 1.0f,
float thetaMax = 360.0f,
const Imath::V2i &divisions = Imath::V2i( 20, 40 ) );
100 void topologyHash(
MurmurHash &h )
const override;
104 static const unsigned int m_ioVersion;
106 IntVectorDataPtr m_verticesPerFace;
107 IntVectorDataPtr m_vertexIds;
108 size_t m_numVertices;
109 std::string m_interpolation;
111 void computeMinMaxVertsPerFace()
const;
112 mutable int m_minVerticesPerFace;
113 mutable int m_maxVerticesPerFace;
119 #endif // IECORE_MESHPRIMITIVE
Definition: MeshPrimitive.h:56
Definition: MurmurHash.h:64
Definition: Renderer.h:93
Interpolation
Definition: PrimitiveVariable.h:53
Definition: Primitive.h:54
This namespace contains all components of the core library.
Definition: AddSmoothSkinningInfluencesOp.h:43