alignScopeToGeometry 操作

语法

  • alignScopeToGeometry(upAxis, faceIndex, edgeIndex)
  • alignScopeToGeometry(upAxis, faceSelector, edgeIndex)
  • alignScopeToGeometry(upAxis, faceIndex, edgeSelector)
  • alignScopeToGeometry(upAxis, faceSelector, edgeSelector)

参数

  1. upAxis - selector
    { yUp | zUp } - xUp 不受支持。
  2. faceIndex - float
    包含边的面的索引,从 0 开始。 负索引会进行模校正,即 -1 是最后一个面。
  3. edgeIndex - float
    将变为新 x 轴的边的索引,从 0 开始。 负索引会进行模校正,即 -1 是最后一个边。 边索引相对于所选面。
  4. faceSelector - selector
    • world.lowest - 采用 y 世界坐标最低的面。
    • largest - 采用最大面。
    • any -(仅与 edgeSelector 配合使用)采用边选择器具有外部值的面。
  5. edgeSelectorselector
    • world.lowest - 采用 y 世界坐标最低的边。
    • longest - 采用最长边。

描述

alignScopeToGeometry 操作通过以下方式操作 scopepivotgeometry 属性:

  1. 选择由 upAxis 选择器和所选面及边定义的新枢轴方向。
  2. 沿这些轴计算几何的定向边界框 (OOB),并将 pivot.p 设置为 OOB 的原点。 新范围维度设置为 OOB。
  3. 将几何变换为此新坐标系。

可使用这些参数选择几何中面的边。 范围的新 x 轴将与此边平行,向上轴将为面的法线。

几何将投影到新范围,即以世界坐标的形式保持在同一位置。

相关内容

示例

与最低边对齐

初始场景:面组件分割后,范围(以及枢轴、FAT)恰巧定位成 y 轴指向地面。

A--> 
   comp(f) { 25 : Faces }
面组件分割后的范围

使用 anyworld.lowest 选择器应用 alignScopeToGeometry 可确保范围的 y 轴指向上方。 例如,当在屋顶上放置砖块时,这将非常有用。

A--> 
   comp(f) { 25 : Faces }
   alignScopeToGeometry (zUp, any, world.lowest)

将

基本用法

初始场景:应用组件分割后,插入了一个网格并突出显示两个面。

A-->
   s(2,3,2)
   i("cylinder.obj")
   B
   comp(f) { 0  : color("#ff0000") 
                  t(0,0,0.01) 
                  X 
           | 32 : color("#0000ff") 
                  t(0,0,0.01) 
                  X }
突出显示面的网格

相同的场景,形状 B 的范围和枢轴突出显示。

形状的范围和枢轴突出显示

执行 alignScopeToGeometry 后,枢轴(和范围) x 轴的指向与面 0(红色)的边 1 一致;z 轴的指向与面法线一致并且 x 轴与另外两个轴垂直。 枢轴定位在边起点处,范围为几何的枢轴对齐边界框。

B-->
   alignScopeToGeometry(zUp, 1)
具有枢轴对齐边界框的范围

在这里,使用面 32(蓝色)的第二条边,并且面法线变为新的 y 轴。

B-->
   alignScopeToGeometry (yUp, 32, 2)
具有面的第二条边的范围

在此情况下,anyworld.lowest 选择 y 位置(采用世界坐标)最低的边,该边将变为新 x 轴,相应的面法线变为新 y 轴(因为采用 yUp 选择器)。

B-->
   alignScopeToGeometry(yUp, any, world.lowest)
最低 y 位置成为新 x 轴的范围