캐시 연산자

캐시 연산자는 특정 상태를 기록하고 메모리에 저장합니다. 이 기능은 필요한 처리량이 많아 재생, 특히 백트래킹 속도가 느린 대규모 또는 복잡한 파티클 시스템에서 유용합니다.

캐시가 적용되면 처음으로 프레임을 재생하거나 프레임으로 이동할 때 해당 프레임까지의 파티클 모션이 계산되고 캐시에 기록됩니다. 그 후에는 이 프레임이나 이전 프레임을 재생할 때 파티클 동작을 다시 계산하지 않고 캐시의 데이터가 사용됩니다. 캐시를 설정하면 각 프레임에 대해 한 번만 파티클 시스템을 계산하면 되고, 그 이후에는 프레임 재생 및 프레임 간 이동 속도가 훨씬 더 빠릅니다.

전체 흐름을 캐시하려면 캐시 연산자를 전역 이벤트에 추가합니다. 개별 로컬 이벤트를 캐시하려면 캐시 연산자를 해당 이벤트에 추가합니다.

파티클 시스템에 캐시를 구현하는 최상의 방법을 확인하려면 파티클 뷰 트랙 업데이트 업데이트 진행률을 설정한 다음 애니메이션을 재생하거나 현재 프레임에서 비교적 멀리 떨어진 프레임으로 이동합니다. 파티클 다이어그램을 관찰하고 동작이 1초의 몇 분의 1보다 길게 강조 표시되는 이벤트나 나머지보다 활동이 더 많은 이벤트가 있는지 확인합니다. 이러한 이벤트가 있을 경우 캐시가 도움이 될 수 있습니다.

주: 뷰포트에 대해 설정된 캐시와 렌더링에 대해 설정된 캐시 등 두 개를 사용하지 않는 경우 이벤트당 하나의 캐시 연산자만 사용합니다. 이와 마찬가지로 각각 뷰포트와 렌더링에 대해 설정된 경우가 아니면 동일한 흐름에서 전역 및 로컬 캐시 연산자를 함께 사용하지 마십시오.
팁: 실시간 재생을 사용하는 경우 재생 속도가 빠르지 않으면 캐시 연산자를 사용하여 속도를 향상시킬 수 있습니다. 최상의 결과를 얻으려면 뷰포트 통합 단계를 실시간 재생 속도와 동일한 값으로 설정하고 캐시 샘플링을 통합 단계로 설정하십시오. 예를 들어 실시간 재생 속도가 1/4x로 설정된 경우 뷰포트에 대한 뷰포트 통합 단계도 1/4 Frame으로 설정해야 하며, 캐시 연산자 샘플링 매개변수를 통합 단계로 설정해야 합니다. 따라서 실시간 재생 시 초당 4배 더 많은 프레임이 표시되고 캐시 연산자가 초당 4배 더 많은 프레임을 저장했으므로 둘이 동기화됩니다. 실시간 재생 속도가 2x 또는 4x로 설정된 경우 뷰포트 통합 단계를 프레임으로 설정하십시오.

절차

예: 캐시 연산자를 사용하려면 다음을 수행하십시오.

  1. 3ds Max를 시작하거나 재설정한 다음 파티클 흐름 시스템을 추가합니다.
  2. 파티클 뷰를 엽니다.
  3. 파티클 뷰에서 옵션 메뉴 트랙 업데이트로 이동한 다음 업데이트 진행률을 설정합니다.

    이렇게 하면 시스템이 동작을 실행할 때 파티클 뷰에서 해당 동작이 강조 표시되므로 파티클 시스템의 계산을 모니터링할 수 있습니다.

  4. 파티클 뷰에서 거리 유지 연산자를 이벤트 01에 추가합니다.

    거리 유지는 계산 사용이 많은 연산자입니다.

  5. 시간 슬라이더 트랙의 오른쪽 끝을 클릭하여 프레임 100으로 이동합니다.

    시스템에서 프레임 0과 100 사이의 모든 파티클 모션을 계산하는 동안 지연이 발생합니다. 파티클 흐름은 내역 종속 시스템이므로 이러한 지연이 필요합니다. 이와 동시에 각 프레임에서 시스템 동작이 실행되면 파티클 뷰의 해당 동작이 잠시 강조 표시됩니다.

  6. 시간 슬라이더 트랙의 중심을 클릭하여 프레임 50으로 이동합니다.

    시스템에서 프레임 0과 50 사이의 모든 파티클 모션을 계산하는 동안 다시 지연이 발생합니다.

  7. 파티클 뷰에서 기지의 캐시 연산자를 이벤트 01로 드래그하여 이벤트의 아무 곳에나 삽입합니다.

    마우스 버튼을 놓으면 캐시 연산자가 애니메이션의 처음부터 현재 프레임까지 파티클 모션을 자동으로 캐시하므로 지연이 발생합니다. 그 동안 각 프레임의 각 동작이 잠시 강조 표시됩니다.

  8. 프레임 20 정도로 이동합니다.

    강조 표시되는 연산자는 캐시(매우 빠름)와 디스플레이 뿐입니다. 계산을 위한 지연이 발생하지 않습니다. 0과 50 사이의 모든 프레임이 캐시되었습니다.

  9. 프레임 100으로 이동합니다.

    이번에는 프레임 50에서 100 사이의 파티클 모션을 캐시하므로 지연이 발생합니다.

  10. 다른 프레임으로 이동한 다음 시간 슬라이더를 드래그합니다.

    이제 모든 파티클 모션이 캐시되었으므로 지연이 발생하지 않습니다. 그러나 설정 값을 변경하면 캐시 연산자가 자동으로 파티클 모션을 다시 계산하여 저장합니다.

  11. 프레임 100으로 이동한 다음 파티클 뷰에서 거리 유지 연산자를 클릭하고 키보드를 사용하여 폴오프 영역 값을 8.0으로 변경합니다.

    캐시에 저장된 매개변수를 변경하면 기본적으로 캐시 연산자에서 자동으로 해당 캐시를 업데이트합니다. 따라서 프레임 100에서 폴오프 영역 값을 변경하면 전체 애니메이션이 다시 계산되고 다시 캐시됩니다.

    다음에는 수동 캐싱의 작동 방식에 대해 간단하게 살펴보겠습니다.

  12. 캐시 연산자를 클릭하고 업데이트를 수동으로 설정합니다.

    이제 매개변수를 변경해도 캐시 연산자가 더 이상 자동으로 저장된 데이터를 업데이트하지 않습니다.

  13. 거리 유지 연산자를 클릭하고 폴오프 영역 값을 9.0으로 변경한 다음 시간 슬라이더를 드래그합니다.

    애니메이션이 여전히 캐시된 데이터에서 재생되므로 지연이 발생하지 않습니다. 그러나 파티클 시스템의 매개변수를 변경했으므로 캐시된 데이터는 이제 유효하지 않습니다.

  14. 캐시 연산자를 클릭한 다음 수동 업데이트 그룹에서 업데이트를 클릭합니다.

    3ds Max에서 파티클 뷰를 닫고 활성 세그먼트에 대한 캐시를 업데이트한 다음 파티클 뷰를 다시 엽니다. 이제 캐시된 데이터가 정확합니다.

    기타 수동 업데이트 옵션을 사용하여 전체 애니메이션이나 사용자 정의 프레임 범위에 대해 캐시를 업데이트할 수 있습니다.

    설명드린 것처럼 캐시 연산자는 매우 강력합니다. 이 연산자가 있고 활성화된 경우 기본적으로 파티클 시스템 다시 계산이 재정의됩니다. 단, 동작 매개변수를 변경하여 캐시된 데이터가 자동으로 업데이트되는 경우는 예외입니다. 적절하게 사용하면 파티클 시스템 설정 및 테스트 시간을 훨씬 절약할 수 있습니다.

인터페이스

사용자 인터페이스는 파티클 뷰 대화상자 오른쪽의 매개변수 패널에 나타납니다.

사용 위치
뷰포트, 렌더링 시 또는 둘 다에서 재생할 때 파티클 모션을 캐시합니다. 기본값은 뷰포트입니다.
중요사항: 뷰포트와 렌더링에 동일한 개수의 파티클을 사용하는 경우에만 뷰포트/렌더 옵션을 선택합니다. 즉, 전역 이벤트(또는 파티클 흐름 소스)의 방사 롤아웃에서 두 개의 수량 승수 설정은 동일해야 합니다. 그렇지 않으면 예기치 않은 결과가 발생할 수 있습니다.
업데이트
파티클 시스템에서 매개변수를 변경하면 캐시된 데이터가 잘못될 수 있습니다. 이 설정은 파티클 흐름에서 자동으로 캐시를 업데이트할지, 수동으로 업데이트하도록 할지 결정합니다. 기본값은 항상입니다.
  • 항상캐시 연산자 영역의 매개변수를 변경하면 현재 범위(다음 매개변수 참조)의 처음부터 현재 프레임까지 저장된 데이터가 자동으로 업데이트됩니다.
  • 수동업데이트 버튼을 클릭하거나 캐시를 지운 다음 다른 프레임으로 이동하는 경우에만 업데이트가 수행됩니다.
범위
캐시 연산자가 작동하는 프레임 범위를 설정합니다. 기본값은 활성 세그먼트입니다.
  • 완료파티클 흐름에서 전체 애니메이션을 캐시합니다.
  • 활성 세그먼트파티클 흐름에서 시간 구성 대화상자의 시작 시간 및 종료 시간 설정에 정의된 대로 활성 세그먼트의 프레임만 캐시합니다. 이 프레임 범위는 트랙 바에 표시됩니다. 또한 Alt+Ctrl을 누른 상태로 마우스를 사용하여 트랙 바를 드래그하면 활성 세그먼트를 변경할 수 있습니다. 이 작업의 경우 마우스 왼쪽, 가운데 또는 오른쪽 버튼을 사용할 수 있습니다.
  • 사용자 정의파티클 흐름에서 캐시 연산자의 시작 시간 및 종료 시간 설정에 정의된 대로 사용자 정의 범위의 프레임만 캐시합니다(아래 참조).
    주: 애니메이션 부분만 캐시하는 경우 파티클 흐름에서 캐시된 데이터를 사용하여 캐시되지 않은 후속 프레임의 파티클 동작을 계산합니다. 예를 들어 프레임 0에서 50까지 캐시한 다음 프레임 60으로 이동하는 경우 파티클 흐름에서 캐시된 데이터를 기준으로 프레임 51을 계산하며 프레임 52에서 60까지는 각 이전 프레임을 기준으로 계산합니다.
시작/종료 시간
범위가 사용자 정의일 때 캐시에 고려되는 범위의 첫 프레임과 마지막 프레임입니다(위 참조). 기본값은 0, 30입니다.
주: 프레임 범위 시간 프레임은 절대 시간을 사용합니다. 즉, 전체 애니메이션을 기준으로 합니다. 로컬에서 캐시 연산자를 사용하는 경우 이벤트에 아무 파티클도 없는 프레임 범위를 지정하면 파티클 흐름에서 캐시를 사용하지 않습니다.
샘플링
캐시 연산자에서 애니메이션을 샘플링 및 캐시하는 빈도를 결정합니다. 기본값은 모든 프레임입니다.
  • 모든 프레임파티클 흐름에서 애니메이션 데이터를 프레임당 한 번 캐시합니다.
  • 통합 단계파티클 흐름에서 사용 위치 설정에 지정된 통합 단계 설정을 사용하여 각 통합 단계에서 애니메이션 데이터를 캐시합니다(위 참조). 사용 위치를 뷰포트/렌더로 설정하면 두 개의 통합 단계 값 중 작은 값이 사용됩니다. 예를 들어 뷰포트를 절반 프레임으로 설정하고 렌더를 1/8 프레임으로 설정하면 샘플링 속도는 프레임당 8개가 됩니다.
  • N번째 프레임마다파티클 흐름에서 애니메이션 데이터를 아래의 N 값에 지정된 프레임 간격마다 캐시합니다.
N
샘플링(위)이 N번째 프레임마다로 설정된 경우 캐싱의 프레임 간격을 결정합니다. 기본값은 5입니다.

예를 들어 N을 기본값 5로 설정하면 캐시에서 매 5번째 프레임의 애니메이션 데이터를 저장합니다.

테스트 결과 캐시
파티클 데이터를 캐시하는 경우 테스트 동작 결과도 캐시됩니다. 기본적으로 켜져 있습니다.

이 옵션은 캐시가 로컬 연산자로 사용되며 다음 이벤트가 캐시 연산자가 없는 경우에 중요합니다. 다음 이벤트가 제대로 작동하려면 현재 이벤트에서 파티클을 받아야 합니다. 이러한 파티클은 테스트 동작의 활동에서 발생합니다. 캐시 연산자는 테스트 활동을 기록하여 나중에 재생할 수 있습니다.

캐시 연산자가 전역 연산자로 사용되는 경우에는 테스트 결과를 캐시할 필요가 없습니다. 이는 모든 이벤트에 대한 캐시 데이터가 시스템에 있으며 테스트 결과가 없어도 아무 프레임으로나 이동할 수 있기 때문입니다.

캐시를 파일로 저장
설정하면 디스크에 저장하는 장면과 함께 캐시된 데이터가 파티클 흐름에 포함됩니다. 이 경우 저장된 파일 크기가 훨씬 증가할 수 있지만 파일을 다시 로드할 때 파티클 모션을 다시 계산하는 시간이 절약됩니다. 기본값은 해제입니다.

일반적으로 캐시된 데이터는 저장 또는 다른 이름으로 저장 명령을 사용하여 만든 디스크 파일에만 저장됩니다. 다음 두 가지 옵션을 사용하여 캐시된 데이터를 다른 파일 형식으로 포함하도록 3ds Max에 지정할 수도 있습니다.

캐시를 보류 상태로 저장
캐시된 데이터를 편집 메뉴 보류로 만든 보류 파일에 저장합니다. 기본값은 해제입니다.

수동 업데이트 그룹

이 컨트롤을 사용하여 프레임 범위 내의 캐시를 수동으로 업데이트 또는 지우거나 전체 캐시를 지울 수 있습니다.

업데이트
현재 범위 내의 파티클 모션을 계산하고(아래에 정의) 캐시에 저장하여 기존에 캐시된 데이터를 바꿉니다. 범위가 활성 세그먼트 또는 사용자 정의로 설정된 경우에만 사용할 수 있습니다.

업데이트 중 캐시된 범위를 통해 시간 슬라이더를 이동하는 동안 3ds Max에서 파티클 뷰를 일시적으로 닫고 캐시 업데이트 진행률 바를 표시합니다. 기본적으로 이와 동시에 애니메이션이 뷰포트에서 재생됩니다. 이를 방지하고 계산 속도를 향상시키려면 뷰포트 업데이트를 끕니다.

수동 업데이트 중에 캐시 메모리가 부족하면 파티클 흐름에서 업데이트 작업을 중지하고 경고를 표시합니다. 확인을 클릭하여 계속한 다음 가능한 경우 다시 캐시를 업데이트하기 전에 제한 값을 늘립니다.

지우기
캐시된 데이터를 모두 삭제합니다.

캐시 버퍼를 지운 후 다른 프레임으로 이동하거나 동작 매개변수를 변경하면 업데이트가 수동으로 설정된 경우에도 파티클 모션이 자동으로 캐시됩니다.

범위
업데이트 클릭 시 캐시 연산자가 데이터를 다시 계산하는 프레임 범위를 설정합니다. 기본값은 활성 세그먼트입니다.
  • 완료파티클 흐름에서 전체 애니메이션에 대한 캐시를 지웁니다. 완료를 선택하면 업데이트 버튼을 사용할 수 없습니다. 이 옵션은 캐시를 지우는 용도로만 사용됩니다.

    전체 애니메이션을 업데이트하려면 모든 프레임을 포함하도록 활성 세그먼트 또는 사용자 정의 범위를 설정한 다음 해당 선택 사항을 사용하고 업데이트를 클릭합니다.

  • 활성 세그먼트파티클 흐름에서 시간 구성 대화상자의 시작 시간 및 종료 시간 설정에 정의된 대로 활성 세그먼트의 프레임에 대한 캐시만 업데이트합니다. 이 프레임 범위는 트랙 바에 표시됩니다. 또한 Alt+Ctrl을 누른 상태로 트랙 바를 드래그하면 활성 세그먼트를 변경할 수 있습니다. 이 작업의 경우 마우스 왼쪽, 가운데 또는 오른쪽 버튼을 사용할 수 있습니다.
  • 사용자 정의파티클 흐름에서 캐시 연산자의 시작 시간 및 종료 시간 설정에 정의된 대로 사용자 정의 범위의 프레임에 대한 캐시만 업데이트합니다(아래 참조).
시작/종료 시간
범위가 사용자 정의일 때 업데이트되는 범위의 첫 프레임과 마지막 프레임입니다(위 참조). 기본값은 0, 30입니다.
뷰포트 업데이트

설정하면 캐시를 수동으로 업데이트하는 동안 애니메이션이 뷰포트에서 재생됩니다. 수동 캐싱 중에 뷰포트에서 애니메이션을 재생하지 않으려면 이 옵션을 끕니다. 이렇게 하면 대규모 또는 복잡한 파티클 시스템에서 특히 캐싱 프로세스 속도가 향상될 수 있습니다. 기본적으로 켜져 있습니다.

사용된 메모리 (K) 그룹

캐시 연산자는 시스템 메모리에 데이터를 저장합니다. 이 연산자가 사용하는 메모리 양의 상한을 지정할 수 있습니다. 제한 설정과 캐시된 데이터 양이 사용 가능한 메모리를 초과하면 컴퓨터 시스템에서 대신 가상(하드 디스크 기반) 메모리를 사용하여 캐싱 속도가 느려질 수 있습니다. 파티클 흐름로 캐시를 채우는 경우 나머지 프레임은 즉석에서 계산됩니다.

이 그룹을 사용하면 데이터 캐싱에 사용되는 메모리 양을 모니터링할 수 있습니다.

제한
파티클 데이터를 캐시하는 데 사용되는 최대 시스템 메모리 양(KB)입니다. 기본값은 100,000 또는 97.6MB입니다.
전체
캐시된 데이터에서 현재 사용하는 메모리 양(KB)입니다. 읽기 전용입니다.
주: 파티클이 없는 애니메이션 프레임도 일정한 양의 캐시 메모리를 사용합니다. 이는 특정 활동이 전체 렌더링 네트워크 및 모든 프레임에 정기적으로 액세스하지 않는 시스템에서 일관성이 있도록 캐시에서 변형과 같은 무작위 계산 값의 상태도 저장하기 때문입니다.
현재 프레임
현재 프레임에 대해 캐시된 데이터에서 사용하는 메모리 양(KB)입니다. 읽기 전용입니다.