컨텍스트
컨텍스트는 비주얼 이펙트 그래프의 처리(수직) 워크플로의 주요 요소이며, 파티클이 생성되고 시뮬레이션되는 방식을 결정합니다. 그래프에서 컨텍스트를 구성하는 방법은 처리 워크플로의 작업 순서를 정의합니다. 처리 워크플로에 대한 자세한 내용은 비주얼 이펙트 그래프 로직을 참조하십시오. 모든 컨텍스트는 한 단계의 계산을 정의합니다. 예를 들어 컨텍스트는 다음을 수행할 수 있습니다.
- 효과가 생성하는 파티클 수를 계산합니다.
- 새 파티클을 생성합니다.
- 모든 살아있는 파티클을 업데이트합니다.
컨텍스트는 파티클의 라이프사이클을 정의하기 위해 순차적으로 서로 연결됩니다. 그래프가 새 파티클을 생성하면 Initialize 컨텍스트는 Update Particle 컨텍스트에 연결하여 각 파티클을 시뮬레이션할 수 있습니다. 또한 Initialize 컨텍스트는 대신 Output Particle 컨텍스트에 직접 연결하여 동작을 시뮬레이션하지 않고도 파티클을 렌더링할 수 있습니다.
컨텍스트 생성 및 연결
컨텍스트는 그래프 요소의 한 타입입니다. 생성하려면 그래프 요소 추가를 참조하십시오.
컨텍스트는 수직 선형 순서로 서로 연결됩니다. 이를 위해 컨텍스트는 플로 슬롯을 사용합니다. 컨텍스트가 파티클 라이프사이클의 어느 부분을 정의하는지에 따라 상단, 하단 또는 둘 다에 플로 슬롯을 가질 수 있습니다.
컨텍스트 설정
컨텍스트의 동작을 변경하려면 노드 UI 또는 인스펙터에서 해당 설정을 조정하십시오.
또한 일부 설정은 컨텍스트의 모습을 변경합니다. 예를 들어 Quad Output 컨텍스트에서 UV Mode를 FlipbookMotionBlend로 설정하면 Unity는 추가 프로퍼티 Flipbook Size, Motion Vector Map 및 Motion Vector Scale을 컨텍스트 헤더에 추가합니다.
플로 호환성
모든 컨텍스트가 서로 연결할 수 있는 것은 아닙니다. 일관된 워크플로를 유지하려면 다음 규칙을 적용하십시오.
- 컨텍스트는 호환되는 입력/출력 데이터 타입에만 연결됩니다.
- 이벤트는 하나 이상의 이벤트에 연결하거나 컨텍스트를 초기화할 수 있습니다.
- Initialize 컨텍스트는 하나 이상의 SpawnEvent 소스 또는 하나 이상의 GPUSpawnEvent 소스를 가질 수 있지만, 이러한 데이터 타입은 상호 배타적입니다.
- 하나의 Initialize 컨텍스트만 하나의 Update 컨텍스트에 연결할 수 있습니다.
- Output 컨텍스트를 Initialize 또는 Update 컨텍스트에 연결할 수 있습니다.
컨텍스트 호환성에 대한 자세한 내용은 아래 표를 참조하십시오.
컨텍스트 | 입력 데이터 타입 | 출력 데이터 타입 | 구체적 설명 |
---|---|---|---|
이벤트 | 없음 | SpawnEvent (1+) | 없음 |
Spawn | SpawnEvent (1+) | SpawnEvent (1+) | Spawn 컨텍스트를 각각 시작하고 중지하는 두 개의 입력 플로 슬롯이 있습니다. |
GPU Event | 없음 | SpawnEvent | Initialize 컨텍스트로 출력합니다. |
Output Event | SpawnEvent (1+) | CPU SpawnEvent를 Visual Effect 컴포넌트로 다시 출력합니다. | |
Initialize | SpawnEvent (1+) 또는 GPUSpawnEvent (1+) | Particle (1) | 입력 타입이 SpawnEvent 또는 GPUSpawnEvent입니다. 이 입력 타입은 상호 배타적입니다. Particle Update 또는 Particle Output으로 출력할 수 있습니다. |
Update | Particle (1) | Particle (1+) | Particle Update 또는 Particle Output으로 출력할 수 있습니다. |
Particle Output | Particle (1) | 없음 | Initialize 또는 Update 컨텍스트의 입력을 가질 수 있습니다. 출력은 없습니다. |
Static Mesh Output | 없음 | 없음 | 스탠드얼론 컨텍스트입니다. |
컨텍스트 타입 개요
이 섹션에서는 모든 종류의 컨텍스트에 대한 모든 공통 설정을 다룹니다.
이벤트
Event 컨텍스트는 문자열인 이름만 표시합니다. Event 컨텍스트를 트리거하고 워크플로를 활성화하려면 컴포넌트 API의 Event 컨텍스트 이름을 사용하십시오. 이에 관한 자세한 내용은 이벤트 전송을 참조하십시오.
생성
Spawn 컨텍스트는 세 가지 상태(Running, Idle, Waiting)를 보유한 스탠드얼론 시스템입니다.
- Looping (Running): 이 상태는 Unity가 컨텍스트에서 블록을 계산하고 새 파티클을 생성함을 의미합니다.
- Finished (Idle): 이 상태는 생성 머신이 꺼져 있고, 컨텍스트에서 블록을 계산하거나 파티클을 생성하지 않음을 의미합니다.
- DelayingBeforeLoop/DelayingAfterLoop (Waiting): 이 상태는 지정할 수 있는 지연 시간 동안 컨텍스트를 일시 정지합니다. 지연 후 컨텍스트가 다시 시작하고, 컨텍스트에서 블록을 계산하고, 파티클을 생성합니다.
Spawn 컨텍스트를 커스터마이즈하려면 호환 가능한 블록을 컨텍스트에 추가해야 합니다. Spawn 컨텍스트 API에 대한 내용은 스크립트 레퍼런스를 참조하십시오.
활성화 및 비활성화
Spawn 컨텍스트는 두 개의 플로 슬롯인 Start와 Stop을 노출합니다.
- Start 입력은 Spawn 컨텍스트를 초가화/시작합니다. 이 플로 슬롯에 아무것도 연결하지 않으면 암시적으로 OnPlay 이벤트를 사용합니다. Start를 여러 번 사용하면 한 번 사용하는 것과 동일한 효과가 있습니다.
- Stop 입력은 생성 시스템을 중지합니다. 이 플로 슬롯에 아무것도 연결하지 않으면 암시적으로 OnStop 이벤트를 사용합니다.
루프 및 지연
각 Spawn 컨텍스트에는 컨텍스트가 파티클을 생성하는 시기를 결정하는 상태가 포함되어 있습니다.
- Spawn 컨텍스트는 특정 기간의 루프 동안 파티클을 방출합니다. 즉 각 루프가 시작될 때 내부 생성 시간이 초기화됩니다. 기본적으로 지속 시간은 무한이지만, 변경할 수 있습니다.
루프 모드를 설정하려면 다음 단계를 따르십시오.- 그래프에서 Spawn Context를 선택합니다.
- 인스펙터에서 Loop Duration 드롭다운을 클릭합니다.
- 리스트에서 Infinite, Constant 또는 Random을 클릭합니다.
- Spawn 컨텍스트는 하나, 여러 개 또는 무한한 수의 루프를 수행할 수 있습니다.
루프 수를 설정하려면 다음 단계를 따르십시오.- 그래프에서 Spawn Context를 선택합니다.
- 인스펙터에서 Loop 드롭다운을 클릭합니다.
- 리스트에서 Infinite, Constant 또는 Random을 클릭합니다.
- Spawn 컨텍스트는 각 루프 전후에 지연을 수행할 수 있습니다. 지연 동안 생성 시간은 정상적으로 경과하지만, Spawn 컨텍스트는 파티클을 생성하지 않습니다.
지연 시간을 설정하려면 다음 단계를 따르십시오.- 그래프에서 Spawn Context를 선택합니다.
- 인스펙터에서 Delay Before Loop 또는 Delay After Loop 드롭다운을 클릭합니다.
- 리스트에서 None, Constant 또는 Random을 클릭합니다.
Loop Duration, Loop, Delay Before Loop 또는 Delay After Loop를 Constant 또는 Random으로 설정하면 Spawn 컨텍스트가 표시됩니다. 헤더에 추가 프로퍼티를 추가하여 각 동작을 제어합니다. 설정한 값을 평가하기 위해 Unity는 다음 규칙을 사용합니다.
- 설정하면 Unity는 컨텍스트의 Start 플로 입력이 트리거될 때 Loop Count를 평가합니다.
- 설정하면 Unity는 루프가 시작될 때마다 Loop Duration을 평가합니다.
- 설정하면 Unity는 지연이 시작될 때마다 Loop Before/After Delay를 평가합니다.
루프 및 지연 시스템의 시각화는 다음 그림을 참조하십시오.
GPU 이벤트
GPU Event 컨텍스트는 입력을 연결하여 다른 시스템의 GPU 이벤트를 출력하는 컨텍스트(실험 단계)입니다. 이 컨텍스트는 다음의 두 가지 면에서 일반 Event 컨텍스트와 다릅니다.
- GPU가 GPU 이벤트를 계산하고 CPU는 일반 이벤트를 계산합니다.
- 블록으로 GPU Event 컨텍스트를 커스터마이즈할 수 없습니다.
참고: 생성 이벤트를 Initialize 컨텍스트에 연결하는 경우 GPU 생성 이벤트와 일반 생성 이벤트는 상호 배타적이라는 점에 유의하십시오. 한 가지 타입의 생성 이벤트만 Initialize 컨텍스트에 동시에 연결할 수 있습니다.
초기화
Initialize 컨텍스트는 Unity가 이벤트, Spawn 컨텍스트 또는 GPU Event 컨텍스트에서 계산하는 SpawnEvent 데이터를 기반으로 새 파티클을 생성합니다.
예를 들어 효과가 새 파티클 200개를 생성해야 한다고 Spawn 컨텍스트에 명시되어 있으면 Initialize 컨텍스트는 200개의 모든 새 파티클에 대해 해당 블록을 처리합니다.
Initialize 컨텍스트를 커스터마이즈하려면 호환 가능한 블록을 추가해야 합니다.
Initialize 컨텍스트는 새로운 시스템의 엔트리 포인트입니다. 따라서 헤더에 다음의 정보와 설정 세부 사항이 표시됩니다.
프로퍼티/설정 | 설명 |
---|---|
Bounds(프로퍼티) | 시스템의 경계 상자를 제어합니다. |
Capacity(설정) | 시스템의 할당 수를 제어합니다. |
업데이트
Update 컨텍스트는 Particle 데이터를 기반으로 시스템 내 모든 살아 있는 파티클을 업데이트합니다. Unity는 이를 Initialize 및 Update 컨텍스트에서 계산합니다. Unity는 Update 컨텍스트를 실행하므로, 모든 파티클과 프레임을 업데이트합니다.
또한 Particle Update 컨텍스트는 일반적인 편집 작업을 간소화하기 위해 파티클에 대한 일부 계산을 자동으로 처리합니다.
Update 컨텍스트를 커스터마이즈하려면 호환 가능한 블록을 추가해야 합니다.
설정 | 설명 |
---|---|
Update Position | Unity가 파티클에 속도 통합을 적용할지 여부를 지정합니다. 활성화하면 Unity는 프레임마다 각 파티클의 포지션에 간단한 오일러 속도 통합을 적용합니다. 비활성화하면 Unity는 속도 통합을 적용하지 않습니다. |
Update Rotation | Unity가 파티클에 각도 통합을 적용할지 여부를 지정합니다. 활성화하면 Unity는 프레임마다 각 파티클의 회전에 간단한 오일러 통합을 적용합니다. 비활성화하면 Unity는 각도 통합을 적용하지 않습니다. |
Age Particles | 컨텍스트가 Age 속성을 사용하는 경우 이 프로퍼티는 Update 컨텍스트가 시간이 지남에 따라 파티클을 노화시킬지 여부를 제어합니다. |
Reap Particles | 컨텍스트가 Age 및 Lifetime 속성을 사용하는 경우 이 프로퍼티는 파티클의 연령이 해당 수명보다 클 때 Update 컨텍스트가 파티클을 제거하는지 여부를 제어합니다. |
출력
Output 컨텍스트는 시스템에서 파티클을 렌더링합니다. 동일한 시스템에 있는 Initialize 및 Update 컨텍스트의 파티클 데이터에 따라 다른 모드와 설정으로 파티클을 렌더링합니다. 그런 다음, 설정을 특정 프리미티브 셰이프로 렌더링합니다.
Output 컨텍스트를 커스터마이즈하려면 호환 가능한 블록을 추가해야 합니다.