이 항목은 파티클 흐름에서 mParticles 상호 충돌 테스트의 사용에 대한 추가 정보를 설명합니다.
mParticles 상호 충돌이 수행하지 않는 기능을 먼저 살펴보겠습니다. mParticles 상호 충돌은 파티클이 서로 충돌하는지 여부는 제어하지 않습니다. 기본적으로 파티클이 MassFX 시뮬레이션에 참여하고 충돌 모양이 mParticles 모양 연산자에 의해 정의되는 경우 이들이 서로 충돌합니다. 이는 시뮬레이션의 필수적인 부분입니다.
mParticles 상호 충돌 테스트는 파티클 간 충돌을 등록한 다음 충돌 정보에 따라 파티클을 다른 이벤트에 리디렉션합니다.
이벤트에 mParticles 상호 충돌 테스트를 추가하면 mParticles 충돌 테스트에서 다음의 경우 파티클 테스트 통과 옵션을 설정한 것과 거의 같습니다. 파티클 흐름이 충돌에 대한 정보를 수집하기 시작합니다. mParticles 충돌 테스트와 마찬가지로 이 정보를 수집하는 작업은 CPU 리소스를 사용하므로 서로에 대한 충돌을 기반으로 파티클을 다른 이벤트에 리디렉션하지 않아도 되는 경우 이 테스트를 추가하지 않습니다.
충돌 등록 그룹을 사용하여 등록할 특정 그룹의 파티클의 충돌을 정의합니다. 기본적으로 현재 이벤트의 파티클로 설정됩니다. 이는 현재 이벤트의 어떤 파티클이 현재 파티클의 다른 파티클과 충돌하는 경우 충돌이 등록되고 처리된다는 것입니다. 다른 옵션(파티클 조건 참 테스트)에 따라, 충돌로 인해 파티클이 테스트에 대해 참일 수도 있고 그렇지 않을 수도 있습니다. 결과와 상관 없이 옵션이 현재 이벤트의 파티클로 설정되면 현재 이벤트의 파티클 간 충돌만 처리됩니다.
다른 옵션으로 이벤트의 파티클이 있습니다. 여기서는 충돌 등록 관점에서 관심이 있는 다른 이벤트를 정의할 수 있습니다. 기본적으로 리스트는 현재 파티클 시스템의 모든 이벤트를 표시합니다(동일한 PF 소스 전역 이벤트 아래에 있으므로 시뮬레이션이 파티클 흐름 파티클 시스템만 기준으로 실행할 수 있음). 또한 리스트에는 현재 이벤트 항목도 표시됩니다. 그러므로 현재 이벤트를 포함하여 어떤 이벤트 세트와의 충돌을 등록해야 하는 경우 그렇게 할 수 있습니다. 모든 이벤트가 이미 리스트에 나와 있기 때문에 충돌에 필요한 이벤트를 식별하려면 이벤트를 강조 표시(진한 파란색으로 표시)해야 합니다.
충돌 등록 범위에 대한 지점을 표시하려면 다음 MassFXInterCollision01.max 예제를 참조하십시오.
이 예제에서는 먼저 모든 파티클이 상자를 형성한 다음 토러스 디플렉터로 떨어집니다. 첫 번째 이벤트인 이벤트 01에는 두 개의 테스트가 포함되어 있습니다. 즉, 토러스 디플렉터와의 충돌을 정의하는 mParticles 충돌 테스트와 파티클이 서로 충돌하는 경우 다음 이벤트로 점프를 정의하는 mParticles 상호 충돌입니다. 충돌 등록 범위는 현재 이벤트의 파티클로 설정됩니다. 그러므로 일부 운 없는 파티클이 다른 파티클과 전혀 충돌하지 못한 상태에서 근처의 모든 파티클이 이미 서로 충돌하고 다음 이벤트로 전송될 수도 있습니다. 이 구성에서 "남아 있는" 파티클이 있고 첫 번째 이벤트와 마찬가지로 초록색 그대로 있는 것을 확인할 수 있습니다.
결국 모든 파티클이 다음 이벤트로 전환되도록 하려면 충돌 등록 범위를 이벤트의 파티클로 변경하고 리스트에 있는 이벤트 세 개(이벤트 001, 이벤트002, 및 이벤트 003)를 모두 강조 표시합니다. 이제 애니메이션을 재생하면 모든 파티클이 충돌 알림을 받고 초록색에서 노란색으로 또 파란색으로 변경됩니다.
MassFXInterCollision01.max 예제에서 한 가지 더 확인해야 할 것은 파티클이 마지막 이벤트에 도달하면 시뮬레이션을 해제하여 정적이 된다는 것입니다(마지막 이벤트에서 mParticles 스위치 연산자 참조). 이러한 파티클의 정적 특성은 "남아 있는" 일부 파티클(초록색 파티클)을 불가능한 상황으로 몰아 넣습니다. 즉, 이들이 정적 파티클 사이에 압착되어 배치할 수 있는 공간이 충분하지 않게 됩니다. 초록색 파티클에서 지터 모션을 확인할 수 있는 것은 이 때문입니다.
마지막 이벤트에서 mParticles 스위치 연산자를 조정하면 이 지터를 방지할 수 있습니다. 시뮬레이션을 끄지 않고 위치 일치를 설정할 수 있습니다. 이런 방식으로 마지막 이벤트와 첫 번째 이벤트의 파티클이 모두 시뮬레이션에 참여합니다. 이들은 어떤 의미에서 시뮬레이션 용도를 위해 모두 동적입니다. 따라서 일부 "여유 공간"을 초록색 파티클에 대해 사용할 수 있어 균형 배치를 달성할 수 있습니다.
파티클 조건 참 테스트 그룹에서 충돌과 여러 번 충돌 옵션의 차이를 보려면 다른 예제인 MassFXInterCollision02.max 를 확인하십시오. 이 예제에는 두 개의 이벤트가 있으며 횟수 옵션에 따라 파티클이 서로 15회 충돌하면 두 번째 이벤트로 리디렉션됩니다. 다음 이벤트에서 파티클이 정적으로 설정됩니다. 속도 및 회전은 동일하게 0입니다. 속도 및 회전 값은 일반 파티클 흐름 연산자에서 설정되지만(속도 01 및 회전 01), 파티클을 정적으로 만드는 것은 mParticles 스위치 연산자를 사용합니다.
애니메이션을 재생하면 일부 파티클이 두 번째 파티클에 도달하지 못한 것을 확인할 수 있습니다. 그 이유는 일부 파티클은 애니메이션 과정에서 최소 15회를 충돌하지 않았기 때문입니다. 모든 파티클이 다음 이벤트로 전송되는지 확인하는 동안, 연습 삼아 횟수 값을 줄여서 이 값이 어디까지 높아질 수 있는지 확인합니다. 이 값은 애니메이션 중 파티클이 다른 파티클과 충돌하는 가장 작은 횟수입니다. 또한 충돌 등록 범위가 이벤트의 파티클로 설정되고 모든 이벤트가 강조 표시된 것도 확인합니다. 이는 이 예제에서 모든 파티클 간 충돌을 계산한다는 의미입니다.
마지막 예제 MassFXInterCollision03.max 는 데이터 연산자에 보고 및 가산 개수 옵션 사용을 보여 줍니다. 여기서는 두 옵션 모두 설정되어 있습니다. 이는 테스트가 충돌 등록 범위에서 정의한 대로 모든 충돌을 등록하는 동안 데이터 연산자에서 사용한 정수 데이터 채널을 통해 보고한다는 것입니다. mParticles 상호 충돌 테스트는 이벤트에 와이어링되지 않지만 테스트 아래에 데이터 연산자가 있습니다. 다음 그림의 왼쪽에 있는 이 연산자의 데이터 흐름 맨 위에는 입력 mParticles 하위 연산자가 있습니다. 이 중 하나는 디플렉터와의 모든 충돌을 계산하고(여기서는 토러스 디플렉터) 다른 하나는 모든 파티클 간 충돌을 계산합니다. 두 개의 값이 모두 요약되면 텍스처 그라데이션을 사용하는 매핑을 위한 상대 오프셋으로 사용됩니다. 이렇게 하면 파티클 충돌 횟수가 많을수록 색깔이 밝아집니다.
데이터 연산자에 보고 사용을 확인합니다. 이 예제에서는 테스트가 아무 위치로도 와이어링되지 않고 다음의 경우 파티클 테스트 통과가 여러 번 충돌로 설정되었습니다. 이 옵션을 사용하면 다른 선택에 비해 충돌 계산이 가장 정확합니다. 횟수 매개변수 값은 정확성에서 차이가 없습니다.
이 예제에서는 뷰포트에서 재생 속도가 처음 두 개의 예제에 비해 느린데 그 이유는 주로 파티클의 변경 색상을 업데이트하는 데 뷰포트에서 시간이 걸리기 때문이라는 것도 확인하십시오. 표시 연산자를 틱으로 변경하면 재생 속도가 크게 개선되기는 하지만 애니메이션 중 파티클 변경 색상은 보이지 않게 됩니다.
충돌 후 느려짐 및 충돌 후 빨라짐 옵션은 mParticles 충돌 및 일반 충돌 테스트에서 같은 이름을 가진 옵션과 유사합니다.