Fixed single-crease patch isolation now required without boundary isolation:

- added member to FeatureMask for single-crease option without inf-sharp
    - adjusted adaptive refinement to handle unisolated interior sharp edges
This commit is contained in:
barry 2019-04-24 14:56:49 -07:00
parent eb72dc847b
commit 184ae997d6

View File

@ -318,6 +318,8 @@ namespace internal {
int_type selectInfSharpIrregularCrease : 1;
int_type selectInfSharpIrregularCorner : 1;
int_type selectUnisolatedInteriorEdge : 1;
int_type selectNonManifold : 1;
int_type selectFVarFeatures : 1;
};
@ -355,6 +357,8 @@ namespace internal {
selectInfSharpIrregularCrease = true;
selectInfSharpIrregularCorner = true;
selectUnisolatedInteriorEdge = useSingleCreasePatch && !options.useInfSharpPatch;
selectNonManifold = true;
selectFVarFeatures = options.considerFVarChannels;
}
@ -570,6 +574,13 @@ namespace {
return doesInfSharpVTagHaveFeatures(compVTag, featureMask);
} else if (isolateQuadBoundaries) {
return true;
} else if (featureMask.selectUnisolatedInteriorEdge) {
// Needed for single-crease approximation to inf-sharp interior edge:
for (int i = 0; i < 4; ++i) {
if (vTags[i]._infSharpEdges && !vTags[i]._boundary) {
return true;
}
}
}
} else {
if (atLeastOneSmoothCorner && !compVTag._boundary) {