goodchuck 블로그

그림 연습을 관리하는 데스크탑 앱, artdesk 를 만들었다

8분 읽기

그림 연습을 하다 보면 파일은 계속 쌓입니다. 크로키 한 장, 포즈 연습 한 장, 따라 그린 구도 한 장. 그런데 얼마나 쌓였는지, 뭘 건너뛰었는지는 탐색기로 봐서는 알 수가 없어요. 폴더 안에 파일이 몇 개 있는지는 보여도, 오늘 연습을 했는지, 어떤 포즈는 아직 한 번도 안 그렸는지는 안 보이니까요.

그래서 그 위에 얇게 얹는 앱을 만들었습니다. 그림 연습을 관리하는 데스크탑 앱, artdesk 예요.

대시보드 — 앱을 켜면 처음 보이는 화면 (샘플 데이터로 띄운 화면)
대시보드 — 앱을 켜면 처음 보이는 화면 (샘플 데이터로 띄운 화면)

화면은 여덟 개

화면하는 일
라이브러리작업 폴더를 통째로 훑어보기
구도 연습글로 설명되는 구도를 카드 덱으로 외우기
포즈 연습흩어진 레퍼런스를 링크로 모아 외우기
크로키타이머에 맞춰 한 장씩 넘기며 그리기
입체기본 도형을 3D 로 돌려 가며 그리기
인형내 3D 모델을 세우고 관절을 돌려 포즈 잡기
자료 링크강좌·사이트 주소를 주제별로 모아 한 번에 열기
연습 일지날짜별로 한 일과 느낀 점 남기기

여기에 첫 화면인 대시보드가 있습니다. 서버도, DB 도, 계정도 없는 완전한 로컬 앱이에요. (스크린샷 왼쪽 메뉴의 생성은 NovelAI 로 그림 소스를 만드는 탭인데, 지금은 gendesk 라는 별도 앱으로 옮겼어요. 글 끝에서 다시 이야기합니다.)

먼저 정한 두 가지

파일은 읽기만 한다. 앱은 그림 파일을 옮기거나 고치지 않습니다. 폴더를 어떻게 나눴는지가 곧 그 사람의 분류 방식이라, 앱이 자기만의 구조를 강요하지 않고 폴더를 그대로 보여 줘요. 앱이 덧붙이는 건 통과 기록이나 메모 같은 연습 정보뿐입니다.

디스크가 정본이다. 앱은 파일 목록을 따로 저장하지 않고, 켤 때마다 폴더를 다시 훑습니다. 밖에서 파일을 옮기거나 지웠는데 앱이 예전 목록을 붙들고 있으면 곤란하니까요. 저장하는 건 사용자가 정한 것뿐이에요. 어떤 폴더를 등록했는지, 어디를 보고 있었는지, 레벨과 메모.

라이브러리 — 작업 폴더를 그대로 훑기

그림을 모아 둔 작업 폴더(여러 개도 됩니다)를 등록하면, 하위 폴더까지 훑어서 폴더 트리와 썸네일 그리드로 보여 줘요. 폴더마다 하위까지 합친 그림 수가 붙어서 어디에 얼마나 쌓였는지 한눈에 보입니다. 이름·최신·오래된·큰 파일 순 정렬과 파일명 검색이 있고, psd·clip·kra 같은 작업 파일도 확장자 배지로 같이 보여 줘요. 더블클릭하면 기본 앱으로 열립니다.

대시보드 — 오늘 뭐부터 그릴까

앱을 켜면 대시보드가 먼저 뜹니다. 이 화면이 답하려는 질문은 하나예요. "오늘 뭐부터 그릴까?"

연습한 날을 칸으로 채우는 잔디와 연속 일수, 구도·포즈 연습 진행률, 최근 그린 그림, 최근 통과한 카드를 한 화면에 모으고, 카드마다 그다음 화면으로 가는 버튼을 달았어요.

맨 위 오늘 카드는 보여 주기만 하지 않습니다. 오늘 상태에 맞춰 인사말이 바뀌고, 일지 화면에 가지 않아도 ✏️ 창작함 · 🎉 완성을 바로 눌러 켜고 끌 수 있어요. 누르면 잔디와 연속 일수가 그 자리에서 같이 바뀝니다.

대시보드가 새로 세는 숫자는 거의 없어요. 진행률이나 연속 일수는 각 화면이 이미 계산하고 있어서, 대시보드는 그걸 모아 보여 주기만 합니다. 같은 통계를 두 곳에서 따로 세면 언젠가 숫자가 어긋나니까요.

구도 연습 — 통과는 사람이 누른다

구도는 글로 설명이 됩니다. "삼분할: 3×3 교차점에 주제를 둔다"처럼요. 그래서 구도 연습은 카드 덱이고, 기본 구도 31개를 채워서 시작합니다. 빈 목록으로 시작하면 서른 개를 손으로 타이핑해야 하니까요.

통과는 앱이 판정하지 않습니다. 제대로 그렸는지는 그린 사람만 알아요. 그래서 통과 버튼은 사람이 누르고, 앱은 그걸 눈에 보이게 쌓아 주는 일만 합니다. 진행률 막대, 분야별 게이지, 입문 → 초급 → 중급 → 상급 → 마스터 단계까지요. 단계는 개수가 아니라 비율로 정해서, 덱을 늘리거나 줄여도 의미가 그대로예요.

구도 연습 — 31개 중 12개 통과, 오른쪽에 분야별 진행과 최근 통과 (샘플 데이터)
구도 연습 — 31개 중 12개 통과, 오른쪽에 분야별 진행과 최근 통과 (샘플 데이터)

포즈 연습 — 원본은 그 자리에 두고 링크만

포즈는 글로 설명이 안 됩니다. "오른팔을 45도로…"를 읽고 그릴 수는 없죠. 그래서 포즈 덱은 카드 내용이 이미지 파일 그 자체예요.

그렇다고 레퍼런스를 한 폴더에 모으라고 하지는 않았습니다. 자료는 다운로드 폴더에도, 외장 하드에도, 여기저기 흩어져 있기 마련이니까요. 포즈 덱은 원본 파일 위치를 가리키는 링크 목록입니다. 복사하지도, 옮기지도, 이름을 바꾸지도 않아요.

  • 단계 템플릿을 누르면 01 서있기 · 02 앉기 · … · 10 둘 이상 10단계가 한 번에 생깁니다. "뭘 단계로 나누지?"가 첫 문턱이라서요.
  • 카드를 열면 레퍼런스와 내가 그린 그림을 나란히 놓고 비교할 수 있어요.
  • 원본을 지우거나 옮기면 그 카드는 점선과 "없음"으로 바뀝니다. 그래도 자동으로 지우지는 않아요. 외장 하드가 잠깐 빠진 것일 수도 있으니까요.

크로키 — 연습은 행위, 덱은 자료

크로키는 타이머에 맞춰 한 장씩 넘기며 빠르게 그리는 연습입니다. 포즈 덱과 화면을 따로 둔 건, 크로키는 행위고 포즈 덱은 자료이기 때문이에요. 자료를 막 받아 놓고 정리하기 전에 그냥 그려 보고 싶을 땐, 라이브러리 폴더를 통째로 돌리는 게 맞습니다.

  • 재료는 셋 중에서 골라요. 손으로 골라 담은 묶음, 포즈 덱, 라이브러리 폴더.
  • 한 장에 30초부터 10분까지, 또는 직접 입력. 종이를 보고 있을 때를 위해 넘어가기 3초 전에 알림음이 납니다.
  • 레퍼런스 위에 좌우 반전, 삼분할·대각선 격자, 흑백을 걸 수 있어요. 뒤집어 보면 어긋난 곳이 바로 보이고, 격자는 구도 덱이 외우게 하는 바로 그 선들입니다.
  • 끝나면 그린 것들을 한 번에 통과 처리하거나 오늘 일지에 한 줄을 남길지 물어봐요.

입체 — 안 보이는 면을 상상하는 연습

사진만 보고 그리면 안 보이는 면을 상상하는 힘이 잘 안 붙습니다. 상자를 그리라고 하면 앞면은 그리는데, 뒤쪽 모서리가 어디로 가는지는 모르는 식이죠.

입체 화면에서는 상자·원기둥·구 같은 기본 도형부터 두상·흉곽·골반까지 3D 로 돌려 볼 수 있어요. 핵심은 구조 보기 입니다. 먼저 끈 채로 그리고, 다 그린 뒤 켜면 숨은 모서리가 원래 어디로 갔어야 했는지 보여요. 틀린 곳을 확인하는 그 순간이 실력이 느는 지점이라고 봤습니다. 빛도 여섯 방향에서 바꿔 볼 수 있어서, 같은 상자가 빛에 따라 얼마나 달라지는지 연습할 수 있어요.

입체 — 상자를 비스듬히 돌리고 구조 보기를 켠 화면
입체 — 상자를 비스듬히 돌리고 구조 보기를 켠 화면

자료 링크 — 여는 것만, 가져오지는 않는다

그림 자료는 결국 유튜브·핀터레스트·블로그 같은 밖에 있습니다. 매번 검색해 들어가는 대신 주제별로 모아 두고 한 번에 열 수 있게 했어요.

일부러 안 한 것도 있습니다. 링크의 페이지 제목이나 썸네일을 가져오지 않아요. 그러려면 앱이 바깥으로 요청을 보내야 하고, 그 순간 "완전한 로컬 앱"이 아니게 되니까요. 제목은 사용자가 적습니다. 그리고 링크는 http · https 주소만 받아요. 다른 형식의 주소가 섞이면 링크를 여는 순간 엉뚱한 프로그램이 실행될 수 있어서, 담을 때 한 번, 열 때 한 번 확인합니다.

연습 일지 — 통과 기록이 못 담는 것

하루가 카드 하나예요. 한 일과 느낀 점 두 칸이 있고, 오늘 칸은 항상 맨 위에 열려 있습니다.

  • 그날 통과한 구도·포즈는 자동으로 붙어요. 안 적어도 기록이 남으니, 사람은 그게 못 담는 것만 적으면 됩니다. "인체 드로잉 1시간" 같은 것들이요.
  • 🎨 창작함 · ✅ 작품 완성을 체크하면, 시작일이나 마감을 따로 정하지 않아도 두 완성 사이에 창작한 날 수를 세어 "이 작품에 창작 N일 걸렸다"를 보여 줘요.
  • 창작한 날은 잔디에 칸으로 뜨고, 완성한 날은 가장 진하게 표시됩니다. 잔디 칸을 누르면 그날 일지로 바로 가고, 지난 날짜에도 적을 수 있어요.

대시보드의 잔디와 연속 일수가 바로 이 일지에서 나옵니다.

밖으로 내보내는 통로

앱은 파일을 보여 주기만 하니, 실제로 뭔가 하려면 결국 밖으로 가져가야 합니다. 그래서 그림을 우클릭하면 복사 메뉴가 나오는데, 복사가 세 가지예요.

메뉴무엇이 복사되나어디에 붙이나
이미지 복사그림 자체클립 스튜디오 · 포토샵 · 디스코드
파일 복사파일탐색기 (붙이면 사본이 생긴다)
경로 복사파일 위치 글자아무 데나

셋 다 "복사"지만 붙이는 곳에서 기대하는 게 달라서 메뉴를 나눴어요. 작업 파일(psd·clip)처럼 그림으로 읽을 수 없는 파일은 "이미지 복사"가 꺼져요.

화면은 파일에 직접 닿지 않는다

마지막으로 보이지 않는 부분 하나. 앱 화면(프론트)은 파일 시스템에 직접 접근하지 못하게 했습니다. 그림을 띄울 때도 전용 통로를 거치고, 그 통로는 매번 등록한 라이브러리 폴더 아래의 파일인지, 포즈 덱에 링크된 바로 그 파일인지 확인해요. 둘 다 아니면 거절합니다. 화면 쪽 코드가 아무 파일이나 읽을 수 있는 길을 아예 만들지 않으려는 거예요.

지금은

artdesk 에는 원래 NovelAI 로 그릴 소스를 직접 만드는 ✨ 생성 탭도 있었어요. 그런데 이미지 생성 기능을 붙이고 키워 갈수록, 그림 연습을 관리한다는 이 앱의 목적과 점점 맞지 않게 되더라고요. 연습 도구 안에 성격이 전혀 다른 도구가 하나 커지고 있는 셈이었어요.

그래서 생성 쪽만 떼어 내 gendesk 라는 별도 앱으로 옮겼습니다. artdesk 를 그만두는 게 아니라, 각자 자기 목적에 맞게 나눈 거예요. artdesk 는 그림 연습 도구로, gendesk 는 이미지 생성 도구로 갑니다.

다음 편에서는 artdesk 에서 기술적으로 가장 이야깃거리가 많은 화면, 3D 인형으로 포즈 잡기를 이야기합니다. 본 752개 중 22개만 만지게 한 이유부터요.