본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

후디니 $F·$FF·$T·@Frame·@Time 차이

vfx 잡학지식 읽는 시간 약 8분 조회 5

후디니 $F·$FF·$T·@Frame·@Time은 모두 현재 재생 위치를 다루지만, 입력 문맥과 단위가 다릅니다. HScript 파라미터에서는 $F(가까운 정수 프레임), $FF(소수 프레임), $T(초)를 쓰고, VEX 코드에서는 @Frame(소수 프레임), @Time(초)을 씁니다. 프레임 1.5에서 $F는 2로 반올림되지만 $FF와 @Frame은 1.5를 보존합니다.

먼저 값을 넣는 곳이 HScript 표현식 칸인지 VEX Wrangle 코드인지 확인한 뒤, 필요한 단위가 프레임인지 초인지 고르세요. 아래 표와 계산기는 Houdini 19.5.435의 동작을 기준으로 비교합니다.

후디니 익스프레션은 입력 위치부터 구분하세요

일반 파라미터 표현식은 기본적으로 HScript입니다. 다만 개별 파라미터가 Python 표현식으로 바뀌어 있으면 HScript 기호를 그대로 쓸 수 없습니다. VEX snippet에서는 HScript 전역 변수 $F를 쓰지 않고 @Frame과 @Time을 사용합니다.

입력하는 곳프레임 값시간(초)
HScript 파라미터 표현식$F(정수 반올림), $FF(소수 프레임)$T
VEX Wrangle 코드@Frame(float 프레임)@Time(float 초)

$와 @는 같은 칸에 바꿔 넣는 표기가 아닙니다. HScript 파라미터에서 프레임과 초를 계산할 때는 $ 기호를, VEX 코드 안에서는 @ 기호를 사용하세요. VEX의 @Frame과 @Time은 float 값이므로 높은 프레임에서 소수점 끝자리가 다를 수 있습니다.

프레임 1은 0초부터 시작합니다

$FF와 @Frame은 프레임 단위의 위치이고, $T와 @Time은 초 단위의 시간입니다. Houdini 시간 원점에서는 프레임 1이 0초이므로 프레임을 초로 바꿀 때는 프레임 번호에서 1을 뺍니다.

시간(초) = (프레임 - 1) / FPS

24fps라면 프레임 1은 0초, 프레임 25는 1초입니다. 프레임 1.5는 1.5초가 아니라 약 0.0208333333초입니다. 같은 프레임 1.5라도 30fps에서는 약 0.0166666667초가 됩니다.

후디니 프레임과 시간 관계: 24fps에서 프레임 1은 0초, 프레임 1.5는 0.020833초
24fps에서는 프레임 번호가 1 증가할 때마다 시간은 1/24초 늘어납니다. 프레임 1이 시간 0초입니다.

$F와 $FF는 소수 프레임에서 다른 값을 반환합니다

Houdini 19.5.435에서 $F는 현재 위치를 가장 가까운 정수 프레임으로 반올림합니다. 반면 $FF와 VEX의 @Frame은 소수 프레임 위치를 나타냅니다. 예를 들어 프레임 1.5에서 $F는 2, $FF와 @Frame은 1.5입니다.

후디니 $F와 $FF 차이: 1.5프레임에서 $F는 2, $FF와 @Frame은 1.5
프레임 1.5에서 $F는 가장 가까운 정수 2로, $FF와 @Frame은 소수 프레임 1.5로 표시됩니다.

정수 프레임 기준의 계산에는 $F를, 중간 프레임 위치까지 보존해야 하는 계산에는 $FF를 선택하세요. 파일 경로에서 $F4처럼 자릿수까지 지정할 때는 시퀀스 파일명 패딩 표기 변환을 함께 확인하세요. VEX 코드에서 소수 프레임 값을 읽을 때는 @Frame을 씁니다.

다섯 표현식의 값을 한 표에서 비교하세요

다음 값은 Houdini 19.5.435에서 FPS 24로 설정해 확인했습니다. VEX 결과는 float이라 HScript의 $T와 @Time은 끝자리가 조금 다르게 나타납니다.

프레임$F$FF$T(초)@Frame@Time(초)
111010
1.2511.250.01041666671.250.0104166670
1.521.50.02083333331.50.0208333340
2.7532.750.07291666672.750.0729166642

프레임 1에서는 다섯 값이 1, 1, 0초, 1, 0초로 맞습니다. 프레임 1.5에서는 $F만 2로 반올림되고, $FF와 @Frame은 1.5를 유지합니다. 초 단위 결과는 $T가 약 0.0208333333초, @Time이 약 0.0208333340초입니다.

프레임과 FPS를 바꿔 보려면 아래 계산기에서 값을 입력하세요. 프레임 1.5와 FPS 24를 기본으로 보여 주며, FPS를 30으로 바꾸면 같은 프레임의 초 단위 시간이 달라집니다.

프레임·FPS로 표현식 값 비교

프레임 위치와 FPS를 넣으면 Houdini 표현식에서 읽는 프레임값과 초 단위 시간을 나란히 계산합니다.

표현식입력 문맥결과
$FHScript 파라미터2
$FFHScript 파라미터1.5
$THScript 파라미터 · 초0.0208333333333
@FrameVEX · 프레임1.5
@TimeVEX · 초0.0208333339542

Houdini 19.5.435 기준 근사 계산입니다. $FF는 6 유효숫자로, VEX의 @Frame·@Time은 float 값으로 표시해 큰 프레임에서 끝자리가 달라질 수 있습니다. 시간은 (프레임 − 1) ÷ FPS로 계산합니다.

계산기는 양수 프레임을 기준으로 Houdini 19.5.435에서 관찰한 반올림과 float 정밀도를 근사합니다. 실제 Houdini 표현식 엔진을 실행하는 도구는 아니므로, 큰 프레임 번호에서 결과 자릿수가 중요한 작업은 사용 중인 버전에서 확인하세요.

Houdini 19.5.435에서는 큰 프레임의 $FF 정밀도를 확인하세요

$FF는 소수 프레임을 나타내지만, Houdini 19.5.435에서는 6 유효숫자로 정밀도가 조정됩니다. 프레임 번호가 커지면 정수 부분이 자릿수를 차지해 소수 프레임을 잃을 수 있습니다.

설정 프레임$FF(HScript)@Frame(VEX float)
1001.1234561001.121001.119995
100000.123456100000100000
Houdini 19.5.435에서 큰 프레임 값의 $FF, @Frame 정밀도 비교
Houdini 19.5.435 hython에서 읽은 큰 프레임 값입니다. $FF와 VEX float의 소수부가 줄어드는 차이를 확인할 수 있습니다.

현재 SideFX 문서는 Houdini 20 이전 $FF의 6 유효숫자 동작을 $oldFF로 설명하고, 정밀도가 중요한 HScript 시간 계산에는 $T를 권합니다. 이 안내는 버전 차이를 구분하는 참고입니다. Houdini 19.5.435의 실측값을 Houdini 20 이후에 그대로 적용하지 마세요.

VEX의 @Frame과 @Time도 float 값이므로 무제한 정밀도를 뜻하지 않습니다. 초 단위 기준을 쓰더라도 필요한 프레임 범위와 계산 문맥에서 결과를 확인하세요.

후디니 $F와 시간 표현식 선택 기준

필요한 값HScript 파라미터VEX 코드
정수 프레임$F@Frame은 float이므로 필요한 정수화 규칙을 따로 정합니다
소수 프레임$FF@Frame
초 단위 시간$T@Time
큰 프레임의 정밀 시간 계산$T를 우선 검토@Time의 float 정밀도를 확인

파라미터 칸과 VEX 코드의 문법을 섞지 말고, 프레임 값이 필요한지 초 단위 시간이 필요한지 먼저 정하세요. 소수 프레임을 정수 프레임으로 바꾸는 순간 값이 달라질 수 있으며, 큰 프레임에서는 Houdini 버전과 float 정밀도도 결과에 영향을 줍니다.

참고 자료

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.