물리 관절은 각 부모 자식 관계가 제약이 있는 상대적인 움직임을 반영하는 논리 트리에 구성된 Articulation Bodies의 세트입니다.
물리 관절의 주요 목적은 관절이 포함된 상업용 및 산업용 비게임 애플리케이션에 사실적인 물리 동작을 제공하는 것입니다.예를 들어 일반 조인트보다 훨씬 쉽게 로봇의 팔과 키네마틱 체인을 시뮬레이션할 수 있습니다.
두 개의 물리 바디를 단일 조인트로 연결하는 가장 기본적인 시나리오에서 다음 표에 설명된 대로 관절을 빌드하거나 일반 조인트를 사용할 수 있습니다.
관절 설정 | 일반 조인트를 사용한 설정 | |
---|---|---|
계층 구조 | • 게임 오브젝트 + 관절 바디 • 게임 오브젝트 + 관절 바디 |
• 게임 오브젝트 + 리지드바디 • 게임 오브젝트 + 리지드바디 + 조인트 |
관계 | 게임 오브젝트에는 계층 구조 관계(부모-자식)가 있습니다. 참고: 물리 엔진은 Unity 트랜스폼 계층 구조를 사용하여 부모-자식 관계를 표현합니다. |
게임 오브젝트에 반드시 계층적 관계가 있을 필요는 없습니다. 참고: 고급 시나리오에서 키네마틱 루프를 자유롭게 시뮬레이션할 수 있습니다. |
물리 바디 | 두 게임 오브젝트 모두에는 물리 바디 프로퍼티를 정의하는 Articulation Body 컴포넌트가 있습니다. | 두 게임 오브젝트 모두에는 물리 바디 프로퍼티를 정의하는 RigidBody 컴포넌트가 있습니다. |
Joint | 자식 게임 오브젝트의 관절 바디에는 조인트 타입을 선택할 수 있는 조인트 프로퍼티가 들어 있습니다. | 또한 게임 오브젝트 중 하나에 Joint 컴포넌트가 있습니다. 조인트 프로퍼티는 추가하는 Joint 컴포넌트의 타입에 따라 다릅니다. |
하지만 전반적인 결과 동작은 두 경우 모두에서 동일하지 않습니다. 특히 이 원리를 여러 물리 바디 및 조인트에 적용한 경우는 더욱 그렇습니다.
일반 조인트를 사용하여 봉제인형, 로봇 팔 또는 여러 개의 동시 힌지가 포함된 메커니즘 등과 같은 키네마틱 체인을 모델링하려는 경우 물리 엔진에서 해결할 수 없는 시나리오가 발생하고 일부 제약 조건이 충족되지 않을 수 있습니다. 또한 이로 인해 모션이 끊기고 비사실적으로 보일 수 있습니다. 따라서 조인트가 이상해보일 뿐만 아니라, 실제 기기를 시뮬레이션하는 데에도 사용할 수 없으므로 산업용 디자인을 모델링하거나 프로토타이핑하기 어렵습니다.
Unity에서 물리 관절을 빌드하려면 관절을 포함하는 각 게임 오브젝트에 Articulation Body 컴포넌트를 추가해야 합니다. 각 Articulation Body 컴포넌트를 사용하여 한 곳에서 다음을 설정할 수 있습니다.
해당 게임 오브젝트의 물리 바디 프로퍼티. 기본적으로 질량, 그리고 물리 환경에 반응하는 방식.
게임 오브젝트를 해당 부모 게임 오브젝트에 연결하는 조인트의 타입 및 프로퍼티(관절의 루트는 제외).
아래 예제는 3개의 물리 바디와 2개의 조인트를 포함하고 있는 단순한 물리 관절을 보여줍니다.
Unity에서 이러한 관절을 빌드하려면 다음 단계를 따르십시오.
게임 오브젝트 3개로 구성된 리니어 계층 구조를 만듭니다.
게임 오브젝트 3개 각각에 Articulation Body 컴포넌트를 추가합니다.
Articulation Body 컴포넌트를 설정합니다(위 그래픽 참조).
GameObject | Articulation Body 컴포넌트 설정 |
---|---|
A(루트) | 게임 오브젝트 A에 대한 물리 바디 프로퍼티만 정의할 수 있습니다. |
B | 다음을 정의할 수 있습니다. • 게임 오브젝트 B에 대한 물리 바디 프로퍼티. • 게임 오브젝트 A가 포함된 조인트의 타입 및 프로퍼티 |
C | 다음을 정의할 수 있습니다. • 게임 오브젝트 C에 대한 물리 바디 프로퍼티. • 게임 오브젝트 B가 포함된 조인트의 타입 및 프로퍼티 |
참고: 원래부터 관절은 하나의 루트만 포함할 수 있으며 키네마틱 루프는 포함할 수 없습니다. 키네마틱 루프가 필요한 경우 일반 조인트를 사용하십시오.
제한 사항: 매우 긴 관절 체인을 빌드하고 싶은 경우 Unity가 최대 64개의 게임 오브젝트로 구성된 계층 구조 뎁스를 지원한다는 사실을 기억하십시오.
Articulation Body를 통해 다음 네 가지 타입의 관절 조인트를 선택하고 설정할 수 있습니다.
고정 조인트: 바디 사이에 단단하고 끊어지지 않고 늘어나지 않는 연결을 설정합니다.
직동 조인트: 특정 축을 따라 미끄러지는 동작을 제외하고 모든 모션을 방지합니다.
회전 조인트: 특정 축을 중심으로 회전할 수 있습니다(예: 힌지).
구형 조인트: 두 번의 스윙과 한 번의 트위스트를 허용하는 해부학적 조인트입니다.
관절의 모든 잠긴 자유도는 설계상 끊어지거나 늘어나지 않습니다. 이를 위해 물리 엔진은 줄어든 좌표 공간을 사용합니다. 여기에서 바디는 잠금 해제된 모션 축에 대한 좌표만 가지고 있습니다.
반대로, 일반적인 반복 조인트의 경우 물리 엔진은 최대 좌표 공간을 강제로 설정합니다. 이렇게 하면 솔버가 반복 세트 후 수렴 가능할 경우에만 제약 조건의 충족을 보장합니다.
Unity의 로보틱스 데모 프로젝트에서 관절 조인트가 포함된 직렬 링크 로봇 팔을 시험해 보십시오.