语法

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

参数

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

描述

alignScopeToGeometry 操作通过以下方式操作 scopepivot 和 geometry 属性:

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

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

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

相关内容

示例

与最低边对齐

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

A--> 
   comp(f) { 25 : Faces }
GUID-313283EA-F33A-4F6C-80D6-ECDF7953F04A-web

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

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

GUID-5E3A986A-4314-4CD6-BD68-199BB6AC562D-web
 

基本用法

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

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 }
GUID-397DF5A4-A82E-4C6A-BE67-8E862D79D789-web

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

GUID-48FD9A26-2A54-4125-9302-F7E4715764EA-web

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

B-->
   alignScopeToGeometry(zUp, 1)
GUID-5D916DC5-D0F2-4089-B553-82D1C8E7E1B4-web

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

B-->
   alignScopeToGeometry (yUp, 32, 2)
GUID-1E9A62A7-AEFB-489F-80F6-64469138D212-web

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

B-->
   alignScopeToGeometry(yUp, any, world.lowest)
GUID-AC4C7E25-A795-436D-AD31-08EBD0151508-web