OpenSubdiv.OPENSUBDIV_VERSION.Bfr
OpenSubdiv.OPENSUBDIV_VERSION.Far
OpenSubdiv.OPENSUBDIV_VERSION.Osd
OpenSubdiv.OPENSUBDIV_VERSION.Sdc
OpenSubdiv.OPENSUBDIV_VERSION.Vtr

OpenSubdiv.OPENSUBDIV_VERSION.Sdc.SchemeTypeTraits

OpenSubdiv是一个高性能、可扩展、开源的细分曲面库,它包含一系列用于细分曲面的算法以及相应的数据结构。

OpenSubdiv的Sdc(Subdivision Control)模块是用来管理和操作细分曲面控制数据的核心模块之一,SchemeTypeTraits是Sdc模块中的一个关键类,它用于定义Sdc模块中的不同细分算法的特性。

Sdc.SchemeTypeTraits类

Sdc.SchemeTypeTraits是一个模板类,用于定义Sdc模块中的不同细分算法的特性,包括细分算法的名称、是否支持边界细分、是否支持非自交细分等等。

Sdc.SchemeTypeTraits的定义如下:

template <unsigned int _N>
struct SchemeTypeTraits
{
    static const int MAX_WEIGHTS_PER_VERTEX = _N;
    static const char* getName();
    static bool supportsTopologyTags();
    static bool supportsNonmanifoldTopology();
    static bool supportsSmoothCorner();
    static bool supportsGregory();
    static bool isLoopScheme();
    static bool isCatmarkScheme();
    static bool isBilinearScheme();
    static bool isLinearScheme();
    static bool isNonLinearScheme();
    static bool isNonCatmarkScheme();
};

其中,_N表示顶点上最大的边界权重,MAX_WEIGHTS_PER_VERTEX表示最大的边界权重。

其他函数的功能如下:

  • getName():获取当前SchemeTypeTraits实例的名称。
  • supportsTopologyTags():当前算法是否支持拓扑标签。
  • supportsNonmanifoldTopology():当前算法是否支持非流形拓扑。
  • supportsSmoothCorner():当前算法是否支持锐角平滑。
  • supportsGregory():当前算法是否支持Gregory细分。
  • isLoopScheme():当前算法是否为Loop细分。
  • isCatmarkScheme():当前算法是否为Catmull-Clark细分。
  • isBilinearScheme():当前算法是否为双线性细分。
  • isLinearScheme():当前算法是否为线性细分。
  • isNonLinearScheme():当前算法是否为非线性细分。
  • isNonCatmarkScheme():当前算法是否为非Catmull-Clark细分。

Sdc.SchemeTypeTraits定义了一些用于描述不同细分算法特性的函数,在Sdc模块的其他类中使用这些函数可以根据算法类型不同来实现相应的不同操作。