기본 콘텐츠로 건너뛰기

가상현실 게임으로 병 고친다

효용성 높지만 개발비 비싸
시술병원은 아직 적어
자폐증·알코올중독·치매·치매·뇌졸중등이 치료대상


▲ 술의 유혹, 견딜 수 있을까? 세브란스 정신건강병원에서 가상현실 치료를 받고 있는 한 알코올 중독 환자가 대형 화면 속의 술 마시는 사람들을 보며 술을 마시고 싶은 감정을 억누르고 있다. 세브란스 정신건강병원 제공

가상현실 치료

“대형 화면에 술집에서 술을 마시고 있는 사람들이 보입니다. 술이 너무 먹고 싶어졌습니다. 하지만 가상현실이라 마실 수 없었습니다. 미치도록 괴로웠습니다. 그런 상태가 몇 분간 지속되니 괴로움이 서서히 가시기 시작했습니다.”(알코올중독 환자 김모씨)

“캄캄한 방에 들어가 입체안경을 썼더니 강의실에 있는 칠판 앞에 제가 서 있었습니다. 눈앞에 5~6명의 사람들이 저를 바라보며 질문을 했습니다. ‘노래 한번 불러보세요.’ ‘첫사랑 얘기 해주세요.’ 가상현실이라고 해도 너무 무서워서 소리를 지르며 버튼을 눌렀습니다.”(대인공포증 환자 이모씨)

지난 2일 경기도 광주에 있는 세브란스 정신건강병원 가상현실클리닉. 알코올 중독 치료를 받고 있는 김모(45)씨가 전투기 조종사들이 쓰는 헬멧처럼 생긴 장비(HMD·Head Mounted Display)를 착용한 채 어두운 방에 서 있었다. 약간 긴장한 듯 눈 앞에 비치는 가상현실 장면 속으로 들어갔던 김씨는 10여분 뒤 현실로 돌아왔다.

서울 강남구에 있는 메타사이버클리닉에서 대인공포증 치료를 받은 이모(22)씨는 “처음에는 가짜 같은 느낌이었으나, 시간이 지나면서 점점 상황에 빠져들었고 나중에는 현실감이 났다”고 말했다.

환자를 컴퓨터가 만들어낸 가상현실 상황에 규칙적으로 노출시켜 그에 익숙해지도록 해 병을 치료하는 ‘가상현실 치료’가 점점 확대되고 있다. 그 동안 주로 정신질환 치료에 활용됐으나, 최근 뇌졸중 재활 치료에도 적용되기 시작했다.

가 상현실 치료는 환자가 두려워하는 상황을 가상 현실로 설정해 이뤄진다. 고소공포증 환자는 높은 투명 엘리베이터 안에 있도록 하고, 멀미가 심한 사람은 움직임이 심한 자동차에 몇 분간 있게 한다. 뇌졸중 환자들은 가상현실을 통해 수영, 축구, 스키, 보행 등 자신에게 맞는 난이도의 운동을 선택, 팔과 몸통을 움직이면서 재활치료를 받는다.

의사는 환자가 치료를 받는 동안 환자의 몸에 연결된 센서를 통해 1000분의 1초 단위로 기록되는 환자의 맥박과 호흡을 볼 수 있다. 이 수치를 본 후 환자의 중증도를 파악, 환자의 상태 별로 가상현실을 다르게 설정한다. 환자가 치료 중 참기 힘든 상황에 직면하면 버튼을 눌러 의사에게 알리도록 돼 있다.

이 치료법은 공포증 환자에게 약물이나 상담치료 이상의 효과를 지닌다. 미국 에머리 대학 로쓰바움 교수가 20명의 고소공포증 환자를 대상으로 주 1회 35~45분씩 7주간 가상현실 치료를 실시한 결과, 모든 환자들이 75층 높이의 건물 옥상까지 올라갈 수 있었다고 한다.


▲ 아바타(가상현실 속의 인물)와 대화하면서 사회 적응능력을 기르는 환자


현재 가상현실 치료의 주요 대상은 고소·대인·비행·폐쇄 공포증, 자폐증, 강박증, 정신분열증, 불안증, 치매, 알코올중독, 중풍, 외상 후 스트레스 장애, 중풍이나 뇌졸중 등이다. 앞으로는 바퀴벌레나 거미공포증, 게임·도박중독, 거식증 등도 치료 대상이 될 예정.

이 같은 효용성에도 불구, 국내에서 가상현실 치료를 받을 수 있는 곳은 세브란스정신건강병원, 영동세브란스병원, 메타사이버클리닉 등 몇몇 곳에 불과하다. 다양한 종류의 가상현실 치료 프로그램 개발에 상당한 비용이 들기 때문이다.

하지만 가상현실 치료의 미래는 밝다. 전문가들은 언젠가 환자가 자기 집에서 컴퓨터나 텔레비전을 이용해 가상현실 치료를 하는 날이 올 수도 있을 것으로 전망한다.

영동세브란스병원 신경정신과 차경렬 교수는 “미국의 정신치료 전문가들은 향후 10년의 정신과 치료에서 가상현실 치료법이 주류가 될 것이라고 보고 있다”고 말했다.

/ 홍세정 헬스조선 기자 hsj@chosun.com

댓글

이 블로그의 인기 게시물

[Unity3D] 모바일에서 스크롤바 안에 있는 버튼 클릭 문제

해당 씬 이벤트시스템에 아래 코드를 적용하면 된다. using UnityEngine; using UnityEngine.EventSystems; /// /// Sets the drag threshold for an EventSystem as a physical size based on DPI. /// public class PhysicalDragThreshold : MonoBehaviour {  private const float inchToCm = 2.54f;  [SerializeField]  private EventSystem eventSystem = null;  [SerializeField]  private float dragThresholdCM = 0.5f;  void Start ()  {   if (eventSystem == null)   {    eventSystem = GetComponent();   }   SetDragThreshold();  }  private void SetDragThreshold()  {   if (eventSystem != null)   {    eventSystem.pixelDragThreshold = (int)(_dragThresholdCM * Screen .DPI / inchToCm);   }  } }

[UNITY3D] iOS Xcode로 archive를 하는데 먹통이 되는 현상

Too slow to compile archive in xcode (IL2CPP) 오늘 하루종일 한 일이 배포용 버전 만드는 일이었다. ㅎㅎ 개발 버전으로 빌드 테스트 잘 되어서 외부 테스터들을 위해서  배포 버전을 만드는데 계속 archiving  에서 먹통..ㅠㅠ 30분을 기다려보고 재부팅하고 다시 한시간을 기다려봐도 깜깜 무소식이다. 활성 상태 보기로 체크 해보니 clang 이란 놈이 메모리 16G 중에 15G를 잡아 먹고 있었다. 이건 기다려서 해결될 일이 아니다. ㅎㅎㅎ 구글신의 도움으로  프로젝트 중에  Hashtable 쓰는 곳이 있으면   clang 컴파일러가  Hashtable가 사용된  코드를 미친듯이 풀어헤쳐 버리는 듯 한 것같다. 그래서 Unity에서 사용하는 구조체 중에 Hashtable 사용하는 구조는 폐기해버렸나 보다 (이제야 이해가 되는듯 ㅋㅋ) WWW 클래스 에서 쿠키 값 저장하는데 Hashtable 폐기되고  Dictionary 구조체를 사용하게 바뀌어 있었는데  하여튼 지금 상으로 해결 방법은 Unity Project에서 사용되는 코드를 바꾸던가 아니면  Xcode setting 에서 optimization level 을 0으로 설정하면 된다. 어떤 날은 미친듯이 진도 나가는 날이 있지만, 어떤 날은 미친듯이 한 문제만 푸는 날도 있네.. ^^; 그래도 감사하게도 해결했으니 편히 잠을 자는구다. 참고한 링크  http://fogbugz.unity3d.com/default.asp?721062_n482bt9n4qm7ejgb IOS IL2CPP Freeze in xCODE on default optimization level There's nothing with my system that's the problem. I don't have any code to...

[Unity3D] 유니티 내장 로컬 푸쉬 기능

 유니티 내장 로컬 푸쉬 기능  - iOS에서만 가능, Android는 직접 개발하던가 Plugin 사용  먼저 등록을 해주고 ( 등록 안하면 작동 안함 ) public void InitNotification() { #if UNITY_ANDROID #elif UNITY_IOS UnityEngine.iOS.NotificationServices.RegisterForNotifications( UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Sound ); #endif } 시간을 정해서 등록해준다.( 3일동안 접속 안할 경우 알림이 오게 한다면 ) public void ScheduleNotification() { //Affer 3 Day string _body01 = "다시 시작해볼까요?"; #if UNITY_IOS UnityEngine.iOS.LocalNotification notiWake = new UnityEngine.iOS.LocalNotification(); DateTime theTime_Wake = DateTime.Now; theTime_Wake = theTime_Wake.AddHours(24*3); Debug.Log("theTime_Wake:"+theTime_Wake); notiWake.fireDate = theTime_Wake; notiWake.alertAction = "타이틀"; notiWake.alertBody = _body01; notiWake.soundName = UnityEngine.iOS.LocalNotification.defaultSoundName; UnityEngine.iOS.NotificationServices.ScheduleLocalNotification(notiWake); #elif UNITY_ANDROID #endif } 취소 함수를...