23 namespace SOP_QuadRemeshEnums
62 myTargetQuadCount = 10000;
64 myDecimationLevel = 2;
65 myFeatureBoundaries =
true;
66 myApplySubdivision =
true;
67 myProjectPoints =
false;
75 myMirrorOutput =
true;
76 myEnableConsolidateSeam =
true;
77 myConsolidateSeam = 0.0001;
81 myGuideAttrib =
""_UTsh;
82 myGuideAttribWeight = 0;
95 if (myGroup != src.myGroup)
return false;
96 if (myOutput != src.myOutput)
return false;
97 if (myTargetQuadCount != src.myTargetQuadCount)
return false;
98 if (myDecimation != src.myDecimation)
return false;
99 if (myDecimationLevel != src.myDecimationLevel)
return false;
100 if (myFeatureBoundaries != src.myFeatureBoundaries)
return false;
101 if (myApplySubdivision != src.myApplySubdivision)
return false;
102 if (myProjectPoints != src.myProjectPoints)
return false;
103 if (mySymmetryCenter != src.mySymmetryCenter)
return false;
104 if (myXAxis != src.myXAxis)
return false;
105 if (myXDirection != src.myXDirection)
return false;
106 if (myYAxis != src.myYAxis)
return false;
107 if (myYDirection != src.myYDirection)
return false;
108 if (myZAxis != src.myZAxis)
return false;
109 if (myZDirection != src.myZDirection)
return false;
110 if (myMirrorOutput != src.myMirrorOutput)
return false;
111 if (myEnableConsolidateSeam != src.myEnableConsolidateSeam)
return false;
112 if (myConsolidateSeam != src.myConsolidateSeam)
return false;
113 if (myAlignment != src.myAlignment)
return false;
114 if (myField != src.myField)
return false;
115 if (myBoundaryWeight != src.myBoundaryWeight)
return false;
116 if (myGuideAttrib != src.myGuideAttrib)
return false;
117 if (myGuideAttribWeight != src.myGuideAttribWeight)
return false;
137 graph->
evalOpParm(myGroup, nodeidx,
"group", time, 0);
140 graph->
evalOpParm(myOutput, nodeidx,
"output", time, 0);
141 myTargetQuadCount = 10000;
142 if (
true && ( (
true&&!(((
int64(getOutput())!=0)))) ) )
143 graph->
evalOpParm(myTargetQuadCount, nodeidx,
"targetquadcount", time, 0);
146 graph->
evalOpParm(myDecimation, nodeidx,
"decimation", time, 0);
147 myDecimationLevel = 2;
149 graph->
evalOpParm(myDecimationLevel, nodeidx,
"decimationlevel", time, 0);
150 myFeatureBoundaries =
true;
152 graph->
evalOpParm(myFeatureBoundaries, nodeidx,
"featureboundaries", time, 0);
153 myApplySubdivision =
true;
155 graph->
evalOpParm(myApplySubdivision, nodeidx,
"applysubdivision", time, 0);
156 myProjectPoints =
false;
157 if (
true && ( (
true&&!(((getApplySubdivision()==0)))) ) )
158 graph->
evalOpParm(myProjectPoints, nodeidx,
"projectpoints", time, 0);
161 graph->
evalOpParm(mySymmetryCenter, nodeidx,
"symmetrycenter", time, 0);
164 graph->
evalOpParm(myXAxis, nodeidx,
"xaxis", time, 0);
167 graph->
evalOpParm(myXDirection, nodeidx,
"xdirection", time, 0);
170 graph->
evalOpParm(myYAxis, nodeidx,
"yaxis", time, 0);
173 graph->
evalOpParm(myYDirection, nodeidx,
"ydirection", time, 0);
176 graph->
evalOpParm(myZAxis, nodeidx,
"zaxis", time, 0);
179 graph->
evalOpParm(myZDirection, nodeidx,
"zdirection", time, 0);
180 myMirrorOutput =
true;
182 graph->
evalOpParm(myMirrorOutput, nodeidx,
"mirroroutput", time, 0);
183 myEnableConsolidateSeam =
true;
184 if (
true && ( (
true&&!(((getMirrorOutput()==0)))) ) )
185 graph->
evalOpParm(myEnableConsolidateSeam, nodeidx,
"consolidatepts", time, 0);
186 myConsolidateSeam = 0.0001;
187 if (
true && ( (
true&&!(((getMirrorOutput()==0))||((getEnableConsolidateSeam()==0)))) ) )
188 graph->
evalOpParm(myConsolidateSeam, nodeidx,
"consolidatetol", time, 0);
191 graph->
evalOpParm(myAlignment, nodeidx,
"alignment", time, 0);
194 graph->
evalOpParm(myField, nodeidx,
"field", time, 0);
195 myBoundaryWeight = 0;
196 if (
true && ( (
true&&!(((
int64(getField())==1)))) ) )
197 graph->
evalOpParm(myBoundaryWeight, nodeidx,
"boundaryweight", time, 0);
198 myGuideAttrib =
""_UTsh;
199 if (
true && ( (
true&&!(((
int64(getField())==1)))) ) )
200 graph->
evalOpParm(myGuideAttrib, nodeidx,
"guideattrib", time, 0);
201 myGuideAttribWeight = 0;
202 if (
true && ( (
true&&!(((getGuideAttrib()==
""))||((
int64(getField())==1)))) ) )
203 graph->
evalOpParm(myGuideAttribWeight, nodeidx,
"guideattribweight", time, 0);
219 template <
typename T>
226 if (idx.
size() != instance.
size()+1)
313 { doGetParmValue(idx, instance, value); }
315 { doGetParmValue(idx, instance, value); }
317 { doGetParmValue(idx, instance, value); }
319 { doGetParmValue(idx, instance, value); }
321 { doGetParmValue(idx, instance, value); }
323 { doGetParmValue(idx, instance, value); }
325 { doGetParmValue(idx, instance, value); }
327 { doGetParmValue(idx, instance, value); }
329 { doGetParmValue(idx, instance, value); }
331 { doGetParmValue(idx, instance, value); }
333 { doGetParmValue(idx, instance, value); }
335 template <
typename T>
342 if (idx.
size() != instance.
size()+1)
395 coerceValue(myEnableConsolidateSeam, ( ( value ) ));
420 { doSetParmValue(idx, instance, value); }
422 { doSetParmValue(idx, instance, value); }
424 { doSetParmValue(idx, instance, value); }
426 { doSetParmValue(idx, instance, value); }
428 { doSetParmValue(idx, instance, value); }
430 { doSetParmValue(idx, instance, value); }
432 { doSetParmValue(idx, instance, value); }
434 { doSetParmValue(idx, instance, value); }
436 { doSetParmValue(idx, instance, value); }
438 { doSetParmValue(idx, instance, value); }
440 { doSetParmValue(idx, instance, value); }
456 if (fieldnum.
size() < 1)
465 return "targetquadcount";
469 return "decimationlevel";
471 return "featureboundaries";
473 return "applysubdivision";
475 return "projectpoints";
477 return "symmetrycenter";
491 return "mirroroutput";
493 return "consolidatepts";
495 return "consolidatetol";
501 return "boundaryweight";
503 return "guideattrib";
505 return "guideattribweight";
513 if (fieldnum.
size() < 1)
514 return PARM_UNSUPPORTED;
584 {
for (
int r = 0;
r < 2;
r++)
for (
int c = 0; c < 2; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
586 {
for (
int r = 0;
r < 3;
r++)
for (
int c = 0; c < 3; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
588 {
for (
int r = 0;
r < 4;
r++)
for (
int c = 0; c < 4; c++) is.
bread<
fpreal64>(&v(
r, c), 1); }
601 loadData(is, rampdata);
619 int typelen = colon - data.
buffer();
633 {
int64 iv =
v; UTwrite(os, &iv); }
635 { UTwrite<fpreal64>(os, &
v); }
637 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
639 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
640 UTwrite<fpreal64>(os, &v.
z()); }
642 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
643 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
655 if (s) s->save(ostr);
657 saveData(os, result);
664 ostr << s->getDataTypeToken();
669 saveData(os, result);
673 void save(std::ostream &os)
const
677 saveData(os, myGroup);
678 saveData(os, myOutput);
679 saveData(os, myTargetQuadCount);
680 saveData(os, myDecimation);
681 saveData(os, myDecimationLevel);
682 saveData(os, myFeatureBoundaries);
683 saveData(os, myApplySubdivision);
684 saveData(os, myProjectPoints);
685 saveData(os, mySymmetryCenter);
686 saveData(os, myXAxis);
687 saveData(os, myXDirection);
688 saveData(os, myYAxis);
689 saveData(os, myYDirection);
690 saveData(os, myZAxis);
691 saveData(os, myZDirection);
692 saveData(os, myMirrorOutput);
693 saveData(os, myEnableConsolidateSeam);
694 saveData(os, myConsolidateSeam);
695 saveData(os, myAlignment);
696 saveData(os, myField);
697 saveData(os, myBoundaryWeight);
698 saveData(os, myGuideAttrib);
699 saveData(os, myGuideAttribWeight);
712 loadData(is, myGroup);
713 loadData(is, myOutput);
714 loadData(is, myTargetQuadCount);
715 loadData(is, myDecimation);
716 loadData(is, myDecimationLevel);
717 loadData(is, myFeatureBoundaries);
718 loadData(is, myApplySubdivision);
719 loadData(is, myProjectPoints);
720 loadData(is, mySymmetryCenter);
721 loadData(is, myXAxis);
722 loadData(is, myXDirection);
723 loadData(is, myYAxis);
724 loadData(is, myYDirection);
725 loadData(is, myZAxis);
726 loadData(is, myZDirection);
727 loadData(is, myMirrorOutput);
728 loadData(is, myEnableConsolidateSeam);
729 loadData(is, myConsolidateSeam);
730 loadData(is, myAlignment);
731 loadData(is, myField);
732 loadData(is, myBoundaryWeight);
733 loadData(is, myGuideAttrib);
734 loadData(is, myGuideAttribWeight);
744 if (!thissop)
return getGroup();
746 OP_Utils::evalOpParm(result, thissop,
"group", cookparms.
getCookTime(), 0);
754 if (!thissop)
return getOutput();
756 OP_Utils::evalOpParm(result, thissop,
"output", cookparms.
getCookTime(), 0);
764 if (!thissop)
return getTargetQuadCount();
766 OP_Utils::evalOpParm(result, thissop,
"targetquadcount", cookparms.
getCookTime(), 0);
774 if (!thissop)
return getDecimation();
776 OP_Utils::evalOpParm(result, thissop,
"decimation", cookparms.
getCookTime(), 0);
784 if (!thissop)
return getDecimationLevel();
786 OP_Utils::evalOpParm(result, thissop,
"decimationlevel", cookparms.
getCookTime(), 0);
794 if (!thissop)
return getFeatureBoundaries();
796 OP_Utils::evalOpParm(result, thissop,
"featureboundaries", cookparms.
getCookTime(), 0);
804 if (!thissop)
return getApplySubdivision();
806 OP_Utils::evalOpParm(result, thissop,
"applysubdivision", cookparms.
getCookTime(), 0);
814 if (!thissop)
return getProjectPoints();
816 OP_Utils::evalOpParm(result, thissop,
"projectpoints", cookparms.
getCookTime(), 0);
824 if (!thissop)
return getSymmetryCenter();
826 OP_Utils::evalOpParm(result, thissop,
"symmetrycenter", cookparms.
getCookTime(), 0);
834 if (!thissop)
return getXAxis();
836 OP_Utils::evalOpParm(result, thissop,
"xaxis", cookparms.
getCookTime(), 0);
844 if (!thissop)
return getXDirection();
846 OP_Utils::evalOpParm(result, thissop,
"xdirection", cookparms.
getCookTime(), 0);
854 if (!thissop)
return getYAxis();
856 OP_Utils::evalOpParm(result, thissop,
"yaxis", cookparms.
getCookTime(), 0);
864 if (!thissop)
return getYDirection();
866 OP_Utils::evalOpParm(result, thissop,
"ydirection", cookparms.
getCookTime(), 0);
874 if (!thissop)
return getZAxis();
876 OP_Utils::evalOpParm(result, thissop,
"zaxis", cookparms.
getCookTime(), 0);
884 if (!thissop)
return getZDirection();
886 OP_Utils::evalOpParm(result, thissop,
"zdirection", cookparms.
getCookTime(), 0);
894 if (!thissop)
return getMirrorOutput();
896 OP_Utils::evalOpParm(result, thissop,
"mirroroutput", cookparms.
getCookTime(), 0);
904 if (!thissop)
return getEnableConsolidateSeam();
906 OP_Utils::evalOpParm(result, thissop,
"consolidatepts", cookparms.
getCookTime(), 0);
914 if (!thissop)
return getConsolidateSeam();
916 OP_Utils::evalOpParm(result, thissop,
"consolidatetol", cookparms.
getCookTime(), 0);
924 if (!thissop)
return getAlignment();
926 OP_Utils::evalOpParm(result, thissop,
"alignment", cookparms.
getCookTime(), 0);
934 if (!thissop)
return getField();
936 OP_Utils::evalOpParm(result, thissop,
"field", cookparms.
getCookTime(), 0);
937 return Field(result);
944 if (!thissop)
return getBoundaryWeight();
946 OP_Utils::evalOpParm(result, thissop,
"boundaryweight", cookparms.
getCookTime(), 0);
954 if (!thissop)
return getGuideAttrib();
956 OP_Utils::evalOpParm(result, thissop,
"guideattrib", cookparms.
getCookTime(), 0);
964 if (!thissop)
return getGuideAttribWeight();
966 OP_Utils::evalOpParm(result, thissop,
"guideattribweight", cookparms.
getCookTime(), 0);
973 int64 myTargetQuadCount;
975 int64 myDecimationLevel;
976 bool myFeatureBoundaries;
977 bool myApplySubdivision;
978 bool myProjectPoints;
987 bool myEnableConsolidateSeam;
void setDecimation(bool val)
UT_Vector3D getSymmetryCenter() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
fpreal64 opGuideAttribWeight(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector3D v)
void setProjectPoints(bool val)
static void saveData(std::ostream &os, UT_Vector4D v)
void setApplySubdivision(bool val)
bool getApplySubdivision() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
SOP_Node * getNode() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void loadData(UT_IStream &is, UT_Vector3D &v)
T clampMaxValue(fpreal maxvalue, const T &src) const
void setBoundaryWeight(fpreal64 val)
void setYDirection(YDirection val)
UT_StringHolder opGuideAttrib(const SOP_NodeVerb::CookParms &cookparms) const
YDirection opYDirection(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getGuideAttribWeight() const
static void saveData(std::ostream &os, UT_Matrix2D v)
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
exint bread(int32 *buffer, exint asize=1)
XDirection opXDirection(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
void setConsolidateSeam(fpreal64 val)
const UT_StringHolder & getGuideAttrib() const
Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
void save(std::ostream &os) const
static void saveData(std::ostream &os, fpreal64 v)
void setGuideAttribWeight(fpreal64 val)
fpreal64 opAlignment(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opSymmetryCenter(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
bool opDecimation(const SOP_NodeVerb::CookParms &cookparms) const
void setOutput(Output val)
constexpr SYS_FORCE_INLINE T & z() noexcept
void setAlignment(fpreal64 val)
SYS_FORCE_INLINE const char * buffer() const
exint getNestNumParms(TempIndex idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool opFeatureBoundaries(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
An output stream object that owns its own string buffer storage.
fpreal64 opBoundaryWeight(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
**But if you need a result
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
T clampMinValue(fpreal minvalue, const T &src) const
void setGuideAttrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Matrix3D v)
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
fpreal64 getConsolidateSeam() const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
constexpr SYS_FORCE_INLINE T & x() noexcept
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
constexpr SYS_FORCE_INLINE T & x() noexcept
ParmType getNestParmType(TempIndex fieldnum) const override
int64 getTargetQuadCount() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
bool opYAxis(const SOP_NodeVerb::CookParms &cookparms) const
Field opField(const SOP_NodeVerb::CookParms &cookparms) const
void setMirrorOutput(bool val)
YDirection getYDirection() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
bool opEnableConsolidateSeam(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
fpreal64 opConsolidateSeam(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
int64 opTargetQuadCount(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
constexpr SYS_FORCE_INLINE T & z() noexcept
bool opMirrorOutput(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
const OP_GraphProxy * graph() const
bool getFeatureBoundaries() const
bool load(UT_IStream &is)
bool getEnableConsolidateSeam() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool opZAxis(const SOP_NodeVerb::CookParms &cookparms) const
bool getProjectPoints() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setZDirection(ZDirection val)
int64 getDecimationLevel() const
ZDirection getZDirection() const
ZDirection opZDirection(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
static void saveData(std::ostream &os, int64 v)
void setGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_StringHolder s)
bool getMirrorOutput() const
void setDecimationLevel(int64 val)
static void saveData(std::ostream &os, UT_Vector2D v)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
static void loadData(UT_IStream &is, fpreal64 &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
bool opApplySubdivision(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getAlignment() const
GT_API const UT_StringHolder version
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setTargetQuadCount(int64 val)
bool opProjectPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
static void saveData(std::ostream &os, UT_Matrix4D v)
int64 opDecimationLevel(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void coerceValue(T &result, const S &src) const
fpreal64 getBoundaryWeight() const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool getDecimation() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
DEP_MicroNode * depnode() const
void setFeatureBoundaries(bool val)
bool operator!=(const SOP_QuadRemeshParms &src) const
Utility class for containing a color ramp.
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & w() noexcept
bool opXAxis(const SOP_NodeVerb::CookParms &cookparms) const
void setXDirection(XDirection val)
static void saveData(std::ostream &os, bool v)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
const UT_StringHolder & getGroup() const
void copyFrom(const OP_NodeParms *src) override
static void loadData(UT_IStream &is, UT_Vector2D &v)
XDirection getXDirection() const
fpreal getCookTime() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void setEnableConsolidateSeam(bool val)
const char * findChar(int c) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
bool operator==(const SOP_QuadRemeshParms &src) const
void setSymmetryCenter(UT_Vector3D val)
static void loadData(UT_IStream &is, UT_StringHolder &v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
constexpr SYS_FORCE_INLINE T & y() noexcept
SYS_FORCE_INLINE bool isstring() const
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
constexpr SYS_FORCE_INLINE T & x() noexcept