65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
# 实现方案 - 2026-05-07-17-05-43
|
||
|
||
## 修改目标
|
||
|
||
将 3D 模型显示档位由 `预览 / 标准 / 精细 / 超精细` 改为 `标准 / 精细 / 超精细 / 实体`,并让 `实体` 更接近完整 STL 面片渲染。
|
||
|
||
## 涉及路径
|
||
|
||
- `WebSite/src/components/ProjectLibrary.tsx`
|
||
- `WebSite/server.ts`
|
||
|
||
## 技术路线
|
||
|
||
### 1. 更新档位类型和配置
|
||
|
||
- 将 `SolidityLevel` 从 `preview | standard | fine | ultra` 改为 `standard | fine | ultra | solid`。
|
||
- 删除 `预览` 选项。
|
||
- 新增 `实体` 选项。
|
||
- 设置 `实体` 的 `limit` 为更高值,尽量覆盖默认 9 个 STL 的完整三角面。
|
||
|
||
### 2. 提升后端 STL preview 上限
|
||
|
||
- 后端 `createStlPreview()` 当前最大抽样上限为 `72000`。
|
||
- 将上限提升到 `200000`,支持实体档位请求更多三角面。
|
||
- 继续保留 `sampleLimit` clamp,避免异常超大请求拖垮服务。
|
||
|
||
### 3. 优化实体档位材质
|
||
|
||
- 在 `NativeStlViewer` 中判断当前档位是否为 `solid`。
|
||
- `solid` 档位下使用更高的不透明度下限,例如 `0.92`,增强实体感。
|
||
- 其他档位继续使用构件层级中的用户透明度设置。
|
||
|
||
## 数据流或交互流程
|
||
|
||
1. 用户点击 `实体`。
|
||
2. 前端 `solidityLevel` 切换为 `solid`。
|
||
3. `selectedSolidity.limit` 变大,`NativeStlViewer` 重新请求 STL preview。
|
||
4. 后端按更高上限返回更多三角面和稳定 `bounds`。
|
||
5. 前端以实体材质重新渲染模型。
|
||
|
||
## 兼容性与回滚方案
|
||
|
||
- 若实体档位渲染压力过大,可降低 `solid.limit` 或后端最大上限。
|
||
- 若用户仍需要低质量快速预览,可恢复 `preview` 配置。
|
||
|
||
## 预计文件变更
|
||
|
||
- `WebSite/src/components/ProjectLibrary.tsx`
|
||
- 更新 `SolidityLevel`、`solidityOptions`。
|
||
- `NativeStlViewer` 增加 `solidMode` 参数。
|
||
- 实体档位材质增强不透明度。
|
||
- `WebSite/server.ts`
|
||
- 提升 STL preview 最大抽样上限。
|
||
|
||
## 人工审核状态
|
||
|
||
- 本次免二次确认,方案写入后直接执行。
|
||
|
||
## 执行结果
|
||
|
||
- 已删除 `模型显示` 中的 `预览` 档位。
|
||
- 已新增 `实体` 档位,前端请求上限为 `200000`。
|
||
- 已将后端 STL preview 最大抽样上限从 `72000` 提升到 `200000`。
|
||
- 已在实体档位提高材质不透明度下限,增强实体面片视觉。
|