mirror of
https://github.com/PixarAnimationStudios/OpenSubdiv
synced 2025-01-06 23:10:09 +00:00
Fixed face-varying tagging bug affecting refinement for patches:
- correctly tag sharpened boundaries as irregular - distinguish the single-value case between dart and boundary
This commit is contained in:
parent
9a82ba67eb
commit
b3b0a93a9d
@ -540,7 +540,7 @@ FVarLevel::completeTopologyFromFaceValues(int regularBoundaryValence) {
|
|||||||
|
|
||||||
valueTag._infSharpEdges = (vSpan._infSharpEdgeCount > 0);
|
valueTag._infSharpEdges = (vSpan._infSharpEdgeCount > 0);
|
||||||
valueTag._infIrregular = vSpan._infSharpEdgeCount ? ((vSpan._size - vSpan._infSharpEdgeCount) > 1)
|
valueTag._infIrregular = vSpan._infSharpEdgeCount ? ((vSpan._size - vSpan._infSharpEdgeCount) > 1)
|
||||||
: valueTag._xordinary;
|
: (isInfSharp ? (vSpan._size > 1) : valueTag._xordinary);
|
||||||
|
|
||||||
if (!isInfSharp) {
|
if (!isInfSharp) {
|
||||||
if (vSpan._semiSharpEdgeCount || vTag._semiSharp) {
|
if (vSpan._semiSharpEdgeCount || vTag._semiSharp) {
|
||||||
@ -950,7 +950,7 @@ FVarLevel::gatherValueSpans(Index vIndex, ValueSpan * vValueSpans) const {
|
|||||||
vValueSpans[i]._size = 0;
|
vValueSpans[i]._size = 0;
|
||||||
vValueSpans[i]._disctsEdgeCount = 1;
|
vValueSpans[i]._disctsEdgeCount = 1;
|
||||||
}
|
}
|
||||||
} else if (vHasSingleValue) {
|
} else if (vHasSingleValue && !vIsBoundary) {
|
||||||
// Mark an interior dart disjoint if more than one discts edge:
|
// Mark an interior dart disjoint if more than one discts edge:
|
||||||
vValueSpans[0]._size = 0;
|
vValueSpans[0]._size = 0;
|
||||||
vValueSpans[0]._start = 0;
|
vValueSpans[0]._start = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user