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

후디니 Timeshift·Retime으로 캐시 속도 바꾸기: 프레임 계산기

vfx 잡학지식 읽는 시간 약 9분 조회 1

시뮬레이션 캐시를 절반 속도로 재생하고 싶은데, 출력 프레임이 원본의 어느 프레임을 읽는지 헷갈릴 수 있습니다. 후디니 TimeShift와 Retime은 기준점이 다릅니다. TimeShift는 Integer Frame 설정에 따라 분수 시점을 그대로 읽거나 정수 프레임으로 반올림하고, Retime은 Start Frame과 Speed로 시점을 계산합니다.

Timeshift는 특정 프레임을 고르거나 프레임마다 읽을 시점을 직접 지정할 때, Retime은 캐시를 일정하거나 변하는 속도로 재생할 때 쓰세요. 아래 계산기에 원본 프레임 범위와 출력 범위를 넣으면 출력 프레임별 원본 샘플과 서브프레임 캐시 조건을 확인할 수 있습니다.

원본 프레임을 어디서 읽을지 계산하세요

정수 출력 프레임마다 TimeShift 식이나 Retime 속도 배율이 가리키는 원본 프레임과 필요한 캐시 샘플을 보여 줍니다.

출력 프레임읽는 원본 프레임캐시 샘플 / 서브프레임 조건

계산기는 선형 프레임 매핑과 입력 범위만 계산합니다. Retime 보간은 점·프리미티브 대응, 토폴로지, 볼륨 설정에 따라 결과가 달라질 수 있습니다. TimeShift의 Time 모드와 출력 프레임 소수 샘플은 이 표의 범위가 아닙니다.

Integer Frame을 끄면 TimeShift와 Retime은 같은 0.5에서도 다른 원본 시점을 읽습니다

TimeShift의 Frame에 $F*0.5를 넣으면 출력 프레임 번호에 0.5를 곱해 시점을 계산합니다. Integer Frame을 끄면 그 분수 시점을 그대로 읽습니다. 기본값처럼 켜져 있으면 가장 가까운 정수 프레임으로 반올림하므로, 예를 들어 2.5는 3으로 읽습니다. 반면 Retime의 By Speed는 출력 범위의 시작 프레임과 Start Frame을 기준으로 속도 배율을 적용합니다. Start Frame을 1로 둔 Retime은 출력 시작 프레임에서 원본 1을 읽고, 이후 출력 프레임이 하나 늘 때마다 원본 시점이 0.5프레임씩 이동합니다.

출력 프레임TimeShift Frame $F*0.5 (Integer Frame 끔)Retime Speed 0.5, Start Frame 1
5원본 2.5원본 3.0
8원본 4.0원본 4.5

계산식은 각각 입력 프레임 = 출력 프레임 × 0.5, 입력 프레임 = Start Frame + (출력 프레임 − 출력 시작 프레임) × Speed입니다. Houdini 19.5.435에서 위치가 현재 프레임과 같은 속도로 움직이는 점을 만들어 비교했을 때, 출력 5에서 위치는 TimeShift 2.5, Retime 3.0이었고 출력 8에서는 4.0, 4.5였습니다. 이는 일정 속도 점의 프레임 매핑을 확인한 결과이며, 복잡한 시뮬레이션의 보간 품질까지 보증하지는 않습니다.

재생 속도를 바꿀 때는 Retime, 프레임을 직접 고를 때는 TimeShift를 쓰세요

캐시 전체를 절반이나 두 배 속도로 재생하거나 속도를 프레임에 따라 바꾸려면 Retime SOP가 편합니다. Evaluation Mode를 By Speed로 두고 Start Frame과 Speed를 설정하면 됩니다. 속도가 달라지는 구간이나 출력·입력 프레임 범위의 끝에서는 Input Frame Range와 Boundary 조건도 확인하세요.

반대로 한 프레임을 고정해 홀드하거나, 출력 프레임마다 원하는 원본 시점을 식으로 지정하려면 TimeShift SOP가 알맞습니다. 예를 들어 Frame에 48을 넣으면 입력 48번 시점을 고정해서 읽습니다. 프레임 식의 변수 차이는 기존 글 후디니 $F·$FF·$T·@Frame·@Time 차이와 이어지는 주제입니다.

분수 프레임은 Integer Frame과 Retime 보간 설정이 결정합니다

후디니 Time Shift Frame $F*0.5와 Integer Frames로 프레임 11에서 원본 프레임 6을 읽은 화면
Houdini 22.0.466 Apprentice에서 Time Shift의 Frame에 $F*0.5를 넣고 프레임 11에서 본 화면입니다. Frame 칸은 5.5지만 Integer Frames가 기본으로 켜져 있어 원본 프레임 6(source_frame 6.0, P.x 0.6)을 읽습니다.

TimeShift를 By Frame으로 쓸 때 Integer Frame이 켜져 있으면 Frame 식의 결과가 가장 가까운 정수 프레임으로 반올림됩니다. $F*0.5는 출력 11에서 5.5를 계산하지만, 기본 체크가 켜져 있으면 원본 6번을 읽습니다. 절반 프레임을 읽으려면 Integer Frame을 끄세요. TimeShift의 By Time 모드는 시간 값으로 평가하며 분수 시점을 허용합니다.

Retime의 Interpolate Between Input Frames를 켜면 가까운 입력 샘플 사이를 보간합니다. 정수 프레임만 저장한 캐시도 토폴로지와 점 대응이 유지되면 중간 프레임을 근사할 수 있어, 느린 재생을 위해 항상 서브프레임 캐시를 새로 만들 필요는 없습니다. 이 옵션을 끄면 입력을 분수 프레임에서 직접 cook하므로, 그 시점에서 계산 가능한 네트워크인지 확인하세요.

실제 solver의 하위 스텝에서만 나타나는 충돌, 빠른 소용돌이, 프레임 사이에 생기고 사라지는 요소처럼 정수 샘플 보간으로 복원되지 않는 정보가 중요하면 해당 분수 시점을 캐시해야 합니다. File Cache의 Substeps는 프레임 사이 샘플을 나눠 저장하는 설정입니다. 캐시 형식과 디스크 사용량을 비교할 때는 후디니 캐시 형식별 용량 실측도 참고하세요.

Time Blend SOP도 가까운 정수 프레임의 기하를 섞어 중간 값을 만듭니다. 다만 프레임마다 토폴로지가 같아야 하고, SideFX는 이 노드를 deprecated로 표시하며 Retime 사용을 권장합니다. 새 작업에서는 먼저 Retime의 Interpolate Between Input Frames를 확인하세요.

Houdini에서 프레임 매핑을 재현하는 순서

  • 움직이는 테스트 지오메트리 뒤에 TimeShift SOP를 연결하고 Method를 By Frame으로 둡니다.
  • Frame에 $F*0.5를 입력하고, 분수 프레임을 시험할 때는 Integer Frame을 끕니다. 출력 11에서 Frame 값 5.5가 정수 프레임 옵션에 따라 달라지는지 확인하세요.
  • 같은 입력에 Retime SOP를 연결하고 Evaluation Mode를 By Speed, Start Frame을 1, Speed를 0.5로 둡니다.
  • Interpolate Between Input Frames를 켠 뒤 출력 프레임 5와 8을 확인하고 위 표와 비교하세요.

Retime의 Use Velocity When Interpolating Position은 점의 v 속성을 이용해 위치를 보간할 수 있는 옵션입니다. v의 시간 단위와 Input Timestep, 프레임 사이 점 대응이 맞는지 확인하고 결과를 비교하세요. 속성 생성법은 다른 글의 범위이므로 여기서는 보간 설정만 다룹니다.

계산 결과가 튀면 이 세 가지부터 점검하세요

  • TimeShift 결과가 계단처럼 끊기면 Integer Frame이 켜져 있지 않은지 확인하세요.
  • Retime 결과가 빈 프레임이거나 범위 밖으로 나가면 Start Frame, Input Frame Range, Boundary 조건을 확인하세요.
  • 중간 지오메트리가 찌그러지면 보간 구간의 토폴로지와 점 순서·ID, v의 단위와 Input Timestep을 확인하세요. 보간은 원본 시뮬레이션을 다시 계산한 값과 같다고 보장하지 않습니다.

캐시를 일정 속도로 늦추는 작업은 Retime의 By Speed부터, 특정 프레임을 읽거나 시간 구간을 직접 재매핑하는 작업은 TimeShift부터 시작하세요. 계산기에서 출력 프레임이 실제로 읽는 원본 시점을 먼저 확인하면, 기본 Integer Frame 반올림과 서브프레임 샘플 누락을 구분하기 쉽습니다.

참고 자료

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.