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

OpenSubdiv.OPENSUBDIV_VERSION.Far.Options

OpenSubdiv是一个用于Subdivision Surface的开源库,Far.Options是其中的一个选项类。

概述

Far.Options类是一个选项类,用于为Subdivision算法选择不同的参数,以优化Subdivision Surface的质量和性能。该类的设计,依据了对Subdivision的分层思想,其分为三个分层级别。在每个级别下,提供了一系列可选参数,用户可以根据自己的需求选择合适的参数。

级别一

  • maxIsolation (int):每个顶点的Isolation级别的最大值。isolation级别表示顶点从Subdivision算法开始往下分裂,所需要向下分裂的次数,maxIsolation参数可以限制Subdivision的深度,避免不必要的计算。
  • smoothTriangles (bool):如果为true,那么Subdvision算法将会优化三角形的Subdivision,使得它们的总体表面在高分辨率下更为光滑。

级别二

  • adaptive (bool):是否采用自适应算法。为true时,Subdivision算法将会根据曲面的曲率动态地调整细节层次。
  • useSingleCreasePatch (bool):是否使用单个crease patch。为真时,Subdivision算法将会为连接的两个边上的Crease设置一个特殊的Crease Patch。

级别三

  • trianglesOnly (bool):是否只使用三角形Subdivision。
  • useInfSharpPatch (bool):是否使用InfSharp Patch。InfSharp Patch就是Infinite Sharp Patch,是一种默认的Patch类型,它的作用是保证曲面在它的Crease边缘处保持平滑。如果使用InfSharp Patch,该曲面的Crease边缘将会分离出来,形成一个包含端点位置和方向信息的特殊曲面区域。

结论

根据上述分层的设计,Far.Options类提供了一系列可选参数,帮助用户可以根据自己的需求选择合适的参数。这样,Subdivision算法就可以为不同的三维模型提供更高的质量和性能。