브라우저에서 OpenStreetMap 데이터를 사용해 선택한 도시의 모든 도로를 지도처럼 한 번에 시각화합니다.
enpts/sho
포인트 목록을 바탕으로 붓의 털, 먹물, 갈필 효과를 시뮬레이션하며 획을 그리는 브라우저 기반 붓글씨 엔진입니다.
- 스타
- 14
- 포크
- 0
- 열린 이슈
- 0
- 마지막 커밋
- 3일 전
어떤 프로젝트인가요?
sho.js는 브라우저에서 실행되는 JavaScript 붓글씨 엔진입니다. 획을 포인트 목록으로 표현하며, 각 포인트에 위치, 압력, 붓 각도, 속도, 멈춤 시간을 설정할 수 있습니다. 엔진은 종이 캔버스에 획을 하나씩 그려 냅니다.
이 엔진은 붓의 물리적 움직임을 시뮬레이션합니다. 붓털 하나하나의 움직임, 획을 그으며 줄어드는 먹물, 빠른 속도에서 생기는 갈필, 붓을 멈춘 곳에 고이는 먹물, 옅은 먹물의 번짐을 표현합니다. 갈고리획이나 쓸어내리는 획 같은 기법은 별도의 프리셋이 아니라 포인트를 배치하는 방식으로 구현합니다. 렌더링 결과는 결정적이므로 같은 데이터와 설정을 사용하면 언제나 같은 그림이 나옵니다.
입력 데이터를 점진적으로 처리하도록 설계되어 있어, LLM의 출력을 스트리밍으로 받으면서 한 줄씩 그릴 수 있습니다. 패키지는 의존성 없이 단일 스크립트와 종이 이미지 하나로 구성되며, 전역 Sho 객체로 불러옵니다. 데모 페이지와 샘플 시스템 프롬프트도 포함되어 있습니다.
핵심 기능
- 01획을 압력, 각도, 속도, 멈춤 시간을 지정한 포인트 목록으로 정의합니다.
- 02붓털, 먹물 소모, 갈필, 먹물 고임을 시뮬레이션합니다.
- 03옅은 먹물 번짐에 모세관형과 고리형, 두 가지 스타일을 지원합니다.
- 04획 좌표를 바탕으로 결정적으로 렌더링하며, 애니메이션 또는 즉시 렌더링할 수 있습니다.
- 05StreamParser를 통해 LLM 출력을 스트리밍으로 처리합니다.
- 06의존성 없이 스크립트 하나와 종이 이미지 하나로 구성됩니다.
활용 사례
- 웹 페이지나 데모에서 손글씨 붓글씨를 애니메이션으로 보여줍니다.
- 시각적 실험으로 LLM이 붓글씨로 글자나 단어를 쓰게 합니다.
- PNG로 내보낼 결정적인 붓글씨 이미지를 생성합니다.
- 캔버스 코드로 붓의 물리적 움직임을 어떻게 근사할 수 있는지 살펴봅니다.
빠른 시작
- 1
sho.js와 paper.webp를 같은 폴더에 복사합니다
- 2
HTML 페이지에서 스크립트를 불러옵니다
<script src="sho.js"></script> - 3
canvas에 엔진을 만들고 스트로크를 큐에 추가합니다
const engine = new Sho.Engine(document.getElementById('paper'), { pxPerUnit: 1 });
사용 전 알아둘 점
- npm 패키지나 ES 모듈 빌드는 없으며, 일반 스크립트로 불러옵니다.
- Chrome에서만 테스트되었으며 canvas와 DOM을 지원하는 브라우저가 필요합니다.
- 초기 단계 프로젝트로, 별(9개)이 적고 커뮤니티 규모도 작습니다.
토픽
자주 묻는 질문
- sho은(는) 무엇인가요?
- 포인트 목록을 바탕으로 붓의 털, 먹물, 갈필 효과를 시뮬레이션하며 획을 그리는 브라우저 기반 붓글씨 엔진입니다. sho.js는 브라우저에서 실행되는 JavaScript 붓글씨 엔진입니다. 획을 포인트 목록으로 표현하며, 각 포인트에 위치, 압력, 붓 각도, 속도, 멈춤 시간을 설정할 수 있습니다. 엔진은 종이 캔버스에 획을 하나씩 그려 냅니다.
- sho은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- sho은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- sho은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. sho의 마지막 커밋은 2026년 11월 5일입니다.
- sho은(는) 어디에 사용할 수 있나요?
- 웹 페이지나 데모에서 손글씨 붓글씨를 애니메이션으로 보여줍니다. 시각적 실험으로 LLM이 붓글씨로 글자나 단어를 쓰게 합니다. PNG로 내보낼 결정적인 붓글씨 이미지를 생성합니다. 캔버스 코드로 붓의 물리적 움직임을 어떻게 근사할 수 있는지 살펴봅니다.
- sho는 어떻게 설치하나요?
- sho.js와 paper.webp를 같은 폴더에 복사합니다 HTML 페이지에서 스크립트를 불러옵니다: <script src="sho.js"></script> canvas에 엔진을 만들고 스트로크를 큐에 추가합니다: const engine = new Sho.Engine(document.getElementById('paper'), { pxPerUnit: 1 });
- sho은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/enpts/sho
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
브라우저에서 끝없이 장식용 드롭캡과 채식 이니셜을 생성하고, 둘러보고 북마크하거나 다운로드할 수 있습니다.
그림과 다이어그램을 실제로 움직이게 만드는 코드 기반 애니메이션 에이전트 스킬
프롬프트를 짧은 절차적 캔버스 애니메이션으로 만들고, 헤드리스 브라우저와 ffmpeg로 MP4를 렌더링하는 Claude Code 스킬입니다.
코드로 32가지 스타일의 손그림 일러스트, 루프, 영상, 인터랙티브 웹 아트를 생성하며 매번 동일하게 렌더링합니다.
어떤 글꼴이든 획을 하나씩 그려 나가는 손글씨 애니메이션으로 변환합니다. React, Vue, Svelte, Solid, Astro 및 vanilla JS를 지원합니다.