|
static GEOMUTIL_API size_t | ComputeNumPoints (const size_t numRadial, const bool closedSweep=true) |
|
static size_t | ComputeNumNormals (const size_t numRadial, const bool closedSweep=true) |
|
static TfToken | GetNormalsInterpolation () |
|
static GEOMUTIL_API
PxOsdMeshTopology | GenerateTopology (const size_t numRadial, const bool closedSweep=true) |
|
template<typename PointIterType , typename ScalarType , typename Enabled = typename _EnableIfGfVec3Iterator<PointIterType>::type> |
static void | GeneratePoints (PointIterType iter, const size_t numRadial, const ScalarType radius, const ScalarType height, const GfMatrix4d *framePtr=nullptr) |
|
template<typename PointIterType , typename ScalarType , typename Enabled = typename _EnableIfGfVec3Iterator<PointIterType>::type> |
static void | GeneratePoints (PointIterType iter, const size_t numRadial, const ScalarType bottomRadius, const ScalarType topRadius, const ScalarType height, const GfMatrix4d *framePtr=nullptr) |
|
template<typename PointIterType , typename ScalarType , typename Enabled = typename _EnableIfGfVec3Iterator<PointIterType>::type> |
static void | GeneratePoints (PointIterType iter, const size_t numRadial, const ScalarType bottomRadius, const ScalarType topRadius, const ScalarType height, const ScalarType sweepDegrees, const GfMatrix4d *framePtr=nullptr) |
|
template<typename PointIterType , typename ScalarType , typename Enabled = typename _EnableIfGfVec3Iterator<PointIterType>::type> |
static void | GenerateNormals (PointIterType iter, const size_t numRadial, const ScalarType radius, const ScalarType height, const GfMatrix4d *framePtr=nullptr) |
|
template<typename PointIterType , typename ScalarType , typename Enabled = typename _EnableIfGfVec3Iterator<PointIterType>::type> |
static void | GenerateNormals (PointIterType iter, const size_t numRadial, const ScalarType bottomRadius, const ScalarType topRadius, const ScalarType height, const GfMatrix4d *framePtr=nullptr) |
|
template<typename PointIterType , typename ScalarType , typename Enabled = typename _EnableIfGfVec3Iterator<PointIterType>::type> |
static void | GenerateNormals (PointIterType iter, const size_t numRadial, const ScalarType bottomRadius, const ScalarType topRadius, const ScalarType height, const ScalarType sweepDegrees, const GfMatrix4d *framePtr=nullptr) |
|
template<typename PointIterType , typename Enabled = typename _EnableIfNotGfVec3Iterator<PointIterType>::type> |
static void | GeneratePoints (PointIterType iter,...) |
|
template<typename PointIterType , typename Enabled = typename _EnableIfNotGfVec3Iterator<PointIterType>::type> |
static void | GenerateNormals (PointIterType iter,...) |
|
|
enum | _CapStyle { CapStyleNone,
CapStyleSharedEdge,
CapStyleSeparateEdge
} |
|
static PxOsdMeshTopology | _GenerateCappedQuadTopology (const size_t numRadial, const size_t numQuadStrips, const _CapStyle bottomCapStyle, const _CapStyle topCapStyle, const bool closedSweep) |
|
static size_t | _ComputeNumRadialPoints (const size_t numRadial, const bool closedSweep) |
|
static size_t | _ComputeNumCappedQuadTopologyPoints (const size_t numRadial, const size_t numQuadStrips, const _CapStyle bottomCapStyle, const _CapStyle topCapStyle, const bool closedSweep) |
|
template<typename ScalarType > |
static std::vector< std::array
< ScalarType, 2 > > | _GenerateUnitArcXY (const size_t numRadial, const ScalarType sweepDegrees) |
|
This class provides an implementation for generating topology, point positions and surface normals on a cylinder with a given radius and height. The cylinder is made up of circular cross-sections in the XY plane and is centered at the origin. Each cross-section has numRadial segments. The height is aligned with the Z axis, with the base at Z = -h/2.
An optional transform may be provided to GeneratePoints and GenerateNormals to orient the cylinder as necessary (e.g., whose height is aligned with the Y axis).
An additional overload of GeneratePoints is provided to specify different radii for the bottom and top discs of the cylinder and a sweep angle for cylinder about the +Z axis. When the sweep is less than 360 degrees, the generated geometry is not closed.
- Note
- Setting one radius to 0 in order to get a cone is inefficient and could result in artifacts. Clients should use GeomUtilConeMeshGenerator instead.
Usage:
const size_t numRadial = 8;
const size_t numPoints =
const float radius = 1,
height = 2;
MyPointContainer<GfVec3f>
points(numPoints);
points.begin(), numRadial, radius,
height);
const size_t numNormals =
MyPointContainer<GfVec3f> normals(numNormals);
normals.begin(), numRadial, radius,
height);
Definition at line 63 of file cylinderMeshGenerator.h.