시네머신 임펄스 소스
임펄스 소스는 씬 공간의 한 지점에서 진동 신호를 방출하는 컴포넌트입니다. 게임 이벤트는 임펄스 소스가 이벤트가 발생하는 장소에서 신호를 방출하도록 만들 수 있습니다. 이벤트는 임펄스를 트리거 하고, 소스는 임펄스를 생성 합니다. 임펄스 리스너 확장이 있는 가상 카메라는 흔들림을 통해 임펄스에 응답 합니다.
아래 이미지에서는 사람의 발이 임펄스 소스입니다. 발이 바닥과 충돌(A)하면 임펄스가 생성됩니다. 카메라는 임펄스 리스너이며 흔들림(B)을 통해 임펄스에 응답합니다. 이로 인해 게임 뷰의 결과 이미지가 흔들리게 됩니다(C).

시네머신은 두 가지 유형의 Impulse Source 컴포넌트를 제공합니다.
**시네머신 충돌 임펄스 소스**는 충돌 및 트리거 구역에 대한 응답으로 임펄스를 생성합니다.
**시네머신 임펄스 소스**는 충돌 이외의 이벤트에 대한 응답으로 임펄스를 생성합니다.
씬에는 원하는 만큼 많은 임펄스 소스를 포함할 수 있습니다. 씬에서 Impulse Source 컴포넌트를 사용할 수 있는 몇 가지 예는 다음과 같습니다.
거인의 각 발에 사용하여 거인이 걸을 때 지면이 흔들리도록 만듭니다.
타겟에 적중하면 폭발하는 발사체에 사용합니다.
무언가가 닿으면 흔들리는 젤라틴 행성의 표면에 사용합니다.
기본적으로 임펄스 소스는 범위 내 모든 임펄스 리스너에 영향을 주지만, 채널 필터링을 적용하여 소스가 일부 리스너에만 영향을 주도록 만들 수도 있습니다.
주요 Impulse Source 프로퍼티
원시 진동 신호는 카메라 흔들림의 기본 "모양"을 정의하지만, 임펄스 소스는 생성되는 임펄스를 정의하는 몇 가지 다른 중요한 프로퍼티를 제어합니다.
이러한 일부 프로퍼티를 명확히 이해하면 보다 실제와 유사한 카메라 흔들림 설정을 만들 수 있습니다.
아래에는 주요 프로퍼티에 대한 상세한 설명이 나와 있습니다.
Amplitude: 진동의 강도를 제어합니다.
Orientation and direction: 임펄스가 신호를 변환하여 진동이 진동을 발생시키는 충격의 방향과 일치하도록 만들 수 있습니다.
Time envelope: 신호의 공격, 지속 및 감쇠를 제어하여 신호가 적절한 강도로 페이드인 및 페이드아웃되고 유한한 시간 동안 지속되도록 만들 수 있습니다.
Spatial range: 신호가 완전히 페이드아웃될 때까지 씬에서 신호가 이동하는 거리를 제어합니다.
모든 Impulse Source 프로퍼티에 대한 설명과 씬에 임펄스 소스를 추가하기 위한 지침은 Impulse Source 및 Collision Impulse Source 컴포넌트에 대한 문서를 참조하십시오.
진폭
원시 임펄스 신호의 진폭은 각 충격에 대한 진동 강도를 제어합니다. 특정 임펄스 소스의 진폭을 조정하는 방법에는 두 가지가 있습니다.
Amplitude Gain 프로퍼티는 원시 임펄스 신호를 증폭하거나 감쇠하며, 항상 모든 충격에 영향을 줍니다. 임펄스 소스 진동의 강도를 높이거나 낮추기 위한 전역 "볼륨" 설정이라고 생각하면 좋습니다.
신호를 생성할 때 Velocity 벡터의 크기를 변경할 때에도 신호 진폭이 확대/축소되지만, 영향은 전역이 아니라 각 충격으로 제한됩니다. 개별 임펄스 이벤트의 속도를 조정하여 약한 충격은 작은 진동을 만들고 강한 충격이 큰 진동을 만들도록 설정할 수 있습니다.
Cinemachine Impulse Source 컴포넌트의 경우 스크립트를 통해 속도 벡터를 직접 설정해야 합니다. 신호의 진폭은 이 벡터의 크기에 따라 확대/축소됩니다.
Cinemachine Collision Impulse Source 컴포넌트는 임펄스를 생성하는 방법 섹션의 세 프로퍼티가 정의하는 규칙에 따라 속도 벡터를 자동으로 계산합니다.
이러한 전역 및 충격당 조정을 곱하여 각 충격의 실제 진폭이 계산됩니다.
방향
실제 같은 진동을 생성하려면 충격 축을 따라 임펄스 신호가 가장 강해야 하고, 해당 진폭(또는 강도)은 충격의 힘과 비례해야 합니다. 예를 들어 망치로 벽을 때리면 벽은 주로 망치의 경로 축을 따라 진동합니다. 망치의 임펄스 신호가 현실적이려면 해당 축을 따라 진동이 가장 강해야 합니다.
아래 이미지에서 진동의 메인 축(A)이 망치가 벽을 때릴 때 망치가 이동하는 방향(B)과 일치합니다.

임펄스는 가능한 모든 충격 방향과 강도에 대해 별도의 신호 정의를 요구하는 대신, 원시 신호를 정의하기 위해 '로컬 공간'이라는 개념을 사용합니다. 해당 로컬 공간의 원시 신호를 회전하고 확대/축소하여 실제 영향과 일치하는 '최종' 신호를 생성할 수 있습니다.
임펄스는 충격의 주 방향이 '아래쪽'이라고 간주하므로, 일반적으로 신호는 Y축을 따라 더 많은 진동을 전달해야 합니다(6D Shake 노이즈 프리셋이 이러한 역할을 수행함). 그런 다음 로컬 공간 회전 및 확대/축소를 사용하여 각 충격 발생에 대한 올바른 진동을 생성할 수 있습니다.
방향 제어
Cinemachine Impulse Source 및 Cinemachine Collision Impulse Source 컴포넌트에는 원시 신호의 방향을 제어하는 프로퍼티가 있습니다. 이 프로퍼티를 사용하여 실제 진동을 모방하십시오.
Cinemachine Impulse Source 컴포넌트의 경우 GenerateImpulse() 메서드는 속도 벡터를 파라미터로 취합니다. 이 벡터는 충격의 방향과 강도를 정의합니다. 임펄스 시스템은 이 벡터를 사용하여 원시 신호 정의에 따라 최종 신호를 계산하고 적절하게 회전하거나 확대/축소합니다.
Cinemachine Collision Impulse Source 컴포넌트의 경우 속도 벡터는 관련된 게임 오브젝트의 방향과 질량에 기반하여 자동적으로 생성됩니다.
이러한 생성 방식을 제어하려면 인스펙터 창의 임펄스를 생성하는 방법 섹션에 있는 프로퍼티를 사용하십시오. Use Impact Direction 프로퍼티는 충격 방향에 따라 신호가 회전하는지 여부를 제어합니다.
방향 모드
Spatial Range > Direction Mode 프로퍼티를 사용하면 신호 방향을 미세하게 조정할 수 있습니다. 이 프로퍼티를 Rotate Towards Source로 설정하면 진동이 임펄스 소스 방향으로 좀 더 향하도록 임펄스 신호가 회전됩니다.
방사 대칭 진동의 경우에는 이러한 효과가 눈에 띄지 않지만, 6D Shake 같은 방향을 강조하는 신호의 경우 진동이 오는 방향을 잠재의식적으로 표시합니다. 이는 여러 위치에서 충격을 생성하고 모두 다르게 느껴지도록 만들고 싶을 때 사용하면 매우 효과적입니다.
Fixed의 기본 Direction Mode 설정은 이 효과를 끕니다.
타임 엔벨로프
실제 충격으로 인한 진동은 최고 강도에 도달할 때까지 점점 강해졌다가 진동이 멈출 때까지 점점 약해집니다. 이 주기에 걸리는 시간은 충격의 강도와 관련된 게임 오브젝트의 특성에 따라 다릅니다.
예를 들어 망치로 콘크리트 벽을 때리면 짧고 날카로운 충격이 발생합니다. 진동은 거의 즉시 최고 강도에 도달했다가 거의 즉시 정지합니다. 반면에 얇은 금속판을 때리면 지속적인 진동이 발생합니다. 즉 진동이 즉시 시작되고, 한동안 최고 강도에 머물렀다가 점차적으로 약해집니다.
씬 내 충격으로 카메라가 흔들릴 때 임펄스 소스의 Time Envelope 프로퍼티를 사용하여 이러한 주기를 제어할 수 있습니다. 타임 엔벨로프에는 다음의 세 가지 프로퍼티가 있습니다.
- Attack은 임펄스 신호의 최고 강도 전환을 제어합니다.
- Sustain Time은 신호가 최고 강도에서 머무르는 시간을 지정합니다.
- Decay는 최고 강도에서 0으로의 신호 전환을 제어합니다.
Attack과 Decay는 모두 전환에 걸리는 시간을 지정하는 기간 값과 전환이 일어나는 방식(예: 점진적 또는 급진적 방식)을 정의하는 커브로 이루어져 있습니다. 커브는 선택 사항입니다. 인스펙터 창에서 커브를 비워 두면 임펄스는 대부분의 목적에 적합한 기본 커브를 사용합니다. Sustain Time은 기간 값입니다.
이러한 프로퍼티를 사용하여 충격 발생으로 인한 진동 지속 시간과 진동의 페이드인 및 페이드아웃 방식을 제어할 수 있습니다. 하지만 충격의 강도는 제어할 수 없습니다. 충격의 강도를 제어하려면 Scale with Impact 프로퍼티를 활성화하십시오. 그러면 타임 엔벨로프가 충격의 강도에 따라 확대/축소됩니다. 충격이 강하면 엔벨로프가 길어지고, 충격이 약하면 엔벨로프가 짧아집니다. 이는 엔벨로프의 비율에는 영향을 주지 않습니다.
공간 범위
임펄스 소스의 Spatial Range 프로퍼티는 임펄스 소스가 영향을 주는 씬 내 영역을 정의합니다. 이 영역의 임펄스 리스너는 임펄스 소스에 응답(필터링 아웃된 경우는 제외)하고, 영역 밖에 있는 경우에는 응답하지 않습니다.
이 영역은 두 가지 파트, 즉 충격 반경과 소멸 거리로 구성됩니다. 임펄스 소스가 임펄스를 생성하면 진동 신호는 충격 반경의 끝에 도달할 때까지 최대 강도를 유지합니다. 그런 다음 소멸 거리에 걸쳐 점점 약해지다가 0에 도달합니다. 이 두 가지 프로퍼티가 신호의 총 범위를 정의합니다.
아래 이미지에서 진동 신호는 충격 지점에서 방출되어 충격 반경(A)에 도달하는 시간 동안 최고 강도를 유지한 후 소멸 거리(B)에 걸쳐 지속적으로 약해집니다.

Dissipation Mode 프로퍼티는 신호가 소멸 거리에 걸쳐 약해지는 방식 을 제어합니다.
Exponential Decay는 빠르게 시작했다가 소멸 거리의 끝에 가까워지면 느려지는 페이드아웃을 구현합니다.
Soft Decay는 느리게 시작했다가 점점 빨라지고 소멸 거리의 끝에 가까워지면 느려지는 페이드아웃을 구현합니다.
Linear Decay는 소멸 거리에 걸쳐 균등한 페이드아웃을 구현합니다.