루비를 활용한 비주얼 글리치 아트: 이론과 실제

[18S02] Visual Glitch, using Ruby (ja) / ucnv

작성자
RubyKaigi
발행일
2025년 10월 05일

핵심 요약

  • 1 글리치 아트는 파일 손상을 통해 플레이어 애플리케이션이 오류를 무시하며 렌더링을 계속할 때 발생하는 시각적 효과를 활용합니다.
  • 2 이미지 글리치 기법으로는 텍스트/바이너리 에디터 직접 수정, `cat`/`sed` 명령어, 그리고 루비 코드를 통한 체계적인 파일 손상(헤더/지그재그 순서 변경 등)이 소개되었습니다.
  • 3 비디오 글리치는 키프레임과 차이 프레임 구조를 이해하고, 특히 '데이터 모싱' 기법을 통해 키프레임을 제거하여 시각적 오류를 유발하며, 이를 `avi_glitch` 루비 Gem으로 구현할 수 있습니다.

도입

본 발표는 루비 프로그래밍 언어를 활용한 비주얼 글리치 아트의 이론과 실제 기법을 다룹니다. 발표자 UCNV는 웹 개발자이자 비주얼 아티스트로서, 글리치 아트에 대한 심층적인 탐구를 공유합니다. 글리치 아트의 정의에 대한 다양한 관점을 소개하고, 재현 불가능하다는 통념에 반박하며 컴퓨터 기반 글리치는 재현 가능하다고 주장합니다. 궁극적으로 글리치는 손상된 파일을 플레이어 애플리케이션이 오류를 무시하고 렌더링을 계속할 때 발생하는 현상으로 정의됩니다.

이미지 글리치 기법

이미지 글리치 아트를 생성하는 다양한 방법이 제시되었습니다.

  • 직접 편집: 텍스트 또는 바이너리 에디터를 사용하여 파일을 직접 열고 내용을 수정하여 저장하는 기본적인 방법입니다. 이는 프로그래밍 지식이 없는 초보자도 쉽게 시도할 수 있습니다.

  • 명령어 활용: catsed와 같은 터미널 명령어를 사용하여 파일을 손상시키는 방법입니다. 이는 필요할 때 빠르게 글리치 이미지를 얻을 수 있는 실용적인 접근법입니다.

  • 루비 코드 작성:
    • 몬키 글리치 (Monkey Glitch): 루비의 File.opengsub을 사용하여 파일 내의 특정 숫자 값을 무작위로 변경하는 간단한 방법입니다. 그러나 이 방법은 헤더나 체크섬을 손상시켜 이미지가 완전히 표시되지 않을 수 있는 단점이 있습니다.
    • 안전한 글리치: 파일 포맷의 사양(예: PNG의 Zlib 압축 및 CRC32 체크섬)을 이해하고 이에 따라 데이터를 압축 해제, 글리치, 재압축, 체크섬 재계산하는 방식으로 안전하게 글리치 효과를 생성합니다.
    • JPEG 헤더 글리치: JPEG 파일의 헤더 사양을 분석하여 특정 바이트만 변경함으로써 효과적인 글리치를 구현합니다.
    • JPEG 인코더 글리치: 발표자가 직접 작성한 루비 기반 JPEG 인코더에서 zigzag 스캔 순서를 섞어(shuffle) 압축 방식을 의도적으로 왜곡하여 독특한 글리치 효과를 만듭니다.
  • 새로운 루비 라이브러리 photoship (예정): 다양한 이미지 포맷을 열고 글리치한 후 다른 포맷으로 저장할 수 있는 유연한 루비 라이브러리가 개발 중임을 발표했습니다.

비디오 글리치 기법

비디오 글리치 아트는 비디오 파일의 구조적 특성을 활용합니다.

  • 비디오 파일 구조: 비디오는 키프레임(I-프레임)과 차이 프레임(P-프레임)으로 구성됩니다. 키프레임은 전체 이미지 정보를 포함하고, 차이 프레임은 이전 프레임과의 차이점만을 저장하여 압축 효율을 높입니다.

  • 데이터 모싱 (Datamoshing): 모든 키프레임을 제거하여 차이 프레임이 참조할 기준 정보를 잃게 만드는 기법입니다. 이로 인해 비디오가 의도치 않은 방식으로 왜곡되고 시각적 오류가 발생합니다.

  • avi_glitch 루비 Gem: 발표자가 개발한 루비 라이브러리로, AVI 파일의 데이터 모싱을 쉽게 구현할 수 있습니다. AVI는 구조가 단순하여 글리치하기 용이하며, XVID 코덱을 통해 MPEG-4와 유사한 차이 프레임 메커니즘을 활용할 수 있습니다.

    • avi_glitch.open(file).glitch(keyword: :keyframe) { nil }과 같은 코드를 통해 키프레임을 삭제할 수 있습니다.
    • datamosh라는 CLI 도구도 제공되어 명령줄에서 손쉽게 데이터 모싱을 실행할 수 있습니다.
    • 여러 파일을 연결하여 데이터 모싱 효과를 확장하는 것도 가능합니다.

결론

본 발표는 루비를 활용하여 이미지와 비디오에 글리치 효과를 적용하는 구체적인 방법론을 제시했습니다. 글리치 아트의 개념적 정의부터 시작하여, 파일 포맷의 내부 구조를 이해하고 루비 코드를 통해 이를 의도적으로 조작하는 기술적 접근 방식이 상세히 설명되었습니다. 특히 `avi_glitch` Gem과 개발 예정인 `photoship` 라이브러리는 루비 개발자들이 글리치 아트 분야에 쉽게 접근하고 창의적인 시도를 할 수 있는 강력한 도구를 제공합니다. 이는 루비가 단순한 웹 개발 도구를 넘어 미디어 아트 분야에서도 활용될 수 있는 잠재력을 보여주는 사례로 평가됩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!