본문 바로가기
이펙트 (FX)/이펙트 팁 : Unreal

[Unreal/Material] RGB 각 채널에 패킹된 텍스처를 재생하는 Flipbook 머티리얼 제작법 (Channel Packing, 파일 첨부)

by Minkyu Lee 2025. 1. 15.

개요

RGB로 압축된 시퀀스 텍스처를 재생하는 방법이다.

 

압축된 텍스처는 아래 그림과 같은 이미지다.

R에는 1~64

G에는 65~128

B에는 129~192

프레임이 들어가있다. (A까지 사용시에는 193-256까지 가능하다. 하지만 용량 2배가 됨)

이러한 패킹 방식을 Super Pack이라고 하나보다. (하단 링크에서 참고한 용어)

 

원리

UV 좌표를 좌에서 우로 훑으면서, 순차적으로 내려오는 UV 값을 만든다.

이는 기본적인 Flipbook 개념과 동일하다.

 

단, 주요한 차이점은 해당 값을 활용하여 Texture Sample 이후에,

RGBA 채널을 순차적으로 필터링을 한다는 점이다.

 

채널 필터시에는 곱하기 연산을 한번에 하기 위해 내적을 사용한다.

 

내적 계산법은 아래와 같다.

같은 위치의 성분끼리 곱하고, 마지막에 모두 더하는 것이다.

AB = (a1b1)+(a2b2)+(a3b3)+(a4b4)

 

따라서 곱하는 과정에서 Channel Filter 값이 0인 색은 날아가고,

1인 곳만 남은 후에 더해지므로, 현재 마스킹된 채널의 이미지만 나오게 된다.

아래 이미지를 참고하면 이해가 쉽다. (RGB 채널만 사용한 예제다.)

 

방법

이미지 클릭시 확대됨

 

- 메인 노드트리 구성

 

- 경유 노드트리 구성

 

결과 (파일 첨부)

머티리얼 함수로 만들어서 사용했다.

5.4.4 버전으로 제작하였다.

머티리얼 함수 코드는 아래와 같다.

해당 내용을 복사한 후, 머티리얼 함수 제작시 에디터 안에다 붙여넣으면 된다. (동일 버전 권장)

MF_FX_Flipbook_ChannelPacking.txt
0.23MB

 

 

부가설명

One Minus 노드를 사용하지 않는 이유는?

유니티와 언리얼의 좌표계 차이 때문이다.

 

아래 이미지와 같이 V 값이 반대다.

언리얼 (좌), 유니티 (우)

 

참고링크

아래의 글을 참고하여 구현하였다.

https://realtimevfx.com/t/flipbook-texture-packing-atlas-super-pack-and-stagger-pack/5609

 

Flipbook texture packing, atlas, super pack and stagger pack

Hi! Full disclosure, …I am in no way an expert at python. I’ve written a few scripts over the years here and there so, while I did test this it may not be as robust as you like. It may also be a bit unoptimized 🤷‍♂️ Also, apologies on the heav

realtimevfx.com

 

후디니로 패킹된 텍스처 제작하는 법

https://monggus.tistory.com/746

 

[Houdini/Texture] Copnet에서 시퀀스 이미지로 RGB 스프라이트 시트 텍스처 만들기 (후디니 20.0 구버전 C

개요텍스처 최적화를 위한, RGB 채널에 시퀀스 이미지를 담는 방법이다. 방법- 이미지 파일의 구성시퀀스 이미지는 1~192 프레임 기준이다.8x8 시퀀스 이미지를 3채널에 담으므로 192프레임인 것이

monggus.tistory.com

 

댓글