대부분의 주요 게임 엔진이 애니메이션 텍스처에 gif를 사용하지 않는 이유는 무엇입니까?


28

애니메이션 시트 또는 GIF를 사용하는 것이 더 좋은 방법은 무엇입니까? GIF가 Animation Sheets에 비해 한 가지 장점은 코드로 인해 프레임이 너무 빠르거나 느리게 진행되고 적절한 눈금으로 업데이트 할 필요가 없다는 것입니다.

GIF를 사용할 때의 단점과 애니메이션 시트가 GIF를 사용할 때의 장점은 무엇입니까?


7
그렇다면 "대부분의 주요 게임 엔진이 애니메이션 텍스처에 gif를 사용하지 않는 이유는 무엇입니까?" 그들은 적어도 내가 아는 바가 많기 때문에 일반적으로 그렇지 않습니다. 나는 그것이 왜 사용되지 않는지에 대한 기술적 인 점과 SE 사이트에 적합하지 않은 더 좋은 질문에 대해 기술적 인 포인트를 줄 것이라고 생각합니다.
— Coburn

39
One advantage Gifs have over Animation Sheets is that you don't have to think about frames going too fast or too slow왜 그런가요? 그 가정에 무엇을 의지하십니까? 도서관? 파일 형식 사양? gif 파일은 여전히 ​​데이터 일 뿐이므로 해석하기 위해 코드가 필요합니다 (올바른 속도로 렌더링)
— hoffmale

13
호프 말이 한 말. GIF는 마술이 아닙니다. 애니메이션은 타이밍을 포함하여 일부 소프트웨어에서 계속 제어하고 실행해야하며,이 경우 해당 소프트웨어는 귀하가 작성합니다. 솔직히 애니메이션 시트 처리 코드가 GIF 처리 코드와 크게 다를 것이라고는 생각하지 않습니다.
— Monica와의 가벼움 경주

12
스프라이트 시트와 GIF 코드의 유일한 차이점은 GIF 코드가 GIF를 스프라이트 시트로 변환 한 다음 스프라이트 시트 코드를 호출한다는 것입니다.;)
— MickLH

6
gif에는 장점이 없습니다. 프레임 간 압축을 원할 경우 gif는 적절한 비디오 코덱보다 약 30 배 덜 효율적이며 품질은 떨어집니다 (사실적인 내용의 경우).
— Sarge Borsch

답변:


91

GIF 단점 :

  • 매우 제한된 색상 팔레트, 일반적으로 추한 디더링이 포함 된 256 색 ( 예, 애니메이션 GIF에서 256 가지 이상의 색상을 가질 수 있지만 일반적이지 않음)
  • GPU는 하드웨어에서 GIF 압축을 지원하지 않습니다 (어쨌든 CPU에서 압축을 풀어야 함을 의미 함)
  • 사용자 정의 처리를 구현하지 않는 한 투명성을 위해 하나의 색상 만 선택하십시오.
  • 무작위 액세스가 없습니다. 프레임에 액세스하려면 이전의 모든 GIF 프레임을 읽고 압축을 풀어야합니다.
  • 압축되고 있습니다. 코드에는 전용 압축 해제 기능이 필요합니다. 다른 (더 나은) 압축 알고리즘을 선택할 수 없습니다. (예, 압축되지 않은 GIF도 존재 하지만 흔하지 않습니다)

사용자 정의 형식을 사용하면 이러한 모든 항목이 매우 빠르게 해결됩니다. 이미지 형식, 품질, 투명성, 랜덤 액세스 및 압축 (DXT와 같은 GPU 지원 형식 포함)을 훨씬 더 많이 제어 할 수 있습니다. 또한 필요한 기능의 우선 순위를 지정할 수 있습니다.

GIF가 Animation Sheets에 비해 한 가지 장점은 코드로 인해 프레임이 너무 빠르거나 느리게 진행되고 적절한 눈금으로 업데이트 할 필요가 없다는 것입니다.

위의 진술은 오해의 소지가 있습니다. GIF fps를 실제 게임 fps와 동기화하는 것은 커스텀 스프라이트 애니메이션 동기화와 크게 다르지 않습니다. 두 경우 모두 프레임 목록, 원하는 프레임 속도 및 렌더 이벤트와 같은 설정이 동일합니다. GIF에는 매직 파우더가 없습니다. 어쨌든 GIF를 스프라이트 시트로 압축 해제해야합니다.

물론 일부 게임 엔진은 커튼 뒤의 일부 GIF 문제를 숨길 수 있지만 스프라이트 시트를 사용하여 더 나은 방식으로 수행 할 수 있습니다.

GIF가 작동 할 수있는 경우는 거의 없다고 말했다 . 예를 들어 HTML / CSS GUI이지만, 이것 자체는 매우 드물고 리소스가 부족합니다.


"투명성을위한 한 가지 색"을 이해하지 못합니다. 투명성을 위해 여러 색상이 있다는 것은 무엇을 의미합니까? 텍스처에 투명도 그라디언트를 적용하는 것과 같이 다양한 알파 값에 대해 이야기하고 있습니까?
— Erik

3
@ 에릭 정확히. 공통 GIF는 최대 256 색을 지원하며 그 중 1 개만 투명하게 표시 할 수 있습니다. 일반적으로 투명도의 범위가 훨씬 넓은 다른 형식과는 다릅니다.
— 크롬 스터는 모니카

@Kromster 실제로, 리소스에 정통한 사이트 background-image는 애니메이션이 하나의 큰 이미지에 위치하는 오프셋 위치에 의해 이동되는 CSS 위치 애니메이션 과 같은 애니메이션 이미지에 대한 사용자 정의 애니메이션 메커니즘을 사용 합니다.
— Tomáš Zato-복원 모니카

@ TomášZato True. 죄송합니다. 다른 말로 했습니까?
— 크롬 스터는 모니카

2
@ luk32 이것은 오래된 GIF 압축보다 압축 방법이 훨씬 우수하기 때문에 단점입니다. 따라서 차선책 GIF 압축을 사용하거나 두 번 압축 해제 (압축 해제)합니다 (이미 압축 된 데이터를 압축하면 일반적으로 더 큰 크기가 생성됩니다).
— 크롬 스터는 모니카

32

게임에서 이미지 파일을 텍스처로 사용하려면 GPU에 텍스처가 생성되고 이미지 파일의 픽셀 데이터가 해당 텍스처에로드되어야합니다.

GPU 는 CPU의 이미지 파일이 지원하는 많은 기능을 지원 하지 않습니다 . JPG 압축을 지원하지 않고 PNG 압축을 지원하지 않으며 GIF를 특히 참조하면 자동 애니메이션을 지원하지 않습니다 .

따라서 GIF 파일을 사용해도 어쨌든 자체 애니메이션 및 타이밍 코드를 작성해야합니다. GIF는 아무 것도 제공하지 않습니다.


30
"CPU"는 이러한 기능을 지원하지 않으며 웹 브라우저 및 운영 체제는 지원합니다.
— user253751

7
아직 아무도 GPGPU 웹 브라우저를 작성하지 않았습니까?
— Camille Goudeseune

7
@CamilleGoudeseune 웃어요. 나는 울었다.
— 3Dave

13

GIF에는 제한된 색상 팔레트가 있습니다. (255) GIF 구문 분석 및 애니메이션도 구현해야합니다. 따라서 시간의 발전이나 형식의 기술적 측면은 없습니다.


4
투명성이 필요하지 않으면 256, 그렇지 않으면 255가 효과적입니다.
— CVn

@ MichaelKjörling 투명도는 여전히 256입니다. 색상 중 하나만 "투명"으로 지정됩니다. 정보가 헤더에 저장되어 있다고 생각합니다.
— 3Dave

@DavidLively 따라서 "효과적인". 색상은 여전히 ​​있지만 불투명 한 색상으로 사용할 수 없습니다.
— CVn

@ 크롬 스터. 삭제했습니다. 나는 좋은 수학을 할 수 있습니다.
— 3Dave
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.