한 장의 화면 사이에 여러 물리 계산이 있다
물리 스텝은 운동과 접촉 상태를 한 시간 간격만큼 갱신하는 계산 단위다. 렌더 스텝은 장면을 화면/영상으로 만드는 갱신이고 제어 스텝은 목표나 힘을 계산하는 갱신이다. 센서도 별도 취득/발행 주기를 가질 수 있다. 이들이 같은 함수 호출에 연결돼 보인다고 항상 같은 주기이거나 같은 시각의 자료인 것은 아니다. 스텝의 시뮬레이션 시간과 계산에 실제로 걸린 벽시계 시간도 나눈다.
주파수 f의 단위가 Hz이면 주기는 T=1/f s다. 물리 120 Hz는 약 0.008333 s, 렌더 30 Hz는 약 0.033333 s다. 위상이 맞고 매번 누락 없이 실행되는 이상 일정 스케줄이면 렌더 한 간격에 물리 네 스텝이 들어간다. 0.1 s 구간에는 물리 12스텝과 렌더 3간격이다. ‘물리120/렌더30’이 실제 컴퓨터가 매 벽시계 1초에 그 일을 반드시 끝낸다는 정격은 아니다.
물리100/렌더30처럼 비율이 정수가 아니면 매 렌더 간격의 물리 스텝 수는 같지 않을 수 있다. 예를 들어 0.1 s 동안 세 렌더 간격에 물리 10스텝을 배분하면 3/3/4 같은 배치가 가능하다. 정확한 순서는 위상/이벤트 규약에 따른다. 어느 이벤트에서 명령을 적용하고 센서/영상 stamp를 붙이는지 기록하지 않으면 같은 평균 주파수라도 지연이 달라진다.
실시간 비율 RTF를 진행한 시뮬레이션 시간/경과한 벽시계 시간으로 정의하자. 0.5 s를 계산하는 데 벽시계 1 s가 걸리면 0.5다. 반대로 0.5 s를 0.25 s에 계산하면 2다. 이것은 한 스텝의 물리 정확도나 영상 FPS의 다른 이름이 아니다. Isaac Sim 6.2 시간 설명은 물리/렌더 이벤트와 시간 간격을 구분한다.
작은 스텝은 무엇을 바꾸는가
연속 운동을 유한한 간격으로 갱신하면 수치 오차가 생길 수 있다. 원리를 볼 교육용 1차원 모형을 명시하자. x는 m 단위 위치, v는 m/s 단위 속도, a는 일정한 m/s² 가속도, h는 s 단위 스텝이다. 먼저 속도를 바꾼 뒤 그 새 속도로 위치를 바꾸는 semi-implicit Euler 규칙을 쓴다. 아래 식은 실제 PhysX solver 전체의 구현을 복제한 식이 아니다.
x₀=v₀=0, a=2, h=0.1이면 첫 갱신은 v₁=0.2 m/s, x₁=0.02 m다. 같은 0.1 s를 h=0.05 두 번으로 계산하면 첫 단계 v=0.1/x=0.005, 둘째 v=0.2/x=0.015다. 일정 가속도의 정확한 위치는 0.5at²=0.01 m이므로 위치 오차는 각각 0.01/0.005 m다. 이 예에서는 스텝을 줄여 오차가 줄었다. 속도는 둘 다 정확한 값이라고 위치도 정확한 것은 아니다.
더 작은 간격은 같은 시뮬레이션 시간을 진행할 때 갱신 횟수를 늘린다. 그러나 렌더 간격만 줄이고 물리 h를 유지하면 위 적분의 x 값이 그 이유만으로 개선되는 것은 아니다. 또 실제 제어가 렌더 이벤트에 묶였다면 렌더 변경이 명령 타이밍을 바꿀 수 있으므로 ‘렌더는 어떤 실험에도 전혀 영향이 없다’는 반대 단정도 피한다. 의존 이벤트를 먼저 명시한다.
solver 반복과 시간 분할은 같은 손잡이가 아니다
접촉/관절 제약 solver는 정해진 계산 안에서 제약 오차를 줄인다. 반복 수를 늘리는 것은 그 해결 과정을 조정하는 일이며 애플리케이션의 외부 물리 스텝/제어 주기를 무조건 줄인다는 뜻은 아니다. PhysX의 PGS/TGS처럼 방법에 따라 내부 시간 분할과 반복의 관계도 다르다. 따라서 ‘반복8은 반복4보다 물리 주파수가 정확히2배’라고 읽지 않는다. solver 종류와 위치/속도 반복 설정을 함께 남긴다.
합성 표 A는 제약 오차 최대 3 mm/계산 시간 0.4 ms, B는 1.5 mm/0.7 ms라고 하자. 이것은 실제 엔진 벤치마크가 아니다. 허용 오차를 2 mm 이하, 해당 계산 시간 예산을 0.6 ms 이하로 미리 정했다면 A는 정확도에서, B는 비용에서 실패한다. B가 오차를 줄였다고 두 조건 모두 통과하지는 않는다. 반복 수만 계속 올리는 대신 초기 겹침·잘못된 질량/관성·충돌 근사·너무 큰 drive·스텝 등을 조사한다.
계산 시간 평균만으로 기한 준수를 보장하지도 않는다. 상위 지연/최댓값과 측정 구간, 렌더/센서/브리지 비용을 구분한다. 물리 단계 하나가 예산 안이어도 전체 시스템은 지연될 수 있다. 오차도 어떤 관절/접촉에서 어느 시각의 무엇을 mm로 측정했는지 정의해야 한다. 그림이 더 매끈해졌다는 감상만으로 물리 정밀도가 높아졌다고 보고하지 않는다.
같은 seed는 조건 중 하나다
반복 가능성을 판단하려면 먼저 비교 대상을 정한다. 같은 로그를 다시 읽는 것, 같은 조건의 시뮬레이션 궤적이 비트까지 같은 것, 정해진 위치/성공률 허용 범위 안에 드는 것은 서로 다른 주장이다. seed는 무작위 입력 생성의 일부를 통제하지만 자산 변경·객체 삽입 순서·비동기 명령 도착·다른 엔진/플랫폼을 모두 고정하지 않는다.
PhysX 5.4.1 결정성 설명은 같은 장면/삽입 순서·시간 스텝·릴리스·플랫폼 등 제한된 조건을 명시한다. 이를 Isaac Sim의 모든 렌더/센서·브리지·GPU 경로와 임의 하드웨어까지 확대하지 않는다. 문서가 보장한 범위와 실제 검증한 범위를 나누어 적는다.
기록에는 모델/자산 해시, 엔진/백엔드/드라이버·하드웨어, 초기 pose/속도·제어기 적분상태/지연 큐, seed, 전체 명령의 시각/순서, 물리/렌더/센서/제어 주기·solver 설정을 포함한다. reset이 모든 숨은 상태를 지웠는지도 확인한다. 예를 들어 같은 시각 위치 차이 0.00008 m가 허용 0.0001 m 안이면 이 지표는 통과하지만 비트 동일성은 입증하지 않는다. 기존 2.3 시간과 연결해 어느 설정/범위의 반복을 주장하는지 먼저 고정한다.