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

OpenSubdiv.OPENSUBDIV_VERSION.Far.FVarChannel

OpenSubdiv是用于生成细分曲面的一种开源库。Far.FVarChannel是OpenSubdiv中的一个类,用于表示具有变化率的细分曲面数据(FVar数据)。

类型定义

template <class T>
class Far::FVarChannel;

成员函数

const T & GetValue(int faceIndex, int valueIndex) const

获取指定面上指定顶点的FVar数据。

参数:

  • faceIndex:要获取数据的面的索引
  • valueIndex:要获取的顶点的索引

返回值:

  • 指定顶点的FVar数据

void SetValue(int faceIndex, int valueIndex, const T &value)

设置指定面上指定顶点的FVar数据。

参数:

  • faceIndex:要设置数据的面的索引
  • valueIndex:要设置数据的顶点的索引
  • value:要设置的FVar数据

int GetNumValuesPerFace() const

获取每个面上的FVar数据数目。

返回值:

  • 每个面上的FVar数据数目

int GetNumFaces() const

获取FVar数据所对应的面的数目。

返回值:

  • FVar数据所对应的面的数目

成员变量

std::vector<T> _data

一个包含FVar数据的vector。

bool _adaptive

一个标志位,表示FVar数据是否适应曲面细分。

示例

// 创建一个包含10个float类型FVar数据的FVarChannel对象
Far::FVarChannel<float> fvarChannel(10);

// 获取第3个面上第7个顶点的FVar数据
float fvarData = fvarChannel.GetValue(2, 6);

// 设置第5个面上第2个顶点的FVar数据为3.14
fvarChannel.SetValue(4, 1, 3.14f);

// 获取FVar数据所对应的面的数目
int numFaces = fvarChannel.GetNumFaces();

// 获取每个面上的FVar数据数目
int numValuesPerFace = fvarChannel.GetNumValuesPerFace();