Blender에서 가장 쉬운 립싱크 방법

제4장 블렌더 3D 실전 제작기

by TongTung

오늘은 Blender에서 가장 간단한 립싱크 구현 방법에 대한 이야기입니다. 지난주에 만들어 두었던 표정 Shape Key를 활용해, 짧은 테스트 장면을 만들어 보겠습니다.


이번 장면(MSS03)은 몽땅이가 자신이 왜 깨어났는지를 깨닫고, 혼자 생각에 잠기는 순간을 담고 있습니다. 모든 색연필 중 자신만 깨어났다는 사실에 스스로를 특별한 존재라 믿어왔던 몽땅이. 하지만 사실은 키키의 장난으로 색연필이 부러지며 깨어난 것이었죠. 그 사실을 알게 된 뒤, 몽땅이는 혼란과 슬픔, 그리고 스스로에 대한 질문을 마주하게 됩니다.




지난주에는 Typecast를 이용해 성우 대사를 만들어 테스트를 진행했고, 이번 주에는 ElevenLabs를 사용해 비교해 보았습니다.

스크린샷 2025-10-22 오후 1.33.23.png ElevenLabs에서 성우음성 생성

솔직히 말하면, 완벽하게 마음에 드는 결과는 없었습니다. 각 도구마다 장단점이 있었죠. 그래도 이번에는 테스트 버전이라는 생각으로, 일단 다운로드하여 사용했습니다.

지금 단계에서는 음성의 완성도보다 Blender 안에서 소리가 어떻게 동작하는지, 그리고 립싱크가 어떤 방식으로 연결되는지 확인하는 것이 더 중요했기 때문입니다.



이제 다시 Blender로 돌아와,

다운로드한 음성을 Video Sequencer - Sequencer - Add - Sound 메뉴로 불러옵니다.

스크린샷 2025-10-22 오후 1.37.36.png Blender의 Video Sequencer


Sequencer에서 사운드(녹음된 음성 파일)를 추가하는 이유는 세 가지입니다.


첫째, 소리를 들으며 애니메이션의 타이밍을 정확히 맞추기 위해서입니다.
캐릭터의 대사 타이밍, 표정, 립싱크, 카메라 컷 등을 실제 음성과 함께 들어보며 조정할 수 있죠.
대사에 맞춰 장면을 연출하기 위한 기준선이 되는 셈입니다.


둘째, 파형(Waveform)을 보며 시각적으로 타이밍을 확인하기 위해서입니다.
소리의 세기(파형)가 타임라인에 표시되기 때문에, 말이 어디서 시작되고 끝나는지를 한눈에 파악할 수 있습니다. 정확한 키프레임 위치를 잡을 때도 유용합니다.

스크린샷 2025-10-22 오후 1.54.09.png Sequencer에서 확인되는 파형

셋째, 최종 렌더링 시 음성을 영상에 함께 포함하기 위해서입니다.

Sequencer에 올려둔 사운드는 렌더링 할 때 자동으로 영상에 포함됩니다. 따로 편집 프로그램을 거치지 않아도 Blender 안에서 완성할 수 있는 점이 장점이죠.


처음에는 이 사실을 몰라, 따로 편집 툴에서 사운드를 불러다 썼습니다. 가만히 생각해 보면 말도 안 되는 상황이었죠. 이유를 찾아보니, 예상한 대로 옵션 설정 때문이었습니다.


Output Properties

Output Properties에서 Audio Codec이 ‘No Audio’로 설정되어 있었던 겁니다. 이 부분을 확인하지 않고 렌더링을 진행했기 때문에, 영상에 소리가 포함되지 않았던 것이죠.


일반적인 MP4로 출력할 경우, Audio Codec은 ‘AAC’로 설정해 주면 됩니다.


그렇다면 AAC란 무엇일까요?
AAC는 Advanced Audio Coding의 약자로,
MP4나 YouTube 영상에서 표준으로 사용되는 오디오 압축 방식입니다. MP3보다 같은 비트레이트에서도 더 선명한 음질을 제공하며, 대부분의 플랫폼과 영상 서비스에서 표준처럼 사용된다는 장점이 있습니다. 또한 MP4 컨테이너에서는 공식적으로 권장되는 오디오 코덱이기도 합니다. 즉, AAC로 설정하면 파일 용량은 작으면서도 선명한 음질을 얻을 수 있습니다. 참고로 영상의 H.264 / H.265는 화면 압축을 담당하는 코덱이며, 오디오는 AAC가 그 역할을 담당합니다.



결론적으로, Sequencer에 Sound를 추가하는 이유는 대사와 애니메이션의 타이밍을 맞추고, 최종 영상에 자연스럽게 소리를 포함시키기 위함입니다.



이제 음성을 불러왔다면, 다음 단계는 소리를 Shape Key에 연결해 립싱크를 만드는 작업입니다. 먼저, 입모양을 담당하는 Shape Key를 선택한 뒤 Graph Editor를 엽니다. 상단 메뉴에서 Channel을 선택하면, 하단에 Sound to Samples 항목이 보입니다. 여기서 아까 Sequencer에 불러온 WAV 파일을 지정해 줍니다.


“그런데 왜 이런 작업을 하는 걸까?” 하는 의문이 생기죠.


Sound to Samples - 소리를 그래프로 바꾸는 단계

Sound to Samples는 말 그대로 소리(음성)의 세기 변화를 분석해 숫자 데이터(F-Curve)로 바꿔주는 기능입니다.


이제 Blender가 소리를 분석하면서,
“이 구간은 소리가 크다 → 입을 크게 벌려라”,
“이 구간은 작다 → 입을 다물어라”
와 같은 정보를 자동으로 만들어줍니다. 즉, 소리를 시각적인 곡선 데이터로 변환해, 캐릭터의 Shape Key가 그에 맞춰 자동으로 반응하도록 만드는 과정입니다.

Gragph Editor- Sound to Samples

이때 만들어지는 그래프가 바로 F-Curve입니다.

F-Curve는 시간에 따라 값이 변하는 모습을 시각화한 그래프이며, Sound to Samples는 그 그래프를 소리의 세기(Amplitude)를 기준으로 생성해주는 단계입니다.

여기까지 하면, 소리의 Amplitude(진폭)을 기반으로 한 그래프 데이터가 생성됩니다. 하지만 아직 Shape Key 자체에는 값이 저장되지 않은 상태죠.


그래프는 존재하지만, 진짜 애니메이션의 키프레임으로 변환된 것은 아닙니다. 따라서 이 그래프를 실제 Shape Key의 키프레임으로 바꿔주는 다음 단계가 필요합니다.



Samples to Keys — 그래프를 키프레임으로 확정하기

바로 이때 사용하는 명령이 Samples to Keys입니다.

Sound to Samples로 만들어진 F-Curve 데이터를 실제 Shape Key의 키프레임(Keyframe)으로 변환하는 과정이죠. 이 과정을 거치면 그래프 기반의 실시간 계산이 사라지고, 고정된 키프레임 데이터로 바뀝니다.

이 덕분에 편집도 간편하고, 다른 프로젝트로 옮기기도 쉬워집니다.


정리하자면,

“Sound to Samples”는 소리를 분석하는 단계,
“Samples to Keys”는 그 결과를 실제 키프레임으로 확정하는 단계입니다.

Graph Editor - Samples to Keys



이 과정을 거치면,

Sound to Samples로 만들어진 그래프 데이터가 실제 Shape Key의 키프레임으로 변환됩니다. 아래 화면은 변환이 완료된 상태로, 타임라인에 일정한 간격으로 생성된 노란 키프레임들이 보입니다.

스크린샷 2025-10-22 오후 2.31.24.png Samples to Key를 한 상태



말로 풀어서 복잡해 보이지만, 실제로 Blender에서 이 작업은 매우 간단합니다. 이번 주에는 이 과정을 중심으로 짧은 테스트 영상을 만들어 보았습니다.


영상이 궁금하시다면,



지금까지 살펴본 내용은, Blender에서 구현할 수 있는 가장 단순하고 직관적인 립싱크 방식입니다. 복잡한 리깅이나 외부 플러그인 없이도, 기본 기능만으로 캐릭터의 감정과 입 모양을 자연스럽게 연결할 수 있죠.






비트레이트란?

비트레이트 = 소리의 정보량(품질과 용량의 균형)을 의미합니다. 값이 높을수록 소리는 선명해지지만, 파일 크기도 커집니다. AAC는 같은 비트레이트에서도 MP3보다 효율적으로 좋은 음질을 냅니다.



F-Curve란 무엇일까요?

Blender에서 캐릭터를 움직이게 하려면, 시간에 따라 값이 변해야 합니다. 예를 들어 Shape Key 값이 0에서 1로 바뀌면 입이 벌어지고, 다시 1에서 0으로 돌아오면 입이 닫히죠. 이 값의 변화를 눈으로 볼 수 있게 그려놓은 그래프가 바로 F-Curve입니다.


F는 Function(함수)의 F로, “시간에 따라 값이 어떻게 변하는가”를 보여주는 함수곡선입니다. 그래서 F-Curve는 애니메이션의 심장이라고도 불립니다. 카메라, 조명, 위치, 표정 등 거의 모든 움직임이 이 곡선 위에서 만들어집니다.



Amplitude(진폭)이란?

소리가 진동할 때의 높이, 즉 소리 자체의 크기(세기)를 의미합니다. 공기의 압력 변화로 인해 우리가 듣는 소리의 볼륨(크기)이 결정됩니다.






MSS01부터 MSS03까지 만들면서, 정말 많은 것을 느꼈습니다. 캐릭터를 만든다는 건 단순히 ‘모양을 만드는 일’이 아니라, 감정을 표현할 수 있는 형태를 설계하는 일이라는 걸 새삼 깨달았습니다.

실제로 애니메이션을 진행하다 보니, 모델의 체형에 맞게 감정을 전달한다는 것이 얼마나 어려운 일인지 절실히 느끼고 있습니다.


몽땅이의 얼굴만 해도 그렇습니다. 평평한 얼굴 위에 표정을 얹는다는 건 생각보다 훨씬 까다로운 일이었습니다. 제가 좋아하는 단순하고 귀여운 형태로 디자인했지만, 막상 애니메이션에서는 그 단순함이 제약으로 다가왔습니다. 팔과 다리의 비율도 마찬가지였습니다. 몸에 비해 짧은 팔다리 때문에 얼굴을 감싸거나, 무릎을 굽혀 앉는 자세를 취하는 것이 쉽지 않았습니다. 물론 만들어 봤지만, 화면에서는 그 동작이 거의 보이지 않았습니다. 다리가 몸에 가려지기 때문입니다. 그렇다고 팔다리를 길게 바꾸자니, 몽땅이는 더 이상 ‘제가 생각했던 몽땅이’가 아니게 됩니다.


결국, 실제로 만들어보고 테스트해 보지 않으면 절대 알 수 없는 것들이 있다는 사실을 다시 한번 느끼게 됩니다. 머릿속으로 배우는 것과, 직접 부딪히며 배우는 것은 완전히 다른 세계라는 것을요.




#립싱크 #Blender3D


이전 04화MSS 02 | 키키의 고백, 부러진 연필의 비밀