======PolyExtrude======
//Extrudes polygonal faces and edges.//
\\ //Ver 19.5//
----
====Overview====
非常常用的“挤出”节点,主要的功能有:
* 对面和边的挤出
* 使挤出的部分跟随指定的曲线
* 对挤出的部分进行编组
需要注意的是,在 polyextrude 中,面分为三个部分://front、back、side//。而这三个部分是针对于**挤出**的部分来说的:
{{ :vfx:houdini:sop:poly_extrude_1-min.png?600 |}}
新版的 //PolyExtrude// **不再支持** //local variable / per-primitive/edge expressions//。如有需要可以通过 local control 中的属性来控制。
===挤出方向与法线===
* 如果挤出的是内部的边(共享边),那么使用 surface normal 作为方向
* 如果是边缘边(非共享边),那么使用 surface direction 作为方向
====Distance vs. transform====
默认情况下,Poly extrude 有两种方式进行挤出:
* 使用 Distance 挤出:沿着**法线**的方向进行挤出
* 使用 Transform extruded front 进行挤出:这种方法实际上就是在对**挤出面**进行变换操作。该挤出分为两种情况:local 和 global,分别对应 local space / world space(也就是沿着 X,Y,Z 轴进行变换)。
Distance / twist 会对 Transform extruded front 造成影响,因此应该尽可能的只是用其中的一项。
====Multiple extrusions====
* 有多个挤出存在的时候,所有相连的部分会被视作一个组(edges / faces)。
* 可以通过改变 Divide into 模式至 Individual components 达到同样的效果。
* 每个挤出的组均使用自身的 local space,除非强制设置了 global。
===Splitting groups===
在选定了挤出的区域之后,一般可以通过 Splitting group 来控制挤出的**间隔**。每个间隔之间的 faces / edges 会作为一整个挤出源来进行挤出(也就是以相邻的面或者边为一个整体单位)。
\\
\\
操作方法很简单,勾选好 split group,再点击右边的箭头,选中所有需要的间隔即可。
\\
\\
需要注意的是,如果挤出源是 face,那么需要 edge 作为间隔,反之亦然。
====常用参数====
|Split Group | 以 edge / face 作为间隔,间隔之间所有相连的元素作为一个整体进行挤出 |
|Spine shape | 可以通过选择 Curve From Second Input 来通过指定曲线挤出 |
===Extrusion===
|Front transform | 允许对已经挤出的面(front)进行变换操作,实际上就是单独对挤出部分应用 transform,连参数都是一样的。 |
|Transform Space | ''global'' 是针对所有的 front 做变换,变换方向参考坐标轴。 |
==Output Geometry and Groups==
|Front / Back Boundary Group | 对 front / back 和 side 的边界(border)边进行编组。Front 组显示为绿色,Back 组显示为红色。 |
|Preserve Groups|若挤出源所在 face / edge 属于任意组,那么由该源挤出的部分也将被添加到源所在的组中。|
==Insetting==
|Limit insetting|保证挤出的 front 的质量(无退化 / 压缩 / 零大小等等问题)。|
|Use common limit|**关闭后**允许 inset 将 front 收缩到零大小。|
==Normals==
默认情况下,如果输入端自带发现属性,polyextrude 会自动将该属性添加到挤出的部分上。(经测试,需要点选 Add Vertex Normals 选项,之前自定义的 N 才能覆盖到挤出的 front 上。)
|Cusp All Front / Back Boundary Edges|对挤出的 front 边缘边进行锐化,忽略 cusp angle。|
===Spine Control===
==Shape Adjustment==
|Interpolation|Rotating frame 方法可能在处理**带扭曲的挤出部分**上可能更佳。|
|Spacing|控制挤出部分上细分的分布。Uniform 是平均分布,Curvature Sensitive 指在弯曲的地方添加更多的细分。|
==External Spine==
|Reverse Direction|翻转挤出的方向。|
|Front / Back Blend|该属性控制挤出部分的末尾 / 开端 与挤出源之间的blend。|
==Thickness==
该属性可以通过 Ramp / 属性控制挤出部分的大小,非常好用(同 twist)。有两点要注意:
* Thickness Attribute 的值会与 Thickness scale 相乘,与 Thickness Ramp 相加。
* Thickness Ramp 的**初值**不是 ''0'' 而是 ''0.5'',超过该值是“放”,小于该值是“缩”。
===Local Control===
Local Control 中的 Scale 经常配合 attribute 一起使用,比如来自于 attribute paint 的数据。需要注意的是:
* 源数据类型必须是 **primitive attribute**
* 某些变形效果需要打开 ''Divide into - individual Elements''
Local Control 允许创建一系列属性,这些属性可以对标准挤出方式的数值进行缩放(**相乘**)。
====References====
* [[https://vimeo.com/142470680|PolyExtrude | Curve Input]]
* [[https://www.sidefx.com/docs/houdini/nodes/sop/polyextrude.html|Poly Extrude 2.0 geometry node]]