수학 기초: 스플라인 — 카메라 경로와 부드러운 척추 만들기

구불구불 미끄럼틀의 비밀, 스플라인
놀이터 미끄럼틀을 떠올려 보세요. 구불구불한데도 내려갈 때 덜컹거리지 않아요. 매끈하게 쭉 이어지죠. 애니메이션 속 카메라도, 캐릭터의 척추도 이렇게 부드럽게 휘어야 해요. 그 비밀이 바로 오늘 이야기할 스플라인(spline)이에요.
스플라인은 원래 '휘어지는 자'였어요
아주 옛날, 배를 만드는 사람들은 고민이 있었어요. 배의 옆면처럼 크고 부드러운 곡선을 그려야 하는데, 둥근 자가 없었거든요.
그래서 얇고 잘 휘는 나무 막대를 가져왔어요. 막대의 몇 군데를 못으로 콕콕 고정하면, 막대가 그 사이에서 자연스럽게 휘어졌어요. 그 휜 모양을 따라 선을 그렸죠. 이 나무 막대의 이름이 바로 스플라인이에요.
수학자들은 이걸 보고 생각했어요. "저 나무 막대가 휘는 모양을 계산으로 만들 수 없을까?" 그렇게 태어난 게 수학의 스플라인이에요.
비밀은 '조각조각 이어 붙이기'
스플라인은 한 번에 그린 큰 곡선이 아니에요. 짧은 곡선 조각을 여러 개 만들어서, 이음새가 안 보이게 이어 붙인 거예요.
기차를 생각해 보세요. 기차는 칸이 여러 개지만, 연결 부분이 잘 되어 있어서 한 덩어리처럼 달려요. 스플라인도 똑같아요. 곡선 조각들이 만나는 점을 매듭(knot)이라고 부르는데, 이 매듭에서 두 조각이 방향도 맞추고 휘는 정도도 맞춰요. 그래서 어디서부터 어디까지가 한 조각인지 눈으로는 알 수 없을 만큼 매끈해져요.
각 조각은 다항식이라는 간단한 수식으로 되어 있어요. 다항식은 "x를 몇 번 곱하고 더하는" 정도의 순한 계산이에요. 어려운 수식 하나보다, 쉬운 수식 여러 개를 이어 붙이는 게 스플라인의 방법이에요.
그냥 큰 곡선 하나로 그리면 안 될까?
점 10개를 지나는 곡선을 만든다고 해 봐요. 수식 하나로 전부 지나가게 할 수도 있어요. 그런데 이상한 일이 생겨요. 점이 많아질수록 곡선의 양쪽 끝이 미친 듯이 출렁거리기 시작해요. 점 사이를 얌전히 지나가는 게 아니라, 위아래로 크게 널뛰기를 해요. 수학자들은 이걸 룽게 현상이라고 불러요.
줄넘기 줄을 생각하면 쉬워요. 짧은 줄은 얌전한데, 아주 긴 줄을 한 번에 흔들면 끝부분이 마구 출렁거리잖아요. 곡선도 한 수식으로 너무 많은 점을 책임지게 하면 그렇게 돼요.
스플라인은 이 문제를 피해요. 각 조각이 자기 근처의 점만 책임지니까, 어느 한 곳도 널뛰지 않아요. 순한 수식만 쓰는데도 결과는 훨씬 얌전하고 부드러워요.
그림으로 비교해 봐요
왼쪽은 점을 직선으로 이은 거예요. 점마다 뾰족한 모서리가 생기죠. 오른쪽은 같은 점을 스플라인으로 이은 거예요. 점을 다 지나가면서도 어디 하나 꺾이는 곳이 없어요.
카메라가 스플라인 위를 달려요
영화나 게임에서 카메라가 스르륵 움직이는 장면을 본 적 있죠? 그거 사람이 카메라를 들고 뛰는 게 아니에요. 카메라가 지나갈 자리에 점을 몇 개 콕콕 찍으면, 컴퓨터가 그 점들을 스플라인으로 이어 줘요. 카메라는 그 보이지 않는 레일 위를 기차처럼 달리는 거예요.
만약 점을 직선으로만 이으면 어떻게 될까요? 카메라가 점에 도착할 때마다 방향을 획획 꺾어요. 보는 사람은 화면이 덜컹거려서 멀미가 나요. 스플라인 레일 위에서는 방향이 서서히 바뀌니까 눈이 편안해요.
캐릭터의 척추도 스플라인이에요
우리 등뼈를 만져 보세요. 작은 뼈가 여러 개 이어져 있죠. 그런데 고양이가 기지개를 켤 때 등이 활처럼 휘는 걸 보면, 뼈 하나하나가 아니라 매끈한 곡선 하나로 보여요.
3D 애니메이션에서 캐릭터 척추를 만들 때 이 원리를 그대로 써요. 척추를 따라 곡선 하나를 그리고, 뼈들이 그 곡선에 매달리게 해요. 애니메이터가 곡선의 조절점 몇 개만 움직이면, 수십 개의 뼈가 한꺼번에 부드럽게 따라 휘어요. 뼈를 하나씩 돌리지 않아도 되니까 훨씬 편하죠. 이 곡선이 바로 스플라인이에요.
알면 좋아지는 점, 모르면 겪는 문제
알면 이런 게 좋아져요. 카메라 경로가 덜컹거릴 때, "점을 더 찍어야 하나?"가 아니라 "매듭 근처 조절점을 만지면 되겠구나" 하고 바로 원인을 찾아요. 그리고 점을 무작정 많이 찍는 게 답이 아니라는 것도 알게 돼요. 스플라인은 점 몇 개만으로도 부드러운 곡선을 만들어 주니까, 오히려 점이 적을수록 다루기 쉬워요.
모르면 이런 문제를 겪어요. 곡선을 부드럽게 만들겠다고 점을 수십 개씩 찍는 사람이 많아요. 그러면 점 하나만 옮겨도 옆 점들과 어긋나서, 고칠수록 곡선이 더 울퉁불퉁해져요. 또 캐릭터 허리가 이상하게 꺾였을 때, 뼈 수십 개를 하나씩 붙잡고 씨름하게 돼요. 사실은 스플라인 조절점 두세 개만 만지면 끝나는 일인데 말이죠.
정리하면
스플라인은 짧고 순한 곡선 조각들을 이음새 없이 붙여서 만든 부드러운 곡선이에요. 휘어지는 나무 자에서 시작해서, 지금은 카메라가 달리는 레일이 되고, 캐릭터의 척추가 되었어요. 다음에 게임에서 카메라가 스르륵 움직이면 떠올려 보세요. 그 아래에는 보이지 않는 스플라인 레일이 깔려 있다는 걸요.
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기