feat(all): init commit
This commit is contained in:
@@ -0,0 +1,557 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Viewer
|
||||
|
||||
- 源文件:`packages/sdk/src/core/Viewer.ts`
|
||||
- 文档位置:`packages/docs/api/core/Viewer.md`
|
||||
|
||||
## 接口:`CameraState`
|
||||
|
||||
- 作用:相机状态接口
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `position` | `{ x: number; y: number; z: number; }` | 是 | 位置数据。 |
|
||||
| `target` | `{ x: number; y: number; z: number; }` | 是 | 目标点数据。 |
|
||||
|
||||
## 接口:`SceneNode`
|
||||
|
||||
- 作用:场景节点接口
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `uuid` | `string` | 是 | 对象的唯一标识。 |
|
||||
| `name` | `string` | 是 | 名称。 |
|
||||
| `displayName` | `string` | 是 | 显示名称 |
|
||||
| `hasMappedName` | `boolean` | 否 | 是否有映射名称 |
|
||||
| `parent` | `string \| null` | 是 | 父级对象标识。 |
|
||||
| `children` | `SceneNode[]` | 是 | 子节点列表。 |
|
||||
| `type` | `string` | 是 | 类型标识。 |
|
||||
| `visible` | `boolean` | 是 | 控制对象是否可见。 |
|
||||
| `opacity` | `number` | 是 | 控制对象或材质的透明度。 |
|
||||
| `isClippingGroup` | `boolean` | 是 | 用于标记 `isClippingGroup` 的启用状态。 |
|
||||
|
||||
## 接口:`ModelNameMapping`
|
||||
|
||||
- 作用:模型名称映射接口
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | 名称。 |
|
||||
| `displayName` | `string` | 是 | 用于界面展示的名称。 |
|
||||
|
||||
## 接口:`IViewerOptions`
|
||||
|
||||
- 作用:视图配置选项
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `initCameraState` | `CameraState` | 否 | 初始相机状态配置。 |
|
||||
| `raycastEnabled` | `boolean` | 否 | 是否启用射线拾取。 |
|
||||
| `modelNameMappings` | `ModelNameMapping[]` | 否 | 模型名称映射 |
|
||||
| `clipping` | `IClippingManagerOptions` | 否 | 剖切配置 |
|
||||
|
||||
## 类:`Viewer`
|
||||
|
||||
- 作用:三维视图管理器 Deep Engine 的核心类,负责管理场景、相机、渲染器等
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new Viewer(container: string | HTMLDivElement, options: IViewerOptions = {})`
|
||||
|
||||
- 作用:创建 Viewer 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `container` | `string \| HTMLDivElement` | 是 | 挂载容器,支持 DOM ID 或 DOM 元素。 |
|
||||
| `options` | `IViewerOptions` | 否 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`Viewer`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `events` | `public` | `EventManager` | 事件管理器 |
|
||||
| `resources` | `public` | `ResourceManager` | 资源管理器 |
|
||||
| `clipping` | `public` | `ClippingManager` | 剖切管理器 |
|
||||
| `container` | `public` | `HTMLElement \| null` | 当前渲染视图挂载的 DOM 容器。 |
|
||||
| `scene` | `public` | `THREE.Scene` | Three.js 主场景,承载业务模型与特效对象。 |
|
||||
| `sceneHelpers` | `public` | `THREE.Scene` | 辅助场景,通常用于调试辅助器和非业务对象。 |
|
||||
| `perspectiveCamera` | `public` | `THREE.PerspectiveCamera` | 透视相机实例。 |
|
||||
| `orthographicCamera` | `public` | `THREE.OrthographicCamera` | 正交相机实例。 |
|
||||
| `currentCameraType` | `public` | `'perspective' \| 'orthographic'` | 当前启用的相机类型。 |
|
||||
| `renderer` | `public` | `THREE.WebGPURenderer \| null` | WebGPU 渲染器实例。 |
|
||||
| `animationFrameId` | `public` | `number \| null` | 当前渲染循环对应的动画帧编号。 |
|
||||
| `isInitialized` | `public` | `boolean` | 标记 Viewer 是否已经完成初始化。 |
|
||||
| `pipelineManager` | `public` | `PipelineManager` | 渲染管线管理器。 |
|
||||
| `selection` | `public` | `SelectionManager` | 场景选择管理器。 |
|
||||
| `css2d` | `public` | `CSS2DRendererManager` | CSS2D 渲染管理器 |
|
||||
| `css3d` | `public` | `CSS3DRendererManager` | CSS3D 渲染管理器 |
|
||||
| `parametric` | `public` | `ParametricManager` | 参数化对象管理器 |
|
||||
| `inspector` | `public` | `Inspector` | Three Inspector 调试面板实例。 |
|
||||
| `ruptureEvents` | `public` | `RuptureEventManager` | 破裂事件管理器 |
|
||||
| `emitter` | `public` | `Emittery<ViewerEventMap, ViewerEventMap & OmnipresentEventData, ViewerEvents.INIT>` | Viewer 内部事件发射器。 |
|
||||
| `options` | `public` | `IViewerOptions` | Viewer 的初始化配置。 |
|
||||
| `modelNameMappings` | `public` | `Map<string, string>` | 模型名称映射,用于存储模型名称到显示名的映射 |
|
||||
| `rangeCullingManager` | `public` | `RangeCullingManager` | 范围剔除管理器。 |
|
||||
| `timer` | `public` | `THREE.Timer` | 用于计算帧间隔时间的计时器。 |
|
||||
|
||||
### 访问器
|
||||
|
||||
#### `get camera(): THREE.PerspectiveCamera | THREE.OrthographicCamera`
|
||||
|
||||
- 作用:获取当前激活的相机
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.PerspectiveCamera \| THREE.OrthographicCamera`
|
||||
- 返回说明:返回 `THREE.PerspectiveCamera | THREE.OrthographicCamera`。
|
||||
|
||||
#### `get cameraControls(): CameraControls`
|
||||
|
||||
- 作用:获取当前激活的相机控制器
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`CameraControls`
|
||||
- 返回说明:返回 `CameraControls`。
|
||||
|
||||
### 方法
|
||||
|
||||
#### `initCameraControls(): void`
|
||||
|
||||
- 作用:执行 init Camera Controls 初始化逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `initContainer(container: string | HTMLDivElement): void`
|
||||
|
||||
- 作用:初始化容器
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `container` | `string \| HTMLDivElement` | 是 | 挂载容器,支持 DOM ID 或 DOM 元素。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getSize(): { width: number; height: number; }`
|
||||
|
||||
- 作用:获取容器的大小
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`{ width: number; height: number; }`
|
||||
- 返回说明:返回 `{ width: number; height: number; }`。
|
||||
|
||||
#### `getSizeVector2(): THREE.Vector2`
|
||||
|
||||
- 作用:获取大小的 Vector2 对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Vector2`
|
||||
- 返回说明:返回 `THREE.Vector2`。
|
||||
|
||||
#### `initRenderer(): void`
|
||||
|
||||
- 作用:初始化视图
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `openInspector(): void`
|
||||
|
||||
- 作用:打开 Inspector。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `closeInspector(): void`
|
||||
|
||||
- 作用:关闭 Inspector。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `handleResize(): void`
|
||||
|
||||
- 作用:处理窗口大小变化
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `animate(time: DOMHighResTimeStamp, frame?: XRFrame): void`
|
||||
|
||||
- 作用:执行 animate 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `time` | `DOMHighResTimeStamp` | 是 | 时间戳。 |
|
||||
| `frame` | `XRFrame` | 否 | 参数 `frame`,类型为 `XRFrame`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁视图
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `isReady(): boolean`
|
||||
|
||||
- 作用:检查是否已初始化
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否已初始化
|
||||
|
||||
#### `getModelDisplayName(name: string): string`
|
||||
|
||||
- 作用:获取模型的显示名称
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | - 模型原始名称 |
|
||||
|
||||
- 出参:`string`
|
||||
- 返回说明:模型的显示名称,如果没有映射则返回原始名称
|
||||
|
||||
#### `addModelNameMapping(mapping: ModelNameMapping): void`
|
||||
|
||||
- 作用:添加模型名称映射
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mapping` | `ModelNameMapping` | 是 | - 模型名称映射 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addModelNameMappings(mappings: ModelNameMapping[]): void`
|
||||
|
||||
- 作用:添加多个模型名称映射
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mappings` | `ModelNameMapping[]` | 是 | - 模型名称映射数组 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearModelNameMappings(): void`
|
||||
|
||||
- 作用:清除所有模型名称映射
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `serializeObject(obj: THREE.Object3D): SceneNode`
|
||||
|
||||
- 作用:序列化 Object。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `obj` | `THREE.Object3D` | 是 | 参数 `obj`,类型为 `THREE.Object3D`。 |
|
||||
|
||||
- 出参:`SceneNode`
|
||||
- 返回说明:返回 `SceneNode`。
|
||||
|
||||
#### `sceneToTreeJSON(scene: THREE.Scene = this.scene): SceneNode`
|
||||
|
||||
- 作用:执行 scene To Tree JSON 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `THREE.Scene` | 否 | 目标场景实例。 |
|
||||
|
||||
- 出参:`SceneNode`
|
||||
- 返回说明:返回 `SceneNode`。
|
||||
|
||||
#### `serializeObjectFiltered(obj: THREE.Object3D = this.scene, nameFilter?: string): SceneNode | null`
|
||||
|
||||
- 作用:序列化场景对象,只返回 Object3D 和 Group 类型的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `obj` | `THREE.Object3D` | 否 | - 要序列化的对象 |
|
||||
| `nameFilter` | `string` | 否 | - 可选的名称过滤器,支持模糊匹配 |
|
||||
|
||||
- 出参:`SceneNode \| null`
|
||||
- 返回说明:序列化后的场景节点
|
||||
|
||||
#### `serializeSceneFiltered(nameFilter?: string): SceneNode[]`
|
||||
|
||||
- 作用:序列化场景对象,只返回 Object3D 和 Group 类型的对象,并支持名称过滤
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `nameFilter` | `string` | 否 | - 可选的名称过滤器,支持模糊匹配 |
|
||||
|
||||
- 出参:`SceneNode[]`
|
||||
- 返回说明:序列化后的场景节点列表
|
||||
|
||||
#### `sceneToTreeJSONFiltered(scene: THREE.Scene = this.scene, nameFilter?: string): SceneNode | null`
|
||||
|
||||
- 作用:将场景转换为树状 JSON 结构,只包含 Object3D 和 Group 类型的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `THREE.Scene` | 否 | - 要转换的场景 |
|
||||
| `nameFilter` | `string` | 否 | - 可选的名称过滤器,支持模糊匹配 |
|
||||
|
||||
- 出参:`SceneNode \| null`
|
||||
- 返回说明:序列化后的场景节点
|
||||
|
||||
#### `getCameraState(): { position: THREE.Vector3; target: THREE.Vector3; }`
|
||||
|
||||
- 作用:获取 Camera State。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`{ position: THREE.Vector3; target: THREE.Vector3; }`
|
||||
- 返回说明:返回 `{ position: THREE.Vector3; target: THREE.Vector3; }`。
|
||||
|
||||
#### `setCameraState(cameraState: CameraState, enableTransition: boolean = true): Promise<void>`
|
||||
|
||||
- 作用:设置 Camera State。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `cameraState` | `CameraState` | 是 | 参数 `cameraState`,类型为 `CameraState`。 |
|
||||
| `enableTransition` | `boolean` | 否 | 参数 `enableTransition`,类型为 `boolean`。 |
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `resetCamera(enableTransition: boolean = true): void`
|
||||
|
||||
- 作用:重置 Camera。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `enableTransition` | `boolean` | 否 | 参数 `enableTransition`,类型为 `boolean`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `switchCameraType(type: 'perspective' | 'orthographic'): Promise<void>`
|
||||
|
||||
- 作用:切换相机类型(透视相机和正交相机) 切换时保持视角不变
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `type` | `'perspective' \| 'orthographic'` | 是 | - 相机类型 'perspective' 或 'orthographic' |
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `exportSceneToJSON(): string`
|
||||
|
||||
- 作用:导出场景为JSON格式
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`string`
|
||||
- 返回说明:场景的JSON字符串
|
||||
|
||||
#### `downloadSceneJSON(filename: string = 'scene.json'): void`
|
||||
|
||||
- 作用:导出场景为JSON文件并下载
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `filename` | `string` | 否 | - 下载的文件名 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getAllVolumeMesh(): VolumeMesh[]`
|
||||
|
||||
- 作用:获取 All Volume Mesh。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`VolumeMesh[]`
|
||||
- 返回说明:返回数组结果,元素类型为 `VolumeMesh`。
|
||||
|
||||
#### `setTestBackground(): void`
|
||||
|
||||
- 作用:设置 Test Background。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/views/GeothermalScene.vue`
|
||||
|
||||
```ts
|
||||
onMounted(() => {
|
||||
const viewer = new Viewer("viewer", {
|
||||
initCameraState: initCameraState
|
||||
});
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/views/GoldMineScene.vue`
|
||||
|
||||
```ts
|
||||
onMounted(() => {
|
||||
const viewer = new Viewer("viewer", {
|
||||
initCameraState: initCameraState
|
||||
});
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `Viewer.openInspector`
|
||||
|
||||
- 来源:`packages/demo/src/hooks/useDebug.ts`
|
||||
|
||||
```ts
|
||||
bloom: Value;
|
||||
bloomColor: Value;
|
||||
renderOrder: Value;
|
||||
color: Value;
|
||||
metalness: Value;
|
||||
roughness: Value;
|
||||
depthTest: Value;
|
||||
depthWrite: Value;
|
||||
side: Value;
|
||||
} = {} as any;
|
||||
|
||||
// 打开调试
|
||||
viewer.openInspector();
|
||||
|
||||
// 添加 GUI 控件
|
||||
const inspector = viewer.renderer!.inspector as Inspector;
|
||||
```
|
||||
|
||||
### `Viewer.serializeSceneFiltered`
|
||||
|
||||
- 来源:`packages/demo/src/components/SceneTree.vue`
|
||||
|
||||
```ts
|
||||
if (bus.viewer) {
|
||||
treeData.value = bus.viewer.serializeSceneFiltered();
|
||||
console.log(treeData.value)
|
||||
}
|
||||
}
|
||||
const handleSearch = () => {
|
||||
if (bus.viewer) {
|
||||
const sceneData = bus.viewer.serializeSceneFiltered(searchKeyword.value);
|
||||
treeData.value = sceneData
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### `Viewer.getCameraState`
|
||||
|
||||
- 来源:`packages/demo/src/hooks/useDebug.ts`
|
||||
|
||||
```ts
|
||||
const transformInfo = {
|
||||
position: [selectedObject.position.x, selectedObject.position.y, selectedObject.position.z],
|
||||
rotation: [selectedObject.rotation.x, selectedObject.rotation.y, selectedObject.rotation.z],
|
||||
scale: [selectedObject.scale.x, selectedObject.scale.y, selectedObject.scale.z]
|
||||
};
|
||||
console.log('模型变换信息:', transformInfo);
|
||||
}
|
||||
},
|
||||
printCameraState: () => {
|
||||
const cameraState = viewer.getCameraState();
|
||||
console.log('相机状态:', cameraState);
|
||||
},
|
||||
addTestBox: () => {
|
||||
// 创建测试box
|
||||
const geometry = new THREE.BoxGeometry(1, 1, 1);
|
||||
const material = new THREE.MeshPhysicalMaterial({color: 0x00ff00});
|
||||
const box = new THREE.Mesh(geometry, material);
|
||||
box.position.set(0, 0, 0);
|
||||
box.name = "Test Box";
|
||||
viewer.scene.add(box);
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `SceneNode`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/components/SceneTree.vue`
|
||||
|
||||
### `Viewer`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue`
|
||||
- `packages/demo/src/hooks/Bus.ts`
|
||||
- `packages/demo/src/panels/FracturingPanel.vue`
|
||||
- `packages/demo/src/panels/GeothermalScene/DirectionalReservoir.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/DevelopmentMiningPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/DrillingPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/ExplorationMiningPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue`
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ViewerInstances
|
||||
|
||||
- 源文件:`packages/sdk/src/core/ViewerInstances.ts`
|
||||
- 文档位置:`packages/docs/api/core/ViewerInstances.md`
|
||||
|
||||
## 类:`ViewerManager`
|
||||
|
||||
- 作用:ViewerManager 类。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewers` | `public` | `Set<Viewer>` | 用于保存 `viewers` 对应的数据。 |
|
||||
| `defaultViewer` | `public` | `Viewer \| null` | 用于保存 `defaultViewer` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `register(viewer: Viewer, makeDefault = false): void`
|
||||
|
||||
- 作用:执行 register 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
| `makeDefault` | `boolean` | 否 | 参数 `makeDefault`,类型为 `boolean`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `unregister(viewer: Viewer): void`
|
||||
|
||||
- 作用:执行 unregister 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getDefault(): Viewer`
|
||||
|
||||
- 作用:获取 Default。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Viewer`
|
||||
- 返回说明:返回 `Viewer`。
|
||||
|
||||
#### `setDefault(viewer: Viewer): void`
|
||||
|
||||
- 作用:设置 Default。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getAll(): Viewer[]`
|
||||
|
||||
- 作用:获取 All。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Viewer[]`
|
||||
- 返回说明:返回数组结果,元素类型为 `Viewer`。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ViewerManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ViewerManager` 的公开方法调用。
|
||||
@@ -0,0 +1,262 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# FaultSlip
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/FaultSlip.ts`
|
||||
- 文档位置:`packages/docs/api/effect/FaultSlip.md`
|
||||
|
||||
## 接口:`FaultSlipOptions`
|
||||
|
||||
- 作用:FaultSlipOptions 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `normal` | `THREE.Vector3` | 否 | 法线方向。 |
|
||||
| `rows` | `number` | 否 | 用于保存 `rows` 对应的数据。 |
|
||||
| `cols` | `number` | 否 | 用于保存 `cols` 对应的数据。 |
|
||||
| `spacingU` | `number` | 否 | 用于保存 `spacingU` 对应的数据。 |
|
||||
| `spacingV` | `number` | 否 | 用于保存 `spacingV` 对应的数据。 |
|
||||
| `arrowLength` | `number` | 否 | 用于保存 `arrowLength` 对应的数据。 |
|
||||
| `shaftWidth` | `number` | 否 | 用于保存 `shaftWidth` 对应的数据。 |
|
||||
| `headWidth` | `number` | 否 | 用于保存 `headWidth` 对应的数据。 |
|
||||
| `headLength` | `number` | 否 | 用于保存 `headLength` 对应的数据。 |
|
||||
| `colorHex` | `number` | 否 | 用于保存 `colorHex` 对应的数据。 |
|
||||
| `arrowSideOffset` | `number` | 否 | 用于保存 `arrowSideOffset` 对应的数据。 |
|
||||
| `arrowMoveAmp` | `number` | 否 | 用于保存 `arrowMoveAmp` 对应的数据。 |
|
||||
| `arrowMoveSpeed` | `number` | 否 | 用于保存 `arrowMoveSpeed` 对应的数据。 |
|
||||
| `autoStart` | `boolean` | 否 | 用于标记 `autoStart` 的启用状态。 |
|
||||
|
||||
## 类:`FaultSlip`
|
||||
|
||||
- 作用:断层滑移引起矿震的可视化效果 基于 Mesh 的包围盒生成断层面和交错箭头动画
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new FaultSlip(mesh: THREE.Mesh, options?: FaultSlipOptions)`
|
||||
|
||||
- 作用:创建 FaultSlip 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | 目标网格对象。 |
|
||||
| `options` | `FaultSlipOptions` | 否 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`FaultSlip`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<FaultSlipOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
| `group` | `public` | `THREE.Group` | 用于保存 `group` 对应的数据。 |
|
||||
| `active` | `public` | `boolean` | 用于标记 `active` 的启用状态。 |
|
||||
| `mesh` | `public` | `THREE.Mesh` | 用于保存 `mesh` 对应的数据。 |
|
||||
| `arrowAnims` | `public` | `ArrowAnimation[]` | 用于保存 `arrowAnims` 的集合数据。 |
|
||||
| `flatArrowShaftGeom` | `public` | `THREE.PlaneGeometry` | 用于保存 `flatArrowShaftGeom` 对应的数据。 |
|
||||
| `flatArrowHeadGeom` | `public` | `THREE.ShapeGeometry` | 用于保存 `flatArrowHeadGeom` 对应的数据。 |
|
||||
| `flatArrowMat` | `public` | `THREE.MeshBasicMaterial` | 用于保存 `flatArrowMat` 对应的数据。 |
|
||||
| `tmpV` | `public` | `THREE.Vector3` | 用于保存 `tmpV` 对应的数据。 |
|
||||
| `tmpV2` | `public` | `THREE.Vector3` | 用于保存 `tmpV2` 对应的数据。 |
|
||||
| `tmpV3` | `public` | `THREE.Vector3` | 用于保存 `tmpV3` 对应的数据。 |
|
||||
| `tmpM` | `public` | `THREE.Matrix4` | 用于保存 `tmpM` 对应的数据。 |
|
||||
| `updateBound` | `public` | `((data: RenderEventData) => void) \| null` | 用于保存 `updateBound` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `start(): void`
|
||||
|
||||
- 作用:执行 start 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stop(): void`
|
||||
|
||||
- 作用:执行 stop 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `toggle(): void`
|
||||
|
||||
- 作用:执行 toggle 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `update(data: RenderEventData): void`
|
||||
|
||||
- 作用:更新 update。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `RenderEventData` | 是 | 输入数据。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setColor(colorHex: number): void`
|
||||
|
||||
- 作用:设置 Color。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `colorHex` | `number` | 是 | 参数 `colorHex`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setOpacity(opacity: number): void`
|
||||
|
||||
- 作用:设置 Opacity。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `opacity` | `number` | 是 | 参数 `opacity`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setSpeed(speed: number): void`
|
||||
|
||||
- 作用:设置 Speed。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `speed` | `number` | 是 | 参数 `speed`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setAmplitude(amplitude: number): void`
|
||||
|
||||
- 作用:设置 Amplitude。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `amplitude` | `number` | 是 | 参数 `amplitude`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源并销毁当前实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:执行 init 初始化逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `makeArrowMesh(params: { length: number; shaftWidth: number; headWidth: number; headLength: number; }): THREE.Group<THREE.Object3DEventMap>`
|
||||
|
||||
- 作用:执行 make Arrow Mesh 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `params` | `{ length: number; shaftWidth: number; headWidth: number; headLength: number; }` | 是 | 参数 `params`,类型为 `{ length: number; shaftWidth: number; headWidth: number; headLength: number; }`。 |
|
||||
|
||||
- 出参:`THREE.Group<THREE.Object3DEventMap>`
|
||||
- 返回说明:返回 `THREE.Group<THREE.Object3DEventMap>`。
|
||||
|
||||
#### `orientArrowOnSection(arrow: THREE.Group, moveDir: THREE.Vector3, sectionNormal: THREE.Vector3): void`
|
||||
|
||||
- 作用:执行 orient Arrow On Section 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `arrow` | `THREE.Group` | 是 | 参数 `arrow`,类型为 `THREE.Group`。 |
|
||||
| `moveDir` | `THREE.Vector3` | 是 | 参数 `moveDir`,类型为 `THREE.Vector3`。 |
|
||||
| `sectionNormal` | `THREE.Vector3` | 是 | 参数 `sectionNormal`,类型为 `THREE.Vector3`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `buildVisualization(): void`
|
||||
|
||||
- 作用:执行 build Visualization 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`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/OilGasScene/OilGasMineSeismicPanel.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;
|
||||
};
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `FaultSlip` 的公开方法调用。
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `FaultSlip`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/MineSeismicPanel.vue`
|
||||
- `packages/demo/src/disasterFormationPanel/OilGasScene/OilGasMineSeismicPanel.vue`
|
||||
|
||||
@@ -0,0 +1,309 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# FlowParticles
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/FlowParticles.ts`
|
||||
- 文档位置:`packages/docs/api/effect/FlowParticles.md`
|
||||
|
||||
## 接口:`FlowParticlesGPUOptions`
|
||||
|
||||
- 作用:流动粒子配置。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `startPipe` | `ParametricPipe` | 是 | 起始管道。 |
|
||||
| `endPipe` | `ParametricPipe` | 是 | 结束管道。 |
|
||||
| `particleCount` | `number` | 否 | 粒子总数量。 |
|
||||
| `speedMultiplier` | `number` | 否 | 粒子流动速度倍率。 |
|
||||
| `particleSize` | `number` | 否 | 粒子半径。 |
|
||||
| `heatingThreshold` | `number` | 否 | 加热阈值。 |
|
||||
| `flowPathCount` | `number` | 否 | 流动路径数量。 |
|
||||
| `colorStops` | `FlowColorStop[]` | 否 | 颜色断点配置。 |
|
||||
|
||||
## 接口:`FlowColorStop`
|
||||
|
||||
- 作用:流动颜色断点。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `string` | 是 | 颜色值。 |
|
||||
| `step` | `number` | 是 | 断点位置,范围 [0, 1]。 |
|
||||
| `frozenProbability` | `number` | 否 | 当粒子经过该断点时被永久冻结颜色的概率,范围 [0, 1]。 |
|
||||
|
||||
## 类:`FlowParticles`
|
||||
|
||||
- 作用:流动粒子效果。
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new FlowParticles(viewer: Viewer, options: FlowParticlesGPUOptions)`
|
||||
|
||||
- 作用:构造函数。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 视图对象 |
|
||||
| `options` | `FlowParticlesGPUOptions` | 是 | 配置参数 |
|
||||
|
||||
- 出参:`FlowParticles`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `public` | `Viewer` | 用于保存 `viewer` 对应的数据。 |
|
||||
| `startPipe` | `public` | `ParametricPipe` | 用于保存 `startPipe` 对应的数据。 |
|
||||
| `endPipe` | `public` | `ParametricPipe` | 用于保存 `endPipe` 对应的数据。 |
|
||||
| `particleCount` | `public` | `number` | 用于保存 `particleCount` 对应的数据。 |
|
||||
| `speedMultiplier` | `public` | `number` | 用于保存 `speedMultiplier` 对应的数据。 |
|
||||
| `particleSize` | `public` | `number` | 用于保存 `particleSize` 对应的数据。 |
|
||||
| `heatingThreshold` | `public` | `number` | 用于保存 `heatingThreshold` 对应的数据。 |
|
||||
| `flowPathCount` | `public` | `number` | 用于保存 `flowPathCount` 对应的数据。 |
|
||||
| `colorStops` | `public` | `FlowColorStop[]` | 用于保存 `colorStops` 的集合数据。 |
|
||||
| `flowPaths` | `public` | `THREE.CatmullRomCurve3[]` | 用于保存 `flowPaths` 的集合数据。 |
|
||||
| `particles` | `public` | `Particle[]` | 用于保存 `particles` 的集合数据。 |
|
||||
| `flowGeometry` | `public` | `THREE.SphereGeometry \| null` | 用于保存 `flowGeometry` 对应的数据。 |
|
||||
| `flowMaterial` | `public` | `THREE.Material \| null` | 用于保存 `flowMaterial` 对应的数据。 |
|
||||
| `flowPoints` | `public` | `THREE.InstancedMesh \| null` | 用于保存 `flowPoints` 对应的数据。 |
|
||||
| `updateHandler` | `public` | `(() => void) \| null` | 用于保存 `updateHandler` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `setParticleCount(count: number): void`
|
||||
|
||||
- 作用:设置粒子数量并重建系统。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `count` | `number` | 是 | 粒子数量 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setSpeedMultiplier(speed: number): void`
|
||||
|
||||
- 作用:设置速度倍率。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `speed` | `number` | 是 | 速度倍率 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setFrozenProbability(probability: number): void`
|
||||
|
||||
- 作用:设置冻结概率。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `probability` | `number` | 是 | 冻结概率,范围 [0, 1] |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setHeatingThreshold(threshold: number): void`
|
||||
|
||||
- 作用:设置加热阈值。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `threshold` | `number` | 是 | 阈值,范围 [0, 1] |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setColorStops(stops: FlowColorStop[]): void`
|
||||
|
||||
- 作用:动态更新颜色断点。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `stops` | `FlowColorStop[]` | 是 | 断点数组 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `toVector3(point: THREE.Vector3 | { x: number; y: number; z: number }): THREE.Vector3`
|
||||
|
||||
- 作用:点位转换为 THREE.Vector3。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `point` | `THREE.Vector3 \| { x: number; y: number; z: number }` | 是 | 输入点 |
|
||||
|
||||
- 出参:`THREE.Vector3`
|
||||
- 返回说明:转换结果
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:初始化。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createFlowPaths(): void`
|
||||
|
||||
- 作用:生成流动路径。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `initParticles(): void`
|
||||
|
||||
- 作用:初始化粒子网格。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setupUpdateLoop(): void`
|
||||
|
||||
- 作用:绑定更新循环。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `update(): void`
|
||||
|
||||
- 作用:每帧更新。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `calculateHeatColor(t: number): number`
|
||||
|
||||
- 作用:计算热值。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `t` | `number` | 是 | 路径进度 |
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:热值
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/GeothermalInjectionProductionPanel.vue`
|
||||
|
||||
```ts
|
||||
try {
|
||||
const flowParticles = new FlowParticles(viewer, {
|
||||
startPipe: pipe1,
|
||||
endPipe: pipe2,
|
||||
particleCount: particleCount.value,
|
||||
speedMultiplier: speedMultiplier.value,
|
||||
particleSize: particleSize.value,
|
||||
heatingThreshold: heatingThreshold.value,
|
||||
colorStops: [
|
||||
{color: "#00FF00", step: 0},
|
||||
{color: "#FFFF00", step: 0.4},
|
||||
{color: "#FF0000", step: 0.6},
|
||||
],
|
||||
});
|
||||
flowParticles.flowPoints.renderOrder = 0
|
||||
bus.setFlowParticles(flowParticles);
|
||||
} catch (error) {
|
||||
bus.setFlowParticles(null);
|
||||
console.error("创建热突破流体失败:", error);
|
||||
}
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `FlowParticles.setFrozenProbability`
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GeothermalScene/ThermalBreakthroughDisasterPanel.vue`
|
||||
|
||||
```ts
|
||||
flowParticles.setColorStops([
|
||||
{color: '#00FF00', step: 0.0},
|
||||
{color: '#FFFF00', step: 0.5},
|
||||
{color: '#FF0000', step: 0.7},
|
||||
]);
|
||||
// 约 30% 的粒子保持初始颜色,模拟热突破中部分流体未被加热
|
||||
flowParticles.setFrozenProbability(1);
|
||||
}
|
||||
isActive.value = !!flowParticles;
|
||||
};
|
||||
```
|
||||
|
||||
### `FlowParticles.setColorStops`
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GeothermalScene/ThermalBreakthroughDisasterPanel.vue`
|
||||
|
||||
```ts
|
||||
if (flowParticles) {
|
||||
flowParticles.setColorStops([
|
||||
{color: '#00FF00', step: 0.0},
|
||||
{color: '#FFFF00', step: 0.5},
|
||||
{color: '#FF0000', step: 0.7},
|
||||
]);
|
||||
// 约 30% 的粒子保持初始颜色,模拟热突破中部分流体未被加热
|
||||
flowParticles.setFrozenProbability(1);
|
||||
}
|
||||
isActive.value = !!flowParticles;
|
||||
};
|
||||
```
|
||||
|
||||
### `FlowParticles.dispose`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/GeothermalInjectionProductionPanel.vue`
|
||||
|
||||
```ts
|
||||
if (!previousFlowParticles) return;
|
||||
previousFlowParticles.dispose();
|
||||
bus.setFlowParticles(null);
|
||||
};
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `FlowParticles`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/hooks/Bus.ts`
|
||||
- `packages/demo/src/panels/GeothermalScene/GeothermalInjectionProductionPanel.vue`
|
||||
|
||||
@@ -0,0 +1,410 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# FractureEffect
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/FractureEffect.ts`
|
||||
- 文档位置:`packages/docs/api/effect/FractureEffect.md`
|
||||
|
||||
## 接口:`FractureEffectOptions`
|
||||
|
||||
- 作用:FractureEffectOptions 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `points` | `THREE.Vector3[]` | 是 | 用于保存 `points` 的集合数据。 |
|
||||
| `curveType` | `'catmullrom' \| 'linear'` | 否 | 用于保存 `curveType` 对应的数据。 |
|
||||
| `tension` | `number` | 否 | 用于保存 `tension` 对应的数据。 |
|
||||
| `closed` | `boolean` | 否 | 用于标记 `closed` 的启用状态。 |
|
||||
| `spacing` | `number` | 否 | 用于保存 `spacing` 对应的数据。 |
|
||||
| `bufferRatio` | `number` | 否 | 用于保存 `bufferRatio` 对应的数据。 |
|
||||
| `minRadius` | `number` | 否 | 用于保存 `minRadius` 对应的数据。 |
|
||||
| `maxRadius` | `number` | 否 | 用于保存 `maxRadius` 对应的数据。 |
|
||||
| `animationDuration` | `number` | 否 | 用于保存 `animationDuration` 对应的数据。 |
|
||||
| `sphereAnimDuration` | `number` | 否 | 用于保存 `sphereAnimDuration` 对应的数据。 |
|
||||
| `sphereOpacity` | `number` | 否 | 用于保存 `sphereOpacity` 对应的数据。 |
|
||||
| `spheresVisible` | `boolean` | 否 | 用于标记 `spheresVisible` 的启用状态。 |
|
||||
| `cracksVisible` | `boolean` | 否 | 用于标记 `cracksVisible` 的启用状态。 |
|
||||
| `colorMode` | `'random' \| 'gradient' \| 'fixed'` | 否 | 用于保存 `colorMode` 对应的数据。 |
|
||||
| `fixedColor` | `number` | 否 | 用于保存 `fixedColor` 对应的数据。 |
|
||||
| `gradientStart` | `number` | 否 | 用于保存 `gradientStart` 对应的数据。 |
|
||||
| `gradientEnd` | `number` | 否 | 用于保存 `gradientEnd` 对应的数据。 |
|
||||
| `autoStart` | `boolean` | 否 | 用于标记 `autoStart` 的启用状态。 |
|
||||
| `crackModelUrls` | `string[]` | 否 | 用于保存 `crackModelUrls` 的集合数据。 |
|
||||
|
||||
## 类:`FractureEffect`
|
||||
|
||||
- 作用:压裂效果 沿着一组点生成的曲线生成一系列带弹性动画的球体,模拟压裂过程
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new FractureEffect(options: FractureEffectOptions)`
|
||||
|
||||
- 作用:创建 FractureEffect 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `FractureEffectOptions` | 是 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`FractureEffect`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<FractureEffectOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
| `active` | `public` | `boolean` | 用于标记 `active` 的启用状态。 |
|
||||
| `running` | `public` | `boolean` | 用于标记 `running` 的启用状态。 |
|
||||
| `spheres` | `public` | `FractureSphere[]` | 用于保存 `spheres` 的集合数据。 |
|
||||
| `group` | `public` | `THREE.Group` | 用于保存 `group` 对应的数据。 |
|
||||
| `crackModels` | `public` | `THREE.Object3D[]` | 用于保存 `crackModels` 的集合数据。 |
|
||||
| `crackModelTemplates` | `public` | `THREE.Object3D[]` | 用于保存 `crackModelTemplates` 的集合数据。 |
|
||||
| `progressCallback` | `public` | `((progress: number) => void) \| null` | 用于保存 `progressCallback` 对应的数据。 |
|
||||
| `curve` | `public` | `THREE.Curve<THREE.Vector3> \| null` | 用于保存 `curve` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createCurve(): void`
|
||||
|
||||
- 作用:根据点数组创建曲线
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `onProgress(callback: (progress: number) => void): void`
|
||||
|
||||
- 作用:设置进度回调
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `callback` | `(progress: number) => void` | 是 | 回调函数。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `start(): Promise<void>`
|
||||
|
||||
- 作用:开始压裂动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `stop(): void`
|
||||
|
||||
- 作用:停止动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clear(): void`
|
||||
|
||||
- 作用:清除所有球体和裂缝模型
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `showCracks(): void`
|
||||
|
||||
- 作用:显示裂缝模型
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `hideCracks(): void`
|
||||
|
||||
- 作用:隐藏裂缝模型
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `toggleCracks(): void`
|
||||
|
||||
- 作用:切换裂缝模型显示
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `showSpheres(): void`
|
||||
|
||||
- 作用:显示球体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `hideSpheres(): void`
|
||||
|
||||
- 作用:隐藏球体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `toggleSpheres(): void`
|
||||
|
||||
- 作用:切换球体显示
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setOpacity(opacity: number): void`
|
||||
|
||||
- 作用:设置球体透明度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `opacity` | `number` | 是 | 参数 `opacity`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updatePoints(points: THREE.Vector3[]): void`
|
||||
|
||||
- 作用:更新点数组
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `points` | `THREE.Vector3[]` | 是 | 参数 `points`,类型为 `THREE.Vector3[]`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `restart(): Promise<void>`
|
||||
|
||||
- 作用:重新开始
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `getSphereCount(): number`
|
||||
|
||||
- 作用:获取球体数量
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:返回数值结果。
|
||||
|
||||
#### `getSpheres(): FractureSphere[]`
|
||||
|
||||
- 作用:获取球体列表
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`FractureSphere[]`
|
||||
- 返回说明:返回数组结果,元素类型为 `FractureSphere`。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `loadCrackModels(): Promise<void>`
|
||||
|
||||
- 作用:加载裂缝模型模板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `getRandomHighContrastColor(): THREE.Color`
|
||||
|
||||
- 作用:生成高对比度随机颜色
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Color`
|
||||
- 返回说明:返回 `THREE.Color`。
|
||||
|
||||
#### `getGradientColor(t: number): THREE.Color`
|
||||
|
||||
- 作用:根据位置获取渐变颜色
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `t` | `number` | 是 | 参数 `t`,类型为 `number`。 |
|
||||
|
||||
- 出参:`THREE.Color`
|
||||
- 返回说明:返回 `THREE.Color`。
|
||||
|
||||
#### `getSphereColor(t: number): THREE.Color`
|
||||
|
||||
- 作用:获取球体颜色
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `t` | `number` | 是 | 参数 `t`,类型为 `number`。 |
|
||||
|
||||
- 出参:`THREE.Color`
|
||||
- 返回说明:返回 `THREE.Color`。
|
||||
|
||||
#### `easeOutElastic(x: number): number`
|
||||
|
||||
- 作用:缓动函数 - easeOutElastic
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `x` | `number` | 是 | 参数 `x`,类型为 `number`。 |
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:返回数值结果。
|
||||
|
||||
#### `animateSphereIn(sphere: THREE.Mesh): Promise<void>`
|
||||
|
||||
- 作用:球体弹入动画
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `sphere` | `THREE.Mesh` | 是 | 参数 `sphere`,类型为 `THREE.Mesh`。 |
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `calculatePositions(): { position: THREE.Vector3; t: number; index: number; }[]`
|
||||
|
||||
- 作用:计算球体位置
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`{ position: THREE.Vector3; t: number; index: number; }[]`
|
||||
- 返回说明:返回数组结果,元素类型为 `{ position: THREE.Vector3; t: number; index: number; }`。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/DirectionalReservoir.vue`
|
||||
|
||||
```ts
|
||||
const points = [
|
||||
new THREE.Vector3(1.5, -0.3, 1.5),
|
||||
new THREE.Vector3(0, -0.3, 0)
|
||||
]
|
||||
|
||||
effect = new FractureEffect({
|
||||
points: points,
|
||||
curveType: 'catmullrom',
|
||||
tension: 0.5,
|
||||
spacing: 0.1, // 增大间距
|
||||
bufferRatio: 0.02,
|
||||
closed: false, // 不闭合,形成螺旋
|
||||
spheresVisible: showRuptureSpheres.value,
|
||||
cracksVisible: showFractures.value
|
||||
});
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/panels/OilGasScene/FracturingPanel.vue`
|
||||
|
||||
```ts
|
||||
const points = generateSpiralPoints();
|
||||
|
||||
effect = new FractureEffect({
|
||||
points: points,
|
||||
curveType: 'catmullrom',
|
||||
tension: 0.5,
|
||||
spacing: 0.2, // 增大间距
|
||||
bufferRatio: 0.02,
|
||||
closed: false, // 不闭合,形成螺旋
|
||||
spheresVisible: showRuptureSpheres.value,
|
||||
cracksVisible: showFractures.value
|
||||
});
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `FractureEffect.onProgress`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/DirectionalReservoir.vue`
|
||||
|
||||
```ts
|
||||
effect = new FractureEffect({
|
||||
points: points,
|
||||
curveType: 'catmullrom',
|
||||
tension: 0.5,
|
||||
spacing: 0.1, // 增大间距
|
||||
bufferRatio: 0.02,
|
||||
closed: false, // 不闭合,形成螺旋
|
||||
spheresVisible: showRuptureSpheres.value,
|
||||
cracksVisible: showFractures.value
|
||||
});
|
||||
|
||||
isRunning.value = true;
|
||||
effect.onProgress((progress) => {
|
||||
if (progress >= 1) isRunning.value = false;
|
||||
});
|
||||
```
|
||||
|
||||
### `FractureEffect.showCracks`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/DirectionalReservoir.vue`
|
||||
|
||||
```ts
|
||||
if (effect) {
|
||||
if (showFractures.value) effect.showCracks(); else effect.hideCracks();
|
||||
}
|
||||
isRunning.value = false;
|
||||
};
|
||||
```
|
||||
|
||||
### `FractureEffect.showSpheres`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/DirectionalReservoir.vue`
|
||||
|
||||
```ts
|
||||
if (!effect) return;
|
||||
if (val) effect.showSpheres(); else effect.hideSpheres();
|
||||
});
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `FractureEffect`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/GeothermalScene/DirectionalReservoir.vue`
|
||||
- `packages/demo/src/panels/OilGasScene/FracturingPanel.vue`
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# RockDebris
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/RockDebris.ts`
|
||||
- 文档位置:`packages/docs/api/effect/RockDebris.md`
|
||||
|
||||
## 枚举:`RockDebrisModelSourceType`
|
||||
|
||||
- 作用:落石模型来源类型
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `GENERATED` | `"GENERATED"` | 使用程序内置的几何体生成落石 |
|
||||
| `URL` | `"URL"` | 使用传入 URL 的模型生成落石 |
|
||||
|
||||
## 接口:`RockDebrisOptions`
|
||||
|
||||
- 作用:RockDebrisOptions 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `count` | `number` | 否 | 生成数量 |
|
||||
| `size` | `[number, number]` | 是 | 随机大小范围 [min, max] |
|
||||
| `office` | `[number, number]` | 是 | XZ 平面随机偏移范围 [min, max] |
|
||||
| `speed` | `number` | 是 | 掉落速度 (units/s) |
|
||||
| `startPosition` | `THREE.Vector3` | 是 | 开始位置 |
|
||||
| `mesh` | `THREE.Mesh` | 是 | 碰撞 mesh |
|
||||
| `modelSourceType` | `RockDebrisModelSourceType` | 否 | URL 模型来源类型 |
|
||||
| `modelUrls` | `string[]` | 否 | URL 模型地址列表 |
|
||||
|
||||
## 类:`RockDebris`
|
||||
|
||||
- 作用:岩爆碎片效果
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new RockDebris(options: RockDebrisOptions)`
|
||||
|
||||
- 作用:创建 RockDebris 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `RockDebrisOptions` | 是 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`RockDebris`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<RockDebrisOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
| `rocks` | `public` | `RockData[]` | 用于保存 `rocks` 的集合数据。 |
|
||||
| `active` | `public` | `boolean` | ------ 落石URL模型支持 结束------ |
|
||||
| `updateBound` | `public` | `((data: RenderEventData) => void) \| null` | 用于保存 `updateBound` 对应的数据。 |
|
||||
| `_matrix` | `public readonly` | `THREE.Matrix4` | 用于保存 `_matrix` 对应的数据。 |
|
||||
| `_raycaster` | `public readonly` | `THREE.Raycaster` | 用于保存 `_raycaster` 对应的数据。 |
|
||||
| `_rayDirection` | `public readonly` | `THREE.Vector3` | 用于保存 `_rayDirection` 对应的数据。 |
|
||||
| `SPAWN_MAX_RETRY` | `public readonly` | `20` | 单个落石生成点的最大重采样次数,防止射线检测陷入无限循环 |
|
||||
| `SPAWN_MIN_RAY_DISTANCE` | `public readonly` | `0.05` | 判定“靠墙”时的最小射线距离下限 |
|
||||
| `FALL_LIMIT` | `public readonly` | `50` | 超出起始点以下多少距离视为未命中,直接回收 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `spawn(): Promise<void>`
|
||||
|
||||
- 作用:执行 spawn 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `start(): void`
|
||||
|
||||
- 作用:------ 落石落点射线重采样优化 结束------
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stop(): void`
|
||||
|
||||
- 作用:执行 stop 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `update(data: RenderEventData): void`
|
||||
|
||||
- 作用:更新 update。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `RenderEventData` | 是 | 输入数据。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clear(): void`
|
||||
|
||||
- 作用:清理 clear。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源并销毁当前实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:执行 init 初始化逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/TunnelScene/RockBurstPanel.vue`
|
||||
|
||||
```ts
|
||||
if (!archMesh){
|
||||
return;
|
||||
}
|
||||
debris = new RockDebris({
|
||||
count: 10,
|
||||
size: [0.05, 0.1],
|
||||
office: [-0.3, 0.3],
|
||||
speed: 3,
|
||||
startPosition: ROCK_BURST_START_POSITION.clone(),
|
||||
mesh: archMesh,
|
||||
// modelSourceType: RockDebrisModelSourceType.URL,
|
||||
modelSourceType: RockDebrisModelSourceType.GENERATED
|
||||
});
|
||||
debrisReady.value = true;
|
||||
}
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `RockDebris.spawn`
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/TunnelScene/RockBurstPanel.vue`
|
||||
|
||||
```ts
|
||||
const spawn = () => {
|
||||
ensureDebris();
|
||||
ensureRockBurstLabel();
|
||||
debris?.spawn();
|
||||
};
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `RockDebrisModelSourceType`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RockBurstPanel.vue`
|
||||
|
||||
### `RockDebris`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RockBurstPanel.vue`
|
||||
|
||||
@@ -0,0 +1,304 @@
|
||||
---
|
||||
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<SeismicWaveOptions>` | 用于保存 `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`
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# PointCloud
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/volume/PointCloud.ts`
|
||||
- 文档位置:`packages/docs/api/effect/volume/PointCloud.md`
|
||||
|
||||
## 接口:`PointCloudColorStop`
|
||||
|
||||
- 作用:点云颜色停靠点配置。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `string` | 是 | 颜色值(支持十六进制、rgb、hsl 等 Canvas 支持的格式)。 |
|
||||
| `step` | `number` | 是 | 渐变位置,范围 0~1。 |
|
||||
|
||||
## 接口:`PointCloudOptions`
|
||||
|
||||
- 作用:点云渲染配置。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | 场景树显示名称。 |
|
||||
| `pointCloudData` | `PointCloudData` | 是 | 外部已准备好的点云数据。 |
|
||||
| `colorStops` | `PointCloudColorStop[]` | 否 | 颜色映射节点。 |
|
||||
| `pointSize` | `number` | 否 | 点大小(像素单位)。 |
|
||||
|
||||
## 类:`PointCloud`
|
||||
|
||||
- 作用:点云渲染对象。 参考 `webgpu_instance_points.html`: 使用 `Sprite + PointsNodeMaterial + instancedBufferAttribute + count` 的模式进行实例化点渲染。
|
||||
- 继承/实现:`extends THREE.Sprite`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new PointCloud(viewer: Viewer, options: PointCloudOptions)`
|
||||
|
||||
- 作用:创建点云渲染对象。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 视图实例 |
|
||||
| `options` | `PointCloudOptions` | 是 | 点云渲染配置 |
|
||||
|
||||
- 出参:`PointCloud`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `public readonly` | `Viewer` | 场景视图实例。 |
|
||||
| `opacity` | `public` | `THREE.UniformNode<'float', number>` | 控制对象或材质的透明度。 |
|
||||
| `densityRange` | `public` | `THREE.UniformNode<'vec2', THREE.Vector2>` | 用于保存 `densityRange` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `filterByIntensity(min: number, max: number = 1): void`
|
||||
|
||||
- 作用:按强度区间过滤点云显示。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `min` | `number` | 是 | 最小强度 |
|
||||
| `max` | `number` | 否 | 最大强度 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setPointSize(pointSize: number): void`
|
||||
|
||||
- 作用:批量更新点大小。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `pointSize` | `number` | 是 | 新的点大小(像素单位) |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁点云对象并释放资源。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/DustDisasterLabelPanel.vue`
|
||||
|
||||
```ts
|
||||
const pointCloudData = PointCloudTool.convertVolumeToPointCloudData({
|
||||
data: mesh.data,
|
||||
x: mesh.sizeX,
|
||||
y: mesh.sizeY,
|
||||
z: mesh.sizeZ,
|
||||
min: [box.min.x, box.min.y, box.min.z],
|
||||
max: [box.max.x, box.max.y, box.max.z],
|
||||
threshold: 0
|
||||
});
|
||||
|
||||
volume = new PointCloud(viewer, {
|
||||
name: '粉尘浓度',
|
||||
pointCloudData,
|
||||
pointSize: pointSize.value,
|
||||
colorStops: [
|
||||
{color: '#d18f0a', step: 0.0},
|
||||
{color: '#f23100', step: 0.05},
|
||||
{color: '#6609ff', step: 0.1},
|
||||
{color: '#06ffaa', step: 0.15},
|
||||
{color: '#ce0e59', step: 0.2},
|
||||
{color: '#00f60b', step: 0.3},
|
||||
{color: '#ffef00', step: 0.5},
|
||||
{color: '#fd0000', step: 1.0}
|
||||
],
|
||||
});
|
||||
volume.filterByIntensity(intensityRange.value[0], intensityRange.value[1]);
|
||||
volume.setPointSize(pointSize.value);
|
||||
hasVolume.value = true;
|
||||
bus.triggerSceneTreeUpdate();
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/PointCloud/PointCloudTemperatureDisplayPanel.vue`
|
||||
|
||||
```ts
|
||||
/**
|
||||
* 创建点云并绑定颜色映射。
|
||||
*/
|
||||
cloud = new PointCloud(viewer, {
|
||||
name: "地热温度点云",
|
||||
pointCloudData,
|
||||
pointSize: pointSize.value,
|
||||
colorStops: [
|
||||
{color: "#0000FF", step: 0.0},
|
||||
{color: "#00FF00", step: 0.33},
|
||||
{color: "#FFFF00", step: 0.66},
|
||||
{color: "#FF0000", step: 1.0},
|
||||
],
|
||||
});
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `PointCloud.filterByIntensity`
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/DustDisasterLabelPanel.vue`
|
||||
|
||||
```ts
|
||||
pointSize: pointSize.value,
|
||||
colorStops: [
|
||||
{color: '#d18f0a', step: 0.0},
|
||||
{color: '#f23100', step: 0.05},
|
||||
{color: '#6609ff', step: 0.1},
|
||||
{color: '#06ffaa', step: 0.15},
|
||||
{color: '#ce0e59', step: 0.2},
|
||||
{color: '#00f60b', step: 0.3},
|
||||
{color: '#ffef00', step: 0.5},
|
||||
{color: '#fd0000', step: 1.0}
|
||||
],
|
||||
});
|
||||
volume.filterByIntensity(intensityRange.value[0], intensityRange.value[1]);
|
||||
volume.setPointSize(pointSize.value);
|
||||
hasVolume.value = true;
|
||||
bus.triggerSceneTreeUpdate();
|
||||
};
|
||||
```
|
||||
|
||||
### `PointCloud.setPointSize`
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/DustDisasterLabelPanel.vue`
|
||||
|
||||
```ts
|
||||
colorStops: [
|
||||
{color: '#d18f0a', step: 0.0},
|
||||
{color: '#f23100', step: 0.05},
|
||||
{color: '#6609ff', step: 0.1},
|
||||
{color: '#06ffaa', step: 0.15},
|
||||
{color: '#ce0e59', step: 0.2},
|
||||
{color: '#00f60b', step: 0.3},
|
||||
{color: '#ffef00', step: 0.5},
|
||||
{color: '#fd0000', step: 1.0}
|
||||
],
|
||||
});
|
||||
volume.filterByIntensity(intensityRange.value[0], intensityRange.value[1]);
|
||||
volume.setPointSize(pointSize.value);
|
||||
hasVolume.value = true;
|
||||
bus.triggerSceneTreeUpdate();
|
||||
};
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `PointCloud`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/DustDisasterLabelPanel.vue`
|
||||
- `packages/demo/src/panels/GeothermalScene/PointCloud/PointCloudTemperatureDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/PointCloud/PointCloudStrainDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/PointCloud/PointCloudStressDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/PointCloud/PointCloudTemperatureDisplayPanel.vue`
|
||||
- `packages/demo/src/views/GeothermalScene.vue`
|
||||
- `packages/demo/src/views/TunnelScene.vue`
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# PointCloudTool
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/volume/PointCloudTool.ts`
|
||||
- 文档位置:`packages/docs/api/effect/volume/PointCloudTool.md`
|
||||
|
||||
## 接口:`PointCloudData`
|
||||
|
||||
- 作用:点云数据结构。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `positions` | `Float32Array` | 是 | 点位坐标数组,格式为 xyzxyz... |
|
||||
| `densities` | `Float32Array` | 是 | 点位强度数组,范围为 0~1。 |
|
||||
|
||||
## 接口:`PointCloudNoiseOptions`
|
||||
|
||||
- 作用:噪声点云生成参数。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `x` | `number` | 否 | X 方向分辨率(可选,如果提供 size 则忽略)。 |
|
||||
| `y` | `number` | 否 | Y 方向分辨率(可选,如果提供 size 则忽略)。 |
|
||||
| `z` | `number` | 否 | Z 方向分辨率(可选,如果提供 size 则忽略)。 |
|
||||
| `size` | `number` | 否 | 统一分辨率,同时设置 x/y/z。 |
|
||||
| `spaceSize` | `number` | 否 | 点云空间边长。 |
|
||||
| `min` | `[number, number, number]` | 否 | 点云空间最小边界 [x, y, z]。 |
|
||||
| `max` | `[number, number, number]` | 否 | 点云空间最大边界 [x, y, z]。 |
|
||||
| `threshold` | `number` | 否 | 强度阈值,范围 0~1。 |
|
||||
| `noiseScale` | `number` | 否 | 噪声空间缩放。 |
|
||||
|
||||
## 接口:`PointCloudGridOptions`
|
||||
|
||||
- 作用:规则网格点云参数。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `xRange` | `[number, number]` | 是 | X 轴最小值与最大值。 |
|
||||
| `yRange` | `[number, number]` | 是 | Y 轴最小值与最大值。 |
|
||||
| `zRange` | `[number, number]` | 是 | Z 轴最小值与最大值。 |
|
||||
| `xCount` | `number` | 是 | X 轴采样数量。 |
|
||||
| `yCount` | `number` | 是 | Y 轴采样数量。 |
|
||||
| `zCount` | `number` | 是 | Z 轴采样数量。 |
|
||||
| `density` | `number \| ((x: number, y: number, z: number) => number)` | 否 | 强度值或强度计算函数。 |
|
||||
|
||||
## 接口:`PointCloudFromVolumeOptions`
|
||||
|
||||
- 作用:体积数据转点云参数。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `Uint8Array \| Uint16Array \| Float32Array` | 是 | 体素数据,通常来自 VolumeTool(如 Uint8Array)。 |
|
||||
| `x` | `number` | 否 | X 方向分辨率(可选,如果提供 size 则忽略)。 |
|
||||
| `y` | `number` | 否 | Y 方向分辨率(可选,如果提供 size 则忽略)。 |
|
||||
| `z` | `number` | 否 | Z 方向分辨率(可选,如果提供 size 则忽略)。 |
|
||||
| `size` | `number` | 否 | 统一分辨率,同时设置 x/y/z。 |
|
||||
| `spaceSize` | `number` | 否 | 点云空间边长。 |
|
||||
| `min` | `[number, number, number]` | 否 | 点云空间最小边界 [x, y, z]。 |
|
||||
| `max` | `[number, number, number]` | 否 | 点云空间最大边界 [x, y, z]。 |
|
||||
| `threshold` | `number` | 否 | 强度阈值,范围 0~1,仅保留大于该值的点。 |
|
||||
| `sourceMin` | `number` | 否 | 原始数据最小值,默认 0。 |
|
||||
| `sourceMax` | `number` | 否 | 原始数据最大值,默认 255(兼容 VolumeTool 输出)。 |
|
||||
|
||||
## 类:`PointCloudTool`
|
||||
|
||||
- 作用:点云数据工具类。
|
||||
|
||||
### 方法
|
||||
|
||||
#### `generateNoisePointCloudData(options: PointCloudNoiseOptions): PointCloudData`
|
||||
|
||||
- 作用:直接生成噪声点云数据。 生成逻辑基于点云密度: 1. 使用 3D 噪声采样 2. 将噪声值映射到 0~1 强度 3. 根据阈值筛选有效点
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `PointCloudNoiseOptions` | 是 | 生成参数 |
|
||||
|
||||
- 出参:`PointCloudData`
|
||||
- 返回说明:点云数据
|
||||
|
||||
#### `generateGridPointCloud(options: PointCloudGridOptions): PointCloudData`
|
||||
|
||||
- 作用:生成规则网格点云数据。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `PointCloudGridOptions` | 是 | 规则网格参数 |
|
||||
|
||||
- 出参:`PointCloudData`
|
||||
- 返回说明:点云数据
|
||||
|
||||
#### `convertVolumeToPointCloudData(options: PointCloudFromVolumeOptions): PointCloudData`
|
||||
|
||||
- 作用:将体积数据转换为点云数据。 默认按 VolumeTool 输出规则将 0~255 映射为 0~1 强度,并根据阈值筛选。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `PointCloudFromVolumeOptions` | 是 | 转换参数 |
|
||||
|
||||
- 出参:`PointCloudData`
|
||||
- 返回说明:点云数据
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `PointCloudTool` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `PointCloudTool.generateNoisePointCloudData`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/PointCloud/PointCloudTemperatureDisplayPanel.vue`
|
||||
|
||||
```ts
|
||||
/**
|
||||
* 生成用于温度点云的点数据。
|
||||
*/
|
||||
const pointCloudData = PointCloudTool.generateNoisePointCloudData({
|
||||
min: [-2.5, -2.5, -2.5],
|
||||
max: [2.5, 2.5, 2.5],
|
||||
x: 170,
|
||||
y: 170,
|
||||
z: 170,
|
||||
threshold: 0,
|
||||
});
|
||||
```
|
||||
|
||||
### `PointCloudTool.convertVolumeToPointCloudData`
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/DustDisasterLabelPanel.vue`
|
||||
|
||||
```ts
|
||||
const box = new THREE.Box3().setFromObject(mesh);
|
||||
const pointCloudData = PointCloudTool.convertVolumeToPointCloudData({
|
||||
data: mesh.data,
|
||||
x: mesh.sizeX,
|
||||
y: mesh.sizeY,
|
||||
z: mesh.sizeZ,
|
||||
min: [box.min.x, box.min.y, box.min.z],
|
||||
max: [box.max.x, box.max.y, box.max.z],
|
||||
threshold: 0
|
||||
});
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `PointCloudTool`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/DustDisasterLabelPanel.vue`
|
||||
- `packages/demo/src/panels/GeothermalScene/PointCloud/PointCloudTemperatureDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/PointCloud/PointCloudStrainDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/PointCloud/PointCloudStressDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/PointCloud/PointCloudTemperatureDisplayPanel.vue`
|
||||
|
||||
@@ -0,0 +1,314 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# VolumeMesh
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/volume/VolumeMesh.ts`
|
||||
- 文档位置:`packages/docs/api/effect/volume/VolumeMesh.md`
|
||||
|
||||
## 接口:`ColorStop`
|
||||
|
||||
- 作用:ColorStop 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `string` | 是 | 颜色配置。 |
|
||||
| `step` | `number` | 是 | 用于保存 `step` 对应的数据。 |
|
||||
|
||||
## 枚举:`VolumeRenderMode`
|
||||
|
||||
- 作用:VolumeRenderMode 枚举定义。
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `EmissionAbsorptionModel` | `0` | 枚举值 `EmissionAbsorptionModel`。 |
|
||||
| `MinimumIntensityProjection` | `1` | 枚举值 `MinimumIntensityProjection`。 |
|
||||
| `MaximumIntensityProjection` | `2` | 枚举值 `MaximumIntensityProjection`。 |
|
||||
|
||||
## 接口:`VolumeRenderingOptions`
|
||||
|
||||
- 作用:VolumeRenderingOptions 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | 名称。 |
|
||||
| `scale` | `number` | 否 | 用于保存 `scale` 对应的数据。 |
|
||||
| `size` | `number` | 否 | 尺寸参数。 |
|
||||
| `sizeX` | `number` | 否 | 用于保存 `sizeX` 对应的数据。 |
|
||||
| `sizeY` | `number` | 否 | 用于保存 `sizeY` 对应的数据。 |
|
||||
| `sizeZ` | `number` | 否 | 用于保存 `sizeZ` 对应的数据。 |
|
||||
| `data` | `Uint8Array` | 是 | 输入数据。 |
|
||||
| `colorStops` | `ColorStop[]` | 否 | 用于保存 `colorStops` 的集合数据。 |
|
||||
| `range` | `number` | 否 | 用于保存 `range` 对应的数据。 |
|
||||
| `threshold` | `number` | 否 | 阈值配置。 |
|
||||
| `steps` | `number` | 否 | 用于保存 `steps` 对应的数据。 |
|
||||
| `useSmoothing` | `boolean` | 否 | 用于标记 `useSmoothing` 的启用状态。 |
|
||||
| `mode` | `VolumeRenderMode` | 否 | 用于保存 `mode` 对应的数据。 |
|
||||
| `clipMode` | `0 \| 1` | 否 | 用于保存 `clipMode` 对应的数据。 |
|
||||
| `clipPlane` | `THREE.Vector4` | 否 | 用于保存 `clipPlane` 对应的数据。 |
|
||||
| `showWireframe` | `boolean` | 否 | 用于标记 `showWireframe` 的启用状态。 |
|
||||
|
||||
## 函数:`isVolumeMesh`
|
||||
|
||||
- 作用:执行 is Volume Mesh 相关逻辑。
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function isVolumeMesh(value: any): boolean
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `any` | 是 | 要写入的新值。 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:返回布尔结果。
|
||||
|
||||
## 类:`VolumeMesh`
|
||||
|
||||
- 作用:VolumeMesh 类。
|
||||
- 继承/实现:`extends THREE.Mesh<THREE.BufferGeometry, THREE.NodeMaterial>`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new VolumeMesh(viewer: Viewer, options: VolumeRenderingOptions)`
|
||||
|
||||
- 作用:创建 VolumeMesh 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
| `options` | `VolumeRenderingOptions` | 是 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`VolumeMesh`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `panelCounter` | `public static` | `number` | 用于保存 `panelCounter` 对应的数据。 |
|
||||
| `range` | `public` | `THREE.UniformNode<'float', number>` | 用于保存 `range` 对应的数据。 |
|
||||
| `threshold` | `public` | `THREE.UniformNode<'float', number>` | 阈值配置。 |
|
||||
| `opacity` | `public` | `THREE.UniformNode<'float', number>` | 控制对象或材质的透明度。 |
|
||||
| `steps` | `public` | `THREE.UniformNode<'float', number>` | 用于保存 `steps` 对应的数据。 |
|
||||
| `useSmoothing` | `public` | `THREE.UniformNode<'float', number>` | 用于保存 `useSmoothing` 对应的数据。 |
|
||||
| `mode` | `public` | `THREE.UniformNode<'float', number>` | 用于保存 `mode` 对应的数据。 |
|
||||
| `clipMode` | `public` | `THREE.UniformNode<'float', number>` | 用于保存 `clipMode` 对应的数据。 |
|
||||
| `clipPlane` | `public` | `THREE.UniformNode<'vec4', THREE.Vector4>` | 用于保存 `clipPlane` 对应的数据。 |
|
||||
| `clipPlaneX` | `public` | `THREE.UniformNode<'vec4', THREE.Vector4>` | 用于保存 `clipPlaneX` 对应的数据。 |
|
||||
| `clipPlaneY` | `public` | `THREE.UniformNode<'vec4', THREE.Vector4>` | 用于保存 `clipPlaneY` 对应的数据。 |
|
||||
| `clipPlaneZ` | `public` | `THREE.UniformNode<'vec4', THREE.Vector4>` | 用于保存 `clipPlaneZ` 对应的数据。 |
|
||||
| `uniformScale` | `public` | `number` | 用于保存 `uniformScale` 对应的数据。 |
|
||||
| `data` | `public` | `Uint8Array` | 输入数据。 |
|
||||
| `viewer` | `public` | `Viewer` | 用于保存 `viewer` 对应的数据。 |
|
||||
| `volumeTexture` | `public` | `THREE.Data3DTexture` | 用于保存 `volumeTexture` 对应的数据。 |
|
||||
| `transferTexture` | `public` | `THREE.Texture` | 用于保存 `transferTexture` 对应的数据。 |
|
||||
| `material` | `public` | `THREE.NodeMaterial` | 材质参数。 |
|
||||
| `wireframe` | `public` | `ParametricWireframe` | 用于保存 `wireframe` 对应的数据。 |
|
||||
| `sizeX` | `public` | `number` | 用于保存 `sizeX` 对应的数据。 |
|
||||
| `sizeY` | `public` | `number` | 用于保存 `sizeY` 对应的数据。 |
|
||||
| `sizeZ` | `public` | `number` | 用于保存 `sizeZ` 对应的数据。 |
|
||||
| `canvas` | `public` | `HTMLCanvasElement` | 用于保存 `canvas` 对应的数据。 |
|
||||
| `colorStops` | `public` | `ColorStop[]` | 用于保存 `colorStops` 的集合数据。 |
|
||||
| `isVolumeMesh` | `public` | `boolean` | 用于标记 `isVolumeMesh` 的启用状态。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `updateTransferTexture(colorStops: ColorStop[]): void`
|
||||
|
||||
- 作用:更新 Transfer Texture。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `colorStops` | `ColorStop[]` | 是 | 参数 `colorStops`,类型为 `ColorStop[]`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateVolumeData(data: Uint8Array): void`
|
||||
|
||||
- 作用:更新 Volume Data。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `Uint8Array` | 是 | 输入数据。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setWireframeVisible(visible: boolean): void`
|
||||
|
||||
- 作用:设置 Wireframe Visible。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `visible` | `boolean` | 是 | 是否可见。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateTransferTextureCanvas(colorStops: ColorStop[]): void`
|
||||
|
||||
- 作用:更新 Transfer Texture Canvas。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `colorStops` | `ColorStop[]` | 是 | 参数 `colorStops`,类型为 `ColorStop[]`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createTransferTexture(colorStops: ColorStop[]): THREE.Texture<unknown, THREE.TextureEventMap>`
|
||||
|
||||
- 作用:创建 Transfer Texture。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `colorStops` | `ColorStop[]` | 是 | 参数 `colorStops`,类型为 `ColorStop[]`。 |
|
||||
|
||||
- 出参:`THREE.Texture<unknown, THREE.TextureEventMap>`
|
||||
- 返回说明:返回 `THREE.Texture<unknown, THREE.TextureEventMap>`。
|
||||
|
||||
#### `numberToHex(n: number): string`
|
||||
|
||||
- 作用:执行 number To Hex 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `n` | `number` | 是 | 参数 `n`,类型为 `number`。 |
|
||||
|
||||
- 出参:`string`
|
||||
- 返回说明:返回字符串结果。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源并销毁当前实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createDebugPanel(): void`
|
||||
|
||||
- 作用:创建 Debug Panel。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/TemperaturePanel.vue`
|
||||
|
||||
```ts
|
||||
rangeMin: 6,
|
||||
rangeMax: 53,
|
||||
baseData: data
|
||||
});
|
||||
// 获取 RAW 后重新遍历体数据,使用 noise3d 重新生成体素值。
|
||||
data = regenerateVolumeDataWithNoise3D(data, size);
|
||||
} catch (error: unknown) {
|
||||
// RAW 加载失败时回退为全 0 数据,保证面板不崩溃。
|
||||
console.error("温度体 RAW 加载失败,已回退为默认空数据:", error);
|
||||
data = new Uint8Array(size * size * size);
|
||||
}
|
||||
|
||||
volume = new VolumeMesh(viewer, {
|
||||
name: "温度",
|
||||
size,
|
||||
scale: 4.99,
|
||||
data: data,
|
||||
mode: VolumeRenderMode.MaximumIntensityProjection,
|
||||
colorStops: [
|
||||
{ color: "#ae1be9", step: 0.0 },
|
||||
{ color: "#0bdb04", step: 0.05 },
|
||||
{ color: "#10e52b", step: 0.1 },
|
||||
{ color: "#1232db", step: 0.15 },
|
||||
{ color: "#0000FF", step: 0.2 },
|
||||
{ color: "#00FFFF", step: 0.33 },
|
||||
{ color: "#FFFF00", step: 0.66 },
|
||||
{ color: "#FF0000", step: 1.0 },
|
||||
],
|
||||
});
|
||||
volume.renderOrder = 3;
|
||||
// volume.material.depthTest = true
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/DustConcentrationPanel.vue`
|
||||
|
||||
```ts
|
||||
const volumeData = generatePipeFilledVolumeData(outerBox);
|
||||
|
||||
volume = new VolumeMesh(viewer, {
|
||||
name: '形变场数据',
|
||||
size: VOLUME_SIZE,
|
||||
scale: 4.99,
|
||||
data: volumeData,
|
||||
mode: VolumeRenderMode.MaximumIntensityProjection,
|
||||
colorStops: [
|
||||
// 强度 10(step≈0.04)起始为亮绿色,随强度升高过渡至深绿,热点高强度区映射为红色。
|
||||
{color: "#335b33", step: 0.04},
|
||||
{color: "#00ff00", step: 0.62},
|
||||
{color: "#b31414", step: 0.90},
|
||||
{color: "#FF0000", step: 1.00},
|
||||
],
|
||||
});
|
||||
volume.renderOrder = 1
|
||||
// volume.material.depthTest = true
|
||||
volume.material.opacity = 0.5
|
||||
hasVolume.value = true;
|
||||
bus.triggerSceneTreeUpdate()
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `VolumeMesh` 的公开方法调用。
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `VolumeRenderMode`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/TemperaturePanel.vue`
|
||||
- `packages/demo/src/panels/GeothermalScene/DustConcentrationPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/StrainDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/StressDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/TemperatureDisplayPanel.vue`
|
||||
|
||||
### `VolumeMesh`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/DustDisasterLabelPanel.vue`
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/TemperaturePanel.vue`
|
||||
- `packages/demo/src/panels/GeothermalScene/DustConcentrationPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/StrainDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/StressDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/TemperatureDisplayPanel.vue`
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# VolumeNode
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/volume/VolumeNode.ts`
|
||||
- 文档位置:`packages/docs/api/effect/volume/VolumeNode.md`
|
||||
|
||||
## 接口:`IVoxelMaterialOptions`
|
||||
|
||||
- 作用:IVoxelMaterialOptions 的结构定义。
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export interface IVoxelMaterialOptions {
|
||||
readonly colorTexture: NodeElements;
|
||||
readonly texture: NodeElements;
|
||||
readonly range: NodeElements;
|
||||
readonly threshold: NodeElements;
|
||||
readonly opacity: NodeElements;
|
||||
readonly steps: NodeElements;
|
||||
readonly useSmoothing: NodeElements;
|
||||
readonly mode: NodeElements;
|
||||
readonly clipMode: NodeElements;
|
||||
readonly clipPlane: NodeElements;
|
||||
readonly clipPlaneX: NodeElements;
|
||||
readonly clipPlaneY: NodeElements;
|
||||
readonly clipPlaneZ: NodeElements;
|
||||
|
||||
readonly [key: string]: unknown;
|
||||
}
|
||||
```
|
||||
|
||||
## 接口:`IEmissionAbsorptionModelOptions`
|
||||
|
||||
- 作用:IEmissionAbsorptionModelOptions 的结构定义。
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export interface IEmissionAbsorptionModelOptions {
|
||||
readonly colorTexture: NodeElements;
|
||||
readonly texture: NodeElements;
|
||||
readonly range: NodeElements;
|
||||
readonly threshold: NodeElements;
|
||||
readonly opacity: NodeElements;
|
||||
readonly steps: NodeElements;
|
||||
readonly useSmoothing: NodeElements;
|
||||
readonly clipMode: NodeElements;
|
||||
readonly clipPlane: NodeElements;
|
||||
readonly clipPlaneX: NodeElements;
|
||||
readonly clipPlaneY: NodeElements;
|
||||
readonly clipPlaneZ: NodeElements;
|
||||
|
||||
readonly [key: string]: unknown;
|
||||
}
|
||||
```
|
||||
|
||||
## 接口:`IMaximumIntensityProjectionOptions`
|
||||
|
||||
- 作用:IMaximumIntensityProjectionOptions 的结构定义。
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export interface IMaximumIntensityProjectionOptions {
|
||||
readonly colorTexture: NodeElements;
|
||||
readonly texture: NodeElements;
|
||||
readonly opacity: NodeElements;
|
||||
readonly steps: NodeElements;
|
||||
readonly clipMode: NodeElements;
|
||||
readonly clipPlane: NodeElements;
|
||||
readonly clipPlaneX: NodeElements;
|
||||
readonly clipPlaneY: NodeElements;
|
||||
readonly clipPlaneZ: NodeElements;
|
||||
|
||||
readonly [key: string]: unknown;
|
||||
}
|
||||
```
|
||||
|
||||
## 接口:`IMinimumIntensityProjectionOptions`
|
||||
|
||||
- 作用:IMinimumIntensityProjectionOptions 的结构定义。
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export interface IMinimumIntensityProjectionOptions {
|
||||
readonly colorTexture: NodeElements;
|
||||
readonly texture: NodeElements;
|
||||
readonly opacity: NodeElements;
|
||||
readonly steps: NodeElements;
|
||||
readonly clipMode: NodeElements;
|
||||
readonly clipPlane: NodeElements;
|
||||
readonly clipPlaneX: NodeElements;
|
||||
readonly clipPlaneY: NodeElements;
|
||||
readonly clipPlaneZ: NodeElements;
|
||||
|
||||
readonly [key: string]: unknown;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# VolumeTool
|
||||
|
||||
- 源文件:`packages/sdk/src/effect/volume/VolumeTool.ts`
|
||||
- 文档位置:`packages/docs/api/effect/volume/VolumeTool.md`
|
||||
|
||||
## 类:`VolumeTool`
|
||||
|
||||
- 作用:体积数据工具类
|
||||
|
||||
### 方法
|
||||
|
||||
#### `remap(value: number, fromMin: number, fromMax: number, toMin = 0, toMax = 1): number`
|
||||
|
||||
- 作用:线性映射:将值从输入范围映射到输出范围
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | 输入值 |
|
||||
| `fromMin` | `number` | 是 | 输入范围最小值 |
|
||||
| `fromMax` | `number` | 是 | 输入范围最大值 |
|
||||
| `toMin` | `number` | 否 | 输出范围最小值(默认0) |
|
||||
| `toMax` | `number` | 否 | 输出范围最大值(默认1) |
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:映射后的值
|
||||
|
||||
#### `generateVolumeData({ x, y, z, size = 256, rangeMin, rangeMax, }: { x?: number; y?: number; z?: number; size?: number; rangeMin: number; rangeMax: number; }): Uint8Array<ArrayBufferLike>`
|
||||
|
||||
- 作用:生成3D体积数据,使用Simplex噪声算法
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `{ x, y, z, size = 256, rangeMin, rangeMax, }` | `{ x?: number; y?: number; z?: number; size?: number; rangeMin: number; rangeMax: number; }` | 是 | 参数 `{ x, y, z, size = 256, rangeMin, rangeMax, }`,类型为 `{ x?: number; y?: number; z?: number; size?: number; rangeMin: number; rangeMax: number; }`。 |
|
||||
|
||||
- 出参:`Uint8Array<ArrayBufferLike>`
|
||||
- 返回说明:Uint8Array格式的体积数据
|
||||
|
||||
#### `generateVolumeDataWithClearLayers({ x, y, z, size = 256, rangeMin, rangeMax, clearLayers = 0 }: { x?: number; y?: number; z?: number; size?: number; rangeMin: number; rangeMax: number; clearLayers?: number; }): Uint8Array<ArrayBufferLike>`
|
||||
|
||||
- 作用:生成3D体积数据并清除外层,使用Simplex噪声算法
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `{ x, y, z, size = 256, rangeMin, rangeMax, clearLayers = 0 }` | `{ x?: number; y?: number; z?: number; size?: number; rangeMin: number; rangeMax: number; clearLayers?: number; }` | 是 | 参数 `{ x, y, z, size = 256, rangeMin, rangeMax, clearLayers = 0 }`,类型为 `{ x?: number; y?: number; z?: number; size?: number; rangeMin: number; rangeMax: number; clearLayers?: number; }`。 |
|
||||
|
||||
- 出参:`Uint8Array<ArrayBufferLike>`
|
||||
- 返回说明:Uint8Array格式的体积数据
|
||||
|
||||
#### `generateNoiseAroundPoints({ size = 256, worldOrigin, worldSize, points, rangeMin, rangeMax }: { size?: number; worldOrigin: [number, number, number]; worldSize: number; points: Array<{ position: [number, number, number]; radius: number, density: number }>; rangeMin: number; rangeMax: number; }): Uint8Array<ArrayBufferLike>`
|
||||
|
||||
- 作用:在指定世界空间坐标周围生成3D噪声值
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `{ size = 256, worldOrigin, worldSize, points, rangeMin, rangeMax }` | `{ size?: number; worldOrigin: [number, number, number]; worldSize: number; points: Array<{ position: [number, number, number]; radius: number, density: number }>; rangeMin: number; rangeMax: number; }` | 是 | 参数 `{ size = 256, worldOrigin, worldSize, points, rangeMin, rangeMax }`,类型为 `{ size?: number; worldOrigin: [number, number, number]; worldSize: number; points: Array<{ position: [number, number, number]; radius: number, density: number }>; rangeMin: number; rangeMax: number; }`。 |
|
||||
|
||||
- 出参:`Uint8Array<ArrayBufferLike>`
|
||||
- 返回说明:Uint8Array格式的体积数据
|
||||
|
||||
#### `clearOuterLayers({ data, width, height, depth, layers }: { data: Uint8Array; width: number; height: number; depth: number; layers: number; }): void`
|
||||
|
||||
- 作用:清除体素空间最外层的数据,将其设置为0
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `{ data, width, height, depth, layers }` | `{ data: Uint8Array; width: number; height: number; depth: number; layers: number; }` | 是 | 参数 `{ data, width, height, depth, layers }`,类型为 `{ data: Uint8Array; width: number; height: number; depth: number; layers: number; }`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `generateRandomVolumeInBox({ outerBox, innerBox, size = 256, rangeMin = 0, rangeMax = 255 }: { outerBox: THREE.Box3; innerBox: THREE.Box3; size?: number; rangeMin?: number; rangeMax?: number; }): Uint8Array<ArrayBufferLike>`
|
||||
|
||||
- 作用:在内部包围盒中生成随机体积数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `{ outerBox, innerBox, size = 256, rangeMin = 0, rangeMax = 255 }` | `{ outerBox: THREE.Box3; innerBox: THREE.Box3; size?: number; rangeMin?: number; rangeMax?: number; }` | 是 | 参数 `{ outerBox, innerBox, size = 256, rangeMin = 0, rangeMax = 255 }`,类型为 `{ outerBox: THREE.Box3; innerBox: THREE.Box3; size?: number; rangeMin?: number; rangeMax?: number; }`。 |
|
||||
|
||||
- 出参:`Uint8Array<ArrayBufferLike>`
|
||||
- 返回说明:Uint8Array格式的体积数据
|
||||
|
||||
#### `generateRandomVolumeAroundPipe({ outerBox, pipeStart, pipeEnd, pipeRadius, size = 256, rangeMin = 0, rangeMax = 255 }: TRandomVolumeAroundPipeOptions): Uint8Array<ArrayBufferLike>`
|
||||
|
||||
- 作用:在管道周围生成随机体积数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `{ outerBox, pipeStart, pipeEnd, pipeRadius, size = 256, rangeMin = 0, rangeMax = 255 }` | `TRandomVolumeAroundPipeOptions` | 是 | 参数 `{ outerBox, pipeStart, pipeEnd, pipeRadius, size = 256, rangeMin = 0, rangeMax = 255 }`,类型为 `TRandomVolumeAroundPipeOptions`。 |
|
||||
|
||||
- 出参:`Uint8Array<ArrayBufferLike>`
|
||||
- 返回说明:Uint8Array格式的体积数据
|
||||
|
||||
#### `generateRandomVolumeAroundPipeWithBaseData({ outerBox, pipeStart, pipeEnd, pipeRadius, size = 256, rangeMin = 0, rangeMax = 255, baseData }: TRandomVolumeAroundPipeOptions & { baseData: Uint8Array; }): Uint8Array<ArrayBufferLike>`
|
||||
|
||||
- 作用:在已有体积数据基础上按管道规则继续生成数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `{ outerBox, pipeStart, pipeEnd, pipeRadius, size = 256, rangeMin = 0, rangeMax = 255, baseData }` | `TRandomVolumeAroundPipeOptions & { baseData: Uint8Array; }` | 是 | 参数 `{ outerBox, pipeStart, pipeEnd, pipeRadius, size = 256, rangeMin = 0, rangeMax = 255, baseData }`,类型为 `TRandomVolumeAroundPipeOptions & { baseData: Uint8Array; }`。 |
|
||||
|
||||
- 出参:`Uint8Array<ArrayBufferLike>`
|
||||
- 返回说明:Uint8Array格式的体积数据
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `VolumeTool` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `VolumeTool.remap`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/DustConcentrationPanel.vue`
|
||||
|
||||
```ts
|
||||
const mappedZList = new Float32Array(VOLUME_SIZE);
|
||||
|
||||
for (let x = 0; x < VOLUME_SIZE; x++) {
|
||||
mappedXList[x] = VolumeTool.remap(x, 0, VOLUME_SIZE - 1, outerBox.min.x, outerBox.max.x);
|
||||
}
|
||||
for (let y = 0; y < VOLUME_SIZE; y++) {
|
||||
mappedYList[y] = VolumeTool.remap(y, 0, VOLUME_SIZE - 1, outerBox.min.y, outerBox.max.y);
|
||||
}
|
||||
for (let z = 0; z < VOLUME_SIZE; z++) {
|
||||
mappedZList[z] = VolumeTool.remap(z, 0, VOLUME_SIZE - 1, outerBox.min.z, outerBox.max.z);
|
||||
}
|
||||
```
|
||||
|
||||
### `VolumeTool.generateVolumeData`
|
||||
|
||||
- 来源:`packages/demo/src/panels/TunnelScene/FieldData/StrainDisplayPanel.vue`
|
||||
|
||||
```ts
|
||||
const viewer = bus.getViewer();
|
||||
const data = VolumeTool.generateVolumeData({size: 256, rangeMin: 10, rangeMax: 50});
|
||||
|
||||
volume = new VolumeMesh(viewer, {
|
||||
name: "应变场",
|
||||
size: 256,
|
||||
data,
|
||||
mode: VolumeRenderMode.EmissionAbsorptionModel,
|
||||
clipMode: bus.clippingMode === 'single' ? 1 : 0,
|
||||
scale: 4.99,
|
||||
colorStops: [
|
||||
{color: '#00FFFF', step: 0.2},
|
||||
{color: '#0080FF', step: 0.5},
|
||||
{color: '#8000FF', step: 0.7},
|
||||
{color: '#FF00FF', step: 1.0},
|
||||
],
|
||||
});
|
||||
volume.renderOrder = 1
|
||||
// 如果加载面面板已打开,则启用体材质深度测试
|
||||
if (bus.getLoadSurfaceExists && bus.getLoadSurfaceExists()) {
|
||||
```
|
||||
|
||||
### `VolumeTool.generateRandomVolumeAroundPipeWithBaseData`
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/TemperaturePanel.vue`
|
||||
|
||||
```ts
|
||||
try {
|
||||
// 与 StressDisplayPanel 一致:通过 resources.loadRawData 加载 RAW。
|
||||
data = await getTemperatureVolumeData();
|
||||
data = VolumeTool.generateRandomVolumeAroundPipeWithBaseData({
|
||||
outerBox: outerBox,
|
||||
pipeStart: new THREE.Vector3(-0.11, 0, -2.505),
|
||||
pipeEnd: new THREE.Vector3(-0.11, 0, -1.4),
|
||||
pipeRadius: 0.25,
|
||||
size: 256,
|
||||
rangeMin: 6,
|
||||
rangeMax: 53,
|
||||
baseData: data
|
||||
});
|
||||
// 获取 RAW 后重新遍历体数据,使用 noise3d 重新生成体素值。
|
||||
data = regenerateVolumeDataWithNoise3D(data, size);
|
||||
} catch (error: unknown) {
|
||||
// RAW 加载失败时回退为全 0 数据,保证面板不崩溃。
|
||||
console.error("温度体 RAW 加载失败,已回退为默认空数据:", error);
|
||||
data = new Uint8Array(size * size * size);
|
||||
}
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `VolumeTool`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/TemperaturePanel.vue`
|
||||
- `packages/demo/src/panels/GeothermalScene/DustConcentrationPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/StrainDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/StressDisplayPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/FieldData/TemperatureDisplayPanel.vue`
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# EventManagerEvents
|
||||
|
||||
- 源文件:`packages/sdk/src/enums/EventManagerEvents.ts`
|
||||
- 文档位置:`packages/docs/api/enums/EventManagerEvents.md`
|
||||
|
||||
## 枚举:`EventManagerEvents`
|
||||
|
||||
- 作用:EventManager 事件名称枚举
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `RAYCAST_PICK` | `'raycastPick'` | 鼠标点击事件 |
|
||||
| `RAYCAST_PICK_ALL` | `'raycastPickAll'` | 枚举值 `RAYCAST_PICK_ALL`。 |
|
||||
| `BOX_SELECTION_MOVE` | `'boxSelectionMove'` | 框选事件 |
|
||||
| `BOX_SELECTION_COMPLETE` | `'boxSelectionComplete'` | 枚举值 `BOX_SELECTION_COMPLETE`。 |
|
||||
|
||||
## 类型:`EventManagerEventMap`
|
||||
|
||||
- 作用:EventManager 事件映射类型
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export type EventManagerEventMap = {
|
||||
[EventManagerEvents.RAYCAST_PICK]: { intersects: any[], object: any, point: any, face: any, distance: any };
|
||||
[EventManagerEvents.RAYCAST_PICK_ALL]: { intersects: any[], object: any, point: any, face: any, distance: any };
|
||||
[EventManagerEvents.BOX_SELECTION_MOVE]: [{ data: { objects: any[], collection: any } }];
|
||||
[EventManagerEvents.BOX_SELECTION_COMPLETE]: [{ data: { objects: any[] } }];
|
||||
};
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `EventManagerEvents`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/components/Toolbar.vue`
|
||||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue`
|
||||
- `packages/demo/src/panels/FracturingPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/DrillingPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue`
|
||||
- `packages/demo/src/panels/OilGasScene/FluidApplicationPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/DisturbanceLoadingPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/StressApplicationPanel.vue`
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# SelectionManagerEvents
|
||||
|
||||
- 源文件:`packages/sdk/src/enums/SelectionManagerEvents.ts`
|
||||
- 文档位置:`packages/docs/api/enums/SelectionManagerEvents.md`
|
||||
|
||||
## 枚举:`SelectionManagerEvents`
|
||||
|
||||
- 作用:SelectionManager 事件名称枚举
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `OBJECT_SELECTED` | `'objectSelected'` | 选择事件 |
|
||||
| `OBJECT_UNSELECTED` | `'objectUnselected'` | 枚举值 `OBJECT_UNSELECTED`。 |
|
||||
|
||||
## 接口:`SelectionManagerEventData`
|
||||
|
||||
- 作用:SelectionManagerEventData 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `SelectionManagerEvents` | 是 | 名称。 |
|
||||
| `data` | `THREE.Object3D \| null` | 是 | 输入数据。 |
|
||||
|
||||
## 类型:`SelectionManagerEventMap`
|
||||
|
||||
- 作用:SelectionManager 事件映射类型
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export type SelectionManagerEventMap = {
|
||||
[SelectionManagerEvents.OBJECT_SELECTED]: THREE.Object3D | null
|
||||
[SelectionManagerEvents.OBJECT_UNSELECTED]: THREE.Object3D | null
|
||||
};
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `SelectionManagerEvents`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/components/SceneTree.vue`
|
||||
- `packages/demo/src/hooks/useDebug.ts`
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ViewerEvents
|
||||
|
||||
- 源文件:`packages/sdk/src/enums/ViewerEvents.ts`
|
||||
- 文档位置:`packages/docs/api/enums/ViewerEvents.md`
|
||||
|
||||
## 枚举:`ViewerEvents`
|
||||
|
||||
- 作用:Viewer 事件名称枚举
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `INIT` | `'init'` | Viewer 初始化事件 |
|
||||
| `BEFORE_RENDER` | `"BEFORE_RENDER"` | 枚举值 `BEFORE_RENDER`。 |
|
||||
| `AFTER_RENDER` | `"AFTER_RENDER"` | 枚举值 `AFTER_RENDER`。 |
|
||||
| `CAMERA_TYPE_CHANGED` | `"CAMERA_TYPE_CHANGED"` | 枚举值 `CAMERA_TYPE_CHANGED`。 |
|
||||
|
||||
## 接口:`RenderEventData`
|
||||
|
||||
- 作用:RenderEventData 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `{ delta: number; }` | 是 | 输入数据。 |
|
||||
| `name` | `ViewerEvents` | 是 | 名称。 |
|
||||
|
||||
## 接口:`CameraTypeChangedEventData`
|
||||
|
||||
- 作用:CameraTypeChangedEventData 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `type` | `'perspective' \| 'orthographic'` | 是 | 类型标识。 |
|
||||
|
||||
## 类型:`ViewerEventMap`
|
||||
|
||||
- 作用:Viewer 事件映射类型
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export type ViewerEventMap = {
|
||||
[ViewerEvents.INIT]: any;
|
||||
[ViewerEvents.BEFORE_RENDER]: { delta: number }
|
||||
[ViewerEvents.AFTER_RENDER]: { delta: number }
|
||||
[ViewerEvents.CAMERA_TYPE_CHANGED]: CameraTypeChangedEventData
|
||||
};
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `ViewerEvents`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue`
|
||||
- `packages/demo/src/views/GeothermalScene.vue`
|
||||
- `packages/demo/src/views/GoldMineScene.vue`
|
||||
- `packages/demo/src/views/OilGasScene.vue`
|
||||
- `packages/demo/src/views/TunnelScene.vue`
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# API 总览
|
||||
|
||||
本文档基于 `packages/sdk/src` 的实际源码结构整理,并参考 `packages/demo/src` 中的调用方式补充了常见入口。每个页面都包含函数入参、出参以及属性作用说明。
|
||||
|
||||
## 快速使用流程
|
||||
|
||||
```ts
|
||||
import { Tool, Viewer, ViewerEvents } from "@deep/engine";
|
||||
|
||||
const viewer = new Viewer("viewer", {
|
||||
initCameraState: {
|
||||
position: { x: 5, y: 5, z: 5 },
|
||||
target: { x: 0, y: 0, z: 0 },
|
||||
},
|
||||
});
|
||||
|
||||
viewer.emitter.once(ViewerEvents.INIT).then(() => {
|
||||
viewer.resources.loadGLTF("/model/demo.glb").then((model) => {
|
||||
viewer.scene.add(model);
|
||||
Tool.setRenderOrder(viewer.scene, 1, [{ name: "岩样", renderOrder: 2 }]);
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
## 模块导航
|
||||
|
||||
### 核心
|
||||
|
||||
- [Viewer](/api/core/Viewer)
|
||||
- [ViewerInstances](/api/core/ViewerInstances)
|
||||
|
||||
### 管理器
|
||||
|
||||
- [ClippingManager](/api/manager/ClippingManager)
|
||||
- [ClippingPlane](/api/manager/ClippingPlane)
|
||||
- [CSS2DRendererManager](/api/manager/CSS2DRendererManager)
|
||||
- [CSS3DRendererManager](/api/manager/CSS3DRendererManager)
|
||||
- [EventManager](/api/manager/EventManager)
|
||||
- [IconManager](/api/manager/IconManager)
|
||||
- [PanelManager](/api/manager/PanelManager)
|
||||
- [ParametricManager](/api/manager/ParametricManager)
|
||||
- [PipelineManager](/api/manager/PipelineManager)
|
||||
- [RangeCullingManager](/api/manager/RangeCullingManager)
|
||||
- [ResourceManager](/api/manager/ResourceManager)
|
||||
- [RuptureEventManager](/api/manager/RuptureEventManager)
|
||||
- [SelectionManager](/api/manager/SelectionManager)
|
||||
|
||||
### 网格与面板
|
||||
|
||||
- [ClippingHelper](/api/mesh/ClippingHelper)
|
||||
- [CubePanel](/api/mesh/CubePanel)
|
||||
- [FlowLine](/api/mesh/FlowLine)
|
||||
- [HtmlPanel](/api/mesh/HtmlPanel)
|
||||
- [Icon](/api/mesh/Icon)
|
||||
- [SpritePanel](/api/mesh/SpritePanel)
|
||||
|
||||
### 工具
|
||||
|
||||
- [CollisionDetector](/api/tool/CollisionDetector)
|
||||
- [CSGOperator](/api/tool/CSGOperator)
|
||||
- [Tool](/api/tool/Tool)
|
||||
|
||||
### 材质
|
||||
|
||||
- [MaterialFactory](/api/materials/MaterialFactory)
|
||||
- [Rock1Material](/api/materials/Rock1Material)
|
||||
- [Rock2Material](/api/materials/Rock2Material)
|
||||
- [Rock3Material](/api/materials/Rock3Material)
|
||||
- [Rock4Material](/api/materials/Rock4Material)
|
||||
- [Rock5Material](/api/materials/Rock5Material)
|
||||
- [Rock6Material](/api/materials/Rock6Material)
|
||||
- [Rock7Material](/api/materials/Rock7Material)
|
||||
- [Rock8Material](/api/materials/Rock8Material)
|
||||
- [RockMaterial](/api/materials/RockMaterial)
|
||||
|
||||
### 特效
|
||||
|
||||
- [FaultSlip](/api/effect/FaultSlip)
|
||||
- [FlowParticles](/api/effect/FlowParticles)
|
||||
- [FractureEffect](/api/effect/FractureEffect)
|
||||
- [RockDebris](/api/effect/RockDebris)
|
||||
- [SeismicWave](/api/effect/SeismicWave)
|
||||
|
||||
### 体积与点云
|
||||
|
||||
- [PointCloud](/api/effect/volume/PointCloud)
|
||||
- [PointCloudTool](/api/effect/volume/PointCloudTool)
|
||||
- [VolumeMesh](/api/effect/volume/VolumeMesh)
|
||||
- [VolumeNode](/api/effect/volume/VolumeNode)
|
||||
- [VolumeTool](/api/effect/volume/VolumeTool)
|
||||
|
||||
### 参数化
|
||||
|
||||
- [ParametricArch](/api/parametric/ParametricArch)
|
||||
- [ParametricBox](/api/parametric/ParametricBox)
|
||||
- [ParametricCylinder](/api/parametric/ParametricCylinder)
|
||||
- [ParametricGeometryBase](/api/parametric/ParametricGeometryBase)
|
||||
- [ParametricPipe](/api/parametric/ParametricPipe)
|
||||
- [ParametricRing](/api/parametric/ParametricRing)
|
||||
- [ParametricSphere](/api/parametric/ParametricSphere)
|
||||
- [ParametricTorus](/api/parametric/ParametricTorus)
|
||||
- [ParametricWireframe](/api/parametric/ParametricWireframe)
|
||||
- [types](/api/parametric/types)
|
||||
|
||||
### 后处理
|
||||
|
||||
- [BloomPass](/api/passes/BloomPass)
|
||||
- [OutlinePass](/api/passes/OutlinePass)
|
||||
|
||||
### 机器人
|
||||
|
||||
- [DrillingRobot](/api/robot/DrillingRobot)
|
||||
- [MiningRobot](/api/robot/MiningRobot)
|
||||
|
||||
### 枚举与事件
|
||||
|
||||
- [EventManagerEvents](/api/enums/EventManagerEvents)
|
||||
- [SelectionManagerEvents](/api/enums/SelectionManagerEvents)
|
||||
- [ViewerEvents](/api/enums/ViewerEvents)
|
||||
|
||||
### 源码扩展
|
||||
|
||||
- [DExtrudeGeometry](/api/source/DExtrudeGeometry)
|
||||
|
||||
### 源码扩展 Core
|
||||
|
||||
- [Curve](/api/source/core/Curve)
|
||||
|
||||
### 源码扩展 Curves
|
||||
|
||||
- [CatmullRomCurve3](/api/source/curves/CatmullRomCurve3)
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# CSS2DRendererManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/CSS2DRendererManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/CSS2DRendererManager.md`
|
||||
|
||||
## 类:`CSS2DRendererManager`
|
||||
|
||||
- 作用:CSS2D 渲染管理类 负责管理 CSS2D 渲染器和 CSS2D 对象
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new CSS2DRendererManager(viewer: Viewer)`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | - 视图实例 |
|
||||
|
||||
- 出参:`CSS2DRendererManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `renderer` | `public` | `CSS2DRenderer` | CSS2D 渲染器 |
|
||||
| `viewer` | `public` | `Viewer` | 视图实例 |
|
||||
| `objects` | `public` | `Map<string, CSS2DObject>` | CSS2D 对象集合 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:初始化 CSS2D 渲染器
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `handleResize(): void`
|
||||
|
||||
- 作用:处理窗口大小变化
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createObject(element: HTMLElement, position: THREE.Vector3): CSS2DObject`
|
||||
|
||||
- 作用:创建 CSS2D 对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `element` | `HTMLElement` | 是 | - DOM 元素 |
|
||||
| `position` | `THREE.Vector3` | 是 | - 位置 |
|
||||
|
||||
- 出参:`CSS2DObject`
|
||||
- 返回说明:CSS2D 对象
|
||||
|
||||
#### `addObject(object: CSS2DObject, parent: THREE.Object3D = this.viewer.scene): void`
|
||||
|
||||
- 作用:添加 CSS2D 对象到场景
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `CSS2DObject` | 是 | - CSS2D 对象 |
|
||||
| `parent` | `THREE.Object3D` | 否 | - 父对象,默认为场景 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeObject(object: CSS2DObject): void`
|
||||
|
||||
- 作用:从场景中移除 CSS2D 对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `CSS2DObject` | 是 | - CSS2D 对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `render(): void`
|
||||
|
||||
- 作用:渲染 CSS2D 场景
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:清理资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getRenderer(): CSS2DRenderer`
|
||||
|
||||
- 作用:获取 CSS2D 渲染器实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`CSS2DRenderer`
|
||||
- 返回说明:CSS2D 渲染器
|
||||
|
||||
#### `getObjects(): CSS2DObject[]`
|
||||
|
||||
- 作用:获取所有 CSS2D 对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`CSS2DObject[]`
|
||||
- 返回说明:CSS2D 对象数组
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CSS2DRendererManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CSS2DRendererManager` 的公开方法调用。
|
||||
@@ -0,0 +1,154 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# CSS3DRendererManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/CSS3DRendererManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/CSS3DRendererManager.md`
|
||||
|
||||
## 类:`CSS3DRendererManager`
|
||||
|
||||
- 作用:CSS3D 渲染管理类 负责管理 CSS3D 渲染器和 CSS3D 对象
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new CSS3DRendererManager(viewer: Viewer)`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | - 视图实例 |
|
||||
|
||||
- 出参:`CSS3DRendererManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `renderer` | `public` | `CSS3DRenderer` | CSS3D 渲染器 |
|
||||
| `viewer` | `public` | `Viewer` | 视图实例 |
|
||||
| `objects` | `public` | `Map<string, CSS3DObject \| CSS3DSprite>` | CSS3D 对象集合 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:初始化 CSS3D 渲染器
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `handleResize(): void`
|
||||
|
||||
- 作用:处理窗口大小变化
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createObject(element: HTMLElement, position: THREE.Vector3): CSS3DObject`
|
||||
|
||||
- 作用:创建 CSS3D 对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `element` | `HTMLElement` | 是 | - DOM 元素 |
|
||||
| `position` | `THREE.Vector3` | 是 | - 位置 |
|
||||
|
||||
- 出参:`CSS3DObject`
|
||||
- 返回说明:CSS3D 对象
|
||||
|
||||
#### `createSprite(element: HTMLElement, position: THREE.Vector3): CSS3DSprite`
|
||||
|
||||
- 作用:创建 CSS3D 精灵
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `element` | `HTMLElement` | 是 | - DOM 元素 |
|
||||
| `position` | `THREE.Vector3` | 是 | - 位置 |
|
||||
|
||||
- 出参:`CSS3DSprite`
|
||||
- 返回说明:CSS3D 精灵
|
||||
|
||||
#### `addObject(object: CSS3DObject | CSS3DSprite, parent: THREE.Object3D = this.viewer.scene): void`
|
||||
|
||||
- 作用:添加 CSS3D 对象到场景
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `CSS3DObject \| CSS3DSprite` | 是 | - CSS3D 对象或精灵 |
|
||||
| `parent` | `THREE.Object3D` | 否 | - 父对象,默认为场景 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeObject(object: CSS3DObject | CSS3DSprite): void`
|
||||
|
||||
- 作用:从场景中移除 CSS3D 对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `CSS3DObject \| CSS3DSprite` | 是 | - CSS3D 对象或精灵 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `render(): void`
|
||||
|
||||
- 作用:渲染 CSS3D 场景
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:清理资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getRenderer(): CSS3DRenderer`
|
||||
|
||||
- 作用:获取 CSS3D 渲染器实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`CSS3DRenderer`
|
||||
- 返回说明:CSS3D 渲染器
|
||||
|
||||
#### `getObjects(): (CSS3DObject | CSS3DSprite)[]`
|
||||
|
||||
- 作用:获取所有 CSS3D 对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`(CSS3DObject \| CSS3DSprite)[]`
|
||||
- 返回说明:CSS3D 对象数组
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CSS3DRendererManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CSS3DRendererManager` 的公开方法调用。
|
||||
@@ -0,0 +1,241 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ClippingManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/ClippingManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/ClippingManager.md`
|
||||
|
||||
## 类:`ClippingManager`
|
||||
|
||||
- 作用:剖切管理器 管理剖切组和任意数量的剖切面(通过 addPlane 手动创建)
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ClippingManager(viewer: Viewer)`
|
||||
|
||||
- 作用:创建 ClippingManager 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
|
||||
- 出参:`ClippingManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `panelCounter` | `public static` | `number` | 用于保存 `panelCounter` 对应的数据。 |
|
||||
| `emitter` | `public` | `Emittery<{ clippingStart: undefined; clippingEnd: undefined; }, { clippingStart: undefined; clippingEnd: undefined; } & OmnipresentEventData, DatalessEventNames<{ clippingStart: undefined; clippingEnd: undefined; }>>` | 用于保存 `emitter` 对应的数据。 |
|
||||
| `isClipping` | `public` | `boolean` | 剖切是否已开始 |
|
||||
| `clippingPlanes` | `public` | `THREE.Plane[]` | 所有注册的剖切平面(THREE.Plane),同步到 clippingGroup |
|
||||
| `clippingPlaneHelpers` | `public` | `THREE.PlaneHelper[]` | 已废弃的辅助对象数组(保留以防外部引用) |
|
||||
| `clippingGroup` | `public` | `THREE.ClippingGroup` | 用于保存 `clippingGroup` 对应的数据。 |
|
||||
| `scene` | `public` | `THREE.Scene` | 用于保存 `scene` 对应的数据。 |
|
||||
| `viewer` | `public` | `Viewer` | 用于保存 `viewer` 对应的数据。 |
|
||||
| `planeHelperGroup` | `public` | `THREE.Group` | 平面辅助对象组 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `addDefaultPlanes(): [ClippingPlane, ClippingPlane, ClippingPlane]`
|
||||
|
||||
- 作用:创建默认的 X / Y / Z 三个剖切面
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`[ClippingPlane, ClippingPlane, ClippingPlane]`
|
||||
- 返回说明:[planeX, planeY, planeZ]
|
||||
|
||||
#### `addPlane(id: string, options: IClippingPlaneOptions): ClippingPlane`
|
||||
|
||||
- 作用:创建并注册一个剖切面
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 唯一标识 |
|
||||
| `options` | `IClippingPlaneOptions` | 是 | 剖切面配置 |
|
||||
|
||||
- 出参:`ClippingPlane`
|
||||
- 返回说明:返回 `ClippingPlane`。
|
||||
|
||||
#### `removePlane(id: string): void`
|
||||
|
||||
- 作用:移除剖切面
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 参数 `id`,类型为 `string`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getPlane(id: string): ClippingPlane | undefined`
|
||||
|
||||
- 作用:获取剖切面
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 参数 `id`,类型为 `string`。 |
|
||||
|
||||
- 出参:`ClippingPlane \| undefined`
|
||||
- 返回说明:返回 `ClippingPlane | undefined`。
|
||||
|
||||
#### `autoPlanePosition(offset: number = 2): void`
|
||||
|
||||
- 作用:根据剖切组包围盒自动定位 X/Y/Z 三个剖切面 必须先调用 addDefaultPlanes() 注册剖切面
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `offset` | `number` | 否 | 从包围盒 min 边的偏移量 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addClippingObjectsByUuid(uuids: Array<string>): void`
|
||||
|
||||
- 作用:─── 剖切组对象管理(保持不变)────────────────────────────────────────
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `uuids` | `Array<string>` | 是 | 参数 `uuids`,类型为 `Array<string>`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addClippingObjects(objects: Array<THREE.Object3D>): void`
|
||||
|
||||
- 作用:添加 Clipping Objects。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `objects` | `Array<THREE.Object3D>` | 是 | 目标对象集合。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addClippingToObject(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:添加 Clipping To Object。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 目标对象。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeClippingObjectsByUuid(uuids: Array<string>): void`
|
||||
|
||||
- 作用:移除 Clipping Objects By Uuid。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `uuids` | `Array<string>` | 是 | 参数 `uuids`,类型为 `Array<string>`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearClippingGroups(): void`
|
||||
|
||||
- 作用:清理 Clipping Groups。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearClippingPlanes(): void`
|
||||
|
||||
- 作用:清理 Clipping Planes。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `hideClippingPlanes(): void`
|
||||
|
||||
- 作用:执行 hide Clipping Planes 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `computeBoundingBox(): THREE.Box3`
|
||||
|
||||
- 作用:执行 compute Bounding Box 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Box3`
|
||||
- 返回说明:返回 `THREE.Box3`。
|
||||
|
||||
#### `createDebugPanel(clippingObjects: THREE.Object3D[] = []): void`
|
||||
|
||||
- 作用:创建调试面板
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `clippingObjects` | `THREE.Object3D[]` | 否 | 参数 `clippingObjects`,类型为 `THREE.Object3D[]`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `startClipping(): void`
|
||||
|
||||
- 作用:执行 start Clipping 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stopClipping(): void`
|
||||
|
||||
- 作用:执行 stop Clipping 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源并销毁当前实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ClippingManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ClippingManager` 的公开方法调用。
|
||||
@@ -0,0 +1,157 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ClippingPlane
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/ClippingPlane.ts`
|
||||
- 文档位置:`packages/docs/api/manager/ClippingPlane.md`
|
||||
|
||||
## 接口:`IClippingPlaneOptions`
|
||||
|
||||
- 作用:IClippingPlaneOptions 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `normal` | `THREE.Vector3` | 是 | 法线方向。 |
|
||||
| `constant` | `number` | 否 | 平面常量。 |
|
||||
| `color` | `THREE.Color` | 否 | 颜色配置。 |
|
||||
| `enableTransformControls` | `boolean` | 否 | 是否启用变换控制器。 |
|
||||
| `transformMode` | `"translate" \| "rotate"` | 否 | 变换控制模式。 |
|
||||
|
||||
## 类:`ClippingPlane`
|
||||
|
||||
- 作用:ClippingPlane 类。
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ClippingPlane(viewer: Viewer, options: IClippingPlaneOptions)`
|
||||
|
||||
- 作用:创建剖切平面实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 视图实例 |
|
||||
| `options` | `IClippingPlaneOptions` | 是 | 剖切面配置 |
|
||||
|
||||
- 出参:`ClippingPlane`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `plane` | `public` | `THREE.Plane` | 当前剖切面对应的数学平面对象。 |
|
||||
| `helper` | `public` | `ClippingHelper \| undefined` | 剖切面的可视化辅助对象。 |
|
||||
| `transformControl` | `public` | `TransformControls \| undefined` | 用于拖拽平面位置和朝向的变换控制器。 |
|
||||
| `emitter` | `public` | `Emittery<{ move: { position: THREE.Vector3; constant: number; normal: THREE.Vector3; }; }, { move: { position: THREE.Vector3; constant: number; normal: THREE.Vector3; }; } & OmnipresentEventData, never>` | 剖切面移动事件发射器。 |
|
||||
| `viewer` | `public readonly` | `Viewer` | 关联的 Viewer 实例。 |
|
||||
| `options` | `public readonly` | `IClippingPlaneOptions` | 剖切面的初始化配置。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `updatePlaneFromHelper(): void`
|
||||
|
||||
- 作用:根据 helper 当前姿态回写 plane
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createHelper(worldPosition: THREE.Vector3, size: number, group: THREE.Group): void`
|
||||
|
||||
- 作用:创建 ClippingHelper,定位到指定世界坐标,并加入 group
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `worldPosition` | `THREE.Vector3` | 是 | 平面中心世界坐标 |
|
||||
| `size` | `number` | 是 | helper 的宽高 |
|
||||
| `group` | `THREE.Group` | 是 | 要加入的父级 Group |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `detach(): void`
|
||||
|
||||
- 作用:解绑辅助对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setTransformMode(mode: "translate" | "rotate"): void`
|
||||
|
||||
- 作用:设置变换模式
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mode` | `"translate" \| "rotate"` | 是 | 变换模式 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setTransformSpace(space: "world" | "local"): void`
|
||||
|
||||
- 作用:设置变换空间并同步刷新轴约束
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `space` | `"world" \| "local"` | 是 | 变换空间 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createDebugPanel(label = "Clipping Plane"): void`
|
||||
|
||||
- 作用:创建调试面板,支持移动/旋转切换及 XYZ 数值控制
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `label` | `string` | 否 | 面板标题 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `showRotateHandles(show: boolean): void`
|
||||
|
||||
- 作用:显示或隐藏旋转控制手柄图标。 首次调用 true 时会懒加载图标贴图;设为 false 时隐藏图标。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `show` | `boolean` | 是 | 是否显示旋转手柄 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ClippingPlane` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ClippingPlane` 的公开方法调用。
|
||||
@@ -0,0 +1,270 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# EventManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/EventManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/EventManager.md`
|
||||
|
||||
## 类:`EventManager`
|
||||
|
||||
- 作用:事件管理器 继承自 Emittery,提供事件的订阅、取消订阅和触发功能
|
||||
- 继承/实现:`extends Emittery<EventManagerEventMap>`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new EventManager(viewer: Viewer)`
|
||||
|
||||
- 作用:创建 EventManager 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
|
||||
- 出参:`EventManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `raycaster` | `public` | `Raycaster` | 射线选择相关 |
|
||||
| `mouse` | `public` | `Vector2` | 用于保存 `mouse` 对应的数据。 |
|
||||
| `camera` | `public` | `Camera \| null` | 用于保存 `camera` 对应的数据。 |
|
||||
| `scene` | `public` | `Scene \| null` | 用于保存 `scene` 对应的数据。 |
|
||||
| `filterList` | `public` | `Object3D[]` | 用于保存 `filterList` 的集合数据。 |
|
||||
| `onDownPosition` | `public` | `Vector2` | 鼠标位置跟踪 |
|
||||
| `onUpPosition` | `public` | `Vector2` | 用于保存 `onUpPosition` 对应的数据。 |
|
||||
| `selectionBox` | `public` | `SelectionBox \| null` | 框选相关 |
|
||||
| `selectionHelper` | `public` | `SelectionHelper \| null` | 用于保存 `selectionHelper` 对应的数据。 |
|
||||
| `boxSelectionEnabled` | `public` | `boolean` | 用于标记 `boxSelectionEnabled` 的启用状态。 |
|
||||
| `viewer` | `public` | `Viewer` | 用于保存 `viewer` 对应的数据。 |
|
||||
|
||||
### 访问器
|
||||
|
||||
#### `get enableClick(): boolean`
|
||||
|
||||
- 作用:获取 enable Click。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:返回布尔结果。
|
||||
|
||||
#### `set enableClick(value: boolean)`
|
||||
|
||||
- 作用:设置 enable Click。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `boolean` | 是 | 要写入的新值。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
### 方法
|
||||
|
||||
#### `disableRaycast(): void`
|
||||
|
||||
- 作用:禁用射线选择功能
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addToFilterList(object: Object3D): void`
|
||||
|
||||
- 作用:添加对象到过滤列表(这些对象不会被射线选中)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `Object3D` | 是 | - 要过滤的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeFromFilterList(object: Object3D): void`
|
||||
|
||||
- 作用:从过滤列表中移除对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `Object3D` | 是 | - 要移除的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearFilterList(): void`
|
||||
|
||||
- 作用:清空过滤列表
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getMousePosition(dom: HTMLElement, x: number, y: number): [number, number]`
|
||||
|
||||
- 作用:获取鼠标在视口中的位置
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `dom` | `HTMLElement` | 是 | 参数 `dom`,类型为 `HTMLElement`。 |
|
||||
| `x` | `number` | 是 | 参数 `x`,类型为 `number`。 |
|
||||
| `y` | `number` | 是 | 参数 `y`,类型为 `number`。 |
|
||||
|
||||
- 出参:`[number, number]`
|
||||
- 返回说明:返回 `[number, number]`。
|
||||
|
||||
#### `handleClick(): void`
|
||||
|
||||
- 作用:处理点击事件
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `onMouseDown(event: MouseEvent): void`
|
||||
|
||||
- 作用:鼠标按下事件处理
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `event` | `MouseEvent` | 是 | 参数 `event`,类型为 `MouseEvent`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `onMouseUp(event: MouseEvent): void`
|
||||
|
||||
- 作用:鼠标释放事件处理
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `event` | `MouseEvent` | 是 | 参数 `event`,类型为 `MouseEvent`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `enableBoxSelection(): void`
|
||||
|
||||
- 作用:启用框选功能
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `disableBoxSelection(): void`
|
||||
|
||||
- 作用:禁用框选功能
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `onBoxSelectionStart(event: PointerEvent): void`
|
||||
|
||||
- 作用:框选开始事件处理
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `event` | `PointerEvent` | 是 | 参数 `event`,类型为 `PointerEvent`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `onBoxSelectionMove(event: PointerEvent): void`
|
||||
|
||||
- 作用:框选移动事件处理
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `event` | `PointerEvent` | 是 | 参数 `event`,类型为 `PointerEvent`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `onBoxSelectionEnd(event: PointerEvent): void`
|
||||
|
||||
- 作用:框选结束事件处理
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `event` | `PointerEvent` | 是 | 参数 `event`,类型为 `PointerEvent`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `EventManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `EventManager.addToFilterList`
|
||||
|
||||
- 来源:`packages/demo/src/components/Toolbar.vue`
|
||||
|
||||
```ts
|
||||
if (newValue) {
|
||||
// 透视选择激活时,将对象添加到过滤列表(不可被选中)
|
||||
viewer.events.addToFilterList(sampleObject)
|
||||
} else {
|
||||
// 透视选择关闭时,从过滤列表中移除(可被选中)
|
||||
viewer.events.removeFromFilterList(sampleObject)
|
||||
}
|
||||
}
|
||||
}, {immediate: true})
|
||||
```
|
||||
|
||||
### `EventManager.removeFromFilterList`
|
||||
|
||||
- 来源:`packages/demo/src/components/Toolbar.vue`
|
||||
|
||||
```ts
|
||||
viewer.events.addToFilterList(sampleObject)
|
||||
} else {
|
||||
// 透视选择关闭时,从过滤列表中移除(可被选中)
|
||||
viewer.events.removeFromFilterList(sampleObject)
|
||||
}
|
||||
}
|
||||
}, {immediate: true})
|
||||
```
|
||||
|
||||
### `EventManager.enableBoxSelection`
|
||||
|
||||
- 来源:`packages/demo/src/components/Toolbar.vue`
|
||||
|
||||
```ts
|
||||
if (eventManager.enableBoxSelection && eventManager.disableBoxSelection) {
|
||||
// 启用框选
|
||||
eventManager.enableBoxSelection()
|
||||
// 添加事件监听器
|
||||
eventManager.on(EventManagerEvents.BOX_SELECTION_MOVE, handleBoxSelectionMove)
|
||||
eventManager.on(EventManagerEvents.BOX_SELECTION_COMPLETE, handleBoxSelectionComplete)
|
||||
```
|
||||
@@ -0,0 +1,133 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# IconManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/IconManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/IconManager.md`
|
||||
|
||||
## 类:`IconManager`
|
||||
|
||||
- 作用:图标管理类 - 通过精灵图(Sprite)添加和删除图标
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new IconManager(scene: THREE.Scene)`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `THREE.Scene` | 是 | Three.js场景实例 |
|
||||
|
||||
- 出参:`IconManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `public` | `THREE.Scene` | 用于保存 `scene` 对应的数据。 |
|
||||
| `icons` | `public` | `Map<string, THREE.Sprite>` | 用于保存 `icons` 的映射关系。 |
|
||||
| `textureLoader` | `public` | `THREE.TextureLoader` | 用于保存 `textureLoader` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `addIcon(iconOrId: Icon | string, textureUrl?: string, position?: THREE.Vector3, size: number = 1): THREE.Sprite<THREE.Object3DEventMap>`
|
||||
|
||||
- 作用:添加图标
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `iconOrId` | `Icon \| string` | 是 | 图标实例或图标唯一标识 |
|
||||
| `textureUrl` | `string` | 否 | 精灵图纹理URL(当第一个参数是ID时使用) |
|
||||
| `position` | `THREE.Vector3` | 否 | 图标位置(当第一个参数是ID时使用) |
|
||||
| `size` | `number` | 否 | 图标大小(当第一个参数是ID时使用) |
|
||||
|
||||
- 出参:`THREE.Sprite<THREE.Object3DEventMap>`
|
||||
- 返回说明:添加的精灵图实例
|
||||
|
||||
#### `removeIcon(id: string): boolean`
|
||||
|
||||
- 作用:删除图标
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 图标唯一标识 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否删除成功
|
||||
|
||||
#### `getIcon(id: string): THREE.Sprite<THREE.Object3DEventMap> | undefined`
|
||||
|
||||
- 作用:获取图标
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 图标唯一标识 |
|
||||
|
||||
- 出参:`THREE.Sprite<THREE.Object3DEventMap> \| undefined`
|
||||
- 返回说明:精灵图实例或undefined
|
||||
|
||||
#### `getAllIcons(): Map<string, THREE.Sprite<THREE.Object3DEventMap>>`
|
||||
|
||||
- 作用:获取所有图标
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Map<string, THREE.Sprite<THREE.Object3DEventMap>>`
|
||||
- 返回说明:图标ID和精灵图实例的映射
|
||||
|
||||
#### `updateIconPosition(id: string, position: THREE.Vector3): boolean`
|
||||
|
||||
- 作用:更新图标位置
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 图标唯一标识 |
|
||||
| `position` | `THREE.Vector3` | 是 | 新位置 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否更新成功
|
||||
|
||||
#### `updateIconSize(id: string, size: number): boolean`
|
||||
|
||||
- 作用:更新图标大小
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 图标唯一标识 |
|
||||
| `size` | `number` | 是 | 新大小 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否更新成功
|
||||
|
||||
#### `clearAllIcons(): void`
|
||||
|
||||
- 作用:清除所有图标
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `IconManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `IconManager` 的公开方法调用。
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# PanelManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/PanelManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/PanelManager.md`
|
||||
|
||||
## 接口:`IPanelManagerOptions`
|
||||
|
||||
- 作用:面板管理器配置选项
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `size` | `number` | 否 | 面板大小 |
|
||||
| `cubeSize` | `number` | 否 | 小正方体大小 |
|
||||
| `cubeGap` | `number` | 否 | 小正方体间距 |
|
||||
| `panelOffset` | `number` | 否 | 面板位置偏移 |
|
||||
| `initialData` | `{ [face: string]: ICubeData[][]; }` | 否 | 初始数据 |
|
||||
|
||||
## 类:`PanelManager`
|
||||
|
||||
- 作用:面板管理器 管理六个面的立方体面板
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new PanelManager(options: IPanelManagerOptions = {})`
|
||||
|
||||
- 作用:创建面板管理器
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `IPanelManagerOptions` | 否 | - 配置选项 |
|
||||
|
||||
- 出参:`PanelManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `group` | `public` | `THREE.Group` | 主组对象 |
|
||||
| `panels` | `public` | `Map<string, CubePanel>` | 面板映射 |
|
||||
| `options` | `public` | `Required<IPanelManagerOptions>` | 配置选项 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `initPanels(): void`
|
||||
|
||||
- 作用:初始化六个面
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getPanel(name: string): CubePanel | undefined`
|
||||
|
||||
- 作用:获取指定面板
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | - 面板名称 |
|
||||
|
||||
- 出参:`CubePanel \| undefined`
|
||||
- 返回说明:面板对象
|
||||
|
||||
#### `setPanelData(name: string, data: ICubeData[][]): void`
|
||||
|
||||
- 作用:设置指定面板的数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | - 面板名称 |
|
||||
| `data` | `ICubeData[][]` | 是 | - 面板数据 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setAllPanelsData(data: { [face: string]: ICubeData[][]; }): void`
|
||||
|
||||
- 作用:批量设置所有面板数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `{ [face: string]: ICubeData[][]; }` | 是 | - 所有面板数据 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁面板管理器
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `PanelManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `PanelManager` 的公开方法调用。
|
||||
@@ -0,0 +1,396 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/ParametricManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/ParametricManager.md`
|
||||
|
||||
## 类:`ParametricManager`
|
||||
|
||||
- 作用:参数化对象管理器 管理所有参数化几何体实例,提供统一的查找和管理接口
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `boxes` | `public` | `ParametricBox[]` | 所有 Box 实例 |
|
||||
| `cylinders` | `public` | `ParametricCylinder[]` | 所有 Cylinder 实例 |
|
||||
| `spheres` | `public` | `ParametricSphere[]` | 所有 Sphere 实例 |
|
||||
| `arches` | `public` | `ParametricArch[]` | 所有 Arch 实例 |
|
||||
| `pipes` | `public` | `ParametricPipe[]` | 所有 Pipe 实例 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `addBox(box: ParametricBox): void`
|
||||
|
||||
- 作用:添加 Box 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `box` | `ParametricBox` | 是 | 参数 `box`,类型为 `ParametricBox`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeBox(box: ParametricBox): void`
|
||||
|
||||
- 作用:移除 Box 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `box` | `ParametricBox` | 是 | 参数 `box`,类型为 `ParametricBox`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addCylinder(cylinder: ParametricCylinder): void`
|
||||
|
||||
- 作用:添加 Cylinder 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `cylinder` | `ParametricCylinder` | 是 | 参数 `cylinder`,类型为 `ParametricCylinder`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeCylinder(cylinder: ParametricCylinder): void`
|
||||
|
||||
- 作用:移除 Cylinder 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `cylinder` | `ParametricCylinder` | 是 | 参数 `cylinder`,类型为 `ParametricCylinder`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addSphere(sphere: ParametricSphere): void`
|
||||
|
||||
- 作用:添加 Sphere 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `sphere` | `ParametricSphere` | 是 | 参数 `sphere`,类型为 `ParametricSphere`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeSphere(sphere: ParametricSphere): void`
|
||||
|
||||
- 作用:移除 Sphere 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `sphere` | `ParametricSphere` | 是 | 参数 `sphere`,类型为 `ParametricSphere`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addArch(arch: ParametricArch): void`
|
||||
|
||||
- 作用:添加 Arch 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `arch` | `ParametricArch` | 是 | 参数 `arch`,类型为 `ParametricArch`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeArch(arch: ParametricArch): void`
|
||||
|
||||
- 作用:移除 Arch 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `arch` | `ParametricArch` | 是 | 参数 `arch`,类型为 `ParametricArch`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addPipe(pipe: ParametricPipe): void`
|
||||
|
||||
- 作用:添加 Pipe 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `pipe` | `ParametricPipe` | 是 | 参数 `pipe`,类型为 `ParametricPipe`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removePipe(pipe: ParametricPipe): void`
|
||||
|
||||
- 作用:移除 Pipe 实例
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `pipe` | `ParametricPipe` | 是 | 参数 `pipe`,类型为 `ParametricPipe`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `findPipe(predicate: (pipe: ParametricPipe) => boolean): ParametricPipe | null`
|
||||
|
||||
- 作用:查找第一个符合条件的 Pipe
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(pipe: ParametricPipe) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricPipe \| null`
|
||||
- 返回说明:找到的 Pipe 实例或 null
|
||||
|
||||
#### `findAllPipes(predicate: (pipe: ParametricPipe) => boolean): ParametricPipe[]`
|
||||
|
||||
- 作用:查找所有符合条件的 Pipe
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(pipe: ParametricPipe) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricPipe[]`
|
||||
- 返回说明:符合条件的 Pipe 实例数组
|
||||
|
||||
#### `findPipeByMetadata(key: string, value: any): ParametricPipe | null`
|
||||
|
||||
- 作用:根据 metadata 查找 Pipe
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `key` | `string` | 是 | - metadata 的键 |
|
||||
| `value` | `any` | 是 | - metadata 的值 |
|
||||
|
||||
- 出参:`ParametricPipe \| null`
|
||||
- 返回说明:找到的 Pipe 实例或 null
|
||||
|
||||
#### `findAllPipesByMetadata(key: string, value: any): ParametricPipe[]`
|
||||
|
||||
- 作用:根据 metadata 查找所有 Pipe
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `key` | `string` | 是 | - metadata 的键 |
|
||||
| `value` | `any` | 是 | - metadata 的值 |
|
||||
|
||||
- 出参:`ParametricPipe[]`
|
||||
- 返回说明:符合条件的 Pipe 实例数组
|
||||
|
||||
#### `findPipeByName(name: string): ParametricPipe | null`
|
||||
|
||||
- 作用:根据名称查找 Pipe
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | - mesh 的名称 |
|
||||
|
||||
- 出参:`ParametricPipe \| null`
|
||||
- 返回说明:找到的 Pipe 实例或 null
|
||||
|
||||
#### `findBox(predicate: (box: ParametricBox) => boolean): ParametricBox | null`
|
||||
|
||||
- 作用:查找第一个符合条件的 Box
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(box: ParametricBox) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricBox \| null`
|
||||
- 返回说明:找到的 Box 实例或 null
|
||||
|
||||
#### `findAllBoxes(predicate: (box: ParametricBox) => boolean): ParametricBox[]`
|
||||
|
||||
- 作用:查找所有符合条件的 Box
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(box: ParametricBox) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricBox[]`
|
||||
- 返回说明:符合条件的 Box 实例数组
|
||||
|
||||
#### `findCylinder(predicate: (cylinder: ParametricCylinder) => boolean): ParametricCylinder | null`
|
||||
|
||||
- 作用:查找第一个符合条件的 Cylinder
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(cylinder: ParametricCylinder) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricCylinder \| null`
|
||||
- 返回说明:找到的 Cylinder 实例或 null
|
||||
|
||||
#### `findAllCylinders(predicate: (cylinder: ParametricCylinder) => boolean): ParametricCylinder[]`
|
||||
|
||||
- 作用:查找所有符合条件的 Cylinder
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(cylinder: ParametricCylinder) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricCylinder[]`
|
||||
- 返回说明:符合条件的 Cylinder 实例数组
|
||||
|
||||
#### `findSphere(predicate: (sphere: ParametricSphere) => boolean): ParametricSphere | null`
|
||||
|
||||
- 作用:查找第一个符合条件的 Sphere
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(sphere: ParametricSphere) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricSphere \| null`
|
||||
- 返回说明:找到的 Sphere 实例或 null
|
||||
|
||||
#### `findAllSpheres(predicate: (sphere: ParametricSphere) => boolean): ParametricSphere[]`
|
||||
|
||||
- 作用:查找所有符合条件的 Sphere
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(sphere: ParametricSphere) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricSphere[]`
|
||||
- 返回说明:符合条件的 Sphere 实例数组
|
||||
|
||||
#### `findArch(predicate: (arch: ParametricArch) => boolean): ParametricArch | null`
|
||||
|
||||
- 作用:查找第一个符合条件的 Arch
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(arch: ParametricArch) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricArch \| null`
|
||||
- 返回说明:找到的 Arch 实例或 null
|
||||
|
||||
#### `findAllArches(predicate: (arch: ParametricArch) => boolean): ParametricArch[]`
|
||||
|
||||
- 作用:查找所有符合条件的 Arch
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `predicate` | `(arch: ParametricArch) => boolean` | 是 | - 过滤条件函数 |
|
||||
|
||||
- 出参:`ParametricArch[]`
|
||||
- 返回说明:符合条件的 Arch 实例数组
|
||||
|
||||
#### `clearBoxes(): void`
|
||||
|
||||
- 作用:清空所有 Box 实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearCylinders(): void`
|
||||
|
||||
- 作用:清空所有 Cylinder 实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearSpheres(): void`
|
||||
|
||||
- 作用:清空所有 Sphere 实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearArches(): void`
|
||||
|
||||
- 作用:清空所有 Arch 实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearPipes(): void`
|
||||
|
||||
- 作用:清空所有 Pipe 实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearAll(): void`
|
||||
|
||||
- 作用:清空所有参数化对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getTotalCount(): number`
|
||||
|
||||
- 作用:获取所有参数化对象的总数
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:返回数值结果。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricManager` 的公开方法调用。
|
||||
@@ -0,0 +1,372 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# PipelineManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/PipelineManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/PipelineManager.md`
|
||||
|
||||
## 类:`PipelineManager`
|
||||
|
||||
- 作用:管线管理器 用于管理渲染管线效果,如描边、Bloom 等
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new PipelineManager(viewer: Viewer)`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | - Viewer 实例 |
|
||||
|
||||
- 出参:`PipelineManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `renderer` | `public` | `THREE.WebGPURenderer` | 用于保存 `renderer` 对应的数据。 |
|
||||
| `scene` | `public` | `THREE.Scene` | 用于保存 `scene` 对应的数据。 |
|
||||
| `sceneHelpers` | `public` | `THREE.Scene` | 用于保存 `sceneHelpers` 对应的数据。 |
|
||||
| `outlinePass` | `public` | `OutlinePass` | 用于保存 `outlinePass` 对应的数据。 |
|
||||
| `bloomPass` | `public` | `BloomPass` | 用于保存 `bloomPass` 对应的数据。 |
|
||||
| `enableOutline` | `public` | `boolean` | 用于标记 `enableOutline` 的启用状态。 |
|
||||
| `enableBloom` | `public` | `boolean` | 用于标记 `enableBloom` 的启用状态。 |
|
||||
|
||||
### 访问器
|
||||
|
||||
#### `get renderPipeline(): THREE.RenderPipeline | null`
|
||||
|
||||
- 作用:获取当前激活的渲染管线
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.RenderPipeline \| null`
|
||||
- 返回说明:返回 `THREE.RenderPipeline | null`。
|
||||
|
||||
### 方法
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:初始化管线管理器
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateCamera(): void`
|
||||
|
||||
- 作用:更新相机引用 当相机类型切换时调用
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateRenderPipeline(): void`
|
||||
|
||||
- 作用:更新渲染管道
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `render(): void`
|
||||
|
||||
- 作用:渲染场景
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addSelectedObject(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:添加要描边的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要添加的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeSelectedObject(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:移除要描边的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要移除的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearSelectedObjects(): void`
|
||||
|
||||
- 作用:清空所有要描边的对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setEdgeStrength(value: number): void`
|
||||
|
||||
- 作用:设置描边强度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 描边强度值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setEdgeGlow(value: number): void`
|
||||
|
||||
- 作用:设置描边 glow 效果
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - glow 效果值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setEdgeThickness(value: number): void`
|
||||
|
||||
- 作用:设置描边厚度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 描边厚度值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setPulsePeriod(value: number): void`
|
||||
|
||||
- 作用:设置描边脉冲周期
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 脉冲周期值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setVisibleEdgeColor(color: THREE.Color): void`
|
||||
|
||||
- 作用:设置可见边的颜色
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `THREE.Color` | 是 | - 颜色值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setHiddenEdgeColor(color: THREE.Color): void`
|
||||
|
||||
- 作用:设置隐藏边的颜色
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `THREE.Color` | 是 | - 颜色值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setBloomThreshold(value: number): void`
|
||||
|
||||
- 作用:设置 Bloom 阈值
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 阈值,范围 0.0 到 1.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setBloomStrength(value: number): void`
|
||||
|
||||
- 作用:设置 Bloom 强度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 强度,范围 0.0 到 3.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setBloomRadius(value: number): void`
|
||||
|
||||
- 作用:设置 Bloom 半径
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 半径,范围 0.0 到 1.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setOutlineEnabled(enabled: boolean): void`
|
||||
|
||||
- 作用:启用或禁用描边效果
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `enabled` | `boolean` | 是 | - 是否启用 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setBloomEnabled(enabled: boolean): void`
|
||||
|
||||
- 作用:启用或禁用 Bloom 效果
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `enabled` | `boolean` | 是 | - 是否启用 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getSelectedObjects(): THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
|
||||
- 作用:获取当前选中的对象列表
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
- 返回说明:选中的对象列表
|
||||
|
||||
#### `isObjectInOutlineList(object: THREE.Object3D): boolean`
|
||||
|
||||
- 作用:检查对象是否在描边列表中
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要检查的对象 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否在描边列表中
|
||||
|
||||
#### `addHighlightedObject(object: THREE.Object3D, highlightColor: THREE.Color = new THREE.Color(0, 1, 0)): void`
|
||||
|
||||
- 作用:添加要高亮的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要高亮的对象 |
|
||||
| `highlightColor` | `THREE.Color` | 否 | - 高亮颜色,默认为绿色 (0, 1, 0) |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeHighlightedObject(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:移除要高亮的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要移除的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearHighlightedObjects(): void`
|
||||
|
||||
- 作用:清空所有要高亮的对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `isObjectInBloomList(object: THREE.Object3D): boolean`
|
||||
|
||||
- 作用:检查对象是否在高亮列表中
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要检查的对象 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否在高亮列表中
|
||||
|
||||
#### `getOutlinePass(): OutlinePass`
|
||||
|
||||
- 作用:获取描边通道实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`OutlinePass`
|
||||
- 返回说明:描边通道实例
|
||||
|
||||
#### `getBloomPass(): BloomPass`
|
||||
|
||||
- 作用:获取 Bloom 通道实例
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`BloomPass`
|
||||
- 返回说明:Bloom 通道实例
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁管线管理器
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `PipelineManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `PipelineManager` 的公开方法调用。
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# RangeCullingManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/RangeCullingManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/RangeCullingManager.md`
|
||||
|
||||
## 类:`RangeCullingManager`
|
||||
|
||||
- 作用:范围剔除管理器
|
||||
- 继承/实现:`extends THREE.ClippingGroup`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new RangeCullingManager(viewer: Viewer)`
|
||||
|
||||
- 作用:创建 RangeCullingManager 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
|
||||
- 出参:`RangeCullingManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `public` | `Viewer` | 用于保存 `viewer` 对应的数据。 |
|
||||
| `name` | `public` | `string` | 名称。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `init(mesh: THREE.Mesh): void`
|
||||
|
||||
- 作用:执行 init 初始化逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | 目标网格对象。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `generateClippingPlanesFromMesh(mesh: THREE.Mesh): void`
|
||||
|
||||
- 作用:根据普通 mesh 的包围盒生成 6 个剔除平面
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | 要计算包围盒的 mesh |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `RangeCullingManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `RangeCullingManager` 的公开方法调用。
|
||||
@@ -0,0 +1,206 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ResourceManager
|
||||
|
||||
- 源文件:`packages/sdk/src/manager/ResourceManager.ts`
|
||||
- 文档位置:`packages/docs/api/manager/ResourceManager.md`
|
||||
|
||||
## 枚举:`ResourceType`
|
||||
|
||||
- 作用:资源类型
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `TEXTURE` | `"texture"` | 纹理 |
|
||||
| `MATERIAL` | `"material"` | 材质 |
|
||||
| `GEOMETRY` | `"geometry"` | 几何体 |
|
||||
| `MODEL` | `"model"` | 模型 |
|
||||
| `RAW_DATA` | `"raw_data"` | 原始数据 |
|
||||
|
||||
## 接口:`ILoadProgress`
|
||||
|
||||
- 作用:资源加载进度信息
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `loaded` | `number` | 是 | 已加载的字节数 |
|
||||
| `total` | `number` | 是 | 总字节数 |
|
||||
| `progress` | `number` | 是 | 加载进度百分比 (0-100) |
|
||||
|
||||
## 类:`ResourceManager`
|
||||
|
||||
- 作用:资源管理器 负责加载、缓存和管理三维资源
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ResourceManager()`
|
||||
|
||||
- 作用:创建 ResourceManager 实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`ResourceManager`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `cache` | `public` | `Map<string, unknown>` | 用于保存 `cache` 的映射关系。 |
|
||||
| `textureLoader` | `public` | `THREE.TextureLoader` | 用于保存 `textureLoader` 对应的数据。 |
|
||||
| `fbxLoader` | `public` | `FBXLoader` | 用于保存 `fbxLoader` 对应的数据。 |
|
||||
| `gltfLoader` | `public` | `GLTFLoader` | 用于保存 `gltfLoader` 对应的数据。 |
|
||||
| `fileLoader` | `public` | `THREE.FileLoader` | 用于保存 `fileLoader` 对应的数据。 |
|
||||
| `loadingManager` | `public` | `THREE.LoadingManager` | 用于统一管理 `loadingManager` 相关能力。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createGLTFLoader(manager?: THREE.LoadingManager): GLTFLoader`
|
||||
|
||||
- 作用:创建 GLTF 加载器
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `manager` | `THREE.LoadingManager` | 否 | - 加载管理器 |
|
||||
|
||||
- 出参:`GLTFLoader`
|
||||
- 返回说明:GLTF 加载器实例
|
||||
|
||||
#### `loadTexture(url: string, onProgress?: (progress: ILoadProgress) => void): Promise<THREE.Texture<unknown, THREE.TextureEventMap>>`
|
||||
|
||||
- 作用:加载纹理
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `url` | `string` | 是 | - 纹理文件路径 |
|
||||
| `onProgress` | `(progress: ILoadProgress) => void` | 否 | - 加载进度回调 |
|
||||
|
||||
- 出参:`Promise<THREE.Texture<unknown, THREE.TextureEventMap>>`
|
||||
- 返回说明:纹理对象
|
||||
|
||||
#### `loadFBX(url: string, onProgress?: (progress: ILoadProgress) => void): Promise<THREE.Group<THREE.Object3DEventMap>>`
|
||||
|
||||
- 作用:加载 FBX 模型
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `url` | `string` | 是 | - FBX 文件路径 |
|
||||
| `onProgress` | `(progress: ILoadProgress) => void` | 否 | - 加载进度回调 |
|
||||
|
||||
- 出参:`Promise<THREE.Group<THREE.Object3DEventMap>>`
|
||||
- 返回说明:FBX 模型对象 (Group)
|
||||
|
||||
#### `loadGLTF(url: string, onProgress?: (progress: ILoadProgress) => void): Promise<THREE.Object3D<THREE.Object3DEventMap>>`
|
||||
|
||||
- 作用:加载 GLTF 模型
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `url` | `string` | 是 | - GLTF 文件路径 |
|
||||
| `onProgress` | `(progress: ILoadProgress) => void` | 否 | - 加载进度回调 |
|
||||
|
||||
- 出参:`Promise<THREE.Object3D<THREE.Object3DEventMap>>`
|
||||
- 返回说明:GLTF 模型对象
|
||||
|
||||
#### `loadRawData(url: string, onProgress?: (progress: ILoadProgress) => void): Promise<ArrayBuffer>`
|
||||
|
||||
- 作用:加载原始二进制数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `url` | `string` | 是 | - 原始数据文件路径 |
|
||||
| `onProgress` | `(progress: ILoadProgress) => void` | 否 | - 加载进度回调 |
|
||||
|
||||
- 出参:`Promise<ArrayBuffer>`
|
||||
- 返回说明:ArrayBuffer 数据
|
||||
|
||||
#### `get<T = unknown>(type: ResourceType, key: string): T | undefined`
|
||||
|
||||
- 作用:从缓存中获取资源
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `type` | `ResourceType` | 是 | - 资源类型 |
|
||||
| `key` | `string` | 是 | - 资源键名 |
|
||||
|
||||
- 出参:`T \| undefined`
|
||||
- 返回说明:资源对象,如果不存在则返回 undefined
|
||||
|
||||
#### `has(type: ResourceType, key: string): boolean`
|
||||
|
||||
- 作用:检查资源是否存在于缓存中
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `type` | `ResourceType` | 是 | - 资源类型 |
|
||||
| `key` | `string` | 是 | - 资源键名 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否存在
|
||||
|
||||
#### `remove(type: ResourceType, key: string): boolean`
|
||||
|
||||
- 作用:从缓存中移除资源
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `type` | `ResourceType` | 是 | - 资源类型 |
|
||||
| `key` | `string` | 是 | - 资源键名 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否成功移除
|
||||
|
||||
#### `clear(): void`
|
||||
|
||||
- 作用:清空所有缓存
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getCacheSize(): number`
|
||||
|
||||
- 作用:获取缓存大小
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:缓存中的资源数量
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源管理器
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ResourceManager` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ResourceManager` 的公开方法调用。
|
||||
@@ -0,0 +1,305 @@
|
||||
---
|
||||
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`
|
||||
|
||||
@@ -0,0 +1,278 @@
|
||||
---
|
||||
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`
|
||||
|
||||
```ts
|
||||
// 派发树更新
|
||||
bus.triggerSceneTreeUpdate()
|
||||
|
||||
// 选择对象
|
||||
viewer!.selection!.setSelectedObject(box);
|
||||
},
|
||||
exportSceneJSON: () => {
|
||||
viewer.downloadSceneJSON();
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### `SelectionManager.selectObjectByUuid`
|
||||
|
||||
- 来源:`packages/demo/src/components/SceneTree.vue`
|
||||
|
||||
```ts
|
||||
if (bus.viewer && bus.viewer.selection) {
|
||||
bus.viewer.selection.selectObjectByUuid(option.uuid);
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### `SelectionManager.setTransformMode`
|
||||
|
||||
- 来源:`packages/demo/src/hooks/useDebug.ts`
|
||||
|
||||
```ts
|
||||
// 控制模式
|
||||
controlFolder.add(controlParams, 'controlMode', ['translate', 'rotate', 'scale']).name('控制模式')
|
||||
.onChange((value) => {
|
||||
viewer.selection.setTransformMode(value as 'translate' | 'rotate' | 'scale');
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# MaterialFactory
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/MaterialFactory.ts`
|
||||
- 文档位置:`packages/docs/api/materials/MaterialFactory.md`
|
||||
|
||||
## 类:`MaterialFactory`
|
||||
|
||||
- 作用:岩石材质基类 提供纹理加载和材质创建的通用功能
|
||||
|
||||
### 方法
|
||||
|
||||
#### `configureTexture(texture: THREE.Texture): void`
|
||||
|
||||
- 作用:配置纹理属性
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `texture` | `THREE.Texture` | 是 | - 要配置的纹理 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `MaterialFactory` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `MaterialFactory` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock1Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock1Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock1Material.md`
|
||||
|
||||
## 类:`Rock1Material`
|
||||
|
||||
- 作用:岩石材质类(rock1)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock1)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock1Material`
|
||||
|
||||
- 作用:创建岩石材质(rock1)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock1Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock1Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock1Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock2Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock2Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock2Material.md`
|
||||
|
||||
## 类:`Rock2Material`
|
||||
|
||||
- 作用:岩石材质类(rock2)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock2)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock2Material`
|
||||
|
||||
- 作用:创建岩石材质(rock2)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock2Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock2Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock2Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock3Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock3Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock3Material.md`
|
||||
|
||||
## 类:`Rock3Material`
|
||||
|
||||
- 作用:岩石材质类(rock3)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock3)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock3Material`
|
||||
|
||||
- 作用:创建岩石材质(rock3)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock3Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock3Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock3Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock4Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock4Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock4Material.md`
|
||||
|
||||
## 类:`Rock4Material`
|
||||
|
||||
- 作用:岩石材质类(rock4)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock4)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock4Material`
|
||||
|
||||
- 作用:创建岩石材质(rock4)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock4Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock4Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock4Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock5Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock5Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock5Material.md`
|
||||
|
||||
## 类:`Rock5Material`
|
||||
|
||||
- 作用:岩石材质类(rock5)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock5)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock5Material`
|
||||
|
||||
- 作用:创建岩石材质(rock5)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock5Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock5Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock5Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock6Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock6Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock6Material.md`
|
||||
|
||||
## 类:`Rock6Material`
|
||||
|
||||
- 作用:岩石材质类(rock6)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock6)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock6Material`
|
||||
|
||||
- 作用:创建岩石材质(rock6)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock6Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock6Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock6Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock7Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock7Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock7Material.md`
|
||||
|
||||
## 类:`Rock7Material`
|
||||
|
||||
- 作用:岩石材质类(rock7)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock6)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock7Material`
|
||||
|
||||
- 作用:创建岩石材质(rock7)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock7Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock7Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock7Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Rock8Material
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/Rock8Material.ts`
|
||||
- 文档位置:`packages/docs/api/materials/Rock8Material.md`
|
||||
|
||||
## 类:`Rock8Material`
|
||||
|
||||
- 作用:岩石材质类(rock8)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock6)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRock8Material`
|
||||
|
||||
- 作用:创建岩石材质(rock8)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRock8Material(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock8Material` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Rock8Material` 的公开方法调用。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# RockMaterial
|
||||
|
||||
- 源文件:`packages/sdk/src/materials/RockMaterial.ts`
|
||||
- 文档位置:`packages/docs/api/materials/RockMaterial.md`
|
||||
|
||||
## 类:`RockMaterial`
|
||||
|
||||
- 作用:岩石材质类(rock)
|
||||
- 继承/实现:`extends MaterialFactory`
|
||||
|
||||
### 方法
|
||||
|
||||
#### `create(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 函数:`createRockMaterial`
|
||||
|
||||
- 作用:创建岩石材质(rock)的便捷函数
|
||||
|
||||
### 签名
|
||||
|
||||
```ts
|
||||
function createRockMaterial(options: Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]> = {}, useDisplacement: boolean = true): THREE.MeshStandardMaterial
|
||||
```
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ConstructorParameters<typeof THREE.MeshStandardMaterial>[0]>` | 否 | - MeshStandardMaterial参数选项,可覆盖默认设置 |
|
||||
| `useDisplacement` | `boolean` | 否 | - 是否使用位移纹理设置,默认为true |
|
||||
|
||||
- 出参:`THREE.MeshStandardMaterial`
|
||||
- 返回说明:THREE.MeshStandardMaterial - 带有岩石纹理的材质
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `RockMaterial` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `RockMaterial` 的公开方法调用。
|
||||
@@ -0,0 +1,74 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ClippingHelper
|
||||
|
||||
- 源文件:`packages/sdk/src/mesh/ClippingHelper.ts`
|
||||
- 文档位置:`packages/docs/api/mesh/ClippingHelper.md`
|
||||
|
||||
## 类:`ClippingHelper`
|
||||
|
||||
- 作用:剖切平面辅助对象,用于可视化 {@link THREE.Plane} 实例。 ```js const plane = new THREE.Plane( new THREE.Vector3( 1, 1, 0.2 ), 3 ); const helper = new ClippingHelper( plane, 1, 1, 0xffff00 ); scene.add( helper ); ```
|
||||
- 继承/实现:`extends THREE.Line`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ClippingHelper(plane: THREE.Plane, width: number = 1, height: number = 1, hex: number | THREE.Color | string = 0xffff00)`
|
||||
|
||||
- 作用:构造一个新的剖切平面辅助对象。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `plane` | `THREE.Plane` | 是 | - 要可视化的平面。 |
|
||||
| `width` | `number` | 否 | - 辅助对象的宽度。 |
|
||||
| `height` | `number` | 否 | - 辅助对象的高度。 |
|
||||
| `hex` | `number \| THREE.Color \| string` | 否 | - 辅助对象的颜色。 |
|
||||
|
||||
- 出参:`ClippingHelper`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `plane` | `public` | `THREE.Plane` | 要可视化的平面。 |
|
||||
| `width` | `public` | `number` | 辅助对象的宽度。 |
|
||||
| `height` | `public` | `number` | 辅助对象的高度。 |
|
||||
| `topRotateHandle` | `public` | `THREE.Sprite \| null` | 上方旋转手柄 Sprite(绕局部 X 轴旋转) |
|
||||
| `rightRotateHandle` | `public` | `THREE.Sprite \| null` | 右方旋转手柄 Sprite(绕局部 Y 轴旋转) |
|
||||
| `textureBasePath` | `public` | `string` | 纹理基础路径(由外部注入,通常为 Vite 的 base 路径) |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `showRotateHandles(show: boolean): void`
|
||||
|
||||
- 作用:显示或隐藏旋转控制手柄。 首次调用 show=true 时会懒加载纹理并创建 Sprite。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `show` | `boolean` | 是 | 是否显示 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放辅助对象占用的资源。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ClippingHelper` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ClippingHelper` 的公开方法调用。
|
||||
@@ -0,0 +1,411 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# CubePanel
|
||||
|
||||
- 源文件:`packages/sdk/src/mesh/CubePanel.ts`
|
||||
- 文档位置:`packages/docs/api/mesh/CubePanel.md`
|
||||
|
||||
## 枚举:`LabelPosition`
|
||||
|
||||
- 作用:标签位置枚举
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `TOP` | `'top'` | 枚举值 `TOP`。 |
|
||||
| `BOTTOM` | `'bottom'` | 枚举值 `BOTTOM`。 |
|
||||
| `LEFT` | `'left'` | 枚举值 `LEFT`。 |
|
||||
| `RIGHT` | `'right'` | 枚举值 `RIGHT`。 |
|
||||
|
||||
## 接口:`ISmallTextConfig`
|
||||
|
||||
- 作用:小字配置接口
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `text` | `string` | 是 | 文字内容 |
|
||||
| `cubeIndex` | `number` | 是 | 目标正方体索引(0-4),-1 表示全部 |
|
||||
| `rotation` | `number` | 否 | 旋转角度(度) |
|
||||
| `fontSize` | `number` | 否 | 字体大小(像素) |
|
||||
| `color` | `string` | 否 | 字体颜色 |
|
||||
| `fontWeight` | `string` | 否 | 字体权重 |
|
||||
| `offset` | `number` | 否 | 与面板边缘的距离(3D单位) |
|
||||
|
||||
## 接口:`ICubeData`
|
||||
|
||||
- 作用:小正方体数据接口
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `THREE.Color` | 是 | 颜色 |
|
||||
| `text` | `string` | 是 | 文字 |
|
||||
|
||||
## 接口:`ISinglePanelOptions`
|
||||
|
||||
- 作用:单个面板配置选项
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `string` | 是 | 面板名称 |
|
||||
| `size` | `number` | 否 | 面板大小,three 的单位 |
|
||||
| `cubeSize` | `number` | 否 | 小正方体大小 |
|
||||
| `cubeGap` | `number` | 否 | 小正方体间距 |
|
||||
| `position` | `THREE.Vector3` | 否 | 面板位置 |
|
||||
| `rotation` | `THREE.Euler` | 否 | 面板旋转 |
|
||||
| `initialData` | `ICubeData[][]` | 否 | 初始数据 |
|
||||
| `titleConfig` | `{ text: string; position: LabelPosition; rotation?: number; fontSize?: number; color?: string; offset?: number; }` | 否 | 标题配置 |
|
||||
| `smallTextConfig` | `{ position: LabelPosition; smallText1?: ISmallTextConfig[]; smallText2?: ISmallTextConfig[]; rotation?: number; }` | 否 | 小字乐配置 |
|
||||
| `visibleColumns` | `number[]` | 否 | 可见列索引数组,只有这些列会显示,其他列显示为白色 |
|
||||
|
||||
## 类:`CubePanel`
|
||||
|
||||
- 作用:单个面板类 表示一个由5*5个小正方体构成的面板
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new CubePanel(options: ISinglePanelOptions)`
|
||||
|
||||
- 作用:创建单个面板
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `ISinglePanelOptions` | 是 | - 配置选项 |
|
||||
|
||||
- 出参:`CubePanel`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `name` | `public` | `string` | 面板名称 |
|
||||
| `group` | `public` | `THREE.Group` | 面板组对象 |
|
||||
| `cubeData` | `public` | `Map<string, ICubeData>` | 小正方体数据映射 |
|
||||
| `panelMesh` | `public` | `THREE.Mesh \| null` | 面板网格 |
|
||||
| `options` | `public` | `Required<ISinglePanelOptions>` | 配置选项 |
|
||||
| `titleObject` | `public` | `THREE.Mesh \| null` | 标题对象 |
|
||||
| `titleConfig` | `public` | `{ text: string; position: LabelPosition; rotation: number; fontSize: number; color: string; offset?: number } \| null` | 标题配置 |
|
||||
| `fontLoader` | `public` | `FontLoader` | 字体加载器 |
|
||||
| `font` | `public` | `any` | 加载的字体 |
|
||||
| `smallTextObjects` | `public` | `THREE.Mesh[]` | 小字对象数组 |
|
||||
| `smallTextPlanes` | `public` | `THREE.Mesh[]` | 小字平面几何体数组 |
|
||||
| `smallTextCanvas` | `public` | `HTMLCanvasElement \| null` | 小字生成的 canvas |
|
||||
| `visibleColumns` | `public` | `Set<number>` | 可见列索引集合 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `getModelSize(targetModel: THREE.Object3D): THREE.Vector3 | null`
|
||||
|
||||
- 作用:静态方法:获取场景中指定名称的模型并计算其包围盒大小
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `targetModel` | `THREE.Object3D` | 是 | 参数 `targetModel`,类型为 `THREE.Object3D`。 |
|
||||
|
||||
- 出参:`THREE.Vector3 \| null`
|
||||
- 返回说明:模型的包围盒大小,如果未找到模型则返回 null
|
||||
|
||||
#### `getModelFaceCenters(targetModel: THREE.Object3D): { [key: string]: THREE.Vector3; } | null`
|
||||
|
||||
- 作用:静态方法:获取场景中指定名称的模型并计算其包围盒六个面的中心点位置
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `targetModel` | `THREE.Object3D` | 是 | 参数 `targetModel`,类型为 `THREE.Object3D`。 |
|
||||
|
||||
- 出参:`{ [key: string]: THREE.Vector3; } \| null`
|
||||
- 返回说明:模型的包围盒六个面的中心点位置,如果未找到模型则返回 null
|
||||
|
||||
#### `createPanel(): void`
|
||||
|
||||
- 作用:创建面板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `initDefaultData(): void`
|
||||
|
||||
- 作用:初始化默认数据
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `generatePanelHTML(): string`
|
||||
|
||||
- 作用:生成面板的 HTML
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`string`
|
||||
- 返回说明:HTML 字符串
|
||||
|
||||
#### `updatePanelTexture(): Promise<void>`
|
||||
|
||||
- 作用:将 HTML 转换为纹理并更新面板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `setCubeData(row: number, col: number, data: ICubeData): void`
|
||||
|
||||
- 作用:设置小正方体数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `row` | `number` | 是 | - 行索引 |
|
||||
| `col` | `number` | 是 | - 列索引 |
|
||||
| `data` | `ICubeData` | 是 | - 小正方体数据 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getCubeData(row: number, col: number): ICubeData | undefined`
|
||||
|
||||
- 作用:获取小正方体数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `row` | `number` | 是 | - 行索引 |
|
||||
| `col` | `number` | 是 | - 列索引 |
|
||||
|
||||
- 出参:`ICubeData \| undefined`
|
||||
- 返回说明:小正方体数据
|
||||
|
||||
#### `setPanelData(data: ICubeData[][]): void`
|
||||
|
||||
- 作用:批量设置面板数据
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `ICubeData[][]` | 是 | - 面板数据 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setTitle(titleConfig: ISinglePanelOptions['titleConfig']): void`
|
||||
|
||||
- 作用:设置面板标题
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `titleConfig` | `ISinglePanelOptions['titleConfig']` | 是 | - 标题配置 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `loadFontAndCreateTitle(): void`
|
||||
|
||||
- 作用:加载字体并创建标题
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createTitleObject(): void`
|
||||
|
||||
- 作用:创建标题对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setSmallText(smallTextConfig: ISinglePanelOptions['smallTextConfig']): Promise<void>`
|
||||
|
||||
- 作用:设置小字
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `smallTextConfig` | `ISinglePanelOptions['smallTextConfig']` | 是 | - 小字配置 |
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `createSmallTextHTML(smallTextConfig: ISinglePanelOptions['smallTextConfig']): Promise<void>`
|
||||
|
||||
- 作用:使用 HTML 实现小字,在一个大的 div 中创建所有小字,然后转为 canvas 到一个新的平面几何体
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `smallTextConfig` | `ISinglePanelOptions['smallTextConfig']` | 是 | - 小字配置 |
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `clearSmallText(): void`
|
||||
|
||||
- 作用:清理小字
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearTitle(): void`
|
||||
|
||||
- 作用:清理标题对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addDebugSpheres(): void`
|
||||
|
||||
- 作用:添加调试小球,在小字和mountGroup的原点添加不同颜色的小球
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearDebugSpheres(): void`
|
||||
|
||||
- 作用:清理调试小球
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁面板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setVisibleColumns(columns: number[]): void`
|
||||
|
||||
- 作用:设置可见列
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `columns` | `number[]` | 是 | - 可见列索引数组 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `toggleColumnVisibility(column: number): void`
|
||||
|
||||
- 作用:切换列的可见性
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `column` | `number` | 是 | - 列索引 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/panels/TunnelScene/LoadSurface.vue`
|
||||
|
||||
```ts
|
||||
text: config.title,
|
||||
position: LabelPosition.TOP,
|
||||
rotation: 0,
|
||||
fontSize: 1,
|
||||
color: '#000000',
|
||||
offset: 1
|
||||
},
|
||||
smallTextConfig: config.smallTextConfig,
|
||||
// ZD 面只显示第2列(索引为2)
|
||||
visibleColumns: key === 'ZD' ? [2] : undefined
|
||||
};
|
||||
|
||||
const panel = new CubePanel(panelOptions);
|
||||
panel.group.visible = false; // 初始隐藏
|
||||
viewer.scene.add(panel.group);
|
||||
panels.set(key, panel);
|
||||
});
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `CubePanel.getModelFaceCenters`
|
||||
|
||||
- 来源:`packages/demo/src/panels/TunnelScene/LoadSurface.vue`
|
||||
|
||||
```ts
|
||||
if (!viewer) return;
|
||||
// 使用 CubePanel 的静态方法获取模型包围盒六个面的中心点位置
|
||||
// const faceCenters = CubePanel.getModelFaceCenters(bus.getRockSample());
|
||||
const faceCenters = {
|
||||
"YF": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 2.5
|
||||
},
|
||||
"BEI": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": -2.5
|
||||
},
|
||||
"ZUO": {
|
||||
"x": -2.5,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"YOU": {
|
||||
"x": 2.5,
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `LabelPosition`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/TunnelScene/LoadSurface.vue`
|
||||
|
||||
### `ISinglePanelOptions`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/TunnelScene/LoadSurface.vue`
|
||||
|
||||
### `CubePanel`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/TunnelScene/LoadSurface.vue`
|
||||
|
||||
@@ -0,0 +1,262 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# FlowLine
|
||||
|
||||
- 源文件:`packages/sdk/src/mesh/FlowLine.ts`
|
||||
- 文档位置:`packages/docs/api/mesh/FlowLine.md`
|
||||
|
||||
## 类:`FlowLine`
|
||||
|
||||
- 作用:FlowLine 类。
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new FlowLine(options: { points?: THREE.Vector3[]; textureUrl?: string | null; radius?: number; radialSegments?: number; cornerRadius?: number; cornerSplit?: number; scrollSpeed?: number; flowDirection?: number; [key: string]: any; } = {})`
|
||||
|
||||
- 作用:创建 FlowLine 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `{ points?: THREE.Vector3[]; textureUrl?: string \| null; radius?: number; radialSegments?: number; cornerRadius?: number; cornerSplit?: number; scrollSpeed?: number; flowDirection?: number; [key: string]: any; }` | 否 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`FlowLine`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `points` | `public` | `THREE.Vector3[]` | 用于保存 `points` 的集合数据。 |
|
||||
| `textureUrl` | `public` | `string \| null` | 用于保存 `textureUrl` 对应的数据。 |
|
||||
| `options` | `public` | `{ radius: number; radialSegments: number; cornerRadius: number; cornerSplit: number; scrollSpeed: number; flowDirection: number; }` | 用于保存 `options` 对应的数据。 |
|
||||
| `pathPointList` | `public` | `PathPointList \| null` | 用于保存 `pathPointList` 对应的数据。 |
|
||||
| `geometry` | `public` | `PathTubeGeometry \| null` | 用于保存 `geometry` 对应的数据。 |
|
||||
| `material` | `public` | `THREE.MeshPhongMaterial \| null` | 材质参数。 |
|
||||
| `mesh` | `public` | `THREE.Mesh \| null` | 用于保存 `mesh` 对应的数据。 |
|
||||
| `texture` | `public` | `THREE.Texture \| null` | 用于保存 `texture` 对应的数据。 |
|
||||
| `playing` | `public` | `boolean` | 用于标记 `playing` 的启用状态。 |
|
||||
| `progress` | `public` | `number` | 用于保存 `progress` 对应的数据。 |
|
||||
| `playSpeed` | `public` | `number` | 用于保存 `playSpeed` 对应的数据。 |
|
||||
| `textureAnimating` | `public` | `boolean` | 用于标记 `textureAnimating` 的启用状态。 |
|
||||
| `textureAnimationSpeed` | `public` | `number` | 用于保存 `textureAnimationSpeed` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:执行 init 初始化逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `loadTexture(url: string): void`
|
||||
|
||||
- 作用:加载 Texture。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `url` | `string` | 是 | 资源地址。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addToScene(scene: THREE.Scene): void`
|
||||
|
||||
- 作用:添加 To Scene。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `THREE.Scene` | 是 | 目标场景实例。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeFromScene(scene: THREE.Scene): void`
|
||||
|
||||
- 作用:移除 From Scene。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `THREE.Scene` | 是 | 目标场景实例。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `startAnimation(): void`
|
||||
|
||||
- 作用:执行 start Animation 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stopAnimation(): void`
|
||||
|
||||
- 作用:执行 stop Animation 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `startTextureAnimation(): void`
|
||||
|
||||
- 作用:开始纹理动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stopTextureAnimation(): void`
|
||||
|
||||
- 作用:停止纹理动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `update(): void`
|
||||
|
||||
- 作用:更新 update。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateTextureAnimation(): void`
|
||||
|
||||
- 作用:更新纹理动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setTextureAnimationSpeed(speed: number): void`
|
||||
|
||||
- 作用:设置纹理动画速度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `speed` | `number` | 是 | 速度系数,1.0 为默认速度 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getTextureAnimationSpeed(): number`
|
||||
|
||||
- 作用:获取纹理动画速度
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:纹理动画速度
|
||||
|
||||
#### `toggleTextureAnimation(): boolean`
|
||||
|
||||
- 作用:切换纹理动画状态
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:切换后的状态
|
||||
|
||||
#### `setFlowDirection(direction: number): void`
|
||||
|
||||
- 作用:设置 Flow Direction。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `direction` | `number` | 是 | 参数 `direction`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setScrollSpeed(speed: number): void`
|
||||
|
||||
- 作用:设置 Scroll Speed。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `speed` | `number` | 是 | 参数 `speed`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setPlaySpeed(speed: number): void`
|
||||
|
||||
- 作用:设置 Play Speed。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `speed` | `number` | 是 | 参数 `speed`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updatePoints(points: THREE.Vector3[]): void`
|
||||
|
||||
- 作用:更新 Points。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `points` | `THREE.Vector3[]` | 是 | 参数 `points`,类型为 `THREE.Vector3[]`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateRadius(radius: number): void`
|
||||
|
||||
- 作用:更新 Radius。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `radius` | `number` | 是 | 半径参数。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getMesh(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap> | null`
|
||||
|
||||
- 作用:获取 Mesh。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap> \| null`
|
||||
- 返回说明:返回 `THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap> | null`。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `FlowLine` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `FlowLine` 的公开方法调用。
|
||||
@@ -0,0 +1,269 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# HtmlPanel
|
||||
|
||||
- 源文件:`packages/sdk/src/mesh/HtmlPanel.ts`
|
||||
- 文档位置:`packages/docs/api/mesh/HtmlPanel.md`
|
||||
|
||||
## 枚举:`CssType`
|
||||
|
||||
- 作用:CSS渲染类型枚举
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `CSS2D` | `'css2d'` | 枚举值 `CSS2D`。 |
|
||||
| `CSS3D` | `'css3d'` | 枚举值 `CSS3D`。 |
|
||||
| `CSS3DSprite` | `'css3dsprite'` | 枚举值 `CSS3DSprite`。 |
|
||||
|
||||
## 类:`HtmlPanel`
|
||||
|
||||
- 作用:HTML面板基础类
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new HtmlPanel(public type: CssType = CssType.CSS3D)`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `type` | `CssType` | 否 | CSS渲染类型 |
|
||||
|
||||
- 出参:`HtmlPanel`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `container` | `public` | `HTMLDivElement` | 用于保存 `container` 对应的数据。 |
|
||||
| `cssObject` | `public` | `THREE.Object3D` | 用于保存 `cssObject` 对应的数据。 |
|
||||
| `isVisible` | `public` | `boolean` | 用于标记 `isVisible` 的启用状态。 |
|
||||
| `position` | `public` | `THREE.Vector3` | 位置数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `getCssObject(): THREE.Object3D<THREE.Object3DEventMap>`
|
||||
|
||||
- 作用:获取CSS对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Object3D<THREE.Object3DEventMap>`
|
||||
- 返回说明:返回 `THREE.Object3D<THREE.Object3DEventMap>`。
|
||||
|
||||
#### `getUniqueId(): string`
|
||||
|
||||
- 作用:获取唯一ID
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`string`
|
||||
- 返回说明:CSS对象的UUID
|
||||
|
||||
#### `show(): void`
|
||||
|
||||
- 作用:显示面板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `hide(): void`
|
||||
|
||||
- 作用:隐藏面板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `toggle(): void`
|
||||
|
||||
- 作用:切换面板可见性
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updatePosition(position: THREE.Vector3): void`
|
||||
|
||||
- 作用:更新面板位置
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `position` | `THREE.Vector3` | 是 | 新位置 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateContent(content: string): void`
|
||||
|
||||
- 作用:更新面板内容
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `content` | `string` | 是 | 新内容 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getVisible(): boolean`
|
||||
|
||||
- 作用:获取弹窗可见性
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:返回布尔结果。
|
||||
|
||||
#### `changeCssType(type: CssType): THREE.Object3D<THREE.Object3DEventMap>`
|
||||
|
||||
- 作用:动态修改CSS类型
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `type` | `CssType` | 是 | 新的CSS渲染类型 |
|
||||
|
||||
- 出参:`THREE.Object3D<THREE.Object3DEventMap>`
|
||||
- 返回说明:新的CSS对象
|
||||
|
||||
#### `getCssType(): CssType`
|
||||
|
||||
- 作用:获取当前CSS类型
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`CssType`
|
||||
- 返回说明:返回 `CssType`。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁面板,清理所有资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createCssObject(): void`
|
||||
|
||||
- 作用:创建CSS对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/components/htmlPanel/DrillingModal.ts`
|
||||
|
||||
```ts
|
||||
/**
|
||||
* 钻进信息面板类
|
||||
*/
|
||||
export class DrillingModal extends HtmlPanel {
|
||||
private drillingData: IDrillingData = {
|
||||
pipeName: '',
|
||||
drillingSpeed: 0,
|
||||
currentDepth: 0,
|
||||
targetDepth: 0,
|
||||
progress: 0,
|
||||
pipeRadius: 0,
|
||||
status: 'stopped'
|
||||
};
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `HtmlPanel.getCssObject`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue`
|
||||
|
||||
```ts
|
||||
if (fillingHtmlPanel) {
|
||||
viewer?.scene.remove(fillingHtmlPanel.getCssObject());
|
||||
fillingHtmlPanel = null;
|
||||
}
|
||||
```
|
||||
|
||||
### `HtmlPanel.getUniqueId`
|
||||
|
||||
- 来源:`packages/demo/src/htmlPanel/GoldMineScene/AirSupplyHtmlPanel.ts`
|
||||
|
||||
```ts
|
||||
/**
|
||||
* 构造函数
|
||||
* @param type CSS渲染类型
|
||||
*/
|
||||
constructor(type: CssType = CssType.CSS2D) {
|
||||
super(type);
|
||||
this.uuid = this.getUniqueId();
|
||||
this.initContent();
|
||||
this.attachDeleteEvent();
|
||||
}
|
||||
```
|
||||
|
||||
### `HtmlPanel.show`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue`
|
||||
|
||||
```ts
|
||||
// 初始化数据
|
||||
fillingHtmlPanel.updateData({
|
||||
progress: fillingStatus.value.progress,
|
||||
currentTime: (Date.now() - fillingStatus.value.startTime) / 1000,
|
||||
endTime: fillingParams.value.endTime,
|
||||
material: fillingParams.value.material,
|
||||
fillingRate: fillingParams.value.fillingRate,
|
||||
pressure: fillingParams.value.pressure,
|
||||
status: fillingStatus.value.isRunning ? 'running' : 'stopped'
|
||||
});
|
||||
|
||||
fillingHtmlPanel.updatePosition(new THREE.Vector3(position.x, position.y + 1, position.z));
|
||||
fillingHtmlPanel.show();
|
||||
viewer?.scene.add(fillingHtmlPanel.getCssObject());
|
||||
};
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `CssType`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/components/htmlPanel/DrillingModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/PrintModelModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/RuptureEventModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/SensorModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/SingleSensorModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/TunnelModal.ts`
|
||||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RockBurstPanel.vue`
|
||||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue`
|
||||
|
||||
### `HtmlPanel`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/components/htmlPanel/DrillingModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/PrintModelModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/RuptureEventModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/SensorModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/SingleSensorModal.ts`
|
||||
- `packages/demo/src/components/htmlPanel/TunnelModal.ts`
|
||||
- `packages/demo/src/htmlPanel/GoldMineScene/AirSupplyHtmlPanel.ts`
|
||||
- `packages/demo/src/htmlPanel/GoldMineScene/DrillingHtmlPanel.ts`
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Icon
|
||||
|
||||
- 源文件:`packages/sdk/src/mesh/Icon.ts`
|
||||
- 文档位置:`packages/docs/api/mesh/Icon.md`
|
||||
|
||||
## 类:`Icon`
|
||||
|
||||
- 作用:图标类 - 表示单个精灵图图标
|
||||
- 继承/实现:`extends THREE.Sprite`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new Icon(id: string, textureUrl: string, size: number = 1)`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `string` | 是 | 图标唯一标识 |
|
||||
| `textureUrl` | `string` | 是 | 精灵图纹理URL |
|
||||
| `size` | `number` | 否 | 图标大小 |
|
||||
|
||||
- 出参:`Icon`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `id` | `public` | `string` | 用于保存 `id` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `getId(): string`
|
||||
|
||||
- 作用:获取图标ID
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`string`
|
||||
- 返回说明:图标唯一标识
|
||||
|
||||
#### `setPosition(position: THREE.Vector3): this`
|
||||
|
||||
- 作用:设置图标位置
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `position` | `THREE.Vector3` | 是 | 新位置 |
|
||||
|
||||
- 出参:`this`
|
||||
- 返回说明:当前图标实例
|
||||
|
||||
#### `setSize(size: number): this`
|
||||
|
||||
- 作用:设置图标大小
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `size` | `number` | 是 | 新大小 |
|
||||
|
||||
- 出参:`this`
|
||||
- 返回说明:当前图标实例
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁图标,清理资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Icon` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Icon` 的公开方法调用。
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# SpritePanel
|
||||
|
||||
- 源文件:`packages/sdk/src/mesh/SpritePanel.ts`
|
||||
- 文档位置:`packages/docs/api/mesh/SpritePanel.md`
|
||||
|
||||
## 接口:`SpritePanelOptions`
|
||||
|
||||
- 作用:SpritePanelOptions 的结构定义。
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `text` | `string` | 是 | 用于保存 `text` 对应的数据。 |
|
||||
| `textColor` | `string` | 否 | 用于保存 `textColor` 对应的数据。 |
|
||||
| `backgroundColor` | `string` | 否 | 用于保存 `backgroundColor` 对应的数据。 |
|
||||
| `borderColor` | `string` | 否 | 用于保存 `borderColor` 对应的数据。 |
|
||||
| `borderWidth` | `number` | 否 | 用于保存 `borderWidth` 对应的数据。 |
|
||||
| `fontSize` | `number` | 否 | 用于保存 `fontSize` 对应的数据。 |
|
||||
| `padding` | `number` | 否 | 用于保存 `padding` 对应的数据。 |
|
||||
| `sizeAttenuation` | `boolean` | 否 | 用于标记 `sizeAttenuation` 的启用状态。 |
|
||||
|
||||
## 类:`SpritePanel`
|
||||
|
||||
- 作用:精灵面板类 - 显示带背景和边框的文字面板
|
||||
- 继承/实现:`extends THREE.Sprite`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new SpritePanel(options: SpritePanelOptions)`
|
||||
|
||||
- 作用:创建 SpritePanel 实例。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `SpritePanelOptions` | 是 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`SpritePanel`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `canvas` | `public` | `HTMLCanvasElement` | 用于保存 `canvas` 对应的数据。 |
|
||||
| `context` | `public` | `CanvasRenderingContext2D` | 用于保存 `context` 对应的数据。 |
|
||||
| `options` | `public` | `Required<SpritePanelOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `setText(text: string): void`
|
||||
|
||||
- 作用:设置 Text。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `text` | `string` | 是 | 参数 `text`,类型为 `string`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源并销毁当前实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateTexture(): void`
|
||||
|
||||
- 作用:更新 Texture。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GoldMineScene/HeatDisasterLabelPanel.vue`
|
||||
|
||||
```ts
|
||||
const viewer = bus.getViewer();
|
||||
|
||||
label = new SpritePanel({
|
||||
text: '热害',
|
||||
textColor: '#ffffff',
|
||||
backgroundColor: '#ff4444',
|
||||
borderColor: '#cc0000',
|
||||
borderWidth: 4
|
||||
});
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `SpritePanel` 的公开方法调用。
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `SpritePanel`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GoldMineScene/HeatDisasterLabelPanel.vue`
|
||||
|
||||
@@ -0,0 +1,273 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricArch
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricArch.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricArch.md`
|
||||
|
||||
## 类:`ParametricArch`
|
||||
|
||||
- 作用:高性能参数化城门洞 (基于 PathArchGeometry) 使用增量更新而非重建几何体,性能更优
|
||||
- 继承/实现:`extends ParametricGeometryBase;implements IParametricGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricArch(viewer: Viewer, options: IArchOptions = {})`
|
||||
|
||||
- 作用:创建参数化城门洞
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
| `options` | `IArchOptions` | 否 | - 城门洞配置选项 |
|
||||
|
||||
- 出参:`ParametricArch`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `geometry` | `public` | `PathArchGeometry` | 用于保存 `geometry` 对应的数据。 |
|
||||
| `material` | `public` | `THREE.Material` | 材质参数。 |
|
||||
| `options` | `public` | `Required<IArchOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
| `isAnimating` | `public` | `boolean` | 动画相关属性 |
|
||||
| `animationRequestId` | `public` | `number \| null` | 用于保存 `animationRequestId` 对应的数据。 |
|
||||
| `originalExtrudePathPoints` | `public` | `any[] \| null` | 用于保存 `originalExtrudePathPoints` 的集合数据。 |
|
||||
| `pathPointList` | `public` | `PathPointList \| null` | 用于保存 `pathPointList` 对应的数据。 |
|
||||
| `spline` | `public` | `THREE.CatmullRomCurve3 \| null` | 用于保存 `spline` 对应的数据。 |
|
||||
| `animationDuration` | `public` | `number` | 用于保存 `animationDuration` 对应的数据。 |
|
||||
| `animationDelay` | `public` | `number` | 用于保存 `animationDelay` 对应的数据。 |
|
||||
| `animationProgress` | `public` | `number` | 用于保存 `animationProgress` 对应的数据。 |
|
||||
| `followMesh` | `public` | `THREE.Mesh \| THREE.Object3D \| null` | 跟随动画的 mesh |
|
||||
| `viewer` | `public` | `Viewer \| null` | 用于保存 `viewer` 对应的数据。 |
|
||||
| `collisionProxyMesh` | `public` | `THREE.Mesh \| null` | 碰撞代理 mesh |
|
||||
| `outerShape` | `public` | `THREE.Shape \| null` | 用于创建碰撞代理的形状 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createGeometry(): PathArchGeometry`
|
||||
|
||||
- 作用:创建城门洞几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`PathArchGeometry`
|
||||
- 返回说明:返回 `PathArchGeometry`。
|
||||
|
||||
#### `updateParameters(options: Partial<IArchOptions>): void`
|
||||
|
||||
- 作用:更新城门洞参数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<IArchOptions>` | 是 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `startAnimation(): void`
|
||||
|
||||
- 作用:开始动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stopAnimation(): void`
|
||||
|
||||
- 作用:停止动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `resetAnimation(): void`
|
||||
|
||||
- 作用:重置动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setAnimationDuration(duration: number): void`
|
||||
|
||||
- 作用:设置动画时长
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `duration` | `number` | 是 | 参数 `duration`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setAnimationDelay(delay: number): void`
|
||||
|
||||
- 作用:设置动画延迟
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `delay` | `number` | 是 | 参数 `delay`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createDebugPanel(): void`
|
||||
|
||||
- 作用:创建调试面板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createShapes(): void`
|
||||
|
||||
- 作用:创建形状(外轮廓,用于碰撞代理)
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createCollisionProxyMesh(): void`
|
||||
|
||||
- 作用:创建碰撞代理 mesh 使用前两个路径点创建简化的城门洞几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateCollisionProxyTransform(p1: THREE.Vector3, p2: THREE.Vector3): void`
|
||||
|
||||
- 作用:更新碰撞代理 mesh 的位置和旋转
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `p1` | `THREE.Vector3` | 是 | - 第一个点 |
|
||||
| `p2` | `THREE.Vector3` | 是 | - 第二个点 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `loadFollowMesh(url: string): Promise<void>`
|
||||
|
||||
- 作用:加载跟随动画的模型
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `url` | `string` | 是 | 资源地址。 |
|
||||
|
||||
- 出参:`Promise<void>`
|
||||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||||
|
||||
#### `animate(data: RenderEventData): void`
|
||||
|
||||
- 作用:动画循环
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `RenderEventData` | 是 | 输入数据。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `subtractMesh(): number`
|
||||
|
||||
- 作用:直接对所有已添加的碰撞目标执行 CSG 减法操作 使用 addCollisionTarget 添加的目标
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:成功处理的目标数量
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
|
||||
|
||||
```ts
|
||||
// 底部
|
||||
topEnabled: true,
|
||||
followMeshUrl: "/model/机器人.glb",
|
||||
followMeshOffset: new THREE.Vector3(0, -0.2, 0.1),
|
||||
// extrudePathPoints: straightPathPoints,
|
||||
extrudePathPoints: straightPathPoints1,
|
||||
enableCSGOperation: true,
|
||||
animate: true,
|
||||
// animate: false,
|
||||
// debugCollisionProxy: true,
|
||||
};
|
||||
|
||||
excavationTunnel = new ParametricArch(viewer, geometrySettings);
|
||||
Tool.defineMaterialOpacityMapping(excavationTunnel);
|
||||
excavationTunnel.name = "机器人开挖隧道";
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
|
||||
|
||||
```ts
|
||||
excavationTunnel = new ParametricArch(viewer, geometrySettings);
|
||||
Tool.defineMaterialOpacityMapping(excavationTunnel);
|
||||
excavationTunnel.name = "机器人开挖隧道";
|
||||
|
||||
let defaultExcavationTunnel = new ParametricArch(viewer, {
|
||||
...geometrySettings,
|
||||
animate:false
|
||||
});
|
||||
defaultExcavationTunnel.name = "机器人开挖隧道碰撞体";
|
||||
defaultExcavationTunnel.visible = false;
|
||||
Tool.setExcludeAll(defaultExcavationTunnel)
|
||||
viewer.rangeCullingManager.add(defaultExcavationTunnel);
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricArch` 的公开方法调用。
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `ParametricArch`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
|
||||
- `packages/demo/src/views/TunnelScene.vue`
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricBox
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricBox.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricBox.md`
|
||||
|
||||
## 类:`ParametricBox`
|
||||
|
||||
- 作用:高精度参数化长方体 支持完全自定义的长方体生成,包括宽度、高度、深度、分段数等参数
|
||||
- 继承/实现:`extends Mesh<BufferGeometry, Material>;implements IParametricGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricBox(options: IBoxOptions = {})`
|
||||
|
||||
- 作用:创建参数化长方体
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `IBoxOptions` | 否 | - 长方体配置选项 |
|
||||
|
||||
- 出参:`ParametricBox`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<IBoxOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
| `clippingPlanes` | `public` | `Plane[]` | 用于保存 `clippingPlanes` 的集合数据。 |
|
||||
| `bvhHelper` | `public` | `BVHHelper \| null` | 用于保存 `bvhHelper` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createGeometry(): BoxGeometry`
|
||||
|
||||
- 作用:创建长方体几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`BoxGeometry`
|
||||
- 返回说明:返回 `BoxGeometry`。
|
||||
|
||||
#### `updateParameters(options: Partial<IBoxOptions>): void`
|
||||
|
||||
- 作用:更新长方体参数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<IBoxOptions>` | 是 | - 新的长方体配置选项 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getBVHBoundingBox(): Box3 | undefined`
|
||||
|
||||
- 作用:获取 BVH 包围盒
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Box3 \| undefined`
|
||||
- 返回说明:返回 `Box3 | undefined`。
|
||||
|
||||
#### `createClippingPlanes(): Plane[]`
|
||||
|
||||
- 作用:创建对应长方体 6 个面的裁剪平面
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`Plane[]`
|
||||
- 返回说明:包含 6 个 THREE.Plane 的数组 [右, 左, 上, 下, 前, 后]
|
||||
|
||||
#### `updateClippingPlanes(): void`
|
||||
|
||||
- 作用:更新裁剪平面
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createDebugPanel(viewer: Viewer): void`
|
||||
|
||||
- 作用:创建调试面板
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | 关联的 Viewer 实例。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/hooks/useRockSample.ts`
|
||||
|
||||
```ts
|
||||
const boxMaterial = createRock6Material({
|
||||
opacity: 0.6,
|
||||
// depthWrite:false
|
||||
});
|
||||
|
||||
const box = new ParametricBox({
|
||||
width: 5,
|
||||
height: 5,
|
||||
depth: 5,
|
||||
material: boxMaterial
|
||||
});
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/hooks/useSection.ts`
|
||||
|
||||
```ts
|
||||
const viewer = bus.getViewer();
|
||||
|
||||
const section = new ParametricBox({
|
||||
width: 0.1,
|
||||
height: 4.8,
|
||||
depth: 4.7,
|
||||
material: createRock2Material({}, false)
|
||||
});
|
||||
section.name = "断面";
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricBox` 的公开方法调用。
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `ParametricBox`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/hooks/Bus.ts`
|
||||
- `packages/demo/src/hooks/useRockSample.ts`
|
||||
- `packages/demo/src/hooks/useSection.ts`
|
||||
- `packages/demo/src/panels/TunnelScene/DisturbanceLoadingPanel.vue`
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricCylinder
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricCylinder.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricCylinder.md`
|
||||
|
||||
## 类:`ParametricCylinder`
|
||||
|
||||
- 作用:高精度参数化圆柱体 支持完全自定义的圆柱体生成,包括顶部/底部半径、高度、分段数等参数 可以创建圆柱、圆锥、圆台等多种形状
|
||||
- 继承/实现:`extends Mesh<BufferGeometry, Material>;implements IParametricGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricCylinder(options: ICylinderOptions = {})`
|
||||
|
||||
- 作用:创建参数化圆柱体
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `ICylinderOptions` | 否 | - 圆柱体配置选项 |
|
||||
|
||||
- 出参:`ParametricCylinder`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<ICylinderOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createCone(radius: number = 1, height: number = 2, radialSegments: number = 64): ParametricCylinder`
|
||||
|
||||
- 作用:创建圆锥体(顶部半径为0的圆柱体)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `radius` | `number` | 否 | - 底部半径 |
|
||||
| `height` | `number` | 否 | - 高度 |
|
||||
| `radialSegments` | `number` | 否 | - 径向分段数 |
|
||||
|
||||
- 出参:`ParametricCylinder`
|
||||
- 返回说明:圆锥体实例
|
||||
|
||||
#### `createGeometry(): CylinderGeometry`
|
||||
|
||||
- 作用:创建圆柱体几何体 作用:基于当前实例的 `options` 构造并返回一个新的 `THREE.CylinderGeometry`。 入参:无 出参:`CylinderGeometry` 行为说明:读取 `options`(包括 `radiusTop`、`radiusBottom`、`height`、`radialSegments` 等)并以这些参数构造 `THREE.CylinderGeometry`,用于初始化或替换实例的 `geometry`。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`CylinderGeometry`
|
||||
- 返回说明:返回 `CylinderGeometry`。
|
||||
|
||||
#### `updateParameters(options: Partial<ICylinderOptions>): void`
|
||||
|
||||
- 作用:更新圆柱体参数并触发几何体重建 作用:合并并应用提供的参数到内部 `options`,随后重新生成几何体。 入参:
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ICylinderOptions>` | 是 | - `Partial<ICylinderOptions>` 要更新的参数字段集合 出参:`void` 行为说明:仅覆盖提供的字段,然后调用 `updateGeometry()` 以使几何体反映新的参数。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体 作用:根据当前 `options` 重新生成并替换网格的几何体。 入参:无 出参:`void` 行为说明:销毁现有几何体(调用 `dispose()`),调用 `createGeometry()` 创建新几何并赋值给 `this.geometry`。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源 作用:释放几何体与材质占用的 GPU/内存资源并断开引用。 入参:无 出参:`void` 行为说明:依次调用 `geometry.dispose()` 和 `material.dispose()`(若材质支持),并清理内部引用,便于垃圾回收。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalCasingDamageDisasterPanel.vue`
|
||||
|
||||
```ts
|
||||
const position = {x: 0, y: 0.5, z: 0};
|
||||
|
||||
const cylinder = new ParametricCylinder({
|
||||
radiusTop: 0.21,
|
||||
radiusBottom: 0.21,
|
||||
height: 0.2,
|
||||
//------ 圆柱上下不闭合 开始------
|
||||
openEnded: true,
|
||||
//------ 圆柱上下不闭合 结束------
|
||||
//------ 圆柱细分优化 开始------
|
||||
radialSegments: 96,
|
||||
//------ 圆柱细分优化 结束------
|
||||
material: new THREE.MeshBasicMaterial({
|
||||
color: '#ff0000',
|
||||
side: THREE.DoubleSide,
|
||||
}),
|
||||
});
|
||||
cylinder.renderOrder = 1;
|
||||
cylinder.position.set(position.x, position.y, position.z);
|
||||
viewer!.scene.add(cylinder);
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalWellboreInstabilityDisasterPanel.vue`
|
||||
|
||||
```ts
|
||||
const position = {x: 1.5019181086420077, y: 1.1203964954097632, z: 1.5};
|
||||
|
||||
const cylinder = new ParametricCylinder({
|
||||
radiusTop: 0.21,
|
||||
radiusBottom: 0.21,
|
||||
height: 0.2,
|
||||
//------ 圆柱上下不闭合 开始------
|
||||
openEnded: true,
|
||||
//------ 圆柱上下不闭合 结束------
|
||||
//------ 圆柱细分优化 开始------
|
||||
radialSegments: 96,
|
||||
//------ 圆柱细分优化 结束------
|
||||
material: new THREE.MeshBasicMaterial({
|
||||
color: '#ffff00',
|
||||
side: THREE.DoubleSide,
|
||||
}),
|
||||
});
|
||||
cylinder.renderOrder = 1;
|
||||
cylinder.name = 'WellboreInstability_1';
|
||||
cylinder.position.set(position.x, position.y, position.z);
|
||||
viewer!.scene.add(cylinder);
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricCylinder` 的公开方法调用。
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `ParametricCylinder`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalCasingDamageDisasterPanel.vue`
|
||||
- `packages/demo/src/disasterFormationPanel/GeothermalScene/GeothermalWellboreInstabilityDisasterPanel.vue`
|
||||
- `packages/demo/src/disasterFormationPanel/OilGasScene/CasingDamageDisasterPanel.vue`
|
||||
- `packages/demo/src/disasterFormationPanel/OilGasScene/WellboreInstabilityDisasterPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/StressApplicationPanel.vue`
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricGeometryBase
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricGeometryBase.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricGeometryBase.md`
|
||||
|
||||
## 类:`ParametricGeometryBase`
|
||||
|
||||
- 作用:参数化几何体基类 提供碰撞检测和 CSG 操作的通用功能
|
||||
- 继承/实现:`extends THREE.Mesh`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricGeometryBase()`
|
||||
|
||||
- 作用:创建 ParametricGeometryBase 实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`ParametricGeometryBase`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 方法
|
||||
|
||||
#### `addCollisionTarget(target: THREE.Mesh, operationType?: CSGOperationType, maxCollisionCount?: number): void`
|
||||
|
||||
- 作用:添加碰撞目标
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `target` | `THREE.Mesh` | 是 | - 碰撞目标网格 |
|
||||
| `operationType` | `CSGOperationType` | 否 | - CSG 操作类型,默认为 HOLLOW_SUBTRACTION |
|
||||
| `maxCollisionCount` | `number` | 否 | - 最大碰撞处理次数,默认 1,-1 为无限碰撞 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeCollisionTarget(target: THREE.Mesh): void`
|
||||
|
||||
- 作用:移除碰撞目标
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `target` | `THREE.Mesh` | 是 | - 要移除的碰撞目标 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearCollisionTargets(): void`
|
||||
|
||||
- 作用:清除所有碰撞目标
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getCollisionTargets(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>[]`
|
||||
|
||||
- 作用:获取所有碰撞目标
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>[]`
|
||||
- 返回说明:返回数组结果,元素类型为 `THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`。
|
||||
|
||||
#### `resetProcessedTargets(): void`
|
||||
|
||||
- 作用:重置碰撞处理计数 允许重新对目标执行 CSG 操作
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:抽象方法,子类必须实现
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:释放资源并销毁当前实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricGeometryBase` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricGeometryBase` 的公开方法调用。
|
||||
@@ -0,0 +1,612 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricPipe
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricPipe.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricPipe.md`
|
||||
|
||||
## 类:`ParametricPipe`
|
||||
|
||||
- 作用:参数化管道 基于 PathTubeGeometry 实现的管道生成器,支持沿路径生成圆形截面的管道
|
||||
- 继承/实现:`extends ParametricGeometryBase`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricPipe(viewer: Viewer, options: IPipeOptions = {})`
|
||||
|
||||
- 作用:创建参数化管道
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | - Viewer 实例 |
|
||||
| `options` | `IPipeOptions` | 否 | - 管道配置选项 |
|
||||
|
||||
- 出参:`ParametricPipe`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `geometry` | `public` | `THREE.BufferGeometry` | 用于保存 `geometry` 对应的数据。 |
|
||||
| `material` | `public` | `THREE.Material` | 材质参数。 |
|
||||
| `options` | `public` | `Required<IPipeOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
| `emitter` | `public` | `Emittery` | 用于保存 `emitter` 对应的数据。 |
|
||||
| `pathPointList` | `public` | `PathPointList` | 用于保存 `pathPointList` 对应的数据。 |
|
||||
| `pathTubeGeometry` | `public` | `PathTubeGeometry` | 用于保存 `pathTubeGeometry` 对应的数据。 |
|
||||
| `viewer` | `public` | `Viewer \| null` | 用于保存 `viewer` 对应的数据。 |
|
||||
| `startCapMesh` | `public` | `THREE.Mesh \| null` | 端面封闭 |
|
||||
| `endCapMesh` | `public` | `THREE.Mesh \| null` | 用于保存 `endCapMesh` 对应的数据。 |
|
||||
| `drillingRobot` | `public` | `DrillingRobot \| null` | 钻进机器人 |
|
||||
| `collisionProxyMesh` | `public` | `THREE.Mesh \| null` | 碰撞代理 mesh |
|
||||
| `staticCollisionProxyMesh` | `public` | `THREE.Mesh \| null` | 用于保存 `staticCollisionProxyMesh` 对应的数据。 |
|
||||
| `useStaticProxy` | `public` | `boolean` | 用于标记 `useStaticProxy` 的启用状态。 |
|
||||
| `bvhHelper` | `public` | `BVHHelper \| null` | BVH 辅助显示 |
|
||||
| `playing` | `public` | `boolean` | 动画相关属性 |
|
||||
| `duration` | `public` | `number` | 用于保存 `duration` 对应的数据。 |
|
||||
| `texture` | `public` | `THREE.Texture \| null` | 用于保存 `texture` 对应的数据。 |
|
||||
| `textureAnimating` | `public` | `boolean` | 用于标记 `textureAnimating` 的启用状态。 |
|
||||
| `scrollSpeed` | `public` | `number` | 用于保存 `scrollSpeed` 对应的数据。 |
|
||||
| `scrollDirection` | `public` | `number` | 用于保存 `scrollDirection` 对应的数据。 |
|
||||
| `scrollAxis` | `public` | `'x' \| 'y'` | 用于保存 `scrollAxis` 对应的数据。 |
|
||||
| `textureRepeatX` | `public` | `number` | 用于保存 `textureRepeatX` 对应的数据。 |
|
||||
| `textureRepeatY` | `public` | `number` | 用于保存 `textureRepeatY` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `setCollisionProxyType(useStatic: boolean): void`
|
||||
|
||||
- 作用:设置使用哪种碰撞代理
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `useStatic` | `boolean` | 是 | - true 使用静态代理,false 使用动态代理 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createGeometry(): PathTubeGeometry`
|
||||
|
||||
- 作用:创建管道几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`PathTubeGeometry`
|
||||
- 返回说明:返回 `PathTubeGeometry`。
|
||||
|
||||
#### `updateParameters(options: Partial<IPipeOptions>): void`
|
||||
|
||||
- 作用:更新管道参数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<IPipeOptions>` | 是 | - 新的管道配置选项 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updatePoints(points: Array<THREE.Vector3 | { x: number; y: number; z: number }>): void`
|
||||
|
||||
- 作用:更新路径点
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `points` | `Array<THREE.Vector3 \| { x: number; y: number; z: number }>` | 是 | - 新的路径点数组 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateRadius(radius: number): void`
|
||||
|
||||
- 作用:更新管道半径
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `radius` | `number` | 是 | - 新的半径值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateProgress(progress: number): void`
|
||||
|
||||
- 作用:更新动画进度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `progress` | `number` | 是 | - 进度值 (0-1) |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getPathDistance(): number`
|
||||
|
||||
- 作用:获取路径总长度
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:路径长度
|
||||
|
||||
#### `addToScene(): void`
|
||||
|
||||
- 作用:添加到场景
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeFromScene(): void`
|
||||
|
||||
- 作用:从场景移除
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getBVHBoundingBox(): THREE.Box3 | undefined`
|
||||
|
||||
- 作用:获取 BVH 包围盒
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Box3 \| undefined`
|
||||
- 返回说明:返回 `THREE.Box3 | undefined`。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `startAnimation(targetProgress?: number): void`
|
||||
|
||||
- 作用:开始进度动画
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `targetProgress` | `number` | 否 | - 目标进度(0-1),如果不提供则默认为 1.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `continueAnimation(targetProgress?: number): void`
|
||||
|
||||
- 作用:继续进度动画(从当前进度继续到目标进度)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `targetProgress` | `number` | 否 | - 目标进度(0-1),如果不提供则默认为 1.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stopAnimation(): void`
|
||||
|
||||
- 作用:停止进度动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `startTextureAnimation(duration?: number): void`
|
||||
|
||||
- 作用:开始纹理滚动动画
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `duration` | `number` | 否 | - 动画时长(秒),如果提供则在时长结束后派发 textureAnimationComplete 事件 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stopTextureAnimation(): void`
|
||||
|
||||
- 作用:停止纹理滚动动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setDuration(duration: number): void`
|
||||
|
||||
- 作用:设置动画时长
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `duration` | `number` | 是 | - 动画时长(秒) |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getDuration(): number`
|
||||
|
||||
- 作用:获取动画时长
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:返回数值结果。
|
||||
|
||||
#### `setScrollSpeed(speed: number): void`
|
||||
|
||||
- 作用:设置纹理滚动速度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `speed` | `number` | 是 | - 滚动速度 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getScrollSpeed(): number`
|
||||
|
||||
- 作用:获取纹理滚动速度
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:返回数值结果。
|
||||
|
||||
#### `setScrollDirection(direction: number): void`
|
||||
|
||||
- 作用:设置滚动方向
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `direction` | `number` | 是 | - 1 为正向,-1 为反向 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setScrollAxis(axis: 'x' | 'y'): void`
|
||||
|
||||
- 作用:设置滚动轴向
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `axis` | `'x' \| 'y'` | 是 | - 'x' 为水平滚动,'y' 为垂直滚动 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getScrollAxis(): "x" | "y"`
|
||||
|
||||
- 作用:获取滚动轴向
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`"x" \| "y"`
|
||||
- 返回说明:返回 `"x" | "y"`。
|
||||
|
||||
#### `setColorNode(_texture: THREE.Texture, color?: THREE.ColorRepresentation): void`
|
||||
|
||||
- 作用:设置颜色节点(纹理与颜色混合)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `_texture` | `THREE.Texture` | 是 | - 纹理 |
|
||||
| `color` | `THREE.ColorRepresentation` | 否 | - 混合颜色 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setTextureRepeat(repeatX: number, repeatY: number): void`
|
||||
|
||||
- 作用:设置纹理重复次数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `repeatX` | `number` | 是 | - X 轴重复次数 |
|
||||
| `repeatY` | `number` | 是 | - Y 轴重复次数 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getTextureRepeat(): { x: number; y: number; }`
|
||||
|
||||
- 作用:获取纹理重复次数
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`{ x: number; y: number; }`
|
||||
- 返回说明:返回 `{ x: number; y: number; }`。
|
||||
|
||||
#### `setTextureCoverMode(): void`
|
||||
|
||||
- 作用:设置纹理为覆盖模式(拉伸填充,不重复)
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setTextureScale(scaleX: number, scaleY: number): void`
|
||||
|
||||
- 作用:设置纹理缩放
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scaleX` | `number` | 是 | - X 轴缩放比例(大于1放大,小于1缩小) |
|
||||
| `scaleY` | `number` | 是 | - Y 轴缩放比例(大于1放大,小于1缩小) |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeTexture(): void`
|
||||
|
||||
- 作用:移除纹理
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createDebugPanel(): void`
|
||||
|
||||
- 作用:创建调试面板
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createCaps(): void`
|
||||
|
||||
- 作用:创建管道端面
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `disposeCaps(): void`
|
||||
|
||||
- 作用:清除端面
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createDrillingRobot(): void`
|
||||
|
||||
- 作用:创建钻进机器人
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateDrillingRobotPosition(): void`
|
||||
|
||||
- 作用:更新钻进机器人位置
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `disposeDrillingRobot(): void`
|
||||
|
||||
- 作用:销毁钻进机器人
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `disposeCollisionProxyMeshes(): void`
|
||||
|
||||
- 作用:销毁碰撞代理 mesh
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateCollisionProxyMesh(): void`
|
||||
|
||||
- 作用:创建或更新碰撞代理 mesh 用于 CSG 计算的简化几何体,只包含钻头部分
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `createStaticCollisionProxyMesh(): void`
|
||||
|
||||
- 作用:创建静态碰撞代理 mesh 使用 CylinderGeometry,只基于前两个点生成,不动态更新
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateProgressAnimation(data: RenderEventData): void`
|
||||
|
||||
- 作用:更新进度动画
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `data` | `RenderEventData` | 是 | 输入数据。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateTextureAnimation(delta: number): void`
|
||||
|
||||
- 作用:更新纹理动画
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `delta` | `number` | 是 | 时间增量。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/GeothermalDrillingAndCementingPanel.vue`
|
||||
|
||||
```ts
|
||||
const pipeMaterial = new THREE.MeshBasicNodeMaterial({
|
||||
color: 0x808080,
|
||||
transparent: true,
|
||||
opacity: 0.6,
|
||||
side: THREE.DoubleSide,
|
||||
});
|
||||
|
||||
const pip = new ParametricPipe(viewer, {
|
||||
points: points,
|
||||
radius: 0.2,
|
||||
radialSegments: 16,
|
||||
cornerRadius: 0.1,
|
||||
cornerSplit: 5,
|
||||
progress: 0,
|
||||
material: pipeMaterial,
|
||||
capStart: false,
|
||||
capEnd: false,
|
||||
enableDrillingRobot: true,
|
||||
robotColor: 0xff0000,
|
||||
});
|
||||
pip.renderOrder = 1
|
||||
pip.name = `管道`;
|
||||
viewer.scene.add(pip);
|
||||
pip.setCollisionProxyType(true);
|
||||
pip.addCollisionTarget(bus.getRockSample());
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/GeothermalDrillingAndCementingPanel.vue`
|
||||
|
||||
```ts
|
||||
const pipeMaterial = new THREE.MeshBasicNodeMaterial({
|
||||
color: 0x808080,
|
||||
transparent: true,
|
||||
opacity: 0.6,
|
||||
side: THREE.DoubleSide,
|
||||
});
|
||||
|
||||
const pip = new ParametricPipe(viewer, {
|
||||
points: points,
|
||||
radius: 0.2,
|
||||
radialSegments: 16,
|
||||
cornerRadius: 0.1,
|
||||
cornerSplit: 5,
|
||||
progress: 0,
|
||||
material: pipeMaterial,
|
||||
capStart: false,
|
||||
capEnd: false,
|
||||
enableDrillingRobot: true,
|
||||
robotColor: 0xff0000,
|
||||
});
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `ParametricPipe.setCollisionProxyType`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/GeothermalDrillingAndCementingPanel.vue`
|
||||
|
||||
```ts
|
||||
viewer.scene.add(pip);
|
||||
pip.setCollisionProxyType(true);
|
||||
pip.addCollisionTarget(bus.getRockSample());
|
||||
```
|
||||
|
||||
### `ParametricPipe.dispose`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GoldMineScene/DevelopmentMiningPanel.vue`
|
||||
|
||||
```ts
|
||||
const clearVerticalPipes = () => {
|
||||
verticalPipes.forEach(pipe => {
|
||||
pipe.dispose();
|
||||
});
|
||||
verticalPipes = [];
|
||||
bus.triggerSceneTreeUpdate();
|
||||
};
|
||||
```
|
||||
|
||||
### `ParametricPipe.startAnimation`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GeothermalScene/GeothermalDrillingAndCementingPanel.vue`
|
||||
|
||||
```ts
|
||||
viewer.scene.add(pip);
|
||||
pip.setCollisionProxyType(true);
|
||||
pip.addCollisionTarget(bus.getRockSample());
|
||||
|
||||
pip.setDuration(2);
|
||||
pip.startAnimation();
|
||||
bus.triggerSceneTreeUpdate();
|
||||
}
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `ParametricPipe`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/hooks/Bus.ts`
|
||||
- `packages/demo/src/panels/GeothermalScene/GeothermalDrillingAndCementingPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/DevelopmentMiningPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/DrillingPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue`
|
||||
- `packages/demo/src/panels/OilGasScene/DrillingAndCementingPanel.vue`
|
||||
- `packages/demo/src/panels/OilGasScene/FluidApplicationPanel.vue`
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricRing
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricRing.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricRing.md`
|
||||
|
||||
## 类:`ParametricRing`
|
||||
|
||||
- 作用:高精度参数化圆环 支持完全自定义的圆环生成,包括内外半径、分段数等参数 可用于创建套管损害、裂缝等可视化效果
|
||||
- 继承/实现:`extends Mesh<BufferGeometry, Material>;implements IParametricGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricRing(options: IRingOptions = {})`
|
||||
|
||||
- 作用:创建参数化圆环
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `IRingOptions` | 否 | - 圆环配置选项 |
|
||||
|
||||
- 出参:`ParametricRing`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<IRingOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createGeometry(): RingGeometry`
|
||||
|
||||
- 作用:创建圆环几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`RingGeometry`
|
||||
- 返回说明:返回 `RingGeometry`。
|
||||
|
||||
#### `updateParameters(options: Partial<IRingOptions>): void`
|
||||
|
||||
- 作用:更新圆环参数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<IRingOptions>` | 是 | - 新的圆环配置选项 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricRing` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricRing` 的公开方法调用。
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricSphere
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricSphere.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricSphere.md`
|
||||
|
||||
## 类:`ParametricSphere`
|
||||
|
||||
- 作用:高精度参数化球体 支持完全自定义的球体生成,包括半径、分段数、起始角度等参数
|
||||
- 继承/实现:`extends Mesh<BufferGeometry, Material>;implements IParametricGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricSphere(options: ISphereOptions = {})`
|
||||
|
||||
- 作用:创建参数化球体
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `ISphereOptions` | 否 | - 球体配置选项 |
|
||||
|
||||
- 出参:`ParametricSphere`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<ISphereOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createGeometry(): SphereGeometry`
|
||||
|
||||
- 作用:创建球体几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`SphereGeometry`
|
||||
- 返回说明:返回 `SphereGeometry`。
|
||||
|
||||
#### `updateParameters(options: Partial<ISphereOptions>): void`
|
||||
|
||||
- 作用:更新球体参数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ISphereOptions>` | 是 | - 新的球体配置选项 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getParameters(): ISphereOptions`
|
||||
|
||||
- 作用:获取当前参数
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`ISphereOptions`
|
||||
- 返回说明:返回 `ISphereOptions`。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricSphere` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricSphere` 的公开方法调用。
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricTorus
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricTorus.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricTorus.md`
|
||||
|
||||
## 类:`ParametricTorus`
|
||||
|
||||
- 作用:高精度参数化圆环体(甜甜圈形状) 支持完全自定义的圆环体生成,包括半径、管道半径、分段数等参数 可用于创建套管损害、管道连接等可视化效果
|
||||
- 继承/实现:`extends Mesh<BufferGeometry, Material>;implements IParametricGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricTorus(options: ITorusOptions = {})`
|
||||
|
||||
- 作用:创建参数化圆环体
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `ITorusOptions` | 否 | - 圆环体配置选项 |
|
||||
|
||||
- 出参:`ParametricTorus`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<ITorusOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createGeometry(): TorusGeometry`
|
||||
|
||||
- 作用:创建圆环体几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`TorusGeometry`
|
||||
- 返回说明:返回 `TorusGeometry`。
|
||||
|
||||
#### `updateParameters(options: Partial<ITorusOptions>): void`
|
||||
|
||||
- 作用:更新圆环体参数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<ITorusOptions>` | 是 | - 新的圆环体配置选项 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricTorus` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricTorus` 的公开方法调用。
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# ParametricWireframe
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/ParametricWireframe.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/ParametricWireframe.md`
|
||||
|
||||
## 接口:`IWireframeOptions`
|
||||
|
||||
- 作用:线框参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `number` | 否 | 线框颜色 |
|
||||
| `linewidth` | `number` | 否 | 线宽 |
|
||||
| `width` | `number` | 否 | 盒子宽度 |
|
||||
| `height` | `number` | 否 | 盒子高度 |
|
||||
| `depth` | `number` | 否 | 盒子深度 |
|
||||
| `box` | `ParametricBox` | 否 | ParametricBox 实例(可选,如果提供则从中提取尺寸) |
|
||||
|
||||
## 类:`ParametricWireframe`
|
||||
|
||||
- 作用:参数化线框 显示盒子的12条边
|
||||
- 继承/实现:`extends LineSegments<BufferGeometry, Material>;implements IParametricGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new ParametricWireframe(options: IWireframeOptions = {})`
|
||||
|
||||
- 作用:创建参数化线框
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `IWireframeOptions` | 否 | - 线框配置选项 |
|
||||
|
||||
- 出参:`ParametricWireframe`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `public` | `Required<Omit<IWireframeOptions, 'box'>>` | 用于保存 `options` 对应的数据。 |
|
||||
| `sourceBox` | `public` | `ParametricBox` | 用于保存 `sourceBox` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `createWireframeGeometry(width: number, height: number, depth: number): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:创建线框几何体 盒子有12条边: - 顶面4条边 - 底面4条边 - 连接顶底的4条垂直边
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `width` | `number` | 是 | 宽度参数。 |
|
||||
| `height` | `number` | 是 | 高度参数。 |
|
||||
| `depth` | `number` | 是 | 深度参数。 |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:返回 `THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`。
|
||||
|
||||
#### `updateParameters(options: Partial<IWireframeOptions>): void`
|
||||
|
||||
- 作用:更新线框参数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `Partial<IWireframeOptions>` | 是 | - 新的线框配置选项 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `syncFromBox(): void`
|
||||
|
||||
- 作用:从关联的 ParametricBox 同步尺寸
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateGeometry(): void`
|
||||
|
||||
- 作用:更新几何体
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricWireframe` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `ParametricWireframe` 的公开方法调用。
|
||||
@@ -0,0 +1,184 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# types
|
||||
|
||||
- 源文件:`packages/sdk/src/parametric/types.ts`
|
||||
- 文档位置:`packages/docs/api/parametric/types.md`
|
||||
|
||||
## 接口:`IParametricGeometryOptions`
|
||||
|
||||
- 作用:参数化几何体的基础配置接口
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `material` | `THREE.Material` | 否 | 材质 |
|
||||
|
||||
## 接口:`ISphereOptions`
|
||||
|
||||
- 作用:球体参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `radius` | `number` | 否 | 半径 |
|
||||
| `widthSegments` | `number` | 否 | 水平分段数(经度) |
|
||||
| `heightSegments` | `number` | 否 | 垂直分段数(纬度) |
|
||||
| `phiStart` | `number` | 否 | 水平起始角度 |
|
||||
| `phiLength` | `number` | 否 | 水平扫描角度 |
|
||||
| `thetaStart` | `number` | 否 | 垂直起始角度 |
|
||||
| `thetaLength` | `number` | 否 | 垂直扫描角度 |
|
||||
|
||||
## 接口:`ICylinderOptions`
|
||||
|
||||
- 作用:圆柱体参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `radiusTop` | `number` | 否 | 顶部半径 |
|
||||
| `radiusBottom` | `number` | 否 | 底部半径 |
|
||||
| `height` | `number` | 否 | 高度 |
|
||||
| `radialSegments` | `number` | 否 | 径向分段数 |
|
||||
| `heightSegments` | `number` | 否 | 高度分段数 |
|
||||
| `openEnded` | `boolean` | 否 | 是否开放端面 |
|
||||
| `thetaStart` | `number` | 否 | 起始角度 |
|
||||
| `thetaLength` | `number` | 否 | 扫描角度 |
|
||||
|
||||
## 接口:`IBoxOptions`
|
||||
|
||||
- 作用:长方体参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `width` | `number` | 否 | 宽度 |
|
||||
| `height` | `number` | 否 | 高度 |
|
||||
| `depth` | `number` | 否 | 深度 |
|
||||
| `widthSegments` | `number` | 否 | 宽度分段数 |
|
||||
| `heightSegments` | `number` | 否 | 高度分段数 |
|
||||
| `depthSegments` | `number` | 否 | 深度分段数 |
|
||||
|
||||
## 接口:`IArchOptions`
|
||||
|
||||
- 作用:城门洞参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `width` | `number` | 否 | 宽度 |
|
||||
| `height` | `number` | 否 | 高度 |
|
||||
| `depth` | `number` | 否 | 深度 |
|
||||
| `thickness` | `number` | 否 | 厚度 |
|
||||
| `depthSegments` | `number` | 否 | 深度分段数 |
|
||||
| `curveSegments` | `number` | 否 | 用于保存 `curveSegments` 对应的数据。 |
|
||||
| `steps` | `number` | 否 | 用于保存 `steps` 对应的数据。 |
|
||||
| `hasHole` | `boolean` | 否 | 是否有内轮廓(洞) |
|
||||
| `extrudePathPoints` | `Array<THREE.Vector3 \| { x: number; y: number; z: number }>` | 否 | 挤压路径点数组,可以是 THREE.Vector3 数组或包含 x,y,z 属性的对象数组 |
|
||||
| `animate` | `boolean` | 否 | 是否启用动画,启用时第一次创建只取第一个点 |
|
||||
| `bottomEnabled` | `boolean` | 否 | 是否生成底部面 |
|
||||
| `topEnabled` | `boolean` | 否 | 是否生成顶部面 |
|
||||
| `followMesh` | `THREE.Mesh \| THREE.Object3D` | 否 | 跟随动画的 mesh 对象 |
|
||||
| `followMeshUrl` | `string` | 否 | 跟随动画的 mesh 模型 URL 路径 |
|
||||
| `followMeshOffset` | `THREE.Vector3` | 否 | 跟随动画的 mesh 在动画时的位置偏移 |
|
||||
| `upVector` | `THREE.Vector3` | 否 | 向上方向向量,用于控制挤出时的坐标系方向 |
|
||||
| `enableCSGOperation` | `boolean` | 否 | 动画时是否启用 CSG 操作(含碰撞检测) |
|
||||
| `showDebugMesh` | `boolean` | 否 | 是否显示 CSG 调试 mesh |
|
||||
| `collisionCheckProgressStep` | `number` | 否 | 碰撞检测触发的进度步长(0-1),<=0 表示每帧检测 |
|
||||
| `collisionProxyDepth` | `number` | 否 | 碰撞代理体深度(挙伸幼度),默认为 0.3 |
|
||||
| `debugCollisionProxy` | `boolean` | 否 | 是否启用碰撞代理网格调试显示 |
|
||||
|
||||
## 接口:`IPipeOptions`
|
||||
|
||||
- 作用:管道参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `points` | `Array<THREE.Vector3 \| { x: number; y: number; z: number }>` | 否 | 路径点数组 |
|
||||
| `radius` | `number` | 否 | 管道半径 |
|
||||
| `radialSegments` | `number` | 否 | 径向分段数 |
|
||||
| `cornerRadius` | `number` | 否 | 拐角半径 |
|
||||
| `cornerSplit` | `number` | 否 | 拐角分段数 |
|
||||
| `progress` | `number` | 否 | 动画进度 (0-1) |
|
||||
| `startRad` | `number` | 否 | 起始旋转角度 |
|
||||
| `upVector` | `THREE.Vector3 \| null` | 否 | 向上方向向量 |
|
||||
| `close` | `boolean` | 否 | 是否闭合路径 |
|
||||
| `capStart` | `boolean` | 否 | 是否封闭起始端 |
|
||||
| `capEnd` | `boolean` | 否 | 是否封闭结束端 |
|
||||
| `enableDrillingRobot` | `boolean` | 否 | 是否启用钻进机器人 |
|
||||
| `robotColor` | `number` | 否 | 钻进机器人颜色 |
|
||||
| `robotCylinderLengthRatio` | `number` | 否 | 机器人圆柱体长度系数(相对于管道半径) |
|
||||
| `robotConeLengthRatio` | `number` | 否 | 机器人圆锥体长度系数(相对于管道半径) |
|
||||
| `useStaticCollisionProxy` | `boolean` | 否 | 是否使用静态碰撞代理 (true: CylinderGeometry, false: TubeGeometry) |
|
||||
| `collisionProxyHeight` | `number` | 否 | 碰撞代理圆柱高度(动态/静态共用,<=0 或不传时使用默认值) |
|
||||
| `metadata` | `Record<string, any>` | 否 | 元数据 |
|
||||
| `collisionCheckProgressStep` | `number` | 否 | 碰撞检测触发的进度步长(0-1),<=0 表示每帧检测 |
|
||||
| `debugCollisionProxy` | `boolean` | 否 | 是否启用碰撞代理网格调试显示 |
|
||||
|
||||
## 接口:`IRingOptions`
|
||||
|
||||
- 作用:圆环参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `innerRadius` | `number` | 否 | 内半径 |
|
||||
| `outerRadius` | `number` | 否 | 外半径 |
|
||||
| `thetaSegments` | `number` | 否 | 圆周分段数 |
|
||||
| `phiSegments` | `number` | 否 | 径向分段数 |
|
||||
| `thetaStart` | `number` | 否 | 起始角度 |
|
||||
| `thetaLength` | `number` | 否 | 扫描角度 |
|
||||
|
||||
## 接口:`ITorusOptions`
|
||||
|
||||
- 作用:圆环体(甜甜圈)参数配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `radius` | `number` | 否 | 圆环半径(从圆环中心到管道中心的距离) |
|
||||
| `tube` | `number` | 否 | 管道半径 |
|
||||
| `radialSegments` | `number` | 否 | 径向分段数(管道圆周方向) |
|
||||
| `tubularSegments` | `number` | 否 | 管状分段数(圆环圆周方向) |
|
||||
| `arc` | `number` | 否 | 圆环弧度(默认 2π 为完整圆环) |
|
||||
|
||||
## 接口:`IParametricGeometry`
|
||||
|
||||
- 作用:参数化几何体基类接口 实现此接口的类应该直接继承 THREE.Mesh
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export interface IParametricGeometry {
|
||||
/** 几何体 */
|
||||
geometry: THREE.BufferGeometry;
|
||||
/** 材质 */
|
||||
material: THREE.Material | THREE.Material[];
|
||||
|
||||
/** 更新几何体参数 */
|
||||
updateGeometry(): void;
|
||||
|
||||
/** 销毁资源 */
|
||||
dispose(): void;
|
||||
}
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `IArchOptions`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# BloomPass
|
||||
|
||||
- 源文件:`packages/sdk/src/passes/BloomPass.ts`
|
||||
- 文档位置:`packages/docs/api/passes/BloomPass.md`
|
||||
|
||||
## 类:`BloomPass`
|
||||
|
||||
- 作用:Bloom 通道 用于为场景添加 bloom 效果(光晕效果)
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new BloomPass()`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`BloomPass`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `bloomPass` | `public` | `any` | 用于保存 `bloomPass` 对应的数据。 |
|
||||
| `highlightedObjects` | `public` | `Map<THREE.Object3D, THREE.Color>` | 用于保存 `highlightedObjects` 的映射关系。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:初始化 Bloom 通道
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getOutputNode(scenePassColor: any): any`
|
||||
|
||||
- 作用:获取 Bloom 效果的输出节点
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scenePassColor` | `any` | 是 | - 场景通道的颜色输出节点 |
|
||||
|
||||
- 出参:`any`
|
||||
- 返回说明:Bloom 效果的输出节点
|
||||
|
||||
#### `setThreshold(value: number): void`
|
||||
|
||||
- 作用:设置 Bloom 阈值
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 阈值,范围 0.0 到 1.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setStrength(value: number): void`
|
||||
|
||||
- 作用:设置 Bloom 强度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 强度,范围 0.0 到 3.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setRadius(value: number): void`
|
||||
|
||||
- 作用:设置 Bloom 半径
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 半径,范围 0.0 到 1.0 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `addHighlightedObject(object: THREE.Object3D, highlightColor: THREE.Color = new THREE.Color(0, 1, 0)): void`
|
||||
|
||||
- 作用:添加要高亮的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要高亮的对象 |
|
||||
| `highlightColor` | `THREE.Color` | 否 | - 高亮颜色,默认为绿色 (0, 1, 0) |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeHighlightedObject(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:移除要高亮的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要移除的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearHighlightedObjects(): void`
|
||||
|
||||
- 作用:清空所有要高亮的对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getHighlightedObjects(): THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
|
||||
- 作用:获取当前高亮的对象列表
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
- 返回说明:高亮的对象列表
|
||||
|
||||
#### `isObjectHighlighted(object: THREE.Object3D): boolean`
|
||||
|
||||
- 作用:检查对象是否在高亮列表中
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要检查的对象 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否在高亮列表中
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `BloomPass` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `BloomPass` 的公开方法调用。
|
||||
@@ -0,0 +1,219 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# OutlinePass
|
||||
|
||||
- 源文件:`packages/sdk/src/passes/OutlinePass.ts`
|
||||
- 文档位置:`packages/docs/api/passes/OutlinePass.md`
|
||||
|
||||
## 类:`OutlinePass`
|
||||
|
||||
- 作用:描边通道 用于为选中的对象添加描边效果
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new OutlinePass(scene: THREE.Scene, camera: THREE.Camera)`
|
||||
|
||||
- 作用:构造函数
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `THREE.Scene` | 是 | - 场景 |
|
||||
| `camera` | `THREE.Camera` | 是 | - 相机 |
|
||||
|
||||
- 出参:`OutlinePass`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `public` | `THREE.Scene` | 用于保存 `scene` 对应的数据。 |
|
||||
| `camera` | `public` | `THREE.Camera` | 用于保存 `camera` 对应的数据。 |
|
||||
| `outlinePass` | `public` | `any` | 用于保存 `outlinePass` 对应的数据。 |
|
||||
| `selectedObjects` | `public` | `THREE.Object3D[]` | 用于保存 `selectedObjects` 的集合数据。 |
|
||||
| `edgeStrength` | `public` | `THREE.UniformNode<"float", number>` | 描边参数 |
|
||||
| `edgeGlow` | `public` | `THREE.UniformNode<"float", number>` | 用于保存 `edgeGlow` 对应的数据。 |
|
||||
| `edgeThickness` | `public` | `THREE.UniformNode<"float", number>` | 用于保存 `edgeThickness` 对应的数据。 |
|
||||
| `pulsePeriod` | `public` | `THREE.UniformNode<"float", number>` | 用于保存 `pulsePeriod` 对应的数据。 |
|
||||
| `visibleEdgeColor` | `public` | `THREE.UniformNode<"color", THREE.Color>` | 用于保存 `visibleEdgeColor` 对应的数据。 |
|
||||
| `hiddenEdgeColor` | `public` | `THREE.UniformNode<"color", THREE.Color>` | 用于保存 `hiddenEdgeColor` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `init(): void`
|
||||
|
||||
- 作用:初始化描边通道
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateCamera(camera: THREE.Camera): void`
|
||||
|
||||
- 作用:更新相机引用
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `camera` | `THREE.Camera` | 是 | - 新的相机 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getOutputNode(scenePass: any): any`
|
||||
|
||||
- 作用:获取描边效果的输出节点
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scenePass` | `any` | 是 | - 场景通道的输出节点 |
|
||||
|
||||
- 出参:`any`
|
||||
- 返回说明:描边效果的输出节点
|
||||
|
||||
#### `addSelectedObject(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:添加要描边的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要添加的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeSelectedObject(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:移除要描边的对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | - 要移除的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearSelectedObjects(): void`
|
||||
|
||||
- 作用:清空所有要描边的对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateSelectedObjects(): void`
|
||||
|
||||
- 作用:更新要描边的对象列表
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setEdgeStrength(value: number): void`
|
||||
|
||||
- 作用:设置描边强度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 描边强度值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setEdgeGlow(value: number): void`
|
||||
|
||||
- 作用:设置描边 glow 效果
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - glow 效果值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setEdgeThickness(value: number): void`
|
||||
|
||||
- 作用:设置描边厚度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 描边厚度值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setPulsePeriod(value: number): void`
|
||||
|
||||
- 作用:设置描边脉冲周期
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `number` | 是 | - 脉冲周期值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setVisibleEdgeColor(color: THREE.Color): void`
|
||||
|
||||
- 作用:设置可见边的颜色
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `THREE.Color` | 是 | - 颜色值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setHiddenEdgeColor(color: THREE.Color): void`
|
||||
|
||||
- 作用:设置隐藏边的颜色
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `color` | `THREE.Color` | 是 | - 颜色值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getSelectedObjects(): THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
|
||||
- 作用:获取当前选中的对象列表
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
- 返回说明:选中的对象列表
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `OutlinePass` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `OutlinePass` 的公开方法调用。
|
||||
@@ -0,0 +1,120 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# DrillingRobot
|
||||
|
||||
- 源文件:`packages/sdk/src/robot/DrillingRobot.ts`
|
||||
- 文档位置:`packages/docs/api/robot/DrillingRobot.md`
|
||||
|
||||
## 接口:`IDrillingRobotOptions`
|
||||
|
||||
- 作用:钻进机器人配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `pipeRadius` | `number` | 是 | 管道半径(用于计算机器人尺寸) |
|
||||
| `color` | `number` | 否 | 机器人颜色 |
|
||||
| `cylinderLengthRatio` | `number` | 否 | 圆柱体长度系数(相对于管道半径) |
|
||||
| `coneLengthRatio` | `number` | 否 | 圆锥体长度系数(相对于管道半径) |
|
||||
|
||||
## 类:`DrillingRobot`
|
||||
|
||||
- 作用:钻进机器人 由圆柱体和圆锥体组成,用于模拟钻进过程
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new DrillingRobot(options: IDrillingRobotOptions)`
|
||||
|
||||
- 作用:创建钻进机器人
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `IDrillingRobotOptions` | 是 | - 机器人配置选项 |
|
||||
|
||||
- 出参:`DrillingRobot`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `group` | `public` | `THREE.Group` | 用于保存 `group` 对应的数据。 |
|
||||
| `cylinder` | `public` | `THREE.Mesh` | 用于保存 `cylinder` 对应的数据。 |
|
||||
| `cone` | `public` | `THREE.Mesh` | 用于保存 `cone` 对应的数据。 |
|
||||
| `options` | `public` | `Required<IDrillingRobotOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `setPosition(position: THREE.Vector3): void`
|
||||
|
||||
- 作用:设置机器人位置
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `position` | `THREE.Vector3` | 是 | - 位置向量 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setRotation(quaternion: THREE.Quaternion): void`
|
||||
|
||||
- 作用:设置机器人旋转
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `quaternion` | `THREE.Quaternion` | 是 | - 旋转四元数 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setDirection(direction: THREE.Vector3): void`
|
||||
|
||||
- 作用:设置机器人朝向
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `direction` | `THREE.Vector3` | 是 | - 方向向量 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateSize(pipeRadius: number): void`
|
||||
|
||||
- 作用:更新机器人尺寸(当管道半径改变时)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `pipeRadius` | `number` | 是 | - 新的管道半径 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁机器人资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `DrillingRobot` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `DrillingRobot` 的公开方法调用。
|
||||
@@ -0,0 +1,310 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# MiningRobot
|
||||
|
||||
- 源文件:`packages/sdk/src/robot/MiningRobot.ts`
|
||||
- 文档位置:`packages/docs/api/robot/MiningRobot.md`
|
||||
|
||||
## 接口:`ICSGTargetConfig`
|
||||
|
||||
- 作用:CSG 目标对象配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | 目标网格对象 |
|
||||
| `operationType` | `CSGOperationType` | 是 | CSG 操作类型 |
|
||||
| `enabled` | `boolean` | 否 | 是否启用 |
|
||||
|
||||
## 接口:`IMiningRobotOptions`
|
||||
|
||||
- 作用:回采机器人配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `size` | `number` | 否 | 机器人尺寸 |
|
||||
| `color` | `number` | 否 | 机器人颜色 |
|
||||
| `widthRatio` | `number` | 否 | 主体宽度系数 |
|
||||
| `heightRatio` | `number` | 否 | 主体高度系数 |
|
||||
| `depthRatio` | `number` | 否 | 主体深度系数 |
|
||||
|
||||
## 接口:`IMiningAnimationOptions`
|
||||
|
||||
- 作用:挖掘动画配置
|
||||
|
||||
### 字段
|
||||
|
||||
| 字段名 | 类型 | 必填 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `duration` | `number` | 否 | 移动持续时间(秒) |
|
||||
| `csgFrequency` | `number` | 否 | CSG 执行频率系数,1.0 表示每移动切割头尺寸距离执行一次,0.5 表示每移动切割头尺寸一半距离执行一次 |
|
||||
| `onComplete` | `() => void` | 否 | 完成回调 |
|
||||
| `onProgress` | `(progress: number) => void` | 否 | 进度回调 |
|
||||
|
||||
## 类:`MiningRobot`
|
||||
|
||||
- 作用:回采机器人 用于模拟矿体回采过程
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new MiningRobot(options: IMiningRobotOptions = {})`
|
||||
|
||||
- 作用:创建回采机器人
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `options` | `IMiningRobotOptions` | 否 | - 机器人配置选项 |
|
||||
|
||||
- 出参:`MiningRobot`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `group` | `public` | `THREE.Group` | 用于保存 `group` 对应的数据。 |
|
||||
| `mainBody` | `public` | `THREE.Mesh` | 用于保存 `mainBody` 对应的数据。 |
|
||||
| `cuttingHead` | `public` | `THREE.Mesh` | 用于保存 `cuttingHead` 对应的数据。 |
|
||||
| `connector` | `public` | `THREE.Mesh` | 用于保存 `connector` 对应的数据。 |
|
||||
| `frontIndicator` | `public` | `THREE.Mesh` | 用于保存 `frontIndicator` 对应的数据。 |
|
||||
| `options` | `public` | `Required<IMiningRobotOptions>` | 用于保存 `options` 对应的数据。 |
|
||||
| `animationId` | `public` | `number \| null` | 用于保存 `animationId` 对应的数据。 |
|
||||
| `isMining` | `public` | `boolean` | 用于标记 `isMining` 的启用状态。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `addCSGTarget(mesh: THREE.Mesh, operationType: CSGOperationType, enabled: boolean = true): void`
|
||||
|
||||
- 作用:添加 CSG 目标对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | - 目标网格对象 |
|
||||
| `operationType` | `CSGOperationType` | 是 | - CSG 操作类型 |
|
||||
| `enabled` | `boolean` | 否 | - 是否启用(默认为 true) |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeCSGTarget(mesh: THREE.Mesh): void`
|
||||
|
||||
- 作用:移除 CSG 目标对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | - 要移除的网格对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `clearCSGTargets(): void`
|
||||
|
||||
- 作用:清空所有 CSG 目标对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getCSGTargets(): ICSGTargetConfig[]`
|
||||
|
||||
- 作用:获取所有 CSG 目标对象
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`ICSGTargetConfig[]`
|
||||
- 返回说明:返回数组结果,元素类型为 `ICSGTargetConfig`。
|
||||
|
||||
#### `setCSGTargetEnabled(mesh: THREE.Mesh, enabled: boolean): void`
|
||||
|
||||
- 作用:设置 CSG 目标对象的启用状态
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | - 目标网格对象 |
|
||||
| `enabled` | `boolean` | 是 | - 是否启用 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setPosition(position: THREE.Vector3): void`
|
||||
|
||||
- 作用:设置机器人位置
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `position` | `THREE.Vector3` | 是 | - 位置向量 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setDirection(direction: THREE.Vector3): void`
|
||||
|
||||
- 作用:设置机器人朝向
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `direction` | `THREE.Vector3` | 是 | - 方向向量 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `updateSize(size: number): void`
|
||||
|
||||
- 作用:更新机器人尺寸
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `size` | `number` | 是 | - 新的基础尺寸 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `startMining(viewer: Viewer, startPosition: THREE.Vector3, endPosition: THREE.Vector3, options: IMiningAnimationOptions = {}): void`
|
||||
|
||||
- 作用:开始挖掘动画
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `viewer` | `Viewer` | 是 | - Viewer 实例 |
|
||||
| `startPosition` | `THREE.Vector3` | 是 | - 起始位置 |
|
||||
| `endPosition` | `THREE.Vector3` | 是 | - 结束位置 |
|
||||
| `options` | `IMiningAnimationOptions` | 否 | - 动画配置选项 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `executeCSGOperation(): void`
|
||||
|
||||
- 作用:执行 CSG 操作
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `stopMining(): void`
|
||||
|
||||
- 作用:停止挖掘动画
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getIsMining(): boolean`
|
||||
|
||||
- 作用:获取是否正在挖掘
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:返回布尔结果。
|
||||
|
||||
#### `dispose(): void`
|
||||
|
||||
- 作用:销毁机器人资源
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 来源:`packages/demo/src/panels/GoldMineScene/DevelopmentMiningPanel.vue`
|
||||
|
||||
```ts
|
||||
if (miningRobot) {
|
||||
miningRobot.dispose();
|
||||
}
|
||||
|
||||
miningRobot = new MiningRobot({
|
||||
size: 0.075,
|
||||
color: 0xff6600,
|
||||
widthRatio: 1.5,
|
||||
heightRatio: 1.2,
|
||||
depthRatio: 2
|
||||
});
|
||||
miningRobot.group.position.set(0, 0, -0.55);
|
||||
// 添加机器人到场景
|
||||
viewer.scene.add(miningRobot.group);
|
||||
```
|
||||
|
||||
- 来源:`packages/demo/src/panels/GoldMineScene/ExplorationMiningPanel.vue`
|
||||
|
||||
```ts
|
||||
if (!viewer) return;
|
||||
|
||||
const robot = new MiningRobot({
|
||||
size: 1,
|
||||
color: miningParams.value.color,
|
||||
});
|
||||
```
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `MiningRobot.startMining`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GoldMineScene/ExplorationMiningPanel.vue`
|
||||
|
||||
```ts
|
||||
robots.push(robot);
|
||||
|
||||
// 开始挖掘动画
|
||||
robot.startMining(startPosition, endPosition, rockSample, {
|
||||
speed: miningParams.value.speed,
|
||||
cutterSize: 0.5,
|
||||
cutterSegments: 16,
|
||||
csgInterval: 0.1,
|
||||
onComplete: () => {
|
||||
isMining.value = false;
|
||||
console.log('挖掘完成');
|
||||
},
|
||||
onProgress: (progress) => {
|
||||
// 可以在这里添加进度显示逻辑
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### `MiningRobot.dispose`
|
||||
|
||||
- 来源:`packages/demo/src/panels/GoldMineScene/ExplorationMiningPanel.vue`
|
||||
|
||||
```ts
|
||||
if (robots.length > 0) {
|
||||
robots.forEach(robot => {
|
||||
robot.dispose();
|
||||
});
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `MiningRobot`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/GoldMineScene/DevelopmentMiningPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/ExplorationMiningPanel.vue`
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# DExtrudeGeometry
|
||||
|
||||
- 源文件:`packages/sdk/src/source/DExtrudeGeometry.ts`
|
||||
- 文档位置:`packages/docs/api/source/DExtrudeGeometry.md`
|
||||
|
||||
## 类:`DExtrudeGeometry`
|
||||
|
||||
- 作用:DExtrudeGeometry 类。
|
||||
- 继承/实现:`extends BufferGeometry`
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new DExtrudeGeometry(shapes = new Shape([new Vector2(0.5, 0.5), new Vector2(-0.5, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), options: ExtrudeGeometryOptions = {})`
|
||||
|
||||
- 作用:Constructs a new extrude geometry.
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `shapes` | `Shape` | 否 | - A shape or an array of shapes. |
|
||||
| `options` | `ExtrudeGeometryOptions` | 否 | 当前功能对应的配置项。 |
|
||||
|
||||
- 出参:`DExtrudeGeometry`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 方法
|
||||
|
||||
#### `copy(source): this`
|
||||
|
||||
- 作用:执行 copy 相关逻辑。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `source` | `any` | 是 | 参数 `source`,类型为 `any`。 |
|
||||
|
||||
- 出参:`this`
|
||||
- 返回说明:返回 `this`。
|
||||
|
||||
#### `toJSON(): any`
|
||||
|
||||
- 作用:执行 to JSON 相关逻辑。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`any`
|
||||
- 返回说明:返回 `any`。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `DExtrudeGeometry` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `DExtrudeGeometry` 的公开方法调用。
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Curve
|
||||
|
||||
- 源文件:`packages/sdk/src/source/core/Curve.ts`
|
||||
- 文档位置:`packages/docs/api/source/core/Curve.md`
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# CatmullRomCurve3
|
||||
|
||||
- 源文件:`packages/sdk/src/source/curves/CatmullRomCurve3.ts`
|
||||
- 文档位置:`packages/docs/api/source/curves/CatmullRomCurve3.md`
|
||||
|
||||
@@ -0,0 +1,279 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# CSGOperator
|
||||
|
||||
- 源文件:`packages/sdk/src/tool/CSGOperator.ts`
|
||||
- 文档位置:`packages/docs/api/tool/CSGOperator.md`
|
||||
|
||||
## 类型:`CSGOperationType`
|
||||
|
||||
- 作用:CSGOperationType 的类型定义。
|
||||
|
||||
### 定义
|
||||
|
||||
```ts
|
||||
export type CSGOperationType = typeof CSGOperationType[keyof typeof CSGOperationType];
|
||||
```
|
||||
|
||||
## 类:`CSGOperator`
|
||||
|
||||
- 作用:CSG 操作器 使用 three-bvh-csg 进行布尔运算
|
||||
|
||||
### 构造函数
|
||||
|
||||
#### `new CSGOperator()`
|
||||
|
||||
- 作用:创建 CSGOperator 实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`CSGOperator`
|
||||
- 返回说明:返回当前类实例。
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `evaluator` | `public` | `Evaluator` | 用于保存 `evaluator` 对应的数据。 |
|
||||
|
||||
### 访问器
|
||||
|
||||
#### `get debugMode(): boolean`
|
||||
|
||||
- 作用:获取 debug Mode。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:返回布尔结果。
|
||||
|
||||
#### `set debugMode(value: boolean)`
|
||||
|
||||
- 作用:设置 debug Mode。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `value` | `boolean` | 是 | 要写入的新值。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
### 方法
|
||||
|
||||
#### `clearBrushCache(mesh?: THREE.Mesh): void`
|
||||
|
||||
- 作用:清除 Brush 缓存
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 否 | - 可选,指定要清除的网格,不指定则清除所有 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `union(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:执行并集操作
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `subtract(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:执行差集操作 (A - B)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 被减去的网格 |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 减去的网格 |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `reverseSubtract(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:执行反向差集操作 (B - A)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `intersection(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:执行交集操作
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `difference(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:执行对称差集操作
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `hollowSubtract(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:执行空心差集操作 从 meshA 中减去 meshB,但只删除相交的面
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `hollowIntersection(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:执行空心交集操作 只保留相交部分的表面
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `operate(meshA: THREE.Mesh, meshB: THREE.Mesh, operation: CSGOperationType): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:通用 CSG 操作方法
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
| `operation` | `CSGOperationType` | 是 | - CSG 操作类型 |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `subtractMultiple(meshA: THREE.Mesh, meshes: THREE.Mesh[]): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:批量执行差集操作 从 meshA 中减去多个网格
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 被减去的网格 |
|
||||
| `meshes` | `THREE.Mesh[]` | 是 | - 要减去的网格数组 |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
#### `setAttributes(attributes: string[]): void`
|
||||
|
||||
- 作用:设置属性插值
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `attributes` | `string[]` | 是 | - 要插值的属性名称数组 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setUseGroups(useGroups: boolean): void`
|
||||
|
||||
- 作用:设置是否使用材质组
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `useGroups` | `boolean` | 是 | - 是否使用组 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `meshToBrush(mesh: THREE.Mesh): Brush`
|
||||
|
||||
- 作用:将 Mesh 转换为 Brush,使用缓存机制复用 Brush 对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | - 需要转换的网格 |
|
||||
|
||||
- 出参:`Brush`
|
||||
- 返回说明:Brush 对象
|
||||
|
||||
#### `evaluate(meshA: THREE.Mesh, meshB: THREE.Mesh, operation: CSGOperationType): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
|
||||
- 作用:统一的 CSG 操作执行方法
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
| `operation` | `CSGOperationType` | 是 | - CSG 操作类型 |
|
||||
|
||||
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
|
||||
- 返回说明:结果几何体
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CSGOperator` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CSGOperator` 的公开方法调用。
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `CSGOperationType`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/panels/GoldMineScene/DevelopmentMiningPanel.vue`
|
||||
- `packages/demo/src/panels/GoldMineScene/DrillingPanel.vue`
|
||||
- `packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
|
||||
- `packages/demo/src/views/TunnelScene.vue`
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# CollisionDetector
|
||||
|
||||
- 源文件:`packages/sdk/src/tool/CollisionDetector.ts`
|
||||
- 文档位置:`packages/docs/api/tool/CollisionDetector.md`
|
||||
|
||||
## 类:`CollisionDetector`
|
||||
|
||||
- 作用:碰撞检测器 使用 three-mesh-bvh 进行高效的碰撞检测
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshBVHMap` | `public` | `WeakMap<THREE.Mesh, any>` | 用于保存 `meshBVHMap` 的映射关系。 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `computeBoundsTree(geometry: THREE.BufferGeometry): void`
|
||||
|
||||
- 作用:为几何体计算 BVH
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `disposeBoundsTree(geometry: THREE.BufferGeometry): void`
|
||||
|
||||
- 作用:释放几何体的 BVH
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `hasBoundsTree(geometry: THREE.BufferGeometry): boolean`
|
||||
|
||||
- 作用:检查几何体是否有 BVH
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否有 BVH
|
||||
|
||||
#### `ensureBoundsTree(geometry: THREE.BufferGeometry): void`
|
||||
|
||||
- 作用:确保几何体有 BVH(如果没有则计算)
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `buildBVH(mesh: THREE.Mesh): void`
|
||||
|
||||
- 作用:为网格构建 BVH
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | - 需要构建 BVH 的网格 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `checkIntersection(meshA: THREE.Mesh, meshB: THREE.Mesh): boolean`
|
||||
|
||||
- 作用:检测两个网格是否相交
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`boolean`
|
||||
- 返回说明:是否相交
|
||||
|
||||
#### `getIntersectionVolume(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.Box3 | null`
|
||||
|
||||
- 作用:获取两个网格的相交体积
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
|
||||
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
|
||||
|
||||
- 出参:`THREE.Box3 \| null`
|
||||
- 返回说明:相交的包围盒,如果不相交则返回 null
|
||||
|
||||
#### `disposeBVH(mesh: THREE.Mesh): void`
|
||||
|
||||
- 作用:清理网格的 BVH
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | - 需要清理 BVH 的网格 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `disposeAll(): void`
|
||||
|
||||
- 作用:释放资源并销毁当前实例。
|
||||
|
||||
- 入参:无
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CollisionDetector` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `CollisionDetector` 的公开方法调用。
|
||||
@@ -0,0 +1,342 @@
|
||||
---
|
||||
outline: [2, 3]
|
||||
---
|
||||
|
||||
# Tool
|
||||
|
||||
- 源文件:`packages/sdk/src/tool/Tool.ts`
|
||||
- 文档位置:`packages/docs/api/tool/Tool.md`
|
||||
|
||||
## 枚举:`UserDataProperty`
|
||||
|
||||
- 作用:UserData 属性枚举
|
||||
|
||||
| 枚举项 | 值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `SELECTION` | `'selection'` | 选择排除属性,为真的时候,在点击事件进行返回 |
|
||||
| `SCENE_TREE_EXCLUDE` | `'sceneTreeExclude'` | 场景树排除属性 |
|
||||
|
||||
## 类:`Tool`
|
||||
|
||||
- 作用:包围盒工具类 提供计算物体包围盒的静态方法
|
||||
|
||||
### 属性
|
||||
|
||||
| 属性名 | 可见性 | 类型 | 作用 |
|
||||
| --- | --- | --- | --- |
|
||||
| `originalTransparentMap` | `public static` | `WeakMap<THREE.Material<THREE.MaterialEventMap>, boolean>` | 修改对象及其所有子对象的透明度 |
|
||||
|
||||
### 方法
|
||||
|
||||
#### `defineMaterialOpacityMapping(object: THREE.Mesh, propertyName: string = "mappedOpacity", sourceMin: number = 0.3, sourceMax: number = 1): void`
|
||||
|
||||
- 作用:为对象定义透明度映射属性 读取时将材质 opacity 从 sourceMin~sourceMax 映射到 0~1,设置时反向映射回 sourceMin~sourceMax。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Mesh` | 是 | 目标对象(需包含 material) |
|
||||
| `propertyName` | `string` | 否 | 挂载到对象上的属性名,默认 opacity |
|
||||
| `sourceMin` | `number` | 否 | 材质真实透明度最小值,默认 0.3 |
|
||||
| `sourceMax` | `number` | 否 | 材质真实透明度最大值,默认 1 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeMaterialOpacityMapping(object: THREE.Object3D, propertyName: string = "opacity", restoreDirectBinding: boolean = true): void`
|
||||
|
||||
- 作用:取消对象上的透明度映射属性 可选恢复为材质 opacity 的直接读写绑定(不做区间映射)。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 目标对象(需包含 material) |
|
||||
| `propertyName` | `string` | 否 | 挂载在对象上的属性名,默认 opacity |
|
||||
| `restoreDirectBinding` | `boolean` | 否 | 是否恢复直接绑定,默认 true |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `computeBoundingBox(object: THREE.Object3D): THREE.Box3 | null`
|
||||
|
||||
- 作用:计算物体的包围盒,包括所有子对象
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要计算包围盒的物体 |
|
||||
|
||||
- 出参:`THREE.Box3 \| null`
|
||||
- 返回说明:物体的包围盒,如果物体没有几何体则返回 null
|
||||
|
||||
#### `getBoundingBoxSize(object: THREE.Object3D): THREE.Vector3 | null`
|
||||
|
||||
- 作用:计算物体包围盒的大小
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要计算大小的物体 |
|
||||
|
||||
- 出参:`THREE.Vector3 \| null`
|
||||
- 返回说明:包围盒的大小向量,如果物体没有几何体则返回 null
|
||||
|
||||
#### `getBoundingBoxCenter(object: THREE.Object3D): THREE.Vector3 | null`
|
||||
|
||||
- 作用:计算物体包围盒的中心点
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要计算中心点的物体 |
|
||||
|
||||
- 出参:`THREE.Vector3 \| null`
|
||||
- 返回说明:包围盒的中心点向量,如果物体没有几何体则返回 null
|
||||
|
||||
#### `getBoundingBoxFaceCenters(object: THREE.Object3D): { YF: THREE.Vector3; YB: THREE.Vector3; ZU: THREE.Vector3; ZD: THREE.Vector3; XL: THREE.Vector3; XR: THREE.Vector3; } | null`
|
||||
|
||||
- 作用:计算物体包围盒的六个面中心点
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要计算面中心点的物体 |
|
||||
|
||||
- 出参:`{ YF: THREE.Vector3; YB: THREE.Vector3; ZU: THREE.Vector3; ZD: THREE.Vector3; XL: THREE.Vector3; XR: THREE.Vector3; } \| null`
|
||||
- 返回说明:六个面的中心点对象,如果物体没有几何体则返回 null
|
||||
|
||||
#### `queryObjectsByName(scene: THREE.Object3D, name: string, exactMatch: boolean = false): THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
|
||||
- 作用:遍历场景并查询对象名称
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `scene` | `THREE.Object3D` | 是 | 要查询的场景或对象 |
|
||||
| `name` | `string` | 是 | 查询的名称 |
|
||||
| `exactMatch` | `boolean` | 否 | 是否精确匹配(true: === 匹配, false: 模糊匹配) |
|
||||
|
||||
- 出参:`THREE.Object3D<THREE.Object3DEventMap>[]`
|
||||
- 返回说明:匹配的对象列表
|
||||
|
||||
#### `setUserDataProperty(object: THREE.Object3D, key: string, value: any): void`
|
||||
|
||||
- 作用:给 Three.js 对象设置 userData 属性
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要设置属性的对象 |
|
||||
| `key` | `string` | 是 | 属性名 |
|
||||
| `value` | `any` | 是 | 属性值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `removeUserDataProperty(object: THREE.Object3D, key: string): void`
|
||||
|
||||
- 作用:从 Three.js 对象中移除 userData 属性
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要移除属性的对象 |
|
||||
| `key` | `string` | 是 | 属性名 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setSelectionExclude(object: THREE.Object3D, exclude: boolean = true): void`
|
||||
|
||||
- 作用:给 Three.js 对象设置 meta 中的是否选择排除属性
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要设置属性的对象 |
|
||||
| `exclude` | `boolean` | 否 | 是否排除选择 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setSceneTreeExclude(object: THREE.Object3D, exclude: boolean = true): void`
|
||||
|
||||
- 作用:给 Three.js 对象设置 meta 中的是否场景树排除属性
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要设置属性的对象 |
|
||||
| `exclude` | `boolean` | 否 | 是否排除场景树 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setExcludeAll(object: THREE.Object3D, exclude: boolean = true): void`
|
||||
|
||||
- 作用:同时设置选择排除和场景树排除属性
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要设置属性的对象 |
|
||||
| `exclude` | `boolean` | 否 | 是否排除,默认为 true |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setHiddenAndUnselectable(object: THREE.Object3D): void`
|
||||
|
||||
- 作用:设置对象不可在树菜单显示且不可选择
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要设置属性的对象 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `handleMaterialOpacity(object: THREE.Object3D, material: THREE.Material, opacity: number): void`
|
||||
|
||||
- 作用:处理单个材质的透明度
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 目标对象。 |
|
||||
| `material` | `THREE.Material` | 是 | 要处理的材质 |
|
||||
| `opacity` | `number` | 是 | 透明度值,范围 0-1 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `setOpacity(object: THREE.Object3D, opacity: number): void`
|
||||
|
||||
- 作用:设置 Opacity。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 目标对象。 |
|
||||
| `opacity` | `number` | 是 | 参数 `opacity`,类型为 `number`。 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
#### `getOpacity(mesh: THREE.Mesh, materialIndex: number = 0): number`
|
||||
|
||||
- 作用:获取对象的透明度值
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `mesh` | `THREE.Mesh` | 是 | 要获取透明度的 Mesh 对象 |
|
||||
| `materialIndex` | `number` | 否 | 材质索引,当材质为数组时使用,默认为 0 |
|
||||
|
||||
- 出参:`number`
|
||||
- 返回说明:透明度值,范围 0-1
|
||||
|
||||
#### `getPoints(points: Array<THREE.Vector3 | { x: number; y: number; z: number }>): THREE.Vector3[]`
|
||||
|
||||
- 作用:获取 Points。
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `points` | `Array<THREE.Vector3 \| { x: number; y: number; z: number }>` | 是 | 参数 `points`,类型为 `Array<THREE.Vector3 \| { x: number; y: number; z: number }>`。 |
|
||||
|
||||
- 出参:`THREE.Vector3[]`
|
||||
- 返回说明:返回数组结果,元素类型为 `THREE.Vector3`。
|
||||
|
||||
#### `setRenderOrder(object: THREE.Object3D, defaultRenderOrder: number, specificMeshes?: Array<{ name: string, renderOrder: number }>): void`
|
||||
|
||||
- 作用:设置场景中网格的渲染顺序
|
||||
|
||||
- 入参:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `object` | `THREE.Object3D` | 是 | 要遍历的根对象 |
|
||||
| `defaultRenderOrder` | `number` | 是 | 所有网格的默认渲染顺序值 |
|
||||
| `specificMeshes` | `Array<{ name: string, renderOrder: number }>` | 否 | 可选的特定网格数组及其渲染顺序值 |
|
||||
|
||||
- 出参:`void`
|
||||
- 返回说明:无返回值。
|
||||
|
||||
## 构造示例
|
||||
|
||||
- 当前 Demo 中没有直接展示 `Tool` 的构造调用。
|
||||
|
||||
## 函数示例
|
||||
|
||||
### `Tool.defineMaterialOpacityMapping`
|
||||
|
||||
- 来源:`packages/demo/src/hooks/Bus.ts`
|
||||
|
||||
```ts
|
||||
setSection(section: ParametricBox | THREE.Mesh) {
|
||||
Tool.defineMaterialOpacityMapping(section);
|
||||
this.section = section;
|
||||
}
|
||||
```
|
||||
|
||||
### `Tool.setSelectionExclude`
|
||||
|
||||
- 来源:`packages/demo/src/components/SceneTree.vue`
|
||||
|
||||
```ts
|
||||
if (object) {
|
||||
Tool.setSelectionExclude(object, selectable);
|
||||
}
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### `Tool.setExcludeAll`
|
||||
|
||||
- 来源:`packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
|
||||
|
||||
```ts
|
||||
let defaultExcavationTunnel = new ParametricArch(viewer, {
|
||||
...geometrySettings,
|
||||
animate:false
|
||||
});
|
||||
defaultExcavationTunnel.name = "机器人开挖隧道碰撞体";
|
||||
defaultExcavationTunnel.visible = false;
|
||||
Tool.setExcludeAll(defaultExcavationTunnel)
|
||||
viewer.rangeCullingManager.add(defaultExcavationTunnel);
|
||||
```
|
||||
|
||||
## Demo 参考
|
||||
|
||||
### `Tool`
|
||||
|
||||
以下示例文件中可以看到该 API 的实际调用方式:
|
||||
|
||||
- `packages/demo/src/components/SceneTree.vue`
|
||||
- `packages/demo/src/hooks/Bus.ts`
|
||||
- `packages/demo/src/hooks/useDebug.ts`
|
||||
- `packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
|
||||
- `packages/demo/src/views/GeothermalScene.vue`
|
||||
- `packages/demo/src/views/GoldMineScene.vue`
|
||||
- `packages/demo/src/views/OilGasScene.vue`
|
||||
- `packages/demo/src/views/TunnelScene.vue`
|
||||
|
||||
Reference in New Issue
Block a user