Skip to content

Case-WPF-PCV/WPF_PCV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README.md

一个使用 WPF(Windows Presentation Foundation)开发的桌面应用程序,支持点云加载、显示、采样、可视化切片等功能。项目集成了 HelixToolkit.Wpf.SharpDXOxyPlot 等图形可视化组件,适合于 3D 图形处理、计算机视觉、工程教学与科研应用等场景。

点云查看模块效果如图 参数提取页面效果如图

parameter.xaml.cs的功能逻辑图

graph TD
    A[用户点击加载文件] --> B[OpenFile_Click]
    B --> C[选择文件对话框]
    C --> D{文件选择成功?}
    D -->|是| E[LoadPointCloudFileAsync]
    D -->|否| Z[结束]
    
    E --> F[ResetRenderingState]
    F --> G[ParseFileAsync - 异步解析]
    G --> H[CalculateGlobalTransform - 计算全局变换]
    H --> I[StartStreamingRender - 开始流式渲染]
    
    I --> J[RenderFirstChunk - 渲染首块]
    J --> K[ApplyGlobalTransform]
    K --> L[CreatePointCloudVisualizationVector3]
    L --> M[ContinueStreamingRender - 继续流式渲染]
    
    M --> N{还有数据块?}
    N -->|是| O[RenderNextChunk]
    O --> P[ApplyGlobalTransform]
    P --> Q[AddPointsToVisualization]
    Q --> N
    N -->|否| R[OnStreamingComplete - 流式完成]
    
    R --> S[AdjustCameraToFitPointCloudPublic]
    S --> T[ApplyDownsamplingAndRefresh]
    T --> U[BuildSliceDataInBackground - 后台构建切片]
    
    U --> V[DetectSliceAxis - 轴向检测]
    V --> W{检测结果}
    W -->|Z轴分层| X[ExtractUniqueLevels - Z轴]
    W -->|Y轴分层| Y[ExtractUniqueLevels - Y轴]
    
    X --> AA[BuildSlicesFromLevels - Z轴切片]
    Y --> BB[BuildSlicesFromLevels - Y轴切片]
    AA --> CC[ApplySliceDataToUI]
    BB --> CC
    
    CC --> DD[UpdateSliceView]
    CC --> EE[PopulateSectionListBox]
    DD --> FF[CreateSliceScatterSeries]
    EE --> GG[显示切片列表]
    
    %% 用户交互流程
    HH[用户双击切片列表] --> II[SectionListBox_MouseDoubleClick]
    II --> JJ[Update3DViewWithSelectedLayer]
    JJ --> KK[CreateSelectedLayerVisual - 红色高亮]
    
    LL[用户点击上一个切片] --> MM[BtnPrevSlice_Click]
    NN[用户点击下一个切片] --> OO[BtnNextSlice_Click]
    MM --> PP[NavigateToSlice]
    OO --> PP
    PP --> DD
    PP --> JJ
    
    %% 降采样控制
    QQ[用户调整降采样级别] --> RR[DownsampleLevelUpDown_ValueChanged]
    RR --> SS[ApplyDownsamplingAndRefresh]
    SS --> TT[VoxelGridDownsample]
    TT --> UU[更新3D显示]
    
    %% 异步处理流程
    subgraph "异步处理"
        G
        U
        I
        M
    end
    
    %% 数据流向
    subgraph "数据模型"
        VV[fullPoints - 完整数据]
        WW[renderPoints - 渲染数据]
        XX[slices2D - 2D切片]
        YY[sliceLevels - 层级数据]
    end
    
    G --> VV
    TT --> WW
    AA --> XX
    BB --> XX
    X --> YY
    Y --> YY
    
    style A fill:#e1f5fe
    style U fill:#fff3e0
    style V fill:#f3e5f5
    style I fill:#e8f5e8
    style CC fill:#fff8e1
Loading

📦 功能特性

  • ✅ 加载本地 .txt 点云数据
  • ✅ 支持点云降采样(体素网格法、随机等)
  • ✅ 支持点云的 2D 和 3D 可视化显示
  • ✅ 支持图像切片展示(基于投影平面)
  • ✅ HelixToolkit 进行 3D 交互展示
  • ✅ OxyPlot 显示统计曲线和切片图

🛠️ 技术栈

  • 框架:WPF (.NET Framework 4.8)
  • 渲染:HelixToolkit.Wpf.SharpDX, OxyPlot.Wpf
  • 开发语言:C#
  • 项目管理:Visual Studio 2022

📁 项目结构说明

WPF_PCV/
│  App.xaml             # 应用程序入口
│  index.xaml           # 主窗口界面
│  index.xaml.cs        # 主窗口逻辑
│  packages.config      # NuGet 包配置
│  WPF_PCV.csproj       # 项目文件
│
├─Properties/           # 项目属性设置
├─data4test/            # 示例数据文件夹(如 reduce.txt 等)
└─...                   # 其余代码与资源文件

🧰 环境依赖

请确保已安装以下环境:

  • ✅ Visual Studio 2022(含 .NET 桌面开发工作负载)
  • ✅ .NET Framework 4.8 开发包
  • ✅ NuGet 包支持(VS 会自动还原)

🚀 使用方法

# 克隆项目
git clone https://github.com/get1024/WPF_PCV.git
cd WPF_PCV

# 在 Visual Studio 中打开 WPF_PCV.sln
# VS 会自动还原 packages.config 中定义的 NuGet 包

# 编译 & 运行(F5)

📝 数据格式说明

点云数据文件为 .txt 文本文件,每行为一个三维坐标点,格式如下:

-0.053	-8.215	50.000
-0.062	-8.199	50.000
-0.078	-8.174	50.000
-0.087	-8.159	35.000
-0.101	-8.136	35.000
-0.109	-8.121	35.000
-0.113	-8.113	35.000
...

💡 TODO

  • 降采样算法还有待优化,目前降采样效果不尽人意
  • 分层算法需要调整,解决偶发出现的多层粘连问题
  • 把点云用真实坐标呈现;
  • ……

📄 License

本项目代码暂未设置开源协议(默认为版权所有)。如需商业使用或二次开发,请联系作者。

✨ 作者

About

Point cloud viewer implemented in WPF;PCV;WPF application

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages