[Frontend] kimera-PGMO code - kimera_pgmo/src/compression/mesh_compression.cpp

About_work·2024년 10월 17일
0

lifelong scene graph

목록 보기
25/56
  • deformation_compression_ 객체 핵심 요약

1. 핵심 요약! 이거만 보면 됨

1. 목적

  • Mesh Compression(deformation_compression_)의 목적은 3D 메쉬 데이터의 중복을 제거하고 효율적으로 압축하여 저장

1. pruneStoredMesh

  • 메쉬 데이터에서 오래된 정점들을 정리(Pruning) 하여 메모리를 최적화
  • 오래된 정점이 존재할 경우, 임시 저장소에 저장된 최신 정점들과 원래의 정점 데이터를 교체합니다.

2. compressAndIntegrate

  1. 블록 단위로 정점 탐색 및 압축
    • 메쉬는 블록 단위로 나누어 처리되며, 각 블록의 모든 정점을 탐색
    • 새로운 정점이 기존 정점과 얼마나 가까운지 검사하고, 중복 여부를 판단
      • 새로운 정점: 기존 메쉬에 없는 정점은 임시 구조에 추가
      • 재관측된 정점: 이미 존재하는 정점은 리맵핑 정보에 추가되고 최신 타임스탬프가 갱신
        • 유클리드 거리를 비교하여 수행
        • 기존의 정점과 충분히 가까운 경우, 새로운 정점을 생성하지 않고 재사용
  2. 정점 병합 및 리맵핑 처리
    • 중복된 정점끼리 병합하고, 리맵핑 정보를 업데이트하여 최적의 정점 집합을 유지
    • 이 과정에서는 Octree와 같은 공간 인덱싱 구조를 사용하여, 정점 탐색을 효율적으로 수행
  3. 면 생성 및 검사
    • 매 3개의 정점마다 하나의 면(Face)을 생성
    • 면이 퇴화(Degenerate) 상태인지 확인
      • 퇴화된 면은 동일한 정점을 포함하여 의미가 없는 면
  4. 새로운 정점과 면을 메쉬에 추가
    • 최종적으로, 유효한 정점과 면을 메쉬에 추가합니다.
    • 인접한 면 정보도 업데이트하여 메쉬의 구조를 최적화합니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글