다양한 피부색 생성 색공간 알고리즘 공개

원제: Show HN: Simple algorithm and color space to generate diverse skin tones

왜 중요한가

게임·디지털 아트 분야에서 포용적 피부 톤 표현을 위한 오픈 수학 기반 색 공간을 제시해, 캐릭터 다양성 도구 개발의 실용적 출발점을 제공한다.

개발자 Toney Alexander가 인간의 다양한 피부 톤을 디지털로 표현하기 위한 커스텀 색 공간(color space)과 샘플링 알고리즘을 오픈소스로 공개했다. Python 및 JavaScript 구현 코드와 인터랙티브 색상 선택기를 함께 제공하며, 캐릭터 크리에이터나 디지털 아트 등 다양한 활용처를 상정하고 있다.

이 프로젝트는 RGB 색 공간 내에서 현실적인 피부 톤에 해당하는 가장 넓은 범위를 수학적으로 정의하는 것을 목표로 한다. 기존에는 이모지가 5가지 색조(또는 노란색), 화장품 브랜드가 최대 50가지, 게임의 캐릭터 메이커가 1,677만여 가지 전체 RGB에서 선택하도록 하는 등 통일된 기준이 없었다.

제작자는 이를 '충분히 좋은(good enough)' 근사치임을 명시하면서, 3차원 구(球) 형태의 색 공간을 설계했다. 핵심 함수 `to_rgb(t, u, v)`는 구 좌표계의 세 축(t, u, v)을 선형 변환해 R, G, B 값으로 매핑한다. 샘플링은 결정론적 방법과 기각 샘플링(rejection sampling) 두 가지 방식으로 구현되었으며, 두 방법 모두 구 내부에서 균일하게 피부 색조를 추출할 수 있다.

인터랙티브 색상 선택기는 JavaScript로, 절차적 생성 알고리즘은 Python으로 구현되었고 페이지 소스를 통해 JavaScript 동등 코드도 확인할 수 있다. 제작자는 이 수식이 캐릭터 크리에이터, 디지털 아트 도구 등 포용적인 색상 도구를 개발하는 데 활용되기를 기대하며, 결과의 한계를 인정하고 권위 있는 기준으로 사용하지 말 것을 권고하고 있다.

출처

toneyalexander.github.io — 원문 읽기 →