deep-engine-demo/packages/docs/api/manager/SelectionManager.md
2026-04-19 18:46:28 +08:00

6.4 KiB

outline
2
3

SelectionManager

  • 源文件:packages/sdk/src/manager/SelectionManager.ts
  • 文档位置:packages/docs/api/manager/SelectionManager.md

类:SelectionManager

  • 作用:选择管理器 用于管理场景中物体的选择状态
  • 继承/实现:extends Emittery<SelectionManagerEventMap>

构造函数

new SelectionManager(viewer: Viewer)

  • 作用:构造函数

  • 入参:

参数名 类型 必填 说明
viewer Viewer - Viewer 实例
  • 出参:SelectionManager
  • 返回说明:返回当前类实例。

属性

属性名 可见性 类型 作用
selectedObject public Object3D | null 当前被选中的场景对象。
scene public Scene 用于保存 scene 对应的数据。
eventManager public EventManager 用于统一管理 eventManager 相关能力。
viewer public Viewer 用于保存 viewer 对应的数据。
selectionBox public Box3Helper 用于显示选中包围盒的辅助对象。
box public Box3 复用的包围盒计算对象。
camera public Camera 用于保存 camera 对应的数据。
sceneHelpers public Scene 用于保存 sceneHelpers 对应的数据。
transformControls public TransformControls 用于保存 transformControls 对应的数据。
objectPositionOnDown public Vector3 用于保存 objectPositionOnDown 对应的数据。
objectRotationOnDown public Euler 用于保存 objectRotationOnDown 对应的数据。
objectScaleOnDown public Vector3 用于保存 objectScaleOnDown 对应的数据。

访问器

get isControl(): boolean

  • 作用:获取 is Control。

  • 入参:无

  • 出参:boolean

  • 返回说明:返回布尔结果。

set isControl(value: boolean)

  • 作用:设置 is Control。

  • 入参:

参数名 类型 必填 说明
value boolean 要写入的新值。
  • 出参:void
  • 返回说明:无返回值。

方法

init(): void

  • 作用:初始化选择管理器

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

initSelectionBox(): void

  • 作用:执行 init Selection Box 初始化逻辑。

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

initTransformControls(): void

  • 作用:执行 init Transform Controls 初始化逻辑。

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

startControl(): void

  • 作用:执行 start Control 相关逻辑。

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

endControl(): void

  • 作用:执行 end Control 相关逻辑。

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

setSelectedObject(object: Object3D | null | undefined): void

  • 作用:设置选择的物体

  • 入参:

参数名 类型 必填 说明
object Object3D | null | undefined - 要选择的物体
  • 出参:void
  • 返回说明:无返回值。

clearSelection(): void

  • 作用:取消选择

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

selectObjectByUuid(uuid: string): void

  • 作用:通过 UUID 设置选择的模型

  • 入参:

参数名 类型 必填 说明
uuid string - 模型的 UUID
  • 出参:void
  • 返回说明:无返回值。

getSelectedObject(): Object3D<Object3DEventMap> | null

  • 作用:获取当前选中的物体

  • 入参:无

  • 出参:Object3D<Object3DEventMap> \| null

  • 返回说明:当前选中的物体,如果没有选中则返回 null

setTransformMode(mode: 'translate' | 'rotate' | 'scale'): void

  • 作用:设置控制模式

  • 入参:

参数名 类型 必填 说明
mode 'translate' | 'rotate' | 'scale' 控制模式:'translate', 'rotate', 'scale'
  • 出参:void
  • 返回说明:无返回值。

getControlledObject(): Object3D<Object3DEventMap> | null

  • 作用:获取当前被控制的模型

  • 入参:无

  • 出参:Object3D<Object3DEventMap> \| null

  • 返回说明:返回 Object3D<Object3DEventMap> | null

connect(domElement: HTMLElement): void

  • 作用:连接到渲染器的 DOM 元素

  • 入参:

参数名 类型 必填 说明
domElement HTMLElement 渲染器的 DOM 元素
  • 出参:void
  • 返回说明:无返回值。

setSpace(space: 'world' | 'local'): void

  • 作用:设置变换空间

  • 入参:

参数名 类型 必填 说明
space 'world' | 'local' 空间:'world' 或 'local'
  • 出参:void
  • 返回说明:无返回值。

setTranslationSnap(snap: number): void

  • 作用:设置平移捕捉

  • 入参:

参数名 类型 必填 说明
snap number 捕捉距离
  • 出参:void
  • 返回说明:无返回值。

dispose(): void

  • 作用:销毁选择管理器

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

构造示例

  • 当前 Demo 中没有直接展示 SelectionManager 的构造调用。

函数示例

SelectionManager.setSelectedObject

  • 来源:packages/demo/src/hooks/useDebug.ts
            // 派发树更新
            bus.triggerSceneTreeUpdate()

            // 选择对象
            viewer!.selection!.setSelectedObject(box);
        },
        exportSceneJSON: () => {
            viewer.downloadSceneJSON();
        }
    };

SelectionManager.selectObjectByUuid

  • 来源:packages/demo/src/components/SceneTree.vue
      if (bus.viewer && bus.viewer.selection) {
        bus.viewer.selection.selectObjectByUuid(option.uuid);
      }
    },
  }
}

SelectionManager.setTransformMode

  • 来源:packages/demo/src/hooks/useDebug.ts
    // 控制模式
    controlFolder.add(controlParams, 'controlMode', ['translate', 'rotate', 'scale']).name('控制模式')
        .onChange((value) => {
            viewer.selection.setTransformMode(value as 'translate' | 'rotate' | 'scale');
        });