ANIM

ANIM은 디지털 영화와 컴퓨터 생성 애니메이션을 저장하는 데 사용되는 파일 형식이며(그래서 ANIM이라는 이름이 붙었다), 인터체인지 파일 포맷의 하위 형식인 ILBM 형식의 변형이다.

주요 특징

Anim 파일 형식

아미가OS에서 알려진 Anim 파일 형식은 Anim1, Anim2, Anim3, Anim5, Anim7이다. Anim1부터 Anim3까지는 오디오를 지원하지 않았다. Anim5와 Anim7은 완전한 영화 애니메이션 파일 형식으로서 오디오 데이터를 포함할 수 있다.

IFF 표준에 대한 추가 사항

일반적인 ILBM 청크 외에도, ANIM 파일 형식은 다음을 정의한다.

  • ANHD (ANimation HeaDer, 애니메이션 헤더)
  • DLTA - 프레임 간의 차이점을 저장하며, 프레임 간의 중복성을 활용하기 위해 다양한 압축 방식을 지원한다.

압축 모드:

  • ANIM-0 ILBM BODY (델타 압축 없음)
  • ANIM-1 ILBM XOR
  • ANIM-2 Long Delta 모드
  • ANIM-3 Short Delta 모드
  • ANIM-4 General Delta 모드
  • ANIM-5 Byte Vertical Delta 모드 (가장 일반적)
  • ANIM-6 Stereo Byte Delta 모드 (스테레오스코픽 프레임)
  • ANIM-7 LONG/WORD 데이터를 사용하는 Anim-5 압축
  • ANIM-8 LONG/WORD 데이터를 사용하는 Anim-5 압축
  • ANIM-J 에릭 그레이엄 압축 형식 (Sculpt 3D / Sculpt 4D)

파일 내부에 여러 압축 모드를 혼용하는 것도 가능하다.

역사

ANIM IFF 형식은 1988년 캘리포니아주에 본사를 둔 기업 스파르타의 게리 본햄이 개발했다. 원래 아미가 컴퓨터에서 애니메이션 비디오 시퀀스를 제작하기 위해 만들어졌으며, 아미가 컴퓨터용 에이지스 디벨롭먼트(Aegis Development)의 비디오스케이프(Videoscape)와 비디오 타이틀러(Video Titler) 프로그램에서 처음으로 사용되었다. 매우 효율적이고 기존 아미가 ILBM/IFF 표준 파일 형식의 공식 하위 집합이었기 때문에, 아미가에서 애니메이션 파일의 사실상 표준이 되었다.

이 파일 형식은 다음과 같은 특성을 갖추어야 했다.

ANIM 형식에는 여러 압축 방식이 도입되었다. 대부분은 역사적인 관심사에 불과한데, 현재 유일하게 사용되는 방식은 아타리 소프트웨어 프로그래머인 짐 켄트가 개발한 수직 런 렝스 부호화 바이트 인코딩 방식이기 때문이다.

아미가 Anim7 형식은 1992년 프로그래머 볼프강 호퍼가 만들었다.

원래 코모도어 CDTV용으로 만들어졌고 이후 아미가 CD32에 맞춰 조정된 비디오 파일 형식은 CDXL이라고 불렸으며, ANIM 파일 형식과 유사했다.

ANIM 형식은 현재 최소한 하나의 온라인 이미지 편집기에서 지원된다.

기술적 개요

최소한의 Anim 파일은 3개의 ILBM 인터리브 비트맵 이미지로 구성된다. 첫 번째 비트맵은 전체 이미지이며, 다음 프레임을 생성하는 데 필요하다. 나머지 두 개는 "델타" 이미지로, 첫 번째 이미지와의 차이값을 계산한 것이다.

초기 프레임은 일반적인 런 렝스 부호화가 적용된 IFF 그림이며, 이를 통해 파일 내용을 미리 볼 수 있다. 이후 프레임은 이전 프레임과의 차이점만을 나열하여 설명한다.

첫 번째 프레임이 표시되는 동안, 이후 프레임들은 그래픽 메모리의 버퍼로 로드된다. 아미가는 블리터(blitter)를 사용하여 추가 프레임을 로드하는 동안 화면을 거의 즉각적으로 전환한다. DMA 기능을 활용하여 그래픽 칩셋은 CPU를 방해하지 않고 메모리에 접근할 수 있었다. 이 기술을 더블 버퍼링이라고 한다.

이를 이해하기 쉽게 설명하면, 즉시 표시 화면을 전환할 수 있는 A와 B라는 두 개의 화면이 있다고 가정해 보자. 첫 번째 프레임은 화면 A와 B에 로드된다. 화면 A가 표시된다. 프레임 1과 프레임 2의 차이점이 계산되어 화면 B에서 수정되고, 이후 화면 B가 표시된다. 그 다음 이 화면과 프레임 3의 차이점을 사용하여 화면 A를 수정하고 이를 표시하는 식이다. 프레임 2는 프레임 1과의 차이점으로 저장되지만, 다른 모든 프레임은 두 프레임 이전과의 차이점으로 저장된다는 점에 유의해야 한다.

ANIM은 IFF FORM이며 청크 구조는 다음과 같다.

FORM ANIM
* FORM ILBM (첫 번째 프레임)
** BMHD (일반 유형 IFF 데이터)
** ANHD (첫 번째 프레임 타이밍을 위한 선택적 애니메이션 헤더 청크)
** CMAP (색상표)
** BODY
* FORM ILBM (프레임 2)
** ANHD (애니메이션 헤더 청크)
** DLTA (델타 모드 데이터)
* FORM ILBM (프레임 3)
** ANHD
** DLTA

(이하 생략...)

초기 FORM ILBM은 CRNG 등 모든 일반적인 ILBM 청크를 포함할 수 있다. BODY는 일반적으로 표준 런 렝스 부호화 데이터 청크(하지만 BMHD에 표시된 다른 모든 합법적인 압축 모드도 가능)가 된다. 원하는 경우 여기에 ANHD 청크를 추가하여 첫 번째 프레임에 대한 타이밍 데이터를 제공할 수 있다. 이 경우 operation 필드는 0이어야 한다.

후속 FORM ILBM은 BMHD 대신 ANHD를 포함하는데, 이는 BMHD의 일부를 복제하고 애니메이션 프레임에 관한 추가 매개변수를 가진다. DLTA 청크는 델타 압축 모드를 위한 데이터를 포함한다. 이전의 XOR 압축 모드가 사용되는 경우, BODY 청크가 여기에 배치된다. 또한 필요에 따라(그리고 재생 프로그램의 코드에서 활용하도록 설계된 경우) 각각에 다른 청크가 배치될 수 있다. 예를 들어, 색상 팔레트를 변경하기 위한 CMAP 청크 등이 있다.

ANIM의 기본 가정은 비트맵의 크기와 표시 모드(예: HAM)가 애니메이션 내내 변하지 않는다는 것이다.

DLTA 청크는 인터리브 비트맵 표현이 아니므로, 이러한 프레임에 ILBM 형식을 사용하는 것은 적절하지 않다. 하지만 이 형식의 생성/재생을 수행하는 여러 상용 제품이 출시되었거나 출시 직전이 될 때까지 이 모순은 지적되지 않았다.

Anim 형식에 사용되는 압축 방식

Anim 형식은 XOR 모드, Long Delta 모드, Short Delta 모드, General Delta 모드, Byte Vertical Compression 등 5가지 압축 방식을 허용한다.

ANIM 파일 재생

ANIM 재생은 일반적으로 앞서 언급한 두 개의 버퍼와 그 사이의 더블 버퍼링이 필요하다. ANIM 파일의 프레임 데이터는 숨겨진 프레임을 다음 프레임으로 수정하는 데 사용된다. XOR 모드를 사용할 때는 일반적인 런 렝스 디코딩 루틴을 쉽게 수정하여 필요한 배타적 논리합(XOR) 연산을 수행할 수 있다. 매우 흔하게 나타나는 0 바이트의 런은 무시할 수 있는데, 어떤 바이트 값이라도 0과 XOR 연산을 수행하면 원래의 바이트 값이 변하지 않기 때문이다. 모든 압축 기술에 대한 일반적인 절차는, 먼저 초기 ILBM 그림을 숨겨진 버퍼로 디코딩하고 이를 더블 버퍼링하여 화면에 표시하는 것이다. 그런 다음 이 그림을 다른(현재 숨겨진) 버퍼로 복사한다. 이 지점부터는 각 프레임이 동일한 절차로 표시된다. 다음 프레임은 DLTA 데이터(또는 BODY 청크의 XOR 데이터)를 적용하여 숨겨진 버퍼에 형성되고, 새 프레임이 더블 버퍼링을 통해 화면에 표시된다. 이 과정이 파일 끝까지 계속된다.

다른 애니메이션 파일 형식에 미친 영향

아미가의 Anim 표준은 애니메이션 GIF 형식 개발에 영향을 주었다.

각주

  1. 1 2 “ANIM - An IFF Format For CEL Animations”. 《TEXTFILES.COM》. May 1988.
  2. 1 2 Randelshofer, Werner. “Amiga Animations”. 《www.randelshofer.ch》. 2023년 5월 18일에 확인함.
  3. ↑ Sassenrath, Carl. “Carl Sassenrath - Background Info”. 《CARL SASSENRATH - Architect of Operating Systems and Languages》.
  4. ↑ “A500.org - downloads/video/cdxlplay.lha”. 《www.a500.org》. 2023년 5월 9일에 확인함.
  5. ↑ Photopea (2023년 5월 18일), 《photopea/photopea》, 2023년 5월 18일에 확인함
  6. ↑ “Photopea | Online Photo Editor”. 《www.photopea.com》. 2023년 5월 18일에 확인함.