--- outline: [2, 3] --- # SeismicWave - 源文件:`packages/sdk/src/effect/SeismicWave.ts` - 文档位置:`packages/docs/api/effect/SeismicWave.md` ## 接口:`SeismicWaveOptions` - 作用:SeismicWaveOptions 的结构定义。 ### 字段 | 字段名 | 类型 | 必填 | 作用 | | --- | --- | --- | --- | | `emitterPositions` | `THREE.Vector3[]` | 否 | 用于保存 `emitterPositions` 的集合数据。 | | `minRadius` | `number` | 否 | 用于保存 `minRadius` 对应的数据。 | | `maxRadius` | `number` | 否 | 用于保存 `maxRadius` 对应的数据。 | | `waveDuration` | `number` | 否 | 用于保存 `waveDuration` 对应的数据。 | | `spawnInterval` | `number` | 否 | 用于保存 `spawnInterval` 对应的数据。 | | `opacity` | `number` | 否 | 控制对象或材质的透明度。 | | `color` | `THREE.Color` | 否 | 颜色配置。 | | `autoStart` | `boolean` | 否 | 用于标记 `autoStart` 的启用状态。 | | `startDelay` | `number` | 否 | 用于保存 `startDelay` 对应的数据。 | | `shape` | `'sphere' \| 'hemisphere'` | 否 | 用于保存 `shape` 对应的数据。 | | `useRangeCulling` | `boolean` | 否 | 用于标记 `useRangeCulling` 的启用状态。 | ## 类:`SeismicWave` - 作用:SeismicWave 类。 ### 构造函数 #### `new SeismicWave(options?: SeismicWaveOptions)` - 作用:创建 SeismicWave 实例。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `options` | `SeismicWaveOptions` | 否 | 当前功能对应的配置项。 | - 出参:`SeismicWave` - 返回说明:返回当前类实例。 #### `new SeismicWave(position: THREE.Vector3, startDelay?: number)` - 作用:创建 SeismicWave 实例。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `position` | `THREE.Vector3` | 是 | 位置参数。 | | `startDelay` | `number` | 否 | 参数 `startDelay`,类型为 `number`。 | - 出参:`SeismicWave` - 返回说明:返回当前类实例。 #### `new SeismicWave(positions: THREE.Vector3[], startDelay?: number)` - 作用:创建 SeismicWave 实例。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `positions` | `THREE.Vector3[]` | 是 | 参数 `positions`,类型为 `THREE.Vector3[]`。 | | `startDelay` | `number` | 否 | 参数 `startDelay`,类型为 `number`。 | - 出参:`SeismicWave` - 返回说明:返回当前类实例。 #### `new SeismicWave(optionsOrPosition?: SeismicWaveOptions | THREE.Vector3 | THREE.Vector3[], startDelay?: number)` - 作用:创建 SeismicWave 实例。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `optionsOrPosition` | `SeismicWaveOptions \| THREE.Vector3 \| THREE.Vector3[]` | 否 | 参数 `optionsOrPosition`,类型为 `SeismicWaveOptions \| THREE.Vector3 \| THREE.Vector3[]`。 | | `startDelay` | `number` | 否 | 参数 `startDelay`,类型为 `number`。 | - 出参:`SeismicWave` - 返回说明:返回当前类实例。 ### 属性 | 属性名 | 可见性 | 类型 | 作用 | | --- | --- | --- | --- | | `options` | `public` | `Required` | 用于保存 `options` 对应的数据。 | | `emitters` | `public` | `SeismicEmitter[]` | 用于保存 `emitters` 的集合数据。 | | `waves` | `public` | `SeismicWaveInstance[]` | 用于保存 `waves` 的集合数据。 | | `geometry` | `public` | `THREE.SphereGeometry \| null` | 用于保存 `geometry` 对应的数据。 | | `active` | `public` | `boolean` | 用于标记 `active` 的启用状态。 | | `startTime` | `public` | `number \| null` | 用于保存 `startTime` 对应的数据。 | | `delayTimer` | `public` | `number \| null` | 用于保存 `delayTimer` 对应的数据。 | | `boundingBox` | `public` | `ParametricBox \| null` | 用于保存 `boundingBox` 对应的数据。 | ### 方法 #### `init(): void` - 作用:执行 init 初始化逻辑。 - 入参:无 - 出参:`void` - 返回说明:无返回值。 #### `start(): void` - 作用:执行 start 相关逻辑。 - 入参:无 - 出参:`void` - 返回说明:无返回值。 #### `startWithDelay(delay: number): void` - 作用:执行 start With Delay 相关逻辑。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `delay` | `number` | 是 | 参数 `delay`,类型为 `number`。 | - 出参:`void` - 返回说明:无返回值。 #### `stop(): void` - 作用:执行 stop 相关逻辑。 - 入参:无 - 出参:`void` - 返回说明:无返回值。 #### `clearWaves(): void` - 作用:清理 Waves。 - 入参:无 - 出参:`void` - 返回说明:无返回值。 #### `spawnWave(position: THREE.Vector3): void` - 作用:执行 spawn Wave 相关逻辑。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `position` | `THREE.Vector3` | 是 | 位置参数。 | - 出参:`void` - 返回说明:无返回值。 #### `update(data: RenderEventData): void` - 作用:更新 update。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `data` | `RenderEventData` | 是 | 输入数据。 | - 出参:`void` - 返回说明:无返回值。 #### `removeFromScene(scene: THREE.Scene): void` - 作用:移除 From Scene。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `scene` | `THREE.Scene` | 是 | 目标场景实例。 | - 出参:`void` - 返回说明:无返回值。 #### `setOpacity(opacity: number): void` - 作用:设置 Opacity。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `opacity` | `number` | 是 | 参数 `opacity`,类型为 `number`。 | - 出参:`void` - 返回说明:无返回值。 #### `setColor(color: number): void` - 作用:设置 Color。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `color` | `number` | 是 | 颜色参数。 | - 出参:`void` - 返回说明:无返回值。 #### `updateEmitterPositions(positions: THREE.Vector3[]): void` - 作用:更新 Emitter Positions。 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `positions` | `THREE.Vector3[]` | 是 | 参数 `positions`,类型为 `THREE.Vector3[]`。 | - 出参:`void` - 返回说明:无返回值。 #### `dispose(): void` - 作用:释放资源并销毁当前实例。 - 入参:无 - 出参:`void` - 返回说明:无返回值。 #### `createDefaultEmitters(): THREE.Vector3[]` - 作用:创建 Default Emitters。 - 入参:无 - 出参:`THREE.Vector3[]` - 返回说明:返回数组结果,元素类型为 `THREE.Vector3`。 ## 构造示例 - 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue` ```ts const section = bus.getSection(); faultSlip = new FaultSlip(section, {autoStart: true}); faultSlipSeismicWave = new SeismicWave({ emitterPositions: [new THREE.Vector3(0, 0, 0)], shape: 'sphere', autoStart: true }); hasFaultSlip.value = true; }; ``` - 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue` ```ts const createRockBurst = () => { rockBurstSeismicWave = new SeismicWave({ emitterPositions: [new THREE.Vector3(1.5, 1.5, 1.5)], shape: 'sphere', autoStart: true }); hasRockBurst.value = true; }; ``` ## 函数示例 ### `SeismicWave.dispose` - 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue` ```ts if (faultSlipSeismicWave) { faultSlipSeismicWave.dispose(); faultSlipSeismicWave = null; } hasFaultSlip.value = false; }; ``` ## Demo 参考 ### `SeismicWave` 以下示例文件中可以看到该 API 的实际调用方式: - `packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue` - `packages/demo/src/disasterFormationPanel/OilGasScene/OilGasMineSeismicPanel.vue` - `packages/demo/src/panels/TunnelScene/DisturbanceLoadingPanel.vue`