brunch

You can make anything
by writing

C.S.Lewis

by 데카당스 Sep 02. 2024

미드저니에서 일관성 있는 캐릭터 그림 만드는 법

미드저니를 부탁해 -1

(미드저니로 동화책을 만들면서 막히는 짬짬이 기록도 할 겸 미드저니 관련된 포스팅을 해보고자 합니다. 자주 막히네요ㅜㅜ)


미드저니 홈페이지에 가보면 사람들이 미드저니를 활용해 만든 훌륭한 작품들을 많이 볼 수 있다. 나도 가끔씩 이곳에 영감을 얻기 위해 들르는 편이다. 특히 어떻게 이런 표현을 했지?라고 생각이 들 만큼 놀라운 작품들도 간간이 보인다.


그러나 막상 미드저니를 활용해서 무언가 해보려 하면 결코 쉽지 않은 게 사실이다.


특히 동화책이나 웹툰 같은 스토리가 있는 작품을 만들려면, 일관성 있는 캐릭터를 만드는 것이 중요하다. 예를 들면 철수라는 캐릭터가 이 씬에서는 분노하고, 다음 씬에서는 복수를 위해 길을 떠나는 식이다.


미드저니에 어떤 문제가 있는지, 글로만 봐서는 알기가 어려우니, 다음과 같이 "철수"라는 캐릭터를 미드저니를 통해 만들어보자. 먼저 디스코드에 들어가 미드저니 Bot에게 다음과 같은 프롬프트를 넣어본다.


"a character called Cheolsoo, a 25-year-old man with a round face. His height is 180cm and his weight is 80kg. He is wearing a jean and a white shirt. He is clenching his fists with anger. He is at his small messy flat with stuff like it was robbed. Cartoon style.

철수라는 캐릭터. 25세이고 둥근 얼굴. 키는 180센티미터, 몸무게는 80킬로그램. 청바지와 하얀 셔츠를 입음. 분노에 주먹을 꽉 쥐고 있음. 그는 강도가 지금 든 것처럼 엉망이 된 그의 작은 아파트에 있음. 만화 스타일"

결과물:


이번엔 캐릭터를 묘사하는 내용은 전부 동일하고 대신 행동이 다른 프롬프트를 넣어보자.

a character called Cheolsoo, a 25-year-old man with a round face. His height is 180cm and his weight is 80kg. He is wearing a jean and a white shirt. After realizing his best friend robbed his flat, he starts a journey to revenge equipped with a sword. Cartoon style.

철수라는 캐릭터. 25세이고 둥근 얼굴. 키는 180센티미터, 몸무게는 80킬로그램. 청바지와 하얀 셔츠를 입음. 그의 가장 친한 친구가 그의 아파트를 털었다는 사실을 깨닫고 그는 복수를 위해 칼을 차고 모험을 떠난다. 만화 스타일"

결과물:


뭔가 비슷한 느낌이지만, 절대 스토리가 이어지는 웹툰이나 동화책 같은 한 페이지가 넘어가는 장르에서는 사용할 수가 없는 그림들이다.


그렇다면 어떻게 하면 미드저니의 기능을 활용해 일관성 있는 캐릭터가 나오는 각기 다른 그림들을 만들 수 있을까? 이번 시간에는 일관성 있는 캐릭터를 가능케 하는 미드저니의 기능들에 대해 알아보겠다.




캐릭터 레퍼런스(Character Reference)


먼저 미드저니 버전 6 (2024년 9월 1일 현재기준 미드저니의 버전은 6.1이다)부터 도입된 캐릭터 레퍼런스라는 기능을 활용하는 방법을 알아보자.


사용법은 간단하다. 프롬프트 뒤에 "--CREF [참고할 이미지의 주소]"를 넣어주면 된다.


여러 가지 방법으로 CREF를 활용할 수 있지만, 다음은 필자가 애용하는 방법이다.


1) 먼저 마음에 드는 철수 그림을 저장한다.

2) 디스코드를 통해 철수 그림을 미드저니 봇에게 보낸다.


3) 그림을 클릭하고, 마우스 우클릭을 해 이미지를 새 탭으로 오픈한다.

4) 새로 오픈된 탭의 웹주소를 복사한다.

5) 이제 아까와 같은 프롬프트를 쓰되, 마지막에 CREF와 캐릭터 이미지의 주소를 적어준다.

a character called Cheolsoo, a 25-year-old man with a round face. His height is 180cm and his weight is 80kg. He is wearing a jean and a white shirt. After realizing his best friend robbed his flat, he starts a journey to revenge equipped with a sword. Cartoon style. --cref 이미지주소

결과물:


미묘하게 차이가 있지만, 보다시피 결과물이 훨씬 기존의 캐릭터와 비슷하다는 사실을 알 수 있다.




스타일 레퍼런스(Style Refernece)로 캐릭터 스타일을 더욱 일관되게 만들기


이번에는 지금 쓰고 있는 동화책의 주인공인 귀여운 여자아이가 케이크를 먹고 있는 장면을 그린다고 하자. 먼저 바탕이 될 귀여운 캐릭터 그림은 아래와 같다.


바탕이 될 캐릭터 그림:


이제 이 아이가 맛있게 케이크를 먹고 있는 그림을 그려보자. 프롬프트는 다음과 같다.

a cute little girl, eating a piece of cake with a big smile. --CREF 이미지 주소
귀여운 여자아이. 큰 미소를 지으며 케이크를 먹는 중.

결과물:


분명 같은 캐릭터인데, 완전히 다른 스타일로 그려진 것을 볼 수 있다. 오른쪽 아래의 그림이 그나마 비슷하지만, 그조차 같은 작품에서 사용하기 어려울 정도로 다르다.


왜 이런 현상이 발생할까?


바로 그림의 "스타일"을 지정해주지 않았기 때문이다.


그림의 스타일을 정해주지 않으면 미드저니는 프롬프트를 마음대로 해석해 랜덤 한 스타일로 그림을 그려준다. 그럼 만화스타일이니 프롬프트에 "Cartoon Style"을 추가해서 다시 그려보자.


결과물:


확실히 결과물이 나아진 것을 알 수 있다. 그러나 역시 미묘하게 다르다. 같은 만화 스타일이라 해도, 지브리 스타일과 픽사 스타일, 일본만화 스타일이 정말 다르기 때문이다.


그렇다면 스타일을 아주 디테일하게 지정해 주면 일관된 그림을 얻을 수 있을까?


당연히 스타일을 대충 지정했을 때보다 나은 결과물을 얻을 수 있겠지만, 정확한 스타일을 파악하는 것도 어렵고, 그 스타일을 매번 프롬프트에 넣는 것도 어렵다.


이럴 때 활용할 수 있는 것이 스타일 레퍼런스 기능이다.


사용법은 캐릭터 레퍼런스와 동일하다: "--SREF [참고할 이미지의 주소]"


차이점이라면 CREF 대신 SREF를 써주면 된다. 이번에는 프롬프트에 CREF와 SREF의 두 가지 레퍼런스를 모두 넣어서 결과물이 어떻게 나오는지 살펴보자. 프롬프트는 다음과 같다.


A cute little girl, eating a piece of cake with a big smile. --CREF 이미지 주소 --SREF 이미지 주소
귀여운 여자아이. 큰 미소를 지으며 케이크를 먹는 중.

결과물:


결과물이 훨씬 원본에 근접한 것을 볼 수 있다. 첫 번째 그림의 경우, 그냥 써도 될 정도이다.


물론 미드저니의 특성상 이렇게 하더라도 정확한 그림을 얻기 어려운 경우가 많다. 또한 일관된 캐릭터라 하더라도 마음에 드는 그림이 아닐 수도 있다.


이럴 때는 역시 프롬프트를 미세하게 수정하면서 원하는 그림이 나올 때까지 반복하는 수밖에 없다.




시드(Seed) 기능 활용하기


다음으로 일관된 캐릭터의 그림을 만드는 방법은 "시드"를 활용하는 것이다.


시드는 쉽게 말하면, 생성된 그림의 일련번호와 같은 것인데, 캐릭터 레퍼런스, 스타일 레퍼런스와 비슷하게 추가적인 명령어로 일관된 그림을 그리는데 도움을 받을 수 있다.


시드 기능을 사용하기 위해서는, 시드 번호를 얻어야 하는데, 이 방법이 조금 까다롭다. 아래를 참고하자.


1) 먼저 바탕화면이 될 그림을 우클릭한 후, "반응 추가하기"를 선택한다.

2) 더 보기를 선택한다.

3) 새로 나타난 창에서 ":envelope:"를 검색한다.

4) 제일 왼쪽에 보이는 편지를 선택해서 추가한다.

5) 추가한 후, 다시 그림에 우클릭을 해보면 위 쪽에 편지 모양 아이콘이 있는 것을 볼 수 있다. 편지 모양 아이콘을 선택한다.

6) 다음과 같이 미드저니 봇이 시드 번호를 알려준다.


이제 시드 번호를 얻었으니, 사용하는 방법을 알아보자. 사용하는 방법은 캐릭터 레퍼런스나 스타일 레퍼런스와 동일하다: "--SEED [시드 번호]"



이번에는 시드 번호를 활용해서 케이크 먹는 그림을 그려보자. 먼저 캐릭터 레퍼런스와 스타일 레퍼런스 없이 시드만 활용한 경우이다.


시드만 활용한 경우의 결과물:


보다시피 시드번호만 활용해서는 큰 도움을 얻을 수가 없다. 이번에는 스타일 레퍼런스를 함께 사용해 보자.


시드번호와 스타일 레퍼런스를 활용한 경우의 결과물:


결과물이 훨씬 원본과 비슷해졌지만, 아직도 차이가 느껴진다. 이번에는 캐릭터 레퍼런스, 스타일 레퍼런스, 시드, 세 가지 기능을 모두 넣어보자.


시드번호와 스타일 레퍼런스, 캐릭터 레퍼런스를 모두 활용한 경우의 결과물:


세 가지 기능을 모두 활용하자 이제야 만족스러운 결과물들이 나오기 시작한다. 그러나 스타일 레퍼런스와 캐릭터 레퍼런스를 둘 다 사용했을 때와 별다른 차이는 보이지 않는다.


필자의 경우, 그래서 시드 기능을 활용하지 않는다. 스타일 레퍼런스와 캐릭터 레퍼런스만 가지고도 만족스러운 결과를 얻을 수 있기 때문이다.




캐릭터 시트 만들어 활용하기


이번에는 좀 더 고급 기술로, 캐릭터 시트를 만들어 활용하는 방법을 알아보자. 캐릭터 시트란, 캐릭터의 다양한 모습들을 미리 만들어놓는 것을 말한다.


미드저니로 캐릭터 시트를 만드는 법은 간단하다. 다름 아닌 프롬프트를 이용하는 것. 아래 프롬프트의 예시를 보자.


a character sheet of 5-year old cute girl who likes yellow dress. Various expressions and posses in white background. --sref 참고할 스타일 주소 --ar 16:9


결과물:

프롬프트를 한 번 쪼개서 살펴보자.


1) a character sheet - 캐릭터 시트를 만들기 위해 무조건 넣어야 하는 프롬프트

2) of 5-year old cute girl who likes yellow dress - 이 부분에 원하는 캐릭터의 특징을 넣는다.

3) Various expressions and poses in white background - 캐릭터 시트에 다양한 캐릭터의 모습들을 그리기 위해 넣는 프롬프트

4) --ar 16:9 - 결과물의 비율을 정하는 기능으로, 16:9 정도로 가로를 길게 하면 더 많은 캐릭터를 한 그림에 넣을 수 있다.


이렇게 캐릭터 시트를 만들면, 내가 원하는 그림에 가장 어울리는 표정과 자세를 하고 있는 캐릭터를 따로 잘라내서 캐릭터와 스타일 레퍼런스로 사용할 있다. 예를 들면 행복한 표정을 지어야 하는 그림이라면, 캐릭터 레퍼런스에서 행복한 표정을 하고 있는 캐릭터만 잘라내 레퍼런스로 활용하는 식이다.


또한 한 장만 만들지 말고, 마음에 드는 캐릭터가 뽑히면 캐릭터 레퍼런스와 스타일 레퍼런스를 활용해 여러 장 만들어놓는 것을 추천한다. 특히 다양한 복장을 만들어 놓으면, 나중에 활용하기가 좋다 (필자는 동화책을 쓰는 중이라 굳이 여러 복장을 만들지 않았다)




또 다른 레퍼런스를 활용해 원하는 그림 얻기


이렇게 캐릭터 레퍼런스와 스타일 레퍼런스, 캐릭터 시트까지 활용해 동화책이든 뭐든 일관된 캐릭터가 나오는 작품을 만들기 시작하면, 아마 크나큰 좌절을 겪게 될 것이다.


다른 포스팅에서 어떤 벽들이 있으며, 어떻게 벽들을 기술적으로 극복했는지 다루겠지만, 역시 가장 큰 문제는 원하는 그림을 뽑기 어렵다는 점이다.


특히 프롬프트만 활용해 캐릭터의 자세와 표정을 바꾸기가 너무 어렵다. 원하는 그림이 나올 때까지 인디안 기우제를 지내며 미드저니를 무한반복으로 돌리게 된 가장 큰 이유인데, 필자가 분석한 원하는 캐릭터의 자세와 표정을 바꾸기 어려운 이유는 다음과 같다.


영어로 프롬프트를 넣다 보니, 언어적인 한계가 있다.

언어의 특성상 같은 자세나 표정이라도 해석하는 방법이 다양할 수 있다.

레퍼런스 자체의 자세와 표정을 가장 중시하기 때문에, 프롬프트가 어느 정도 무시된다.


이를 극복하는 방법은 예상외로 단순했는데, 바로 원하는 자세와 표정의 레퍼런스 사진을 하나 더 넣어주는 것이다. 캐릭터 레퍼런스, 스타일 레퍼런스를 둘 다 활용하고 있는데 어떻게 새로운 레퍼런스를 넣어줄 수 있을까?


바로 프롬프트에 원하는 레퍼런스 그림의 주소를 넣는 것이다.


예제를 한 번 살펴보자.


이번에는 동화책에서 비 오는 날, 아이가 바닥에 놓여있는 신비한 우주고래를 만나기 직전의 장면이다. 아이는 우산을 쓰고, 쪼그려 앉은 채, 무언가를 신기한 눈빛으로 쳐다보고 있다.


1) 먼저 자세와 표정의 레퍼런스가 될 그림을 찾는다. 필자는 미드저니 홈페이지의 공개된 그림들을 최대한  활용했다. 아래 그림을 레퍼런스로 활용했다.

2) 아래와 같이 프롬프트를 입력한다.

레퍼런스 그림의 웹주소 an isolated image of a toddler girl crouching and trying to reach out to something. Wearing a red school backpack and white shoes. She is also holding a large red umbrella. no background. Curious face. --cref 캐릭터 시트 --sref 캐릭터 시트


결과물:

미드저니의 기본은 역시 반복. 원하는 그림을 얻을 때까지 무수한 프롬프트 미세조정과 반복생성을 거듭하는 것이다. 그러다 보면 어느 순간 자기 자신과 타협을 하는 순간이 온다. 그러나 레퍼런스를 잘 활용하면 시행착오의 수를 엄청나게 줄일 수 있다.




이번 글에선 미드저니를 활용해 한 장의 일러스트가 아닌, 일관된 캐릭터가 나오는 여러 장의 그림을 그릴 수 있는 방법에 대해서 알아봤다.


이 밖에도 레퍼런스 비중을 조절하는 기능 등도 있지만, 일관성 있는 캐릭터를 그리기 위해서는 레퍼런스가 무척 중요하기 때문에, 딱히 다루지 않았다.


버전 6에서 도입된 캐릭터 레퍼런스 기능 이후로 미드저니를 통해 웹툰이나 그림책을 만들 수 있는 길이 열렸다. 그전에도 가능했겠지만, 훨씬 수월해진 것도 사실이다.


물론 아직까지는 부족한 점도 많다.


특히, 한 장의 그림에 일관된 두 캐릭터를 넣는 것이 무척 어렵다. 그러다 보니, 캐릭터와 배경을 따로 만들어, 캐릭터를 배경에 배치하는 편법을 써야만 했다. 또한 두 캐릭터가 가깝게 붙어 상호작용하는 그림을 그리기가 거의 불가능에 가까웠다.


하지만 생성형 AI의 발전속도는 이미 기존의 예측을 뛰어넘고 있다. 여러 가지 어려움 때문에, 기술적인 편법을 동원해 그림책을 만들고 있지만, 훨씬 더 편리하게 그림책이나 웹툰을 그릴 수 있는 날도 멀지 않았다고 본다.


그럼 오늘도, 미드저니하시길.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari