본문 바로가기
AI · 인공지능/이미지 생성 AI

「Blender + ControlNet」을 사용하여 애니메이션을 만드는 방법

by 두우우부 2023. 3. 18.
반응형

입력 데이터 작성

우선, Controlnet에 대한 입력 데이터가 되는 동영상 데이터를 생성해야 합니다.
 
시작하기 전에 아래 링크에서 3D 컴퓨터 그래픽 제작 소프트웨인 블렌더를 다운로드합니다.
(오픈 소스이며 무료)
https://www.blender.org/download/

Download — blender.org

The Freedom to Create.

www.blender.org

 

또는, 자신의 OS에 맞는 버전을 선택해서 다운로드하세요.



그러면 아래와 같이 다운로드 링크가 나옵니다.



링크를 클릭하시면 다운로드가 시작됩니다.


 
그다음 아래 링크에서 블렌더에 로드할 openpose 라이크 모델을 다운로드합니다.
https://toyxyz.gumroad.com/l/ciojz

Character bones that look like Openpose for blender _ Ver_5 Depth+Canny

-Blender version 3.0 or higher is required.- Download — blender.orgCharacter bones that look like Openpose for blender Ver_5 Depth + Canny Faces were added in v5. To be precise, eyes, eyebrows, mouth and tongue were added.In order to obtain the desired r

toyxyz.gumroad.com

 
위 링크에 가시면
가격 설정란에 구입 희망 금액 입력해(0 부터 입력할 수 있으므로, 무료로 다운 가능),
아래의 버튼을 클릭. 

 
 
메일 주소 입력란이 표시되므로 입력하고 OpenposeBone을 다운로드.

 

다운로드한 Zip 파일을 풀어서 블렌더를 시작합니다. 시작 후 왼쪽 상단의 File 탭에서 Open을 선택하고 방금 푼 폴더를 지정하고 Openpose_bone_01.blend를 선택하여 엽니다.

아래 화면이 표시되면 성공입니다.

 

모션 부여

그런 다음 Bone에 모션을 부여합니다.
이번에는 불러온 캐릭터에 달리는 모션을 부여해 갑니다.
먼저 Layout 탭 바로 아래의 풀다운에서 PoseMode를 선택합니다(기본값은 ObjectMode).

 
이동하려는 부분을 클릭하면 이와 같이 파란색, 녹색, 빨간색 선이 표시됩니다.
(휠 버튼을 누르면서 마우스를 움직이면 시점 이동이 가능합니다)

 
이 선을 따라 Bone을 움직일 수 있으므로 달리는 포즈를 만듭니다.
또, 십자 마크를 선택하여 전후 좌우에 Bone의 일부를 움직일 수도 있습니다.

 
이런 포즈가 생기면 완성입니다.

 
계속해서, 유튜브 https://youtu.be/_On9pUi41Zw 등을 참고해, Bone에 움직임을 붙여 갑니다.
먼저 타임라인을 표시합니다.

 
계속해서, Bone 전체를 선택한 상태에서 좌클릭 표시되는 메뉴 화면에서 Insert Keyframe → Location&Rotation 을 선택해, 0 프레임에 키를 넣습니다.

 
그 후 0 프레임에 넣은 키를 복사(Ctrl+C)하고 타임 핸들을 50 프레임으로 이동하여 붙여 넣기(Ctrl+V)합니다.
그대로 타임 핸들을 25 프레임으로 이동시켜 반전한 포즈를 붙여 넣기(Ctrl+Shift+V)합니다.

 
동작을 확인합니다.
우선 아웃풋 동영상을 설정합니다.
오른쪽 창의 인쇄 마크 버튼을 눌러 FrameRange를 설정합니다.
Frame Start를 1, End를 50, Step을 1로 설정합니다.

 
재생 버튼을 눌러 움직임을 봅니다.

 
아직 동작이 불안정하기 때문에 키를 추가하여 동작을 정돈해 나갑니다.

 
그러면 동영상을 내보냅니다.
출력 형식을 "FFmpeg Video"로 설정합니다.
그런 다음 카메라를 설정합니다.
Object Mode로 변경하고 Shift+A를 눌러 카메라를 추가합니다.

 
카메라 버튼을 누르면 지금 카메라에 화면이 어떻게 비치고 있는지 확인할 수 있으므로, 수시로 확인하면서 만든 애니메이션이 비치도록 카메라의 위치와 방향을 이동합니다.

 
카메라를 움직이는 것으로, 보다 다양한 시도를 할 수 있습니다.
카메라의 위치가 정해지면 동영상을 내보냅니다.

 
화면 오른쪽 상단에서 Render → Render Animation을 선택.
자동으로 렌더링이 시작되므로 잠시 기다린 후 동영상을 확인합니다.
이번에는 이런 느낌이 되었습니다.

 
여기까지 입력할 동영상 준비를 완료했습니다.
 

Control Net을 사용하여 애니메이션 만들기

먼저 ControlNet을 소개합니다.
stable-diffusion-webui(Automatic1111)를 열고 Extensions 탭을 엽니다.

 
위의 URL for extension's git repository 에
controlnet-webui의 Github 링크 ( https://github.com/Mikubill/sd-webui-controlnet.git )
를 입력하고 설치 버튼을 클릭합니다.
설치가 완료되면 설치된 탭에 ControlNet이 표시됩니다.

 
확인이 끝나면 이미지를 생성합니다.
프롬프트를 입력해 봅시다.
이때 가능한 한 복잡한 그림이 되지 않도록 프롬프트로 제어함으로써 생성되는 동영상에 깜박임을 억제할 수 있습니다.

 
그런 다음 Seed를 설정합니다.
Seed 값을 고정하면 프롬프트에서 제어와 마찬가지로 생성되는 동영상의 깜박임을 줄일 수 있습니다.

 
그런 다음 ControlNet을 설정합니다.
ControlNet을 열고 Enable을 체크하고 Model을 선택합니다.
이번에는 OpenPose를 이용합니다.

 
드디어 동영상을 생성하겠습니다.
화면 하단의 스크립트 탭에서 Controlnet m2m을 선택하고 방금 만든 동영상을 업로드합니다.

 
Duration은 1장의 프레임을 표시하는 시간을 밀리 세컨드 단위로 조정할 수 있으므로, 천천히 화상을 움직이고 싶은 경우는 큰 값을 설정해 주시면 좋겠습니다.
 
준비가 되면 Generate 버튼을 클릭합니다.
PC 스펙에 따라 다릅니다만, 제가 사용하고 있는 RTX3060(12GB)에서 2초의 동영상을 만드는데 대략 10분 정도 걸렸습니다(입력한 동영상의 프레임 레이트에 따름)
처리가 완료되면 Generate 버튼 아래에 출력 결과가 GIF로 출력됩니다.
(엄청 골절되고 있다...)

 
보다 퀄리티가 높은 동영상을 생성하는 방법은 나중에 별도로 작성해 보겠습니다.

반응형