8방향 스프라이트를 뽑으려다 두 가지에서 막혔습니다. 각도를 돌리면 캐릭터 일관성이 무너지고, 후측면이 유독 일그러집니다. 어느 각도가 실제로 문제인지 재봤습니다.
어떻게 쟀나
같은 시드, 같은 프롬프트에서 방향을 가리키는 단어만 바꿉니다. 캐릭터에는 좌우 비대칭 표식 세 개를 일부러 넣었습니다 — 왼쪽 어깨에만 걸친 붉은 스카프, 오른쪽 허리의 검, 왼쪽 눈의 안대. 일관성이 깨지면 이런 것들이 먼저 반대편으로 옮겨가고, 말로 검증할 수 있는 서술이라야 나중에 판정이 가능합니다.
모델 novaAnimeXL_ilV190 / Illustrious-XL-v0.1
크기 1024x1024, euler, 28 steps, cfg 5.5
각도 0deg 45deg 90deg 135deg 180deg 225deg 270deg 315deg
시드 811005, 4242, 99117, 730001, 1357911
덧붙여, ComfyUI는 그래프가 완전히 같으면 실행 캐시가 물려 재실행이 0.2초에 끝납니다. 여기서는 방향 단어가 매번 달라 문제가 없지만, 같은 조건을 두 번 재려면 시드를 바꿔야 합니다. 이걸 모르고 "재현했다"고 적으면 캐시된 같은 그림을 두 번 본 것입니다.
첫 시도에서 이미 무너졌습니다
Illustrious-XL로 8각도를 돌리자 여덟 장 전부 캐릭터가 두 명으로 나왔습니다.
네거티브에 multiple characters를 넣었는데도 그렇습니다. 90도와 270도에는
profile을 명시했는데 프로파일이 한 장도 없었습니다. 전부 정면입니다.
화풍도 각도에 따라 갈렸습니다. 정면·대각 방향은 엣지 밀도 0.075~0.082에 양자화 색 수 4,000~4,700색인데, 90·180·270도만 0.125~0.136에 2,000~2,400색입니다. 같은 시드에서 단어 몇 개를 바꿨을 뿐인데 선화와 픽셀아트 사이를 오간 셈입니다.
novaAnimeXL로 바꾸니 방향은 대체로 지켜졌습니다. 여기까지 보고 "후측면에서 두 명이 된다"고 정리할 뻔했는데, 시드 하나로 본 결과였습니다.
시드를 다섯 개로 늘리자
6각도 × 5시드, 30장입니다. 요청한 각도가 실제로 나온 비율입니다.
| 각도 | 성공 | 실패한 장에서 나온 것 |
|---|---|---|
| 0도 정면 | 5/5 | — |
| 90도 우측면 | 2/5 | 3/4 정면 |
| 135도 우후측면 | 0/5 | 전부 정면 |
| 180도 정후면 | 5/5 | — |
| 225도 좌후측면 | 1/5 | 정면 |
| 270도 좌측면 | 2/5 | 3/4 정면 |
뒤통수가 어려울 거라는 예상이 틀렸습니다. 정후면은 다섯 번 다 제대로 나왔고, 오히려 가장 안정적인 각도였습니다. 무너진 건 그 양옆 대각선입니다.
정면(위)과 정후면(아래). 시드 5개 모두 요청한 각도로 나왔습니다.
학습 데이터를 생각하면 앞뒤가 맞습니다. 캐릭터 턴어라운드 시트에는 정면·정측면·정후면이 흔합니다. 후측면은 드뭅니다. 모델이 자신 있는 각도만 그리고, 나머지는 아는 각도로 되돌아가는 것으로 보입니다.
후측면에서 실제로 일어나는 일
우후측면(위)과 좌후측면(아래). 10장 중 1장만 실제 후측면입니다.
열 장 중 아홉 장이 그냥 정면입니다. 각도를 요청했는데 무시된 것이지, 후측면을 그리려다 일그러진 게 아닙니다. 이 구분이 중요한 게, 전자는 프롬프트로 해결할 수 없고 포즈를 직접 지정해야 한다는 뜻이기 때문입니다.
왼쪽 위 한 장(시드 811005)만 다르게 실패했습니다. 뒤돌아선 인물과 정면 인물이 한 장에 둘 그려졌습니다. 30장 중 이런 장이 두 장 있었고 둘 다 같은 시드였습니다. 처음에 이걸 후측면의 특징으로 봤는데, 시드를 늘려보니 그 시드 고유 현상이었습니다.
우측면(위)과 좌측면(아래). 5장 중 2장만 프로파일입니다.
측면도 좋지 않습니다. 다섯 번 중 두 번만 프로파일이고 나머지는 3/4 정면으로 돌아옵니다. 시드 1357911에서는 방패와 검이 인물 옆에 따로 떠 있는 장식품처럼 그려졌습니다.
공통으로, game sprite라는 단어가 작은 치비 스프라이트로 문자 그대로
새어나옵니다. 구석에 작은 기사 아이콘이 하나씩 붙습니다. 그리고 두 모델 모두
"plain flat white background"를 요청했는데 흰 배경이 나오지 않았습니다. Illustrious는
배경 밝기 95~106의 중간 회색, nova도 121~214로 흰색(255)에는 못 미쳤습니다.
측정 도구가 두 번 틀렸습니다
30장을 눈으로 세면 못 믿을 것 같아 인물 수를 자동으로 세는 검출기를 만들었습니다. 배경색에서 멀어진 픽셀을 피사체로 보고, 머리 높이 띠에서 끊긴 덩어리를 셉니다. 기존 16장으로 검증해 15/16이 나와서 그대로 썼습니다.
신규 30장에서 결과가 이상했습니다. 눈으로 보니 작은 치비 아이콘과 떠 있는 방패·검을 인물로 세고 있었습니다. 검증용 16장에는 그런 요소가 없어서 걸러지지 않았던 것입니다. 인물로 인정할 최소 폭을 전체의 5%에서 15%로 올리자 신규 30장에서 30/30, 원래 검증세트에서도 16/16이 됐습니다.
두 번째는 더 단순한 실수입니다. 190픽셀 대조표로 보고 정후면 다섯 장 중 세 장이 정면이라고 판단했는데, 원본 크기로 열어보니 다섯 장 모두 정상적인 후면이었습니다. 붉은 스카프가 앞으로 날려서 작게 보면 정면처럼 보였을 뿐입니다. 표의 5/5는 이 확인을 거친 숫자입니다.
지금 시점의 정리
정면과 정후면은 프롬프트만으로 됩니다. 이 두 각도는 다섯 번 다 나왔습니다.
측면은 시드 뽑기입니다. 2/5라 몇 번 돌려서 고르는 식으로는 되지만, 8방향을 자동으로 뽑는 파이프라인에 넣기에는 불안정합니다.
후측면은 프롬프트로 안 됩니다. 0/5와 1/5입니다. 일그러지는 게 아니라 아예 무시되므로, 단어를 더 붙이거나 가중치를 올리는 방향으로는 해결되지 않을 가능성이 큽니다. OpenPose나 depth로 포즈를 직접 주는 쪽이 맞다고 봅니다.
모델 선택이 먼저입니다. Illustrious-XL은 이 프롬프트에서 방향 제어가 아예 되지 않았습니다. 같은 계열이라도 모델에 따라 결과가 완전히 달랐습니다.
이 실험이 말하지 못하는 것
모델 두 종, 시드 다섯 개, 프롬프트 한 벌입니다. ControlNet도 LoRA도 IP-Adapter도 쓰지 않았습니다. "프롬프트만으로는 후측면이 안 된다"까지가 이 데이터로 말할 수 있는 범위이고, "후측면은 불가능하다"는 아닙니다. 캐릭터가 기사 한 명이라 의상이나 체형이 다르면 또 다를 수 있습니다.
ControlNet으로 같은 여섯 각도를 다시 재볼 생각입니다. 후측면이 포즈 지정으로 살아나는지가 다음 확인 대상입니다. 비슷한 걸 해보신 분 계시면 어떤 방식으로 푸셨는지 궁금합니다.