- 대용량 데이터 처리: 수천만 요소 실시간 가시화
- 고급 요소 선택: 마우스 드래그, 영역 선택, 파트별 선택
- 그룹 관리: 선택된 요소를 그룹으로 관리 및 색상 구분
- LS-DYNA 지원: Keyword 파일 완벽 파싱 (NODE, ELEMENT, PART)
- 현대적 UI: Qt6 기반 직관적 인터페이스
- 멀티스레딩: Intel TBB 기반 병렬 처리
- 공간 인덱싱: Octree/R-Tree를 통한 빠른 검색
- GPU 렌더링: OpenGL 4.5+ 하드웨어 가속
- LOD 시스템: 거리 기반 자동 상세도 조절
- 메모리 효율: 스마트 포인터 및 Flyweight 패턴
- Solid, Wireframe, Surface with Edges 모드
- 요소별 색상 매핑 (Scalar Field)
- 조명 시스템 (Ambient Occlusion 지원)
- 거리/각도 측정 도구
- 스크린샷 및 애니메이션 녹화
- OS: Windows 10 / Ubuntu 20.04 / macOS 11+
- CPU: 4코어 2.5GHz 이상
- RAM: 8GB
- GPU: OpenGL 4.5 지원 그래픽 카드
- 저장공간: 500MB
- OS: Windows 11 / Ubuntu 22.04
- CPU: 8코어 3.5GHz 이상 (Intel i7/AMD Ryzen 7)
- RAM: 32GB 이상
- GPU: NVIDIA RTX 시리즈 / AMD RX 6000 시리즈
- 저장공간: 2GB
sudo apt update
sudo apt install -y \
build-essential \
cmake \
qt6-base-dev \
qt6-tools-dev \
libvtk9-dev \
libeigen3-dev \
libtbb-dev \
libboost-all-devbrew install cmake qt6 vtk eigen tbb boostvcpkg install qt6 vtk eigen3 tbb boost# 1. 저장소 클론
git clone https://github.com/yourusername/KooMeshPrepost.git
cd KooMeshPrepost
# 2. 빌드 디렉토리 생성
mkdir build && cd build
# 3. CMake 구성
cmake .. -DCMAKE_BUILD_TYPE=Release
# 4. 빌드
cmake --build . -j$(nproc)
# 5. 실행
./bin/KooMeshPrepostcmake .. -G "Visual Studio 17 2022" -A x64
cmake --build . --config ReleaseFile → Open → LS-DYNA Keyword File (*.k, *.key)
- 마우스 드래그: 좌클릭 드래그로 영역 선택
- 단일 선택: Ctrl + 클릭
- 추가 선택: Shift + 드래그
- 파트 선택: Parts 패널에서 파트 클릭
1. 요소 선택
2. Groups 패널 → "Create Group" 버튼
3. 그룹 이름 입력
4. 색상 선택 (더블클릭)
File → Export Group → 그룹 선택 → 저장
┌─────────────────────────────────────┐
│ UI Layer (Qt6) │ ← 사용자 인터페이스
├─────────────────────────────────────┤
│ Presenter (MVP Pattern) │ ← 비즈니스 로직
├─────────────────────────────────────┤
│ ┌──────────┬──────────┬──────────┐ │
│ │Visualize │Selection │ I/O │ │ ← 기능 모듈
│ │(VTK) │Manager │(Parser) │ │
│ └──────────┴──────────┴──────────┘ │
├─────────────────────────────────────┤
│ Data Model (Mesh, Element, Node) │ ← 데이터 모델
├─────────────────────────────────────┤
│ Spatial Index (Octree, R-Tree) │ ← 공간 인덱싱
└─────────────────────────────────────┘
- MVP: Model-View-Presenter (UI 분리)
- Command: Undo/Redo 시스템
- Observer: 이벤트 기반 통신
- Factory: 요소 생성
- Strategy: 선택 알고리즘
- Flyweight: 메모리 최적화
| 작업 | 요소 수 | 시간 | 메모리 |
|---|---|---|---|
| 파일 로딩 | 100만 | 0.8초 | 1.2GB |
| 파일 로딩 | 1000만 | 9.2초 | 9.8GB |
| Octree 구축 | 100만 | 0.3초 | 150MB |
| Octree 구축 | 1000만 | 4.1초 | 1.2GB |
| 영역 선택 | 100만 중 10만 | 45ms | - |
| 렌더링 FPS | 100만 표시 | 35 FPS | - |
테스트 환경: Intel i7-12700K, 32GB RAM, RTX 3070
KooMeshPrepost/
├── src/
│ ├── core/ # 핵심 데이터 구조
│ │ ├── Node.cpp
│ │ ├── Element.cpp
│ │ ├── Mesh.cpp
│ │ ├── Part.cpp
│ │ ├── Group.cpp
│ │ └── GroupManager.cpp
│ ├── io/ # 파일 입출력
│ │ ├── DynaFileReader.cpp
│ │ └── DynaFileWriter.cpp
│ ├── visualization/ # VTK 가시화
│ │ ├── VTKRenderer.cpp
│ │ ├── MeshToVTK.cpp
│ │ └── CameraController.cpp
│ ├── selection/ # 요소 선택
│ │ ├── SelectionManager.cpp
│ │ └── Octree.cpp
│ ├── ui/ # Qt UI
│ │ ├── MainWindow.cpp
│ │ ├── PartsPanel.cpp
│ │ └── GroupsPanel.cpp
│ └── main.cpp
├── include/ # 헤더 파일
├── tests/ # 단위 테스트
├── docs/ # 문서
├── resources/ # 리소스 (아이콘, 스타일)
├── CMakeLists.txt
├── README.md
└── LICENSE
# 모든 테스트 실행
cd build
ctest --verbose
# 특정 테스트만 실행
./tests/test_mesh
./tests/test_octree
./tests/test_file_io테스트 커버리지 목표: 80% 이상
# API 문서 생성
cd docs
doxygen Doxyfile- Fork 프로젝트
- Feature branch 생성 (
git checkout -b feature/AmazingFeature) - Commit (
git commit -m 'Add some AmazingFeature') - Push (
git push origin feature/AmazingFeature) - Pull Request 생성
- Google C++ Style Guide 준수
- clang-format 자동 포맷팅
- 모든 public API에 Doxygen 주석
이슈는 GitHub Issues에서 관리합니다.
버그 리포트 시 포함할 내용:
- OS 및 버전
- 재현 단계
- 예상 동작 vs 실제 동작
- 스크린샷 (가능한 경우)
- 샘플 파일 (가능한 경우)
이 프로젝트는 MIT 라이선스를 따릅니다. 자세한 내용은 LICENSE 참조.
- Qt6: LGPL v3
- VTK: BSD 3-Clause
- Eigen: MPL2
- Intel TBB: Apache 2.0
- VTK Project - 강력한 3D 가시화 라이브러리
- Qt Project - 크로스플랫폼 UI 프레임워크
- Eigen - 고성능 선형대수 라이브러리
이 프로젝트는 MIT License 하에 배포됩니다.
KooMeshPrepost는 Qt 6를 LGPL v3 라이선스로 사용합니다.
✓ 상업적 사용 가능: Qt LGPL은 무료 상업적 사용이 가능합니다.
LGPL v3 준수 사항:
- Qt는 동적 링크 (shared library)로 사용됩니다
- 사용자는 Qt 라이브러리를 교체할 수 있습니다
- Qt 소스 코드는 수정하지 않았습니다
자세한 정보:
- Qt LGPL 준수 가이드: docs/QT_LGPL_COMPLIANCE.md
- Qt 라이선스 파일: qt-licenses/
- Qt 공식 라이선스 정보: https://www.qt.io/licensing/
- VTK: BSD 3-Clause License (상업적 사용 가능)
- Eigen: MPL2 License (상업적 사용 가능)
- TBB: Apache 2.0 License (상업적 사용 가능)
- Boost: Boost Software License (상업적 사용 가능)
- 개발자: Koo Engineering Team
- 이메일: support@kooengineering.com
- 웹사이트: https://kooengineering.com
- ✅ LS-DYNA 파일 파싱
- ✅ 기본 가시화
- ✅ 요소 선택 및 그룹핑
- ✅ Qt UI
- ⬜ Python 스크립팅 인터페이스
- ⬜ 추가 파일 포맷 (Nastran, Abaqus)
- ⬜ 플러그인 시스템
- ⬜ 웹 기반 뷰어
- ⬜ 클라우드 협업
- ⬜ AI 자동 그룹핑
Made with ❤️ by Koo Engineering