Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

get1024/SharpDX_PCV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

8 Commits

Repository files navigation

SharpDX_PCV - 3D Point Cloud Visualization

项目概述

SharpDX_PCV 是一个基于 WPFSharpDX 技术的高性能 3D 点云可视化应用程序。该项目专为处理大规模点云数据而设计,提供了直观的 3D 可视化界面、智能数据处理算法和优化的渲染性能。

主要应用场景包括:

  • 激光扫描数据可视化
  • 工业测量数据分析
  • 3D 建模和重建
  • 科研数据可视化

项目展示

txt 点云数据展示 stl 模型展示
txt 点云数据展示 stl 模型展示
txt 动态降采样 txtstl
txt 动态降采样 txt 转 stl

Note

这里注意到由 txt 转变得到的 stl 十分不理想,这也是未来需要优化的部分。

技术栈

  • 框架: .NET 8.0 (Windows)
  • UI技术: WPF (Windows Presentation Foundation)
  • 3D渲染: HelixToolkit.Wpf.SharpDX 2.27.0
  • 图形API: SharpDX (DirectX 11)
  • 开发语言: C# 12.0
  • 构建工具: MSBuild / Visual Studio

核心功能特性

点云数据处理

  • 多格式支持: 支持常见的点云文件格式 (TXT, CSV)
  • 大数据集处理: 优化的内存管理,支持百万级点云数据
  • 实时预览: 快速加载和预览点云数据
  • STL转换: 集成Python算法,支持点云到STL模型的转换

多文件批量处理

  • 批量加载: 支持同时加载多个点云文件
  • 智能合并: 自动合并多个文件的点云数据
  • 用户交互: 提供"继续添加"或"重新开始"选择

10级智能降采样系统

  • 体素网格算法: 基于体素网格的高效降采样
  • 10级精度控制: 从95%保留率到10%保留率的精细控制
  • 智能体素计算: 自动计算最优体素大小
  • 实时反馈: 显示降采样效果和统计信息

流式渲染优化

  • 首帧快速渲染: 优先渲染前20,000个点,提升用户体验
  • 批量流式处理: 大数据集分批渲染,避免UI阻塞
  • 智能阈值: 超过100,000点自动启用流式渲染
  • 进度反馈: 实时显示渲染进度

全局坐标变换

  • 大坐标值处理: 解决大坐标值导致的渲染精度问题
  • 自动归一化: 智能计算边界和缩放比例
  • 中心化处理: 将点云中心移动到原点
  • 自适应缩放: 将数据缩放到最优渲染范围

增强错误处理

  • 分类异常处理: 针对不同异常类型提供专项处理
  • 内存监控: 预估内存使用,提供大数据加载警告
  • 用户友好提示: 详细错误信息和解决建议
  • 文件预检查: 加载前验证文件存在性和大小

点云到STL转换

  • Python集成: 使用Open3D库进行高质量三角剖分
  • 平面检测: RANSAC算法检测平面区域,避免过度三角化
  • 混合重建: 平面四角化 + 非平面区域精细重建
  • 自动保存: 转换完成后自动保存到指定目录
  • 进度反馈: 实时显示转换进度和统计信息

安装和构建

前置要求

  1. 安装 .NET 8.0 SDK
  2. 安装 Visual Studio 2022 或 Visual Studio Code (可选)
  3. 安装 Python 3.12+ (用于STL转换功能)
  4. 安装 Python 依赖包: pip install open3d numpy scipy

构建步骤

# 1. 克隆项目
git clone https://github.com/get1024/SharpDX_PCV.git
# 2. 还原依赖包
dotnet restore
# 3. 构建项目
dotnet build --configuration Release
# 4. 运行应用程序
dotnet run --project SharpDX_PCV

Visual Studio 构建

  1. 打开 SharpDX_PCV.sln 解决方案文件
  2. 选择 Release 配置
  3. Ctrl+Shift+B 构建解决方案
  4. F5 运行应用程序

使用指南

基本操作流程

1. 加载点云文件

  • 点击 "打开文件" 按钮
  • 选择点云文件(支持多选)
  • 选择加载模式:
    • 重新开始: 清空现有数据,加载新文件
    • 继续添加: 将新文件添加到现有数据

2. 调整显示效果

  • 使用 降采样滑块 调整点云密度(1-10级)
  • 鼠标操作:
    • 右键拖拽: 旋转视角
    • 滚轮: 缩放视图

3. 点云转STL

  • 选择输出目录
  • 点击 "点云→STL" 按钮
  • 系统自动转换并保存STL文件
  • 右侧面板显示转换后的3D模型

4. 查看统计信息

  • 状态栏显示:
    • 当前点数 / 总点数
    • 降采样比例
    • 全局变换信息
    • 渲染状态
    • STL转换进度

高级功能

大数据集处理

  • 系统自动检测大数据集(>100,000点)
  • 启用流式渲染优化
  • 显示内存使用警告
  • 提供首帧快速预览

多文件工作流

  1. 加载第一个文件
  2. 点击"打开文件"继续添加
  3. 选择"继续添加"模式
  4. 系统自动合并和优化显示

支持的文件格式

输入格式

  • TXT (文本格式点云): 支持空格、制表符、逗号分隔
  • CSV (Comma-separated values): 标准CSV格式
  • STL (外部STL文件): 用于对比和显示

输出格式

  • STL (STereoLithography): 自动生成的3D模型文件

性能优化特性

内存优化

  • 智能内存管理: 预估和监控内存使用
  • 分批处理: 大数据集分批加载和处理
  • 垃圾回收优化: 及时释放不需要的资源

渲染优化

  • 全局坐标变换: 解决大坐标值精度问题
  • 体素网格降采样: 高效的点云简化算法
  • 流式渲染: 分批渲染避免UI阻塞
  • 首帧优化: 快速显示部分数据提升体验

算法优化

  • 并行处理: 利用多核处理器加速计算
  • 异步操作: 非阻塞的文件加载和数据处理
  • 智能缓存: 缓存计算结果避免重复计算

项目结构

SharpDX_PCV/
├── SharpDX_PCV/
│ ├── MainWindow.xaml # 主窗口UI定义
│ ├── MainWindow.xaml.cs # 主窗口逻辑实现
│ ├── PointCloudVisualizer.cs # 3D可视化组件
│ ├── PointCloudFileLoader.cs # 文件加载组件
│ ├── pyFunc/ # Python转换模块
│ │ ├── pointcloud_to_stl.py # 点云转STL核心算法
│ │ ├── pyproject.toml # Python项目配置
│ │ └── .venv/ # Python虚拟环境
│ └── App.xaml # 应用程序配置
├── SharpDX_PCV.sln # Visual Studio解决方案
└── README.md # 项目文档

核心组件说明

  • MainWindow: 主界面和用户交互逻辑
  • PointCloudVisualizer: 3D渲染和可视化
  • PointCloudFileLoader: 文件格式解析和数据加载
  • pyFunc: Python转换模块,负责点云到STL的转换

开发信息

版本历史

  • v1.0.0: 基础点云可视化功能
  • v1.1.0: 添加多文件支持和降采样
  • v1.2.0: 实现流式渲染和性能优化
  • v1.3.0: 添加全局变换和增强错误处理
  • v1.4.0: 集成Python STL转换功能,优化用户界面

待办事项 (TODO)

  • Python算法优化: 进一步优化点云转STL的Python算法,提升转换质量和速度
  • 支持更多点云文件格式 (PLY, PCD等)
  • 添加点云编辑功能 (裁剪、滤波等)
  • 实现批量STL转换功能
  • 添加转换参数自定义界面

贡献指南

  1. Fork 项目仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

联系信息


最后更新: 2025年07月31日

About

A point cloud(XYZ, CSV, STL) display software based on HelixToolKit.SharpDX; WPF program built using Csharp;

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /