Loading...
Searching...
No Matches
basisCurvesTopology.h
1//
2// Copyright 2016 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_IMAGING_HD_BASIS_CURVES_TOPOLOGY_H
8#define PXR_IMAGING_HD_BASIS_CURVES_TOPOLOGY_H
9
10#include "pxr/pxr.h"
11#include "pxr/imaging/hd/api.h"
12#include "pxr/imaging/hd/version.h"
13#include "pxr/imaging/hd/topology.h"
14#include "pxr/imaging/hd/tokens.h"
15
16#include "pxr/base/vt/array.h"
17#include "pxr/base/vt/value.h"
18
19#include "pxr/base/tf/token.h"
20
21PXR_NAMESPACE_OPEN_SCOPE
22
59class HdBasisCurvesTopology : public HdTopology {
60public:
61
62 HD_API
64 HD_API
66
67 HD_API
68 HdBasisCurvesTopology(const TfToken &curveType,
69 const TfToken &curveBasis,
70 const TfToken &curveWrap,
71 const VtIntArray &curveVertexCounts,
72 const VtIntArray &curveIndices);
73 HD_API
74 virtual ~HdBasisCurvesTopology();
75
80 HD_API
81 void SetInvisiblePoints(VtIntArray const &invisiblePoints) {
82 _invisiblePoints = invisiblePoints;
83 }
84
85 HD_API
86 VtIntArray const & GetInvisiblePoints() const {
87 return _invisiblePoints;
88 }
89
90 HD_API
91 void SetInvisibleCurves(VtIntArray const &invisibleCurves) {
92 _invisibleCurves = invisibleCurves;
93 }
94
95 HD_API
96 VtIntArray const & GetInvisibleCurves() const {
97 return _invisibleCurves;
98 }
100
102 VtIntArray const &GetCurveVertexCounts() const {
103 return _curveVertexCounts;
104 }
105
107 VtIntArray const &GetCurveIndices() const {
108 return _curveIndices;
109 }
110
112 size_t GetNumCurves() const {
113 return _curveVertexCounts.size();
114 }
115
117 HD_API
118 size_t GetNumPoints() const {
119 return _numPoints;
120 }
121
123 TfToken GetCurveType() const { return _curveType; }
124 TfToken GetCurveBasis() const { return _curveBasis; }
125 TfToken GetCurveWrap() const { return _curveWrap; }
126
128 bool HasIndices() const { return !_curveIndices.empty(); }
129
131 HD_API
132 virtual ID ComputeHash() const;
133
135 HD_API
136 bool operator==(HdBasisCurvesTopology const &other) const;
137 HD_API
138 bool operator!=(HdBasisCurvesTopology const &other) const;
139
141 HD_API
143
145 HD_API
147
148private:
149 TfToken _curveType;
150 TfToken _curveBasis;
151 TfToken _curveWrap;
152 VtIntArray _curveVertexCounts;
153 VtIntArray _curveIndices;
154 VtIntArray _invisiblePoints;
155 VtIntArray _invisibleCurves;
156 size_t _numPoints;
157};
158
159HD_API
160std::ostream& operator << (std::ostream &out, HdBasisCurvesTopology const &topo);
161
162
163PXR_NAMESPACE_CLOSE_SCOPE
164
165#endif // PXR_IMAGING_HD_BASIS_CURVES_TOPOLOGY_H
Topology data for basisCurves.
TfToken GetCurveType() const
See class documentation for valid combination of values.
size_t GetNumCurves() const
Returns the number of curves.
HD_API bool operator==(HdBasisCurvesTopology const &other) const
Equality check between two basisCurves topologies.
HD_API size_t CalculateNeededNumberOfControlPoints() const
Figure out how many vertices / control points this topology references.
bool HasIndices() const
Does the topology use an index buffer.
VtIntArray const & GetCurveIndices() const
Returns indices.
VtIntArray const & GetCurveVertexCounts() const
Returns segment vertex counts.
virtual HD_API ID ComputeHash() const
Returns the hash value of this topology to be used for instancing.
HD_API size_t CalculateNeededNumberOfVaryingControlPoints() const
Figure out how many control points with varying data this topology needs.
HD_API size_t GetNumPoints() const
Returns the number of points implied by vertex counts and indices.
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...