7#ifndef OPENSUBDIV3_SDC_CREASE_H
8#define OPENSUBDIV3_SDC_CREASE_H
10#include "../version.h"
15namespace OPENSUBDIV_VERSION {
112 int incidentEdgeCountAtEndVertex,
113 float const* edgeSharpnessAroundEndVertex)
const;
116 float const* incidentEdgeSharpnessAroundVertex,
117 float* childEdgesSharpnessAroundVertex)
const;
128 int incidentEdgeCount,
129 float const* incidentEdgeSharpness)
const;
131 int sharpEdgeCount)
const;
146 float childVertexSharpness,
147 int incidentEdgeCount,
148 float const* incidentEdgeSharpness,
149 float const* childEdgesSharpness)
const;
152 int incidentEdgeCount,
153 int sharpEdgePair[2])
const;
194 if (sharpness > 1.0f)
return (sharpness - 1.0f);
212 int sharpEdgePair[2])
const {
217 sharpEdgePair[0] = 0;
218 while (
IsSmooth(incidentEdgeSharpness[sharpEdgePair[0]])) ++ sharpEdgePair[0];
220 sharpEdgePair[1] = incidentEdgeCount - 1;
221 while (
IsSmooth(incidentEdgeSharpness[sharpEdgePair[1]])) -- sharpEdgePair[1];
227using namespace OPENSUBDIV_VERSION;
Types, constants and utilities related to semi-sharp creasing – whose implementation is independent o...
float SubdivideVertexSharpness(float vertexSharpness) const
static bool IsInfinite(float sharpness)
float SharpenBoundaryVertex(float edgeSharpness) const
static float const SHARPNESS_SMOOTH
void GetSharpEdgePairOfCrease(float const *incidentEdgeSharpness, int incidentEdgeCount, int sharpEdgePair[2]) const
static float const SHARPNESS_INFINITE
Rule DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount, float const *incidentEdgeSharpness) const
float decrementSharpness(float sharpness) const
static bool IsSmooth(float sharpness)
Rule DetermineVertexVertexRule(float vertexSharpness, int sharpEdgeCount) const
static bool IsSemiSharp(float sharpness)
Crease(Options const &options)
void SubdivideEdgeSharpnessesAroundVertex(int incidentEdgeCountAtVertex, float const *incidentEdgeSharpnessAroundVertex, float *childEdgesSharpnessAroundVertex) const
float SubdivideUniformSharpness(float vertexOrEdgeSharpness) const
float SharpenBoundaryEdge(float edgeSharpness) const
float ComputeFractionalWeightAtVertex(float vertexSharpness, float childVertexSharpness, int incidentEdgeCount, float const *incidentEdgeSharpness, float const *childEdgesSharpness) const
Transitional weighting: When the rules applicable to a parent vertex and its child differ,...
float SubdivideEdgeSharpnessAtVertex(float edgeSharpness, int incidentEdgeCountAtEndVertex, float const *edgeSharpnessAroundEndVertex) const
static bool IsSharp(float sharpness)
All supported options applying to subdivision scheme.
@ CREASE_UNIFORM
Catmark rule.
CreasingMethod GetCreasingMethod() const
Get edge crease rule.
VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const
Get vertex boundary interpolation rule.
@ VTX_BOUNDARY_EDGE_AND_CORNER