0%

Unity

바닥 인터랙션 콘텐츠 구현기: RealSense 기반 Depth 인식 vs OpenCV 접근 비교

한*현··수정됨 2026.07.21

바닥 인터랙션 콘텐츠 구현기: RealSense 기반 Depth 인식 vs OpenCV 접근 비교

📌 프로젝트 개요

이번 프로젝트는 프로젝션 기반 인터랙티브 콘텐츠로, 사용자의 물리적 행동에 반응하는 몰입형 체험을 목표로 했다. 사용자가 단순히 보는 콘텐츠가 아니라, 직접 공간을 밟으며 반응을 만들어내는 체험형 인터랙션을 구현하는 것이 목표였다.
구성은 단순하지만, 실제 구현 과정에서는 센서 선택과 인식 방식에서 중요한 기술적 의사결정이 필요했다.


🧩 콘텐츠 구성

콘텐츠의 기본 동작은 다음과 같다:

  1. 천장에 설치된 빔프로젝터가 바닥을 향해 영상을 투사

  2. 바닥에는 물 텍스처와 함께 물고기 오브젝트들이 유영

  3. 사용자가 특정 위치를 밟으면:

    • 해당 위치에 물결(Ripple) 이펙트 발생

    • 주변의 물고기들이 반대 방향으로 회피 이동

즉, 사용자 입력은 터치가 아닌 공간 기반 인터랙션이며, 이를 위해 사람의 위치를 정확히 인식하는 것이 핵심이다.


⚙️ 센서 선택 이슈: LiDAR → RealSense

초기 설계에서는 LiDAR 센서를 사용하려 했다.
이유는 다음과 같다:

  • 높은 정밀도의 거리 측정

  • 넓은 공간 커버리지

  • 다수 객체 인식에 유리

하지만 실제 환경에서 다음과 같은 제약이 발생했다:

  • 설치 공간 부족 (탁 트인 장소에 물리적 행동을 유도하는 콘텐츠라 파손 및 안전 문제 발생의 우려가 있었음)

결국 대안으로 선택한 것이 Intel RealSense Depth Camera였다.


🧠 구현 방식: Depth 기반 사람 인식

RealSense를 천장에 설치하고, 빔프로젝터와 동일한 시점에서 바닥을 내려다보는 구조로 구성했다.

핵심 로직

  • Depth 데이터를 기반으로 Z축 거리값 획득

  • 기준 바닥 높이를 설정 (Calibration)

  • 특정 임계값(threshold) 이하로 들어오는 객체를 “사람”으로 간주

  • 해당 좌표에 이펙트 발생

if (depth > depthRange[1] && depth < depthRange[2])
    → 사용자 존재로 판단
    → 해당 위치에 ripple 생성 및 물고기 회피 동작 진행

- depthRange[1]: 바닥 기준 최소 높이 (리얼센스에서 추적할 거리값 최소 범위)
- depthRange[2]: 사람으로 간주할 최대 높이 (리얼센스에서 추적할 거리값 최대 범위)
- 카메라의 화각 특성상 화면 위치에 따라 동일한 객체라도 depth 값이 달라질 수 있다. 또한 threshold 범위를 넓게 설정할 경우 바닥까지 포함되는 문제가 발생할 수 있어, 값 설정 시 충분한 보정이 필요하다.

장점

  • 구현이 직관적

  • 조명 환경에 영향을 거의 받지 않음

  • 별도의 학습 데이터 불필요


⚠️ 문제점: 오인식 가능성

Depth 기반 접근의 구조적인 한계도 명확했다.

  • 공중에 있는 물체 (예: 가방, 손, 소품 등)도 동일하게 인식됨

  • 사람의 “형태”가 아니라 “거리”만으로 판단하기 때문

  • 결과적으로 False Positive (오인식) 발생 가능

즉, “사람이 밟았다”는 이벤트를 정확히 정의하기 어렵다.


🤔 대안적 접근: OpenCV 기반 비전 처리

구현 이후 돌아보면, OpenCV 기반의 영상 처리 방식도 충분히 고려할 만한 선택이었다.

가능 접근 방식

  • Background Subtraction (배경 차분)

  • Contour Detection (윤곽선 검출)

  • 또는 간단한 Human Detection 모델 적용

기대 효과

  • “형태 기반” 인식 가능 (사람 vs 사물 구분)

  • 공중에 떠 있는 물체는 상대적으로 필터링 가능

  • 특정 영역(바닥 접촉)만 조건으로 추가 가능


🔍 RealSense vs OpenCV 비교

RealSense (Depth)

  • 구현 난이도 낮음

  • 거리 기반 계산으로 제한적인 정확도

  • 조명 영향 적음

  • 사람이 아닌 공중 객체 오인식률 높음

  • 안정적인 퍼포먼스

OpenCV (Vision)

  • 구현 난이도 중간 ~ 높음

  • 형태 기반 추적으로 상대적으로 높은 정확도

  • 조명 영향 큼

  • 사람이 아닌 객체에 오인식률 낮음

  • 알고리즘에 따라 달라지는 퍼포먼스


🧾 결론 및 회고

이번 프로젝트에서는 설치 환경 제약으로 인해 RealSense를 선택했고, 결과적으로 빠른 구현과 안정적인 동작은 확보할 수 있었다.

다만, Depth 기반 방식은 Z값만으로 판단하기 때문에 객체의 semantic 정보가 없고, 반면 OpenCV 기반 접근은 shape 또는 feature 기반 필터링이 가능하다는 점이 두 방식의 본질적인 차이다.

그러므로, 인터랙션의 본질이 “사람의 행동 인식”에 있다면, 단순한 Depth 기반 접근보다는 Vision 기반 처리(OpenCV 또는 AI 모델)가 더 적합했을 가능성이 높다.

👉 특히 다음과 같은 경우라면 OpenCV 쪽이 더 유리하다:

  • 사람과 사물을 명확히 구분해야 하는 경우

  • 바닥 접촉 여부가 중요한 경우

  • 인터랙션의 정확도가 중요한 콘텐츠

    정리하면, RealSense는 “빠르게 동작하는 인터랙션”에 적합하고,

    OpenCV는 “정확한 인식 기반 인터랙션”에 더 적합하다.

    결국 어떤 방식을 선택할지는
    “속도 중심의 경험인지, 정확도 중심의 경험인지”에 따라 결정된다고 볼 수 있다.


🚀 향후 개선 방향

  • Depth + Vision Hybrid 방식 고려
    → Depth로 영역 후보 추출 + OpenCV로 필터링

  • 간단한 AI 모델 (예: Pose Detection) 적용

  • 바닥 접촉 이벤트 정의 로직 강화

읽기 도구

5분 읽기

이 글이 도움이 되었나요?

다음으로 읽기