# 需求分析 - 2026-05-07-16-53-23 ## 原始需求摘要 用户要求继续严格使用代码编纂工作流处理 3D 模型位姿问题,本次无需人工二次确认: 1. 单击旋转 X/Y/Z 效果正常,但旋转后切换 `模型显示` 的预览/标准/精细/超精细时,模型位置会明显偏移。 2. 使用鼠标拖拽旋转时,旋转中心感觉没有落在模型内部中心。 3. 将 `重置平移缩放位姿` 的字体颜色改为与 `重置旋转位姿` 一致。 4. 右下角坐标系需要随着旋转位姿变化而同步旋转。 ## 业务目标 - 让 3D 模型在切换显示细节档位时保持当前视觉中心稳定,不出现跳走或离谱偏移。 - 让鼠标拖拽旋转围绕模型自身中心进行,而不是绕画布或偏移点旋转。 - 保持两个重置按钮视觉层级一致。 - 右下角坐标系成为真实的当前位姿方向参考。 ## 输入与输出 输入: - 用户在 `项目库 - 3D 模型` 中切换模型显示细节档位。 - 用户通过滑块、快捷按钮、鼠标拖拽调整旋转位姿。 - 用户点击重置按钮。 输出: - 切换 `预览/标准/精细/超精细` 后模型仍围绕同一中心展示。 - 鼠标拖拽旋转时模型围绕内部几何中心旋转。 - `重置平移缩放位姿` 与 `重置旋转位姿` 文字颜色一致。 - 右下角 X/Y/Z 坐标系随 `rotateX/Y/Z` 变化同步旋转。 ## 影响范围 - `WebSite/src/components/ProjectLibrary.tsx` - `NativeStlViewer` 中 Three.js 模型中心化、相机、渲染层级、重载逻辑。 - 鼠标拖拽旋转的状态更新方式。 - 右下角坐标系 overlay。 - 整体位姿按钮样式。 ## 风险点 - 若渲染容器重建时没有清理旧 DOM,可能出现 overlay 被清空或事件丢失。 - 若每个 STL 文件分别中心化,会破坏拼装关系;必须使用所有可见 STL 的整体包围盒中心。 - 若切换细节档位后继承了旧平移/缩放,但新模型 baseScale 不一致,视觉上仍可能变化,需要保持统一相机距离和 pivot 中心。 - HTML 坐标轴用 CSS 旋转只近似表达 3D 方位;更可靠方案是用 SVG 根据旋转矩阵投影三轴。 ## 待确认问题 - 本次用户已明确“需求分析、实现方案、测试方案、执行修改都不用人工二次确认”,因此直接执行。 ## 人工审核状态 - 本次免二次确认。