파티클 흐름을 사용한 파티클 물리 시뮬레이션 학습을 시작할 때 포함된 사전 설정 mParticles 흐름을 사용하면 쉽게 시작할 수 있습니다. 이 자습서에서는 mParticles 시스템을 사용하는 방법을 학습하기 위해 다른 기술과 함께 mParticles 흐름을 사용합니다.
기술 수준: 중급
소요 시간: 1시간

이 자습서의 초기 섹션에서는 처음부터 시작하지만, 마지막 섹션에서는 준비된 .max 장면 파일이 사용됩니다.
이렇게 하면 간단한 물리 시뮬레이션에 필요한 모든 요소가 한 번에 추가됩니다.

공중에 매달린 상자 모양 파티클의 큐빅 정렬에서 시작합니다. 파티클이 지면으로 빠르게 떨어져 영향 점 주위에서 고르지 않게 분산됩니다.

이 상자 모양 파티클은 떨어진 후 많은 작업을 수행하지 않지만 둥글게 만들어 몇 가지 롤링 동작을 추가할 수 있습니다.
mParticles 모양은 시뮬레이션 중 파티클의 특징을 결정합니다.
이번에는 파티클이 떨어진 다음 멀리 롤링하여 흩어집니다.

물리 시뮬레이션 엔진은 mParticles 표준 도우미이며 파티클 뷰에서 액세스할 수 있습니다.
그러면 도우미가 선택되고 해당 매개변수 롤아웃이 수정 패널에 표시됩니다.

이때 애니메이션을 재생하면 구가 훨씬 더 느리게 떨어지고 멀리 롤링하는 데 시간이 더 오래 걸립니다.
이 섹션에서는 간단한 벽돌 벽을 만들고 가상 글루를 사용하여 벽을 모르타르로 굳힙니다.
Birth 그룹이 Birth 그리드를 대체하고 파티클이 뷰포트에서 사라집니다. 그러나 큰 와이어프레임 큐브는 그대로 남아 있습니다. 이것이 mParticles 표준 도우미입니다. 중심을 가리키는 아래쪽 화살표는 중력의 방향을 나타내며 맨 아래 측면의 X는 지면 충돌 평면의 위치를 나타냅니다. 기본적으로 3ds Max의 홈 그리드(Z=0인 XY 평면)와 일치합니다.

장면에 Birth 그룹의 물리적 기호가 없으므로 지정한 메시 오브젝트에서 파티클을 만듭니다. 이 부분은 곧 살펴보도록 하겠습니다.
이 자습서에서는 연산자가 필요하지 않습니다.


이제 상자 오브젝트 이름이 리스트를 채우고 해당 파티클이 뷰포트에 나타납니다. 상자는 파티클 오브젝트입니다. 연산자에 적용한 다음에는 쉽게 숨길 수 있습니다.
그러면 리스트에서 오브젝트를 숨기고 해당 파티클만 남겨 둡니다.
이제 mParticles 모양 001(상자) 연산자가 파티클의 모양을 제어하므로 원래 벽돌과 동일한 크기가 됩니다.
벽돌이 중력의 당기기에 빠르게 쓰러지고 스택 아래로 떨어집니다.

이 문제는 mParticles 글루 테스트를 사용하여 쉽게 해결할 수 있습니다.
글루 테스트에서는 파티클 쌍 간에 바인딩을 만들므로 수행되고 있는 작업을 볼 수 있어야 합니다. 따라서 바인딩 시각화는 매우 중요한 옵션입니다.
아직 바인딩이 없으므로 볼 수 없습니다.

바인딩은 파티클 사이의 가장 짧은 거리이므로 주로 수직입니다.
벽돌 열이 함께 이동하는 것을 볼 수 있습니다. 벽돌의 측면이 아닌 위와 아래에 가상 모르타르가 있습니다.

먼저 이동할 필요가 없는 열의 이동을 처리해야 합니다. 이 문제는 시뮬레이션의 안정성 부족으로 인해 발생하며 하위 프레임 요소 값을 늘려 해결할 수 있습니다.
하위 프레임 요소 값을 설정하는 일반적인 규칙은 글루 테스트
파티클당 최대 바인딩 값을 두 배로 하고 2를 더하는 것입니다. 따라서 파티클당 최대 바인딩이 4일 경우 하위 프레임 요소는 (2 x 4) + 2 = 10으로 설정해야 합니다. 일반적인 시뮬레이션의 복잡도에 따라 더 낮은 하위 프레임 요소 값으로 이런 작업을 수행하는 경우도 있습니다. 하지만 지금은 10을 사용합니다.
열이 혼잡한 상태에서 이 값을 설정하면 원래 위치로 다시 이동하는 것을 볼 수 있습니다.
그런 다음 열을 함께 바인딩하려면 가능한 바인딩 수를 늘립니다.

수평으로 인접한 모든 벽돌 쌍 간의 바인딩을 보지 못할 수 있지만 각 열에 대해 하나 또는 둘 이상의 수평 바인딩이 있는 한 전체 벽이 함께 유지됩니다.
아무 동작도 발생하지 않는 것이 이상적입니다. 벽을 이동할 경우 이동하지 않을 때까지 하위 프레임 요소 값을 늘리십시오.
파티클 상호 작용을 만들려면 Birth 스트림 방사체를 추가합니다.

또한 mParticles 표준 연산자를 복제하여 두 이벤트에서 동일한 mParticles 표준 도우미 및 표준 설정을 사용하도록 해야 합니다. 이 작업은 잠시 후에 수행합니다.
이제 읽기 전용 전체 필드에 1이 포함됩니다.

지금 애니메이션을 재생하면 단일 파티클이 벽 아래에서 밖으로 튀어나오는 것이 보입니다. 이는 Birth 스트림 아이콘의 기본 위치가 표준 중심 (0,0,0)에 있기 때문입니다. 또한 Birth 스트림에는 기본적으로 300으로 설정된 속도 특성이 기본 제공되므로 추가 속도 연산자가 필요하지 않습니다.

구가 벽돌과 충돌하지 않고 벽을 통과합니다. 이는 해당 이벤트가 물리 시뮬레이션에 아직 참여하지 않기 때문입니다.
mParticles 표준 연산는 파티클이 시뮬레이션에 참여하는 모든 이벤트에 있어야 합니다. 또한 표시를 제외한 이벤트 및 모든 테스트에서 항상 마지막 연산자여야 합니다.
3ds Max에서 mParticles 표준 이벤트를 구 이벤트에 추가합니다.
이번에는 구가 벽을 쓰러뜨립니다. 사용자의 설정에 따라 구가 롤링하면서 벽을 밀 수도 있습니다. 파티클은 공에 부딪힌 경우에도 서로 단단하게 바인딩된 상태로 유지됩니다.

처음에 공이 벽을 넘어뜨리지 못하면 mParticles 표준을 선택하고 중력 적용
가속 값을 줄여 봅니다(예: 245). 작업을 저장하고 포함된 파일
pflow_mparticles_tutorial.max
를 살펴볼 수도 있습니다. 설정을 검사하여 사용자의 설정과 차이점을 확인하십시오.
mParticles 글루의 중요한 매개변수 그룹은 절단성입니다. 파티클이 충분한 힘에 부딪치면 해당 설정을 사용하여 바인딩을 삭제할 수 있습니다.

절단성 그룹에서 힘으로 분할 가능을 켭니다. 바인딩이 표시되는 뷰포트를 확인하면서 시간 슬라이더의 > 버튼을 몇 번 클릭합니다. 프레임 2에서 모든 바인딩이 사라집니다. 최대 힘과 최대 회전의 기본 설정이 낮으므로 중력만으로 결합을 충분히 해제할 수 있습니다.
최대 힘과 최대 회전은 바인딩이 분할되기 전에 견딜 수 있는 최대 힘을 정의합니다. 사실적인 시뮬레이션을 만들려면 일반적으로 두 값을 늘려야 합니다.
속도 값을 조정하여 시뮬레이션에 어떻게 영향을 주는지 확인합니다.
속도를 300으로 복원합니다. 또 다른 유용한 mParticles 글루 옵션은 중심 정렬된 항목만 바인딩입니다. 이 옵션을 사용하면 파티클 정렬 및 근접성을 기준으로 하는 바인딩이 만들어집니다. 파티클 벽돌의 현재 정렬을 사용하면 각 벽돌이 주변에 맞춰 정렬되어 있어 보기 어려우므로 레이어를 약간 재정렬합니다.
Birth 그룹 연산자를 클릭하여 강조 표시한 다음 숨기기 해제를 클릭하여 파티클을 생성하는 데 사용된 모든 메시 모양을 표시합니다. 그런 다음 상자를 더 쉽게 볼 수 있도록 Birth 그룹 연산자를 끕니다. 
물론 이 방법은 실제 벽돌 벽이 구성되는 방식입니다. 실제 세계에서 절반 벽돌은 간격을 채우는 데 사용되기도 하지만 이 자습서에서는 필요하지 않습니다. 실제로 이 섹션에서는 벽돌이 판자처럼 작동하도록 하여 가상 세계에서는 모든 것이 가능함을 보여 줍니다.
Birth 그룹 연산자를 다시 켭니다.
파티클은 계속 원래 위치에 있습니다. 파티클 오브젝트(상자)를 변경할 경우 Birth 그룹을 수동으로 업데이트해야 합니다.

이제 더 많은 연결을 볼 수 있으며, 주로 오프셋 대체 레이어 때문입니다. 이전에도 많이 있었지만 지금은 대각선으로 이동하여 수평 위치가 오프셋인 가장 가까운 벽돌에 도달합니다.
그러면 mParticles 글루에서 로컬 축이 서로 정렬되는 파티클만 바인딩하도록 하므로 모든 대각선 바인딩이 제거됩니다. 따라서 바인딩은 대각선이 아닌 올바른 각도(축이 정렬된 방식)로만 이동할 수 있습니다.
자세히 살펴보면 인접한 파티클 간의 수평 바인딩과 대체 레이어에 있는 파티클 간의 수직 바인딩을 볼 수 있습니다. 판자 효과를 만들려면 세 번째 설정을 사용하여 후자를 제거합니다.

간격 바인딩은 지정된 거리를 초과하는 바인딩을 제거하므로 지정된 간격 바인딩 값 1.0보다 훨씬 더 긴 대체 수직 레이어 간 장거리 바인딩은 더 이상 사용할 수 없습니다. 이제 수평 바인딩만 남아 원하는 판자 효과를 제공합니다.

간격 바인딩을 켠 후에도 상자 사이에 작은 수평 바인딩이 표시되지 않으면 바인딩이 다시 나타날 때까지 간격 바인딩 값을 늘립니다.
벽돌이 판자 역할을 하는 방식으로 공이 벽돌을 분할합니다.

마지막 절차를 진행하기 전에 유동 바인딩을 사용하는 글루 설정을 하나 더 살펴보겠습니다.
유형 매개변수를 거리로 설정합니다. 거리 바인딩 유형은 바인딩에서 더 많은 탄성을 허용합니다.
판자는 계속 함께 유지되지만 볼트로 연결되지 않고 줄로 연결된 것처럼 공의 영향을 받아 구부러집니다. 거리 옵션을 사용하면 의상과 구슬 커튼과 같은 흥미로운 시뮬레이션을 생성할 수 있습니다. 포함된 샘플 파일에서 몇 가지 예를 살펴볼 수 있습니다.

파티클 스키너는 파티클이 메시 "스킨" 내에서 "골격"으로 작동하도록 하는 강력한 수정자입니다. 이 간단한 소개에서 알 수 있듯이 이 수정자를 사용하면 빠르고 간단하지만 흥미로운 몇 가지 특수 효과를 만들 수 있습니다.
이 단원에서는 열로 분할되는 파티클로 다시 돌아갑니다.
mParticles 글루 연산자를 강조 표시하고 바인딩 시각화를 켠 다음 수직 바인딩만 나타날 만큼 충분히 낮은 값으로 거리 바인딩을 설정합니다. 값이 10.0 정도면 작동합니다. 문제는 공이 하나만 있기 때문에 중심 열만 공의 영향을 받는다는 것입니다. 이 문제를 해결하는 한 가지 방법은 더 많은 파티클을 만드는 것입니다.
이제 전체 값은 3이지만 애니메이션을 재생하면 공이 서로 너무 가까이 있으며 아직도 일부 열에는 영향을 주지 못합니다. 고유성 시드 값을 사용하여 배치를 조정할 수 있습니다.
일부 열에는 부딪치지 않지만 모두 다른 위치에서 끝나기에는 충분합니다.
포함된 샘플 장면 pflow_mparticles_tutorial.max 에서는 크기가 127 x 12 x 34이지만 장면에서는 달라질 수 있습니다.


파티클 시스템 선택 대화상자에서 PF 소스 01을 클릭하여 선택한 다음 확인을 클릭합니다.
이제 파티클 흐름 시스템 리스트에 단일 항목인 PF 소스 001이 포함됩니다. 그러나 이 시스템의 일부 파티클은 상자 "스킨"에 영향을 주지 않고 이벤트 001의 파티클에만 영향을 줍니다.
파티클 스키너는 파티클 모션이 인접 메시 점에 영향을 주도록 하여 작동합니다. 수정된 오브젝트의 모든 메시 점이 파티클의 영향을 받는 것이 이상적입니다. 그렇지 않으면 파티클이 이동할 때 뒤에 남아 메시가 볼품 없이 늘어나게 합니다. 따라서 유용한 옵션은 영향을 받지 않는 메시 점을 확인하는 기능이며, 이 옵션은 영향 거리를 적절한 크기로 설정하는 데 도움이 됩니다.

이제 기본 설정이 완료되었으므로 "벽돌" 파티클을 더 이상 표시하지 않아도 됩니다.
공 파티클이 현재 표시되지 않는 파티클에 부딪치면 분할되고 스키닝된 상자 메시를 함께 가져와 파티클이 이동한 거리에 따라 리핑합니다. 그러나 리핑이 완전하지 않습니다. 몇 개의 메시 면만 늘어나 효과를 약간 손상시킵니다.
해결 방법은 간단합니다. 리핑이 파티클 간 거리 변경에 보다 민감하도록 설정하면 됩니다.
상대 % 설정은 현재 50.0(기본값)입니다. 이 값을 1.0으로 변경합니다. 이렇게 상대적으로 적은 거리 변경으로도 메시가 리핑됩니다.
이번에는 현실감을 위해 멋진 톱니 모양 가장자리로 조각이 명확하게 분할됩니다.

더 곧은 가장자리를 원하는 경우 가장자리 분할 정밀도
상대 % 값을 줄이십시오.
내부 표면을 통해 볼 수 있기 때문에 조각이 매우 솔리드하지 않은 것처럼 보일 수 있습니다. 이 문제는 표준 수정자로 해결할 수 있습니다.
이제 애니메이션을 재생하면 조각이 보다 사실적으로 보입니다.
이 자습서에서는 파티클 흐름 시뮬레이션 도구의 많은 기능 중 일부만 소개했습니다. 매개변수를 변경하고 다른 유형 및 수량의 파티클을 사용하는 등 직접 만든 장면에서 실험해 보는 것이 좋습니다.