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

306 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
outline: [2, 3]
---
# RuptureEventManager
- 源文件:`packages/sdk/src/manager/RuptureEventManager.ts`
- 文档位置:`packages/docs/api/manager/RuptureEventManager.md`
## 接口:`RuptureEvent`
- 作用:破裂事件数据接口
### 字段
| 字段名 | 类型 | 必填 | 作用 |
| --- | --- | --- | --- |
| `position` | `{ x: number; y: number; z: number }` | 是 | 位置数据。 |
| `time` | `number` | 是 | 用于保存 `time` 对应的数据。 |
| `energy` | `number` | 是 | 用于保存 `energy` 对应的数据。 |
## 接口:`RuptureEventConfig`
- 作用:破裂事件配置接口
### 字段
| 字段名 | 类型 | 必填 | 作用 |
| --- | --- | --- | --- |
| `minRadius` | `number` | 否 | 用于保存 `minRadius` 对应的数据。 |
| `maxRadius` | `number` | 否 | 用于保存 `maxRadius` 对应的数据。 |
| `minEnergy` | `number` | 否 | 用于保存 `minEnergy` 对应的数据。 |
| `maxEnergy` | `number` | 否 | 用于保存 `maxEnergy` 对应的数据。 |
| `mappingType` | `'linear' \| 'logarithmic'` | 否 | 用于保存 `mappingType` 对应的数据。 |
| `crackModelUrls` | `string[]` | 否 | 用于保存 `crackModelUrls` 的集合数据。 |
| `crackBaseScale` | `number` | 否 | 用于保存 `crackBaseScale` 对应的数据。 |
## 类:`RuptureEventManager`
- 作用:破裂事件管理类 通过球体可视化破裂事件,球体大小表示能量,颜色表示时间序列
### 构造函数
#### `new RuptureEventManager(viewer: Viewer, config?: RuptureEventConfig)`
- 作用:构造函数
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `viewer` | `Viewer` | 是 | Viewer实例 |
| `config` | `RuptureEventConfig` | 否 | 配置选项 |
- 出参:`RuptureEventManager`
- 返回说明:返回当前类实例。
### 属性
| 属性名 | 可见性 | 类型 | 作用 |
| --- | --- | --- | --- |
| `viewer` | `public` | `Viewer` | 用于保存 `viewer` 对应的数据。 |
| `scene` | `public` | `THREE.Scene` | 用于保存 `scene` 对应的数据。 |
| `events` | `public` | `Map<number, { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group }>` | 用于保存 `events` 的映射关系。 |
| `config` | `public` | `Required<RuptureEventConfig>` | 用于保存 `config` 对应的数据。 |
| `minTime` | `public` | `number` | 用于保存 `minTime` 对应的数据。 |
| `maxTime` | `public` | `number` | 用于保存 `maxTime` 对应的数据。 |
| `crackModels` | `public` | `THREE.Group[]` | 用于保存 `crackModels` 的集合数据。 |
| `isLoadingModels` | `public` | `boolean` | 用于标记 `isLoadingModels` 的启用状态。 |
### 方法
#### `loadCrackModels(): Promise<void>`
- 作用:预加载裂缝模型
- 入参:无
- 出参:`Promise<void>`
- 返回说明:返回 Promise解析结果类型为 `void`
#### `createCrackModel(event: RuptureEvent, radius: number): THREE.Group<THREE.Object3DEventMap> | undefined`
- 作用:为破裂球创建裂缝模型
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `event` | `RuptureEvent` | 是 | 破裂事件数据 |
| `radius` | `number` | 是 | 球体半径 |
- 出参:`THREE.Group<THREE.Object3DEventMap> \| undefined`
- 返回说明:裂缝模型实例
#### `addEvent(event: RuptureEvent): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
- 作用:添加单个破裂事件
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `event` | `RuptureEvent` | 是 | 破裂事件数据 |
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
- 返回说明:创建的球体网格
#### `addEvents(events: RuptureEvent[]): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>[]`
- 作用:批量添加破裂事件
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `events` | `RuptureEvent[]` | 是 | 破裂事件数组 |
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>[]`
- 返回说明:创建的球体网格数组
#### `removeEvent(time: number): boolean`
- 作用:删除破裂事件
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `time` | `number` | 是 | 事件时间戳 |
- 出参:`boolean`
- 返回说明:是否删除成功
#### `clearEvents(): void`
- 作用:清空所有破裂事件
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `applyFilter(recentMinutes: number | null, energyThreshold: number | null): void`
- 作用:根据时间窗口和能量阈值过滤事件
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `recentMinutes` | `number \| null` | 是 | 最近N分钟null表示不过滤 |
| `energyThreshold` | `number \| null` | 是 | 能量阈值null表示不过滤 |
- 出参:`void`
- 返回说明:无返回值。
#### `cancelFilter(): void`
- 作用:取消过滤,显示所有事件
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `getEvent(time: number): { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; } | undefined`
- 作用:获取事件
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `time` | `number` | 是 | 事件时间戳 |
- 出参:`{ event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; } \| undefined`
- 返回说明:事件数据、网格和裂缝模型
#### `getAllEvents(): Map<number, { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; }>`
- 作用:获取所有事件
- 入参:无
- 出参:`Map<number, { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; }>`
- 返回说明所有事件的Map
#### `getVisibleEventCount(): number`
- 作用:获取当前显示的事件数量
- 入参:无
- 出参:`number`
- 返回说明:可见事件数量
#### `getTotalEventCount(): number`
- 作用:获取总事件数量
- 入参:无
- 出参:`number`
- 返回说明:总事件数量
#### `updateConfig(config: Partial<RuptureEventConfig>): void`
- 作用:更新配置
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `config` | `Partial<RuptureEventConfig>` | 是 | 新配置 |
- 出参:`void`
- 返回说明:无返回值。
#### `createEventSphere(event: RuptureEvent): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
- 作用:创建事件球体
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `event` | `RuptureEvent` | 是 | 破裂事件数据 |
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
- 返回说明:球体网格
#### `mapEnergyToRadius(energy: number): number`
- 作用:将能量映射到半径
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `energy` | `number` | 是 | 能量值 |
- 出参:`number`
- 返回说明:半径值
#### `mapTimeToColor(time: number): THREE.Color`
- 作用:将时间映射到颜色(蓝 → 黄 → 红)
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `time` | `number` | 是 | 时间戳 |
- 出参:`THREE.Color`
- 返回说明:颜色
#### `updateTimeRange(time: number): void`
- 作用:更新时间范围
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `time` | `number` | 是 | 时间戳 |
- 出参:`void`
- 返回说明:无返回值。
#### `recalculateTimeRange(): void`
- 作用:重新计算时间范围
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `updateAllColors(): void`
- 作用:更新所有事件的颜色
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
## 构造示例
- 当前 Demo 中没有直接展示 `RuptureEventManager` 的构造调用。
## 函数示例
- 当前 Demo 中没有直接展示 `RuptureEventManager` 的公开方法调用。
## Demo 参考
### `RuptureEvent`
以下示例文件中可以看到该 API 的实际调用方式:
- `packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue`