Thi.ng: 컴퓨테이셔널 디자인 및 아트를 위한 오픈소스 빌딩 블록

Thi.ng는 컴퓨테이셔널 디자인 및 아트를 위한 오픈소스 빌딩 블록 모음으로, 범용적이고 의존성이 없는 모듈들을 제공합니다. 이 프로젝트는 복잡한 생성 예술 및 컴퓨테이셔널 디자인 시스템을 만들기 위해 필요한 기본적인 수학 및 기하학 도구를 제공하는 데 중점을 둡니다.

아키텍처 및 기술 구현

Thi.ng는 주로 중앙 monorepo에 호스팅된 TypeScript 모듈 컬렉션으로 구현됩니다. 프로젝트는 의존성이 없는 접근 방식을 강조하여 라이브러리가 다양한 환경에서 가볍고 이식 가능하도록 보장합니다.

TypeScript로의 전환

프로젝트의 초기 버전에는 Clojure 구현(thi-ng/geom 등)이 포함되었지만, 현재 개발은 TypeScript로 전환되었습니다. 이 전환을 통해 라이브러리를 현대 웹 기반 크리에이티브 코딩 워크플로에 더 쉽게 통합할 수 있으며, 복잡한 수학 연산의 유지 보수를 향상시키기 위해 TypeScript의 정적 타입을 활용합니다.

엔티티 컴포넌트 시스템 (ECS) 구현

프로젝트 소스 코드 내에서 Thi.ng는 엔티티 컴포넌트 시스템(ECS) 패턴에 대한 특화된 구현을 포함합니다. 이 구현은 고성능 데이터 처리를 다루기 위한 내부 최적화에 중점을 두며, 이는 컴퓨테이셔널 아트와 실시간 시뮬레이션에 필수적입니다.

프로젝트 생태계 및 접근성

이 프로젝트는 Codeberg에 호스팅되어 있으며, 특히 다양한 모듈의 중앙 허브 역할을 하는 umbrella monorepo에 위치합니다.

커뮤니티 반응 및 피드백

기술 사용자들은 라이브러리 설계의 깊이와 사려 깊음을 강조했지만, 일부는 이 프로젝트가 저자의 자체 프로젝트 외에는 역사적으로 제한된 관심을 받아왔다고 지적했습니다.

"모든 라이브러리에 대한 사랑과 배려, 그리고 사려 깊음은 언제나 탐구하기에 매우 훌륭했습니다."

보고된 기술적 문제

사용자들은 Thi.ng 웹사이트와 상호작용할 때, 특히 macOS와 iOS에서 특정 렌더링 및 안정성 문제를 보고했습니다:

  • GPU Glitching: macOS에서 Chrome을 사용하고 MacBook M3 하드웨어를 가진 사용자들은 사이트에서 특정 3D 애니메이션(예: 회전하는 큐브)을 볼 때 심각한 GPU 버그와 브라우저 창 오류를 보고했습니다.
  • Mobile UX: iOS에서 핀치 줌을 할 경우 전체 페이지가 잘못 재로드되는 현상이 보고되어 접근성에 영향을 미칩니다.

주요 기능

Thi.ng는 컴퓨테이셔널 디자인의 여러 핵심 영역을 위한 도구를 제공합니다:

  • Geometry Processing: 기하 데이터 처리를 위한 고성능 모듈.
  • Generative Art: 알고리즘 시각 예술을 만들기 위한 빌딩 블록.
  • Data Visualization: 프로젝트는 고급 시각화 기법을 활용하며, 프로젝트 자체 구조를 나타내는 monorepo 히트맵 시각화도 포함합니다.

Sources