mirror of
https://github.com/blender/blender
synced 2026-09-29 04:37:17 +03:00
Subsurf: Use edge sharpness directly from converter
Seems it's behaving correct now, surely more tests needed, but this is required for now to move forward.
This commit is contained in:
parent
08e6bccdf4
commit
ebbeddd2f4
4 changed files with 2 additions and 15 deletions
|
|
@ -336,7 +336,7 @@ inline bool TopologyRefinerFactory<TopologyRefinerData>::assignComponentTags(
|
|||
const int num_edges = converter->getNumEdges(converter);
|
||||
for (int edge_index = 0; edge_index < num_edges; ++edge_index) {
|
||||
const float sharpness =
|
||||
opensubdiv_capi::getCompatibleEdgeSharpness(converter, edge_index);
|
||||
converter->getEdgeSharpness(converter, edge_index);
|
||||
setBaseEdgeSharpness(refiner, edge_index, sharpness);
|
||||
}
|
||||
// OpenSubdiv expects non-manifold vertices to be sharp but at the time it
|
||||
|
|
|
|||
|
|
@ -84,13 +84,4 @@ getCAPIFVarLinearInterpolationFromOSD(
|
|||
return OSD_FVAR_LINEAR_INTERPOLATION_NONE;
|
||||
}
|
||||
|
||||
float getCompatibleEdgeSharpness(const OpenSubdiv_Converter* converter,
|
||||
int edge_index) {
|
||||
if (converter->getNumEdgeFaces(converter, edge_index) == 2) {
|
||||
return converter->getEdgeSharpness(converter, edge_index);
|
||||
} else {
|
||||
return OpenSubdiv::Sdc::Crease::SHARPNESS_INFINITE;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
|
|
|
|||
|
|
@ -46,10 +46,6 @@ OpenSubdiv_FVarLinearInterpolation
|
|||
getCAPIFVarLinearInterpolationFromOSD(
|
||||
OpenSubdiv::Sdc::Options::FVarLinearInterpolation linear_interpolation);
|
||||
|
||||
// Get edge sharpness in a way which makes OpenSubdiv happy.
|
||||
float getCompatibleEdgeSharpness(const OpenSubdiv_Converter* converter,
|
||||
int edge_index);
|
||||
|
||||
} // namespace opensubdiv_capi
|
||||
|
||||
#endif // OPENSUBDIV_CONVERTER_INTERNAL_H_
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ bool checkEdgeSharpnessMatch(
|
|||
for (int edge_index = 0; edge_index < num_edges; ++edge_index) {
|
||||
const float sharpness = base_level.GetEdgeSharpness(edge_index);
|
||||
const float conv_sharpness =
|
||||
opensubdiv_capi::getCompatibleEdgeSharpness(converter, edge_index);
|
||||
converter->getEdgeSharpness(converter, edge_index);
|
||||
if (sharpness != conv_sharpness) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue