一個基於Qt6和OpenGL的布料物理模擬系統,實現了OGC(Offset Geometry Contact)接觸模型。
- 布料物理模擬: 基於粒子系統的真實布料物理
- OGC接觸模型: 先進的偏移幾何接觸算法
- 實時渲染: 基於OpenGL的3D可視化
- 交互式界面: 完整的Qt6用戶界面
- Verlet積分器用於粒子更新
- 基於位置的約束滿足(PBCS)
- 多層約束系統(結構、對角線、彎曲)
- 圓柱體-粒子碰撞檢測
- 動態風力和重力模擬
- 實時3D渲染
- 線框/實體渲染模式
- 粒子和約束可視化
- 碰撞體顯示
- 相機控制(旋轉、縮放)
- macOS 10.15 (Catalina) 或更高版本
- Xcode 12 或更高版本
- Qt6.2 或更高版本
- CMake 3.16 或更高版本
- Qt6 Core, Widgets, OpenGL, OpenGLWidgets
- OpenGL 3.3 或更高版本
# 安裝 Qt6
brew install qt6
# 安裝 CMake
brew install cmake# 克隆項目
git clone https://github.com/chchlin1018/OGC-ClothSimulation-Test.git
cd OGC-ClothSimulation-Test
# 運行自動編譯腳本
./build.sh# 克隆項目
git clone https://github.com/chchlin1018/OGC-ClothSimulation-Test.git
cd OGC-ClothSimulation-Test
# 創建編譯目錄
mkdir build && cd build
# 配置項目
cmake .. -DCMAKE_PREFIX_PATH=/opt/homebrew/lib/cmake/Qt6
# 編譯
make -j$(sysctl -n hw.ncpu)注意: 編譯過程中可能會出現 Vulkan 相關警告,這是正常的,不會影響編譯。詳見 Vulkan 警告說明。
# 運行主程序
./OGCClothSimulation
# 運行範例程序
./examples/BasicClothTest
./examples/PerformanceTest
./examples/OpenGLRenderTest- 開始/停止: 控制模擬的運行狀態
- 重置: 重置布料到初始狀態
- 單步: 執行單個時間步長
- 布料尺寸: 調整布料網格的寬度和高度
- 重力: 設定重力加速度
- 風力: 設定三個方向的風力
- 阻尼: 調整系統阻尼係數
- 啟用OGC: 開啟/關閉OGC接觸模型
- 接觸半徑: 調整OGC模型的接觸半徑
- 顯示線框: 切換線框渲染模式
- 顯示粒子: 顯示/隱藏粒子點
- 顯示碰撞體: 顯示/隱藏碰撞體
- 重置相機: 重置相機到默認視角
- 滑鼠拖拽: 旋轉視角
- 滾輪: 縮放視圖
- 重置按鈕: 恢復默認視角
基本的布料模擬測試,演示核心功能:
./examples/BasicClothTest性能測試程序,比較OGC模型和基本碰撞模型:
./examples/PerformanceTestOpenGL渲染測試,展示視覺效果:
./examples/OpenGLRenderTestOGC-ClothSimulation-Test/
├── src/ # 源代碼
│ ├── physics/ # 物理模擬
│ ├── ui/ # 用戶界面
│ ├── utils/ # 工具類
│ └── main.cpp # 主程序入口
├── include/ # 頭文件
│ ├── physics/
│ ├── ui/
│ └── utils/
├── examples/ # 範例程序
├── docs/ # 文檔
├── assets/ # 資源文件
├── build/ # 編譯輸出
├── CMakeLists.txt # CMake配置
└── README.md # 本文件
- 積分器: Verlet積分,提供數值穩定性
- 約束求解: 迭代式約束滿足,確保布料結構
- 碰撞檢測: 高效的幾何碰撞算法
- OGC模型: 偏移幾何接觸,提供更真實的接觸響應
- OpenGL版本: 3.3 Core Profile
- 渲染管線: 立即模式渲染(為了簡化)
- 抗鋸齒: 4x MSAA
- 深度測試: 啟用Z-buffer
- 空間分割: 用於碰撞檢測優化
- 約束緩存: 減少重複計算
- 渲染批處理: 減少OpenGL調用
- 在相應的命名空間中添加類別
- 更新CMakeLists.txt
- 添加對應的測試程序
- 更新文檔
- 使用Qt Creator進行調試
- 啟用OpenGL調試上下文
- 檢查CMake配置輸出
- macOS Monterey兼容性: 某些OpenGL功能可能需要額外配置
- 高DPI顯示: 界面縮放可能需要調整
- 性能: 大型布料網格可能影響實時性能
- Fork 本項目
- 創建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 開啟 Pull Request
本項目採用 MIT 許可證 - 詳見 LICENSE 文件。
- Qt框架提供的優秀GUI和OpenGL支持
- 物理模擬算法參考了相關學術論文
- OGC接觸模型基於最新的接觸力學研究
- 項目主頁: https://github.com/yourusername/OGC-ClothSimulation-Test
- 問題報告: https://github.com/yourusername/OGC-ClothSimulation-Test/issues
- 電子郵件: [email protected]
注意: 這是一個實驗性項目,主要用於研究和教育目的。在生產環境中使用前請進行充分測試。