6.6 KiB
ComfyUI OpenToonz Line Tools
러프한 블루 만화/웹툰 원고를 위한 OpenToonz 아이디어 기반 ComfyUI 커스텀 노드입니다.
이 프로젝트는 OpenToonz 전체 앱을 임베드하거나 C++ 코드를 그대로 포팅하지 않습니다. 현재 스케치-to-컬러 연구에 필요한 제작 아이디어만 가볍게 가져옵니다.
- 스캔 원고식 블루 선 정리
- 채색 전에 열린 선/gap 자동 보정
- 이후 색 보정을 위한 region/palette map 생성
목표 흐름은 다음과 같습니다.
블루 러프 패널 crop
-> Blue Sketch Cleaner
-> Line Gap Closer
-> Color Region Finder
-> Qwen Image Edit / MangaNinja / reference colorization
-> panel reassemble
왜 이 기능인가
OpenToonz의 강점은 전통 2D 애니메이션의 cleanup, ink/paint, palette 관리, compositing입니다. 현재 연구에 필요한 것은 UI나 타임라인이 아니라, 러프 원고를 채색 가능한 상태로 만드는 저수준 선 정리 단계입니다.
참고한 OpenToonz 문서:
- Cleaning-up Scanned Drawings
- Painting Animation Levels
- Managing Palettes and Styles
- OpenToonz source tree
노드
자세한 파라미터 가이드:
Blue Sketch Cleaner
블루 러프 연필선을 분류하고, 검은 선/흰 배경 형태의 정규화된 line image와 overlay preview를 만듭니다.
내부 workflow id: OTBlueLineCleanup
출력:
clean_line: 검출된 선을 검정으로 만든 흰 배경 이미지line_overlay: 원본 위에 검출 stroke를 빨간색으로 표시한 previewtransparent_line_preview: 투명 line 출력을 흰 배경에서 확인하는 previewsettings_json: 사용한 파라미터
Line Gap Closer
line skeleton의 endpoint를 찾고, 거리와 방향이 맞는 짧은 gap을 자동으로 닫습니다.
내부 workflow id: OTLineAutoClose
출력:
closed_line: gap closure 후 line imageclosure_overlay: 원래 선은 검정, 새로 닫은 선은 빨강으로 표시segments_json: 닫은 segment 좌표
Color Region Finder
line art로 분리된 fillable region을 labeling하고 region metadata JSON을 반환합니다. OpenToonz식 indexed color editing으로 가기 위한 첫 단계입니다.
내부 workflow id: OTRegionPaletteMap
출력:
region_preview: region label을 색으로 표시한 previewregions_json: 각 region의 bbox, area, centroid, style id
설치
이 폴더를 ComfyUI custom nodes에 연결합니다.
다른 ComfyUI 설치본에서는 다음처럼 clone합니다.
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/l2dnjsrud/ComfyUI-OpenToonzLineTools.git
이 저장소는 public이므로 GitHub 인증 없이 clone할 수 있습니다.
이 Mac에서는 개발 중인 폴더를 symlink로 연결해도 됩니다.
cd /Users/iwongyeong/AI/ComfyUI/custom_nodes
ln -s /Users/iwongyeong/AI/ComfyUI-OpenToonzLineTools ComfyUI-OpenToonzLineTools
필요하면 ComfyUI 환경에 의존성을 설치합니다.
cd /path/to/ComfyUI
source .venv/bin/activate
pip install -r custom_nodes/ComfyUI-OpenToonzLineTools/requirements.txt
deactivate
이 node 때문에 torch를 새로 설치하거나 업그레이드하지 마세요. CUDA/MPS
환경에서는 해당 ComfyUI 설치본이 이미 쓰고 있는 torch build를 그대로
사용하는 것이 안전합니다.
ComfyUI를 재시작하면 다음 카테고리에 노드가 나타납니다.
manga/opentoonz-line-tools
예제 워크플로우
ComfyUI 캔버스에서 그래프로 열 때는 UI workflow를 사용합니다.
examples/opentoonz_line_tools_basic_ui.json
이 그래프는 다음 흐름입니다.
LoadImage
-> Blue Sketch Cleaner
-> Line Gap Closer
-> Color Region Finder
-> SaveImage debug outputs
실행하기 전 rough panel 이미지를 ComfyUI input 폴더에 넣고 LoadImage
노드에서 선택하세요. placeholder 파일명은 panel_001.png입니다.
API나 스크립트에서 /prompt로 실행할 때만 API prompt 버전을 사용합니다.
examples/opentoonz_line_tools_basic_api.json
전체 페이지 입력
고해상도 만화/웹툰 전체 페이지에는 가능하면 패널 검출과 crop 이후에 이 노드들을 사용하세요.
Blue Sketch Cleaner는 전체 페이지에서도 line extraction preview 용도로
쓸 수 있습니다. 하지만 Line Gap Closer와 Color Region Finder는
패널 crop이나 경계가 제한된 line-art 영역을 기준으로 설계되어 있습니다.
전체 페이지에는 패널 여러 개, 말풍선, 원근선, 컷 경계가 함께 들어 있어
endpoint 수가 너무 많아지거나 region map이 max_regions cap에 걸릴 수
있습니다.
YOLO 스타일 연구 데이터셋은 local evaluator로 점검할 수 있습니다.
cd /path/to/ComfyUI/custom_nodes/ComfyUI-OpenToonzLineTools
/path/to/ComfyUI/.venv/bin/python scripts/evaluate_research_images.py \
--dataset-root /path/to/dataset \
--output-dir outputs/research_eval
패널 crop 폴더도 직접 점검할 수 있습니다.
/path/to/ComfyUI/.venv/bin/python scripts/evaluate_research_images.py \
--image-root /path/to/panels \
--output-dir outputs/panel_eval
검증
ComfyUI Python 환경으로 smoke test를 실행합니다.
cd /path/to/ComfyUI/custom_nodes/ComfyUI-OpenToonzLineTools
/path/to/ComfyUI/.venv/bin/python -m unittest discover -s tests -v
현재 범위
구현됨:
- OpenToonz 아이디어 기반 블루 cleanup baseline
- endpoint 기반 line autoclose
- fillable region labeling 및 palette preview JSON
- ComfyUI node wrapper
- 영어/한국어 문서와 시각화 문서
아직 구현하지 않음:
- OpenToonz C++ 직접 바인딩
- TLV/PLI 파일 지원
- 완전한 palette-index raster format
- semantic inking 또는 AI colorization model 자체
추천 다음 실험
현재 Mr.Blue v5 polygon crop을 입력으로 사용해서 다음을 비교합니다.
- raw crop -> Qwen Image Edit,
- cleanup crop -> Qwen Image Edit,
- cleanup + autoclose + region map -> reference colorization/correction.
성공 기준은 blue-line 제거, 구도 유지, fill leak 감소, palette/region JSON이 후처리 수정에 실제로 도움이 되는지입니다.