Repolode
enpts

enpts/sho

포인트 목록을 바탕으로 붓의 털, 먹물, 갈필 효과를 시뮬레이션하며 획을 그리는 브라우저 기반 붓글씨 엔진입니다.

스타
14
포크
0
열린 이슈
0
마지막 커밋
3일 전

어떤 프로젝트인가요?

sho.js는 브라우저에서 실행되는 JavaScript 붓글씨 엔진입니다. 획을 포인트 목록으로 표현하며, 각 포인트에 위치, 압력, 붓 각도, 속도, 멈춤 시간을 설정할 수 있습니다. 엔진은 종이 캔버스에 획을 하나씩 그려 냅니다.

이 엔진은 붓의 물리적 움직임을 시뮬레이션합니다. 붓털 하나하나의 움직임, 획을 그으며 줄어드는 먹물, 빠른 속도에서 생기는 갈필, 붓을 멈춘 곳에 고이는 먹물, 옅은 먹물의 번짐을 표현합니다. 갈고리획이나 쓸어내리는 획 같은 기법은 별도의 프리셋이 아니라 포인트를 배치하는 방식으로 구현합니다. 렌더링 결과는 결정적이므로 같은 데이터와 설정을 사용하면 언제나 같은 그림이 나옵니다.

입력 데이터를 점진적으로 처리하도록 설계되어 있어, LLM의 출력을 스트리밍으로 받으면서 한 줄씩 그릴 수 있습니다. 패키지는 의존성 없이 단일 스크립트와 종이 이미지 하나로 구성되며, 전역 Sho 객체로 불러옵니다. 데모 페이지와 샘플 시스템 프롬프트도 포함되어 있습니다.

핵심 기능

  • 01획을 압력, 각도, 속도, 멈춤 시간을 지정한 포인트 목록으로 정의합니다.
  • 02붓털, 먹물 소모, 갈필, 먹물 고임을 시뮬레이션합니다.
  • 03옅은 먹물 번짐에 모세관형과 고리형, 두 가지 스타일을 지원합니다.
  • 04획 좌표를 바탕으로 결정적으로 렌더링하며, 애니메이션 또는 즉시 렌더링할 수 있습니다.
  • 05StreamParser를 통해 LLM 출력을 스트리밍으로 처리합니다.
  • 06의존성 없이 스크립트 하나와 종이 이미지 하나로 구성됩니다.

활용 사례

  • 웹 페이지나 데모에서 손글씨 붓글씨를 애니메이션으로 보여줍니다.
  • 시각적 실험으로 LLM이 붓글씨로 글자나 단어를 쓰게 합니다.
  • PNG로 내보낼 결정적인 붓글씨 이미지를 생성합니다.
  • 캔버스 코드로 붓의 물리적 움직임을 어떻게 근사할 수 있는지 살펴봅니다.

빠른 시작

  1. 1

    sho.js와 paper.webp를 같은 폴더에 복사합니다

  2. 2

    HTML 페이지에서 스크립트를 불러옵니다

    <script src="sho.js"></script>
  3. 3

    canvas에 엔진을 만들고 스트로크를 큐에 추가합니다

    const engine = new Sho.Engine(document.getElementById('paper'), { pxPerUnit: 1 });

사용 전 알아둘 점

  • npm 패키지나 ES 모듈 빌드는 없으며, 일반 스크립트로 불러옵니다.
  • Chrome에서만 테스트되었으며 canvas와 DOM을 지원하는 브라우저가 필요합니다.
  • 초기 단계 프로젝트로, 별(9개)이 적고 커뮤니티 규모도 작습니다.

토픽

#calligraphy#canvas#javascript#generative-art#brush-simulation#llm-streaming

자주 묻는 질문

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 통계는 매일 갱신됩니다.

관련 프로젝트