feat(all): init commit
This commit is contained in:
@@ -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