返回列表
mayaAPI

如何使用Python 的cmds 模块来控制模型的软硬边。

软硬边原理:软边能使模型表面光滑,硬边则保留棱角

通过控制顶点法线的计算方式实现,软边共享顶点,硬边则拆分顶点

cmds.polySoftEdge()函数:用于设置软硬边。 通过设置角度阈值(a参数),可以批量将模型的边设置为软边或硬边

例如:

a=0时,所有大于0度的角都变为硬边;

a=180时,所有小于180度的角都变为软边。

也可以先通过列表指定特定的边,再对这些边进行软硬边设置,实现更精确的控制。

一、软硬边原理作用:软硬边决定了模型的平滑组,从而影响光照计算,使模型呈现光滑或棱角的效果。

底层机制: 软边:相邻面的顶点是共享的。Maya会计算这些共享顶点的平均法线,从而产生平滑过渡。硬边:Maya会将共享的顶点拆分成两个独立的顶点,并分别赋予它们各自面的法线方向,从而保留棱角。 

二、cmds操作核心函数:cmds.polySoftEdge(edges, a=角度 值)

这个函数通过设置一个角度國值来批量控制边的属性

批量设置:

全硬边:a=0。所有夹角>0度的边都会被设为硬边。

全软边:a=180。所有夹角<180度的边都会被设为软边(边界边除外,它默认且强制为硬边)。

all_edges = [f"{myPlane[0]}.e[*]"]
cmds.polySoftEdge(all_edges, a=0) # <0°软边 >0°硬边边
cmds.polySoftEdge(all_edges, a=180) # <180°软边 >180°硬边边
cmds.polySoftEdge(all_edges, a=90) # <90°软边 >90°硬边

精确设置:

soft_edges = [f"{myPlane[0]}.e[{i}]" for i in [9,10,12,16]]  # 表达式写法
cmds.polySoftEdge(soft_edges, a=180) # angle角度首字母

1.获取边列表:先通过{myPlane[0]}  .e[*]获取所有边,或通过 [f"{myPlane[0] }.e{i}]"for i in [9,10,12,16]]等方式,根据索引号精确指定需要操作的边。

 2.应用设置:将获取到的特定边列表作为参数传入polysoftEdge函数,即可单独控制这些边的软硬属性。