Commit Graph

219 Commits

Author SHA1 Message Date
805814616a feat(voxel): 阶段1.5 - 体素网格可视化验证
实现内容:
- 创建 VoxelGridVisualizer 类,支持多种可视化模式
- VisualizeAsPoints(): 完整网格可视化(支持采样率)
- VisualizeSlice(): 单层切片可视化
- VisualizeBoundary(): 障碍物边界可视化
- ConvertToPathRoute(): 转换为 PathRoute 以便集成到现有渲染系统
- QuickVisualizationTest(): 快速测试套件
- GenerateVisualizationReport(): 文本报告生成

设计策略:
- 复用现有 PathPointRenderPlugin,而非创建新的 RenderPlugin
- 将体素转换为 PathPoint 对象进行渲染
- 使用小球体表示体素,不同颜色区分类型

完成情况:
-  编译通过,无错误
-  阶段 1 全部 5 个任务完成 (100%)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 13:38:57 +08:00
f64e79d372 feat(voxel): 阶段1.4 - 测试 geometry4Sharp 的 MeshSignedDistanceGrid
- 创建 MeshSDFTester.cs: 测试 geometry4Sharp 库的可用性和功能
- 实现 Navisworks Triangle3D 到 DMesh3 的转换
- 实现 MeshSignedDistanceGrid (SDF) 计算功能
- 添加库可用性快速测试方法
- 手动构建测试立方体网格

特性(原型版本):
- QuickLibraryTest(): 验证 geometry4Sharp 库是否正常工作
- ConvertToDMesh3(): 将 Navisworks 三角形转换为 DMesh3 格式
- ComputeSDF(): 计算签名距离场(使用 DMeshAABBTree3 加速)
- TestFullPipeline(): 完整测试流程(ModelItem → 三角形 → DMesh3 → SDF)
- CreateTestCubeMesh(): 手动创建测试立方体

注意:
- 这是原型版本,部分 SDF 距离查询 API 需要进一步研究
- 验证了 DMesh3, DMeshAABBTree3, MeshSignedDistanceGrid 基本可用
- 与 GeometryHelper.ExtractTriangles() 集成

下一步: 体素可视化验证(阶段1.5)或根据实际需求调整
2025-10-12 13:20:29 +08:00
40946091dd docs(voxel): 更新任务跟踪 - 任务1.3已完成
- 标记任务 1.3(实现简单体素化原型)为已完成
- 更新总体进度:3/17 任务完成(18%)
- 更新阶段 1 进度:3/5 任务完成(60%)
- 添加变更日志:VoxelGridGenerator 360行代码完成

完成情况:
- 包围盒体素化算法实现
- 物流类型自动识别
- 障碍物膨胀功能
- 单位自动转换
- 性能统计日志
2025-10-12 11:47:01 +08:00
064945bfa6 feat(voxel): 阶段1.3 - 实现简单体素化原型 (VoxelGridGenerator)
- 创建 VoxelGridGenerator.cs: 从 BIM 模型生成体素网格
- 使用包围盒方法进行简单体素化(阶段1原型版本)
- 支持障碍物膨胀(车辆半径)
- 自动识别物流元素类型(从属性或名称推断)
- 详细的性能日志和统计信息
- 包含 CreateTestGrid() 快速测试方法

特性:
- 包围盒体素化算法
- 物流类型自动识别(门、楼梯、电梯、通道、障碍物)
- 体素膨胀处理(仅对障碍物)
- 单位自动转换(米 → 模型单位)
- 完整的 XML 中文注释(360行代码)

性能:
- 支持大规模场景处理
- 详细的时间统计和进度日志

下一步: 测试 MeshSignedDistanceGrid(阶段1.4)
2025-10-12 11:45:38 +08:00
aece9fbbe1 docs(voxel): 更新任务跟踪文档 - 任务1.1和1.2已完成
- 标记任务 1.1(安装 geometry4Sharp)为已完成
- 标记任务 1.2(创建 VoxelGrid 基础数据结构)为已完成
- 更新总体进度:2/17 任务完成(12%)
- 更新阶段 1 进度:2/5 任务完成(40%)
- 添加变更日志条目

完成情况:
- VoxelCell.cs: 167 行代码
- VoxelGrid.cs: 365 行代码
- 完整的 XML 中文注释
- 编译通过,无错误
2025-10-12 11:27:29 +08:00
c9ca6b4d32 feat(voxel): 阶段1.2 - 创建 VoxelGrid 基础数据结构
- 创建 VoxelCell.cs: 体素单元类,包含类型、通行性、距离、成本等属性
- 创建 VoxelGrid.cs: 3D体素网格类,包含坐标转换、邻域查询、统计信息等方法
- 添加到 NavisworksTransportPlugin.csproj 编译项
- 编译成功验证

特性:
- VoxelCell: 物流属性集成,SDF距离存储,成本计算方法
- VoxelGrid: 世界坐标↔体素索引转换,6/26邻域查询,欧几里得/曼哈顿距离计算
- 完整的 XML 文档注释(中文)

下一步: 实现简单体素化原型
2025-10-12 11:25:45 +08:00
0a61057476 feat(voxel): 阶段1.1 - 添加 geometry4Sharp 1.0.0 NuGet 包
- 安装 geometry4Sharp 1.0.0
- 更新 packages.config
- 添加 DLL 引用到 NavisworksTransportPlugin.csproj
- 使用 net48 版本确保 .NET Framework 4.8 兼容性

依赖项: packages\geometry4Sharp.1.0.0\lib\net48\geometry4Sharp.dll

下一步: 创建 VoxelGrid 基础数据结构
2025-10-12 11:22:52 +08:00
2b0b13c43a docs(voxel): 添加体素网格路径规划任务跟踪文档
- 创建详细的 4 阶段任务清单(17 个子任务)
- 每个任务包含:工作量、验收标准、阻塞问题
- 包含风险管理、进度跟踪、决策流程
- 包含 Git 工作流和提交规范

文件位置: doc/working/voxel_pathfinding_task_tracker.md
2025-10-12 11:15:55 +08:00
dd991d38ce 增加体素网格和GPU加速2个可行性方案 2025-10-12 11:05:29 +08:00
455450726c 修复斜线优化有高度差的路径点的问题。 2025-10-12 01:12:31 +08:00
37f03362c4 修复参数配置错误和门网格高度层缺失错误 2025-10-11 18:39:06 +08:00
a938afd946 对齐配置参数 2025-10-11 17:36:33 +08:00
7343133f12 增加了配置管理功能,配置文件保存为toml格式,可在配置窗口编辑;实现了日志级别管理功能 2025-10-11 12:18:33 +08:00
a46568f43e 版本升级到0.13.0:
1、核心突破
3D路径规划系统 - Graph替代Grid,真正的3D路径规划
高度层网格 - 支持楼梯、斜面等复杂多层场景
网格膨胀算法 - 障碍物和边界分离计算,提高精度
2、新增功能
SQLite数据库集成 - 路径分析、碰撞报告存储
导航地图生成 - 场景图片导出功能
无关项过滤 - 新物流类型,提高规划效率
3、性能优化
网格缓存机制 - 大幅提高路径规划速度
高度处理完善 - 斜面路径、楼梯网格生成
几何体过滤 - 避免误判障碍物
4、架构清理
删除冗余UIStateMachine、未使用的WPF Services
删除所有向后兼容代码
简化自动寻路代码,提升可读性
2025-10-11 10:03:22 +08:00
df1885a352 完善了膨胀算法,把障碍物和边界分开计算 2025-10-10 23:51:13 +08:00
83a4a0e7aa 修改楼梯场景路径不能到达却显示到达的bug 2025-10-10 23:27:46 +08:00
2464f17092 修改楼梯边界膨胀的bug 2025-10-10 21:19:13 +08:00
8b5e2baf23 修改网格生成和路径规划中的bug 2025-10-10 18:42:21 +08:00
9ea89aa8d0 修改了膨胀算法,识别多层的边界进行膨胀。给每层增加了IsWalkable。 2025-10-10 14:54:47 +08:00
a4eaf46723 支持多层可视化,并解决楼梯下高度不足的区域网格可视化的问题 2025-10-10 11:51:05 +08:00
59ecebebc4 支持了3D障碍物投影 2025-10-10 11:03:38 +08:00
3cc840b183 删掉serena的提示词 2025-10-10 09:44:29 +08:00
163986f9e5 完善了安全优先和直线优先的算法,去掉了cell.WorldPosition,但高度层引起的问题还需要进一步完善 2025-10-10 02:45:20 +08:00
88712cc156 完善A*算法,用graph代替grid,用3D来进行路径规划。 2025-10-10 01:27:56 +08:00
ed7bc13866 为安全优先和直线优先增加高度层支持。 2025-10-09 19:07:34 +08:00
df6ba1c51e 改进了A*算法中对高度层的处理,初步做到路径优先下从楼面爬上楼梯(楼梯缺少障碍物网格) 2025-10-09 18:29:36 +08:00
9ccf925964 给网格增加了高度层概念,试图支持楼面上的楼梯,还不完善 2025-10-08 23:56:59 +08:00
a8e8760e2b 修改Gridmap缓存重建机制,考虑所有物流构件变化 2025-10-07 15:57:30 +08:00
f5d1361146 增加一个“无关项”的物流类型,用于过滤如地基、建筑结构等与物流无关的构件 2025-10-06 21:31:09 +08:00
8cd988279f 把碰撞报告保存到数据库,修改碰撞报告格式 2025-10-05 19:07:23 +08:00
e46931311f 将最大宽度、长度、高度、安全间隙、网格尺寸,加入路径保存内容。 2025-10-04 21:26:49 +08:00
6091b794de 实现了基本的路径分析功能,增加了文档关联的sqllite数据库 2025-10-03 16:28:02 +08:00
4357b91446 更新serena mcp的使用原则 2025-09-30 22:54:30 +08:00
2de531e98c 阶段二:合并动画管理器
合并策略:
- 保留 PathAnimationManager(实际使用的Transform-based动画引擎)
- 删除 LogisticsAnimationManager(SavedViewpoint功能完全未使用)
- 将碰撞排除列表缓存功能迁移到PathAnimationManager

变更详情:
1. PathAnimationManager.cs
   - 添加碰撞排除列表缓存管理字段
   - 迁移PrecomputeCollisionExclusions等5个方法
   - 添加using NavisworksTransport.Utils

2. AnimationControlViewModel.cs
   - 移除_logisticsAnimationManager字段
   - 将所有缓存调用改为_pathAnimationManager

3. StartAnimationCommand.cs
   - 移除未使用的LogisticsAnimationManager参数

4. 删除文件
   - src/Core/Animation/LogisticsAnimationManager.cs (542行)
   - 从NavisworksTransportPlugin.csproj移除引用

代码减少:约342行(542删除 - 200迁移)
编译验证: 成功

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 22:32:59 +08:00
5c98598311 阶段五:删除已集成的UI文档片段和添加清理总结
删除:
- path_visualization_ui.txt (内容已集成到SystemManagementView.xaml)

新增:
- doc/working/cleanup_summary.md (详细的清理总结报告)

清理总成果:
- 删除文件:5个
- 删除代码:约3753行
- 编译状态: 成功

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 22:22:50 +08:00
4ddaa0603d 阶段四:删除所有向后兼容代码
删除的旧版兼容代码:
1. PathAnimationManager.cs
   - AnimationCompleted事件声明 (line 143-144)
   - AnimationCompleted事件触发 (line 901-902)

2. ModelSplitterManager.cs
   - GenerateFileName旧版重载方法 (line 1583-1593)

3. LayerManagementViewModel.cs
   - GenerateFileName旧版重载方法 (line 1711-1721)

遵循"明确拒绝向后兼容性"原则,统一使用新版本API

编译验证通过

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 22:21:41 +08:00
52bb3da0eb 阶段三:删除未使用的WPF Services
删除的文件:
- src/UI/WPF/Services/DataBindingBestPractices.cs (0次外部引用)
- src/UI/WPF/Services/CrossViewModelSynchronizer.cs (仅被BestPractices使用)
- src/UI/WPF/Collections/VirtualizedObservableCollection.cs (仅被BestPractices引用)

更新:
- 从NavisworksTransportPlugin.csproj中移除引用

编译验证通过

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 22:20:29 +08:00
b048235657 阶段一:删除冗余的UIStateMachine
- 删除 src/Core/UIStateMachine.cs
- UIStateMachine和UIState枚举完全未使用
- 项目实际使用PathEditState作为状态管理
- 编译验证通过,无任何错误

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 22:17:48 +08:00
47ade72438 简化了自动寻路代码 2025-09-30 00:22:28 +08:00
64211439a8 修改了世界坐标转换到网格坐标(四舍五入) 2025-09-30 00:03:03 +08:00
3f2d66c255 测试和修改A*返回的坐标转换的问题 2025-09-29 23:25:21 +08:00
95bf6e839b 增加生成导航地图的功能,把当前路径场景保存成图片 2025-09-29 14:20:54 +08:00
e061ec4318 修改z值的判断为通道网格z值的最小和最大值 2025-09-29 10:48:21 +08:00
37e7a31a55 修改了障碍物高度判断条件 2025-09-28 20:37:57 +08:00
06faf04b83 用通道的高度范围+车辆高度+安全间隙作为过滤范围。 2025-09-28 20:10:59 +08:00
3b1fae6a1e 实现了路径在斜面(如楼梯)上的规划 2025-09-28 17:46:16 +08:00
8a95820fca 修改了通道网格生成的高度设置,能在斜面上生成网格,可视化也对了 2025-09-28 16:20:04 +08:00
cd74f857a2 对生成的网格地图进行了缓存,提高路径规划速度 2025-09-27 22:50:52 +08:00
c9b7acbd0a 增加过滤snappoints类型几何体 2025-09-24 02:35:30 +08:00
504a2c9862 扫描障碍物时,使用包围盒中心下面的通道网格z高度,进行高度范围筛选。
几何体除了三角形外,还有线形(也许有点、SnapPoints、文字等),要过滤掉,否则也被当成障碍物。
2025-09-24 02:25:25 +08:00