extrude 操作

语法

  • extrude(distance)
  • extrude(extrusionType, distance)

参数

  1. distance - float
    要拉伸的单位数。
  2. extrusionType - selector
    • world.up - 沿世界坐标系的 y 拉伸面。
    • world.up.flatTop - 与 world.up 相同,但是会创建平顶表面。
    • face.normal - 所有面均沿其法线进行拉伸。 默认值为 face.normal
    • vertex.normal - 沿面折点法线对其进行拉伸。
      注:

      始终根据当前形状的几何计算折点法线;将丢弃现有折点法线。 如果面断开连接,则必须合并重复折点,才能使用相邻面法线计算折点法线。

描述

extrude 操作用于拉伸形状。 将获取几何资产中所有网格的每个面,然后沿面法线或拉伸类型指定的给定方向对其进行拉伸。 通过以下方式设置范围方向:

  • 尽量保留 x 轴方向(旧 x 轴会投影到与拉伸方向正交的平面上)。
  • y 轴与拉伸方向一致。
  • z 轴垂直于上述两个轴。

将调整范围大小以与拉伸几何完全匹配。 如果 distance 为负,则 scope.sy 属性将为负。 纹理坐标继承自形状。

组件标签

该操作自动将语义组件标签应用于生成的面组件:

"extrude.bottom"

"extrude.side.outer"

"extrude.side.inner"

"extrude.top"

蓝色:原始面。

黄色:侧面。

红色:孔洞的侧面。

绿色:拉伸面。

自动标签拉伸

有关使用组件标签的详细信息,请参阅:

相关内容

示例

沿法线拉伸

右侧显示了由 2 个面和初始范围组成的初始形状。

具有两个面的初始形状

extrude 操作用于沿所有面的法线对其进行拉伸并对结果进行合并。 不会创建内部 Lamina 面。

范围的 y 轴设置为拉伸方向。

Lot-->
   extrude(10)
已拉伸两个面的形状

对于非水平形状,将单独针对每个面执行拉伸并创建内部面。

范围的 y 轴设置为第一个面的法线。

Lot-->
   extrude(face.normal,10)

默认使用 face.normal,与 extrude(10) 相同。

已拉伸非水平形状

沿折点法线的拉伸会保持面在一起,而不会创建内部面。

范围的 y 轴设置为第一个折点的法线。

Lot-->
   extrude(vertex.normal,10)
已沿折点拉伸的非水平形状

沿世界坐标轴拉伸

所有面均沿世界坐标 y 轴进行拉伸。 不会创建内部 Lamina 面。

范围 y 设置为世界 y 轴。

Lot-->
   innerRectangle(scope) { shape     : Shape 
                         | remainder : Remainder }
Shape-->
   extrude(world.up,10)
Remainder-->
   color(0,1,0)
已沿世界轴拉伸的面

将创建一个平顶表面。 拉伸距离将相对于世界 y 轴基于每个形状的最低折点进行测量。

Shape-->
   extrude(world.up.flatTop,10)
平顶拉伸

拉伸距离设置为至少为形状沿世界 y 轴的最大范围。 如果距离为零,则拉伸为正向。

Shape-->
   extrude(world.up.flatTop,0)
距离为 0 的平顶拉伸

如果距离为负,则拉伸将相对于世界 y 轴基于每个形状的最高折点进行测量。

范围的 y 大小变为负向。

Shape-->
   extrude(world.up.flatTop,-10)
距离为 -10 的平顶拉伸