ChatGPT, GIF 생성 지원…6칸 이미지로도 가능

ChatGPT, GIF 생성 지원…6칸 이미지로도 가능

OpenAI는 11월 4일 ChatGPT Images 2.6을 공개했다. 가장 주목받는 새 기능은 GIF로, 프롬프트 한 줄이나 사진 한 장만 주면 반복 재생되는 애니메이션을 만들고, 이후 속도를 조절하거나 프레임 하나만 고칠 수도 있다. 공식 시연에 쓰인 프롬프트는 다소 가볍게 느껴질 만큼 단순하다. "can you make a gif of a cat dancing?"

우리도 로컬 Codex로 같은 방식으로 움짤 몇 개를 만들어 봤는데, 첫 단계부터 예상대로 되지 않았다.

GIF를 요청했더니 PNG가 돌아왔다

OpenAI에 따르면 Images 2.6은 ChatGPT와 Codex의 모든 요금제에서 쓸 수 있다. Codex에 종이배 GIF를 바로 요청하자 약 21초 뒤에 받은 것은 1536×1024 단일 프레임 PNG였다.

Codex에 내장된 이미지 생성 도구의 입력은 네 가지뿐이다. 프롬프트, 참조 이미지 경로, 최근 이미지를 몇 장 가져올지, 배경을 투명하게 할지 여부다. 모델 이름, 출력 형식, 프레임 수는 포함되지 않으며, 응답에도 모델 버전이 표시되지 않는다.

그래서 이번 이미지들의 출처부터 분명히 밝혀 둔다. 모두 Codex에서 Images 2.6의 기능으로 생성하라고 명시해 만든 것이지만, 실제로 2.6에서 나온 결과인지는 확인할 수 없다. 이번에 네이티브 GIF를 얻지 못했다고 해서 2.6이 지원하지 않는다고 단정할 수는 없다. ChatGPT 웹과 API는 별도의 진입점을 쓴다. GIF가 순차적으로 배포되고 있다는 보도도 있어, 계정에 아직 보이지 않는 것도 이상한 일은 아니다.

우회로: 먼저 6칸 이미지를 그린다

OpenAI의 공식 예시에는 사실 힌트가 있다. 동작을 스프라이트 시트 한 장으로 그린 뒤 이어 붙여 애니메이션으로 만드는 방식이다. 이 방법은 진입점을 가리지 않아 이미지를 생성할 수 있는 곳이면 어디서든 쓸 수 있다. 프롬프트 구조는 다음과 같다.

3열 × 2행의 스프라이트 시트, 총 6프레임, 각 프레임은 같은 크기.
읽는 순서는 왼쪽에서 오른쪽, 위에서 아래.
내용: 하얀 종이접기 배가 연한 파란색 수면에서 가볍게 오르내리고, 물결도 그에 따라 변한다.
모든 프레임에서 카메라, 배의 모양, 배경은 그대로 유지한다.
6번째 프레임은 자연스럽게 1번째 프레임으로 이어져야 한다.
글자, 숫자, 로고는 넣지 않는다.

이미지를 받은 뒤 잘라 내면, 몇 줄의 Python으로 합칠 수 있다.

from PIL import Image

sheet = Image.open("boat-sheet.png").convert("RGB")
w, h = sheet.width // 3, sheet.height // 2
frames = [sheet.crop((x * w, y * h, (x + 1) * w, (y + 1) * h))
          for y in range(2) for x in range(3)]
frames[0].save("boat.gif", save_all=True, append_images=frames[1:],
               duration=140, loop=0)

이 종이배가 이렇게 만들어졌다. 6프레임, 프레임당 140밀리초, 512×512, 파일 크기는 500KB 미만이다.

Illustration: a paper boat bobs on pale blue water, a looping GIF assembled from a six-frame AI sheet

움짤 네 개를 만들며 얻은 관찰

캐릭터의 모습은 예상보다 안정적이었다. 오리지널 아기 여우는 목도리, 배, 귀가 여섯 프레임 모두 일치했고, 점토 질감과 윤곽선에서만 약간의 떨림이 있었다.

Illustration: a clay fox in a blue scarf waves, keeping a consistent look across six AI-generated frames

배경이 자잘할수록 티가 난다. 종이배 움짤의 물결 질감은 프레임마다 조금씩 달라서, 속도를 늦추면 눈에 띈다. 깔끔한 반복을 원한다면 배경은 단색이나 큰 면 위주로 고르는 것이 좋다.

궤적이 있는 동작이 가장 어렵다. 원을 그리며 나는 종이비행기는 첫 버전의 경로가 비뚤비뚤해서 다시 그려야 쓸 수 있었고, 마지막 버전에서도 꺾인 선에 약간의 흔들림이 남았다. 손 흔들기, 위아래로 오르내리기, 고개 끄덕이기처럼 제자리에서 하는 작은 동작은 성공률이 눈에 띄게 높다.

여섯 프레임이면 충분하지만 욕심은 금물이다. GIF 하나에는 한 가지 동작만 담는 것이 좋다. 안전한 방법은 먼저 하나를 만들고, 같은 캐릭터로 여러 버전을 뽑아 얼굴, 색, 로고가 변형되지 않았는지 확인한 다음 대량 제작 여부를 결정하는 것이다.

API는 파라미터가 더 명확하다

개발자 쪽에는 정식 파라미터가 있다. output_format을 gif로 설정하고 frame_count와 frame_duration_ms를 함께 지정하며, 기본값은 9프레임에 프레임당 200밀리초다. 프레임 수 상한은 문서마다 다르다. 가이드에는 2~64, API 레퍼런스에는 2~16으로 적혀 있어, 안전하게 당분간은 16 이내로 쓰는 것이 좋다.

움직이기 전에 정지 이미지부터 확정하라

재작업은 대개 움직이기 전 단계에서 생긴다. 캐릭터의 얼굴형, 색 구성, 목도리를 매는 방식이 정해지지 않았다면, 6칸 이미지에서 한 칸만 어긋나도 전체를 다시 만들어야 한다.

그래서 먼저 마음에 드는 정지 이미지 캐릭터 시안을 하나 뽑고, 확정한 뒤에 움직이게 하는 순서가 더 수월하다. 이 단계는 꼭 ChatGPT에서 할 필요는 없다. PixPix의 GPT Image 2.6 페이지는 열자마자 이런 작업 흐름으로 이어진다. 프롬프트나 참조 이미지로 시작해 한 번에 한 곳씩 수정하면서, 유지해야 할 디테일을 함께 지정할 수 있고, 기본 선택은 더 정교한 Sunburst다. 위의 스프라이트 시트 프롬프트는 그 자체가 정지 이미지 요청이므로 이론적으로는 그곳에 넣어 시도해 볼 수도 있으며, 자르기와 합치기는 여전히 로컬에서 한다. 이 경로는 아직 직접 테스트하지 않았고 PixPix 페이지에도 GIF 기능은 적혀 있지 않으므로, 하나의 아이디어로만 봐야 한다.

게시 전에 유의할 점도 있다. 일부 플랫폼은 GIF 업로드 지원이 좋지 않아 영상으로 변환해야 할 수 있다. 이미지 속 글자와 로고는 프레임마다 확인해야 한다. 다른 사람의 사진으로 움짤을 만들 때는 먼저 당사자의 동의를 받아야 한다.

참고 출처: OpenAI Developer Community 공지, CocoLoop, OpenAI 이미지 생성 문서, The Decoder, AI×SNS Lab. 소요 시간과 파일 수치는 자체 테스트 결과이며, 모델 버전은 확인할 수 없었다.