처음 이사를 간다는 말을 들었을 때는 너무 아쉬웠지만, 내 방을 원하는 대로 꾸며도 된다는 엄마의 말에 귀가 솔깃해졌어. 엄마가 알려주신 홈페이지에 접속해 이사 갈 집의 내 방을 꾸몄지. 그런데 우리 집을 어떻게 알고 이렇게 멋진 입체 그래픽으로 만들어 놓은 걸까?
예전에는 가구를 배치할 때 대충 머릿속으로 생각한 뒤에 실제 가구를 옮기면서 상황에 맞게 대처하는 경우가 많았어요. 그러다 보니 실제로 짐을 옮길 때 가구의 크기가 예상보다 크거나 색상이 어울리지 않아 계획을 바꾸는 경우가 자주 생겼죠.
하지만 최근에는 미리 이사 갈 집 가구 배치와 인테리어를 계획해 볼 수 있는 온라인 및 모바일 서비스가 개발돼 활발하게 쓰이고 있습니다. 예를 들어 ‘어반베이스’라는 회사는 우리나라 아파트 90%의 내부 구조를 3차원 그래픽으로 제공하는 ‘3D 홈디자인’ 서비스를 제공하고 있어요. 3D 홈디자인은 홈페이지에서 자신이 사는 집을 검색한 뒤 원하는 대로 집을 꾸며보고 물건을 가상으로 배치해 볼 수 있는 온라인 서비스예요.
사실 아파트마다 내부를 보여주는 2차원 도면은 인터넷에 대부분 공개돼 있어요. 이를 활용해 3차원 입체 도면을 만들어 서비스하고 있는 것이죠. 이 서비스의 개발을 담당하는 윤대희 어반베이스 개발부문 ML팀 개발자는 “핵심은 2차원 평면 형태의 도면을 자동으로 약 2초 만에 3차원 그래픽으로 바꿔 주는 기술”이라며, “이 프로그램을 만드는 모든 과정에 수학이 들어 있다”고 설명했어요.
좌표와 기계학습으로 알아보는 내 방 인테리어
2차원 도면을 3차원으로 바꾸려면 우선 ‘평면 좌표’라는 개념을 알아야 해요. 평면 좌표는 평면을 x와 y라는 두 개의 축을 이용해 수직으로 나눠 순서쌍 (x, y)라는 좌푯값으로 평면 위의 모든 점을 나타내는 방법이에요.
이미 눈치 챘겠지만 2차원 도면은 평면 좌표로 나타낼 수 있어요. 격자에 도면이 그려져 있다고 생각하면 격자의 교차점을 순서쌍으로 읽어낼 수 있어요. 이 2차원 평면 도면의 좌표에 높이에 해당하는 z축을 더하면 평면 도면을 입체 도면으로 변환시킬 수 있어요. 예를 들어 원래 평면 좌표에 있는 점 (1, 1)을 (1, 1, 1)로 변환하면 공간에 있는 점으로 옮길 수 있죠.
어반베이스에서 개발한 프로그램의 작동 원리는 이래요. 우선 2차원 좌표 평면에 그린 도면에서 각 지점의 색을 0~255의 숫자로 나타낸 색상값을 인식한 뒤 색상을 흑백 정보로 바꿔요. 색상이 복잡하면 변환할 때 계산량이 많기 때문에 계산을 쉽게 하기 위해서죠. 그런 다음 평면 좌표에 높이를 더해줘 입체 도면으로 바꿉니다.
여기에 한 가지 더 필요한 것이 있어요. 현관문과 창문, 방문처럼 도면 위의 특정 부위들을 인식하는 거죠. 좌푯값에 그대로 높이를 적용해 입체로 만들면 어디가 문이고 어디가 창문인지 구분하기가 어려워요. 따라서 어반베이스에서는 어떤 정보가 창문과 문인지를 미리 입력해 둔 뒤 기계학습 기법을 활용해 수많은 도면을 학습시켰어요. 평면 도면 정보에서 문과 창문 등의 구조를 명확히 구별해 자동으로 입체 도면을 그릴 수 있게 만든 거죠.
사용자는 이렇게 완성된 도면 위에서 자유롭게 인테리어해볼 수 있답니다. 여기에도 수학이 필요해요. 윤 개발자는 “입체 도면에서 자유롭게 물체를 배치해 보는 기능에도 평행이동 같은 수학 개념이 적용된다”고 말했어요.