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

OpenSubdiv.OPENSUBDIV_VERSION.Far.StencilTableFactory

OpenSubdiv.OPENSUBDIV_VERSION.Far.StencilTableFactory是一个用于构建Subdivision表面的边缘标记和置换着色器的工厂,它使用FarStencilTable以执行自适应细分。

FarStencilTableFactory类

构造函数

函数名 描述
FarStencilTableFactory() 构造一个空的“ FarStencilTableFactory ”对象。

方法

函数名 描述
Create(table) -> bool 基于一个“ FarTable ”对象来创建FarStencilTable对象。如果成功,则返回True,如果失败,则返回False。
SetMaxLevels(levels) 设置该“ FarStencilTableFactory ”对象允许的最大细分级别。
SetUseInfSharpVerts(value) 设置该“ FarStencilTableFactory ”对象是否使用无穷远尖端以生成自适应细分。

FarStencilTable类

方法

函数名 描述
GetSizes(level) -> Tuple[int, int, int] 返回给定细分级别的顶点、边缘和面的总数。
GetOffsets(level) -> Tuple[Sequence[int], Sequence[int], Sequence[int]] 返回需要从顶点、边和面读取数据的偏移量。

示例

以下是使用FarStencilTableFactory的示例代码:

import OpenSubdiv.OPENSUBDIV_VERSION as osd

table_factory = osd.Far.StencilTableFactory()

# 设置最大细分级别和使用无限远尖端
table_factory.SetMaxLevels(3)
table_factory.SetUseInfSharpVerts(True)

# 从“ FarTable ”对象创建“ FarStencilTable ”
far_table = osd.Far.Table()
if table_factory.Create(far_table):
    print("Created FarStencilTable succesfully!")
else:
    print("Failed to create FarStencilTable!")

参考