캐릭터 조인트(Character Joint)
상수 힘(Constant Force)

설정 가능한 조인트(Configurable Joint)

Configurable Joints 는 다른 조인트 타입의 모든 기능을 통합하기 때문에 고도의 사용자 정의가 가능합니다. 기존 조인트의 수정 버전부터 특수 설계된 특별한 조인트에 이르기까지 무엇이든 만들 수 있습니다.

프로퍼티

프로퍼티: 기능:
Connected Body 조인트에 연결된 다른 리지드바디 오브젝트입니다. 이를 None 으로 설정하면 해당 조인트가 다른 리지드바디가 아닌 공간상의 고정된 포지션에 연결됨을 의미합니다.
Anchor 조인트의 중심이 정의되는 포인트입니다. 모든 물리 기반 시뮬레이션에서는 계산 시 이 포인트를 중심으로 삼습니다.
Axis 물리 시뮬레이션을 기반으로 한 오브젝트의 자연스러운 회전을 정의하는 로컬 축입니다.
Auto Configure Connected Anchor 설정이 활성화되면 연결된 앵커 포지션이 자동으로 계산되어 앵커 프로퍼티의 글로벌 포지션과 매치됩니다. 이것은 디폴트 동작입니다. 이 설정이 비활성화된 경우 연결된 앵커의 포지션을 수동으로 설정할 수 있습니다.
Connected Anchor 연결된 앵커 포지션의 매뉴얼 설정.
Secondary Axis AxisSecondary Axis 는 조인트의 로컬 좌표 시스템을 정의합니다. 세 번째 축은 다른 두 개의 축과 직교로 설정됩니다.
X, Y, Z Motion 아래에 기술된 한계 프로퍼티에 따라 X축, Y축, Z축 이동을 Free, 완전히 Locked, 또는 Limited 로 설정합니다.
Angular X, Y, Z Motion 아래에 기술된 한계 프로퍼티에 따라 X축, Y축, Z축 회전을 Free, 완전히 Locked, 또는 Limited 로 설정합니다.
Linear Limit Spring 한계 포지션을 지나갈 때 오브젝트를 뒤로 당기도록 적용되는 스프링 힘입니다.
        Spring 스프링 힘입니다. 이 값이 0으로 설정되면 한계를 무시할 수 있으며, 0 이외의 값일 경우 한계는 유동적입니다.
        Damper 조인트 움직임 속도에 비례하는 스프링 힘 감소입니다. 값을 0보다 크게 설정하면 조인트가 진동을 “둔화”합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다.
Linear Limit 조인트의 원점으로부터의 거리로 정의되는 조인트의 선형 움직임에 대한 한계입니다(예: 회전 움직임이 아닌 거리 움직임).
        Limit 원점으로부터 한계까지 월드 단위상의 거리입니다.
        Bounciness 오브젝트가 한계 거리에 도달했을 때 오브젝트를 뒤로 밀어내는 데 적용되는 바운스 힘입니다.
        Contact Distance 한계가 시행되는(조인트 포지션과 한계 사이의) 최소 거리 허용치입니다. 허용치가 높을 경우 오브젝트가 빠르게 움직일 때 한계를 위반할 가능성이 낮습니다. 하지만 이 경우 물리 시뮬레이션에서 한계를 더 자주 고려해야 하며 이로 인해 성능이 조금 감소합니다.
Angular X Limit Spring 오브젝트가 조인트의 한계 각도를 넘었을 때 오브젝트를 회전하는 데 적용되는 스프링 토크.
        Spring 스프링 토크입니다. 이 값이 0으로 설정되면 한계를 무시할 수 있으며, 0 이외의 값일 경우 한계는 유동적입니다.
        Damper 조인트 회전 속도에 비례하는 스프링 토크 감소입니다. 해당 값을 0보다 크게 설정할 경우 조인트가 진동을 “둔화”합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다.
Low Angular X Limit X축을 둘러싼 조인트 회전의 하한이며, 조인트 원래 회전으로부터의 각도로 정의합니다.
        Limit 각도 한계(The limit angle)
        Bounciness 오브젝트의 회전이 한계 각도에 도달했을 때 오브젝트에 적용되는 바운스 토크입니다.
        Contact Distance 한계가 시행되는 조인트 각도와 한계 사이의 최소 각도 허용치입니다. 허용치가 높을 경우 오브젝트가 빠르게 움직일 때 한계를 위반할 가능성이 낮습니다. 하지만 이 경우 물리 시뮬레이션에서 한계를 더 자주 고려해야 하며 이로 인해 성능이 조금 감소합니다.
High Angular XLimit 앞서 설명한 Low Angular X Limit 프로퍼티와 유사하지만 조인트 회전의 하한이 아닌 상한 각도를 결정합니다.
Angular YZ Limit Spring 앞서 설명한 Angular X Limit Spring 과 유사하지만 Y축, Z축을 둘러싼 회전에 모두 적용됩니다.
Angular Y Limit 앞서 설명한 Angular X Limit 프로퍼티와 유사하지만 Y축에 적용되며, 상한 각도와 하한 각도를 동일한 것으로 간주합니다.
Angular Z Limit 앞서 설명한 Angular X Limit 프로퍼티와 유사하지만 Z축에 적용되며, 상한 각도와 하한 각도를 동일한 것으로 간주합니다.
Target Position 조인트 구동력이 옮겨가야 하는 타겟 포지션입니다.
Target Velocity 해당 구동력 하에서 Target Position 으로 이동해야 하는 희망 속도입니다.
XDrive 로컬 X축과 선형으로 조인트를 이동시키는 구동력입니다.
        Mode 모드는 조인트가 정의된 Position 이나 정의된 Velocity, 또는 둘 다에 도달하도록 이동해야 하는지를 결정합니다.
        Position Spring 타겟 포지션을 향해 조인트를 이동시키는 스프링 힘입니다. 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
        Position Damper 조인트 움직임 속도에 비례하는 스프링 힘 감소입니다. 값을 0보다 크게 설정하면 조인트가 진동을 “둔화”합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다. 이 기능은 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 경우에만 사용됩니다.
        Maximum Force 타겟 속도를 향해 조인트를 가속하는 힘입니다. 드라이브 모드가 Velocity 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
YDrive 이것은 앞서 설명한 X Drive 와 유사하지만 조인트의 Y축에 적용됩니다.
ZDrive 이것은 앞서 설명한 X Drive 와 유사하지만 조인트의 Z축에 적용됩니다.
Target Rotation quaternion에 규정된 것처럼 조인트의 회전력이 회전해가야 하는 방향을 의미합니다.
Target Angular Velocity 조인트 회전 드라이브가 달성해야 하는 각속도를 의미합니다. 이것은 길이가 회전 스피드를 지정하고, 방향이 회전 축을 정의하는 벡터로 지정됩니다.
Rotation Drive Mode 오브젝트가 타겟 방향으로 회전할 수 있도록 구동력이 오브젝트에 적용되는 방식을 의미합니다. 이 모드가 X and YZ 로 설정될 경우 아래 설명의 Angular X/YZ Drive 에서 정의된 것처럼 토크는 이 세 축에 적용됩니다. Slerp 모드를 사용하면 Slerp Drive 프로퍼티가 드라이브 토크를 결정합니다.
Angular X Drive 로컬 X축 주변에서 조인트가 드라이브 토크에 의해 회전되는 방식을 정의합니다. 앞서 설명한 Rotation Drive Mode 프로퍼티가 X & YZ 로 설정될 경우에만 이 기능이 사용됩니다.
        Mode 모드는 조인트가 정의된 각도 Position 이나 정의된 각도 Velocity, 또는 둘 다에 도달하도록 이동해야 하는지를 결정합니다.
        Position Spring 타겟 포지션을 향해 조인트를 회전시키는 스프링 토크를 의미합니다. 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
        Position Damper 조인트 움직임 속도에 비례하는 스프링 토크 감소입니다. 값을 0보다 크게 설정하면 조인트가 진동을 “둔화”합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다. 이 기능은 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 경우에만 사용됩니다.
        Maximum Force 타겟 속도를 목표로 조인트를 가속하는 토크입니다. 드라이브 모드가 Velocity 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
Angular YZDrive 이것은 앞서 설명한 Angular X Drive 와 유사하지만 조인트의 Y축과 Z축에 적용됩니다.
Slerp Drive 조인트가 모든 로컬 축을 중심으로 드라이브 토크에 의해 회전되는 방식을 정의합니다. 앞서 설명한 Rotation Drive Mode 프로퍼티가 Slerp 로 설정된 경우에만 이 기능이 사용됩니다.
        Mode 모드는 조인트가 정의된 각도 Position 이나 정의된 각도 Velocity, 또는 둘 다에 도달하도록 이동해야 하는지를 결정합니다.
        Position Spring 타겟 포지션을 향해 조인트를 회전시키는 스프링 토크를 의미합니다. 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
        Position Damper 조인트 움직임 속도에 비례하는 스프링 토크 감소입니다. 값을 0보다 크게 설정하면 조인트가 진동을 “둔화”합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다. 이 기능은 드라이브 모드가 Position 또는 Position and Velocity 로 설정되어 있을 경우에만 사용됩니다.
        Maximum Force 타겟 속도를 목표로 조인트를 가속하는 토크입니다. 드라이브 모드가 Velocity 또는 Position and Velocity 로 설정되어 있을 때만 사용됩니다.
Projection Mode (물리 엔진이 시뮬레이션에서 현재의 힘 조합을 조화시키는 것이 불가능하기 때문에) 조인트가 예측 불가능한 움직임을 보일 때 해당 조인트를 바로잡을 수 있는 방법을 정의합니다. NonePosition and Rotation 옵션이 있습니다.
Projection Distance 물리 엔진이 허용 가능한 포지션으로 조인트를 돌려 놓기 이전에 조인트가 제한 조건 이상으로 이동해야 하는 거리입니다.
Projection Angle 물리 엔진이 허용 가능한 포지션으로 조인트를 돌려 놓기 이전에 조인트가 제한 조건 이상으로 회전해야 하는 각도입니다.
Configured in World Space 다양한 타겟과 드라이브 프로퍼티에 의해 설정된 값이 오브젝트의 로컬 공간 대신 월드 공간에서 계산돼야 하나요?
Swap Bodies 활성화 시, 컴포넌트가 연결된 리지드바디(즉, 조인트의 다른 끝)에 연결되어 있더라도 조인트가 작동하도록 합니다.
Break Force 이 값보다 큰 힘으로 조인트를 제한 조건 이상의 힘으로 밀면 조인트는 영구적으로 “부러지고” 삭제됩니다.
Break Torque 이 값보다 큰 토크로 조인트를 제한 조건 이상의 토크로 회전시키면 조인트는 영구적으로 “부러지고” 삭제됩니다.
Enable Collision 조인트가 있는 오브젝트는(서로를 단순히 지나치는 것과 달리) 연결된 오브젝트와 충돌이 가능해야 하나요?
Enable Preprocessing 전처리가 비활성화 되면 특정 “불가능한” 조인트 설정은 통제 불능 상태를 벗어나 보다 안정적으로 유지됩니다.

세부 정보

다른 조인트와 마찬가지로, 설정 가능한 조인트는 오브젝트의 움직임을 제한하고 포스를 사용하여 타겟 속도 또는 포지션으로 이동시킵니다. 하지만 가용한 설정 옵션이 많고 조합해 사용할 때 매우 미묘할 수 있습니다. 원하는대로 정확하게 움직이는 조인트를 얻으려면 다른 옵션을 실험해봐야 합니다.

이동 제한

X, Y, Z Motion 프로퍼티와 X, Y, Z Rotation 프로퍼티를 사용하여 각 축의 이동과 회전을 제한할 수 있습니다. Configured In World Space_이 활성화된 경우 오브젝트의 로컬 축에 의해 이동이 제한되기 보다는 월드 축에 의해 이동이 제한됩니다. 각각의 프로퍼티는 Locked, Limited, 또는 Free_ 로 설정할 수 있습니다.

  • Locked 축은 이동을 전혀 허용하지 않습니다. 예를 들어, 월드 Y축에 잠긴 오브젝트는 위 아래로 움직일 수 없습니다.
  • Limited 축은 아래 설명처럼 미리 정의된 제한 사이에서 자유로운 이동이 허용됩니다. 예를 들어, Y 회전을 특정 각도 범위로 제한하여 포탑의 발사 원호가 제한됩니다.
  • Free 축은 모든 이동을 허용합니다.

Linear Limit 프로퍼티를 사용해 이동을 제한할 수 있는데, 이는 조인트가 원본 포인트로부터 움직일 수 있는 최대 거리를 정의합니다(각 축을 개별적으로 측정합니다). 예를 들어, Y축 조인트를 (월드 공간에) 잠그고 이를 Z축에 자유롭게 둔 뒤, X축의 한계를 테이블의 너비에 맞게 설정하여 에어 하키 테이블의 퍽을 제한할 수 있습니다. 이 경우 퍽은 해당 경기 영역 내에서만 머물게 됩니다.

또한 Angular Limit 프로퍼티를 사용하여 회전을 제한할 수 있습니다. 선형 한계와는 다르게, 이 프로퍼티를 이용해 각 축에 해당하는 한계값을 다르게 지정할 수 있습니다. 뿐만 아니라 X축에 회전 각도의 상한 및 하한을 개별적으로 정의할 수 있습니다(다른 두 축은 원래 회전의 양쪽에서 동일한 각도를 사용합니다). 예를 들어, Y 회전이 잠긴 상태에서 X 방향과 Z 방향으로 살짝 기울어지도록 조인트가 제한된 평면을 사용하여 “불안정하게 서 있는 테이블”을 구성할 수 있습니다.

바운스 정도 및 스프링

디폴트값으로 조인트는 한계를 향해 달릴 때 단순히 이동하는 것을 멈춥니다. 하지만, 이와 같이 탄력이 없는 충돌은 현실에서 드물기 때문에 제한된 조인트에 바운스 느낌을 조금 추가하는 것이 유용합니다. 제한된 오브젝트가 한계점에 부딪쳤을 때 다시 튕겨 나오게 하려면 선형 한계 및 각도 한계의 Bounciness 프로퍼티를 사용할 수 있습니다. 대부분의 충돌은 바운스가 적을 때 더 자연스러워 보이지만, 당구대 쿠션과 같이 일반적이지 않은 바운스 경계를 시뮬레이션할 때는 이 프로퍼티를 더 높게 설정할 수 있습니다.

바운스 하는 조인트는 한계를 넘지 않습니다
바운스 하는 조인트는 한계를 넘지 않습니다

조인트 한계는 Linear Limit Spring 을 이동에, Angular X/YZ Limit Spring 을 회전에 사용하는 등 스프링 프로퍼티를 사용하여 더 부드럽게 처리할 수 있습니다. Spring 프로퍼티의 값을 0보다 크게 설정할 경우, 조인트는 한계에 도달했을 때 갑자기 움직임을 멈추지 않고 스프링 힘(Spring 값에 의해 결정된 힘의 강도)의 한계 포지션으로 돌아갑니다. 기본적으로 스프링은 완전히 탄력 있으며 조인트를 충돌 반대 방향으로 내던집니다. 하지만 탄력성을 줄이고 조인트가 한계점으로 더 부드럽게 돌아올 수 있도록 하려면 Damper 프로퍼티를 사용하면 됩니다. 예를 들어, 스프링 조인트를 사용해 왼쪽 또는 오른쪽으로 밀려나간 후 원래 포지션으로 튕겨 오는 레버를 만들 수 있습니다. 스프링이 완전히 탄력 있을 경우에는 레버를 놓은 이후 중앙 포인트를 기준으로 하여 앞뒤로 진동하기도 합니다. 하지만 댐핑을 충분히 추가할 경우 스프링은 중립 포지션으로 금방 되돌아옵니다.

스프링 조인트는 한계점을 넘지만 다시 돌아옵니다
스프링 조인트는 한계점을 넘지만 다시 돌아옵니다

구동력

조인트는 연결된 오브젝트의 움직임에 반응할 뿐 아니라 구동력 을 적극적으로 적용해 해당 오브젝트를 모션 상태로 설정할 수 있습니다. 일부 조인트의 경우 회전 모터가 팬 블레이드를 돌리는 것처럼 오브젝트를 일정한 속도로 움직여야 합니다. Target Velocity 프로퍼티와 Target Angluar Velocity 프로퍼티를 이용하여 이러한 조인트의 희망 속도를 설정할 수 있습니다. 공간(또는 특정 방향)으로 오브젝트를 움직이는 조인트가 필요할 수도 있습니다. 또한 Target Position 프로퍼티와 Target Rotation 프로퍼티를 이용하여 해당 값을 설정할 수 있습니다. 예를 들어, 포크를 설정 가능한 조인트에 탑재하고 스크립트에서 포크를 들어올릴 타겟 높이를 설정하여 지게차를 설치할 수 있습니다.

타겟을 설정한 후 X, Y, Z Drive 프로퍼티와 Angular X/YZ Drive (또는 대체 방안으로 Slerp Drive) 프로퍼티로 조인트를 해당 방향으로 푸시하는 데 사용되는 힘을 지정할 수 있습니다. 드라이브의 Mode 프로퍼티는 조인트가 타겟 포지션, 타겟 속도, 또는 둘 다를 찾아야 하는지 여부를 선택합니다. 타겟 포지션을 찾을 때 Position SpringPosition Damper 도 조인트 한계에 대해 동일한 방식으로 작동합니다. 속도 모드에서 스프링 힘은 현재 속도와 타겟 속도 사이의 “거리”에 따라 달라지며, 이 때 댐퍼는 끊임없이 진동하도록 하기 보다는 정해진 값으로 속도가 정착되도록 합니다. Maximum Force 프로퍼티는 조인트가 타겟으로부터 얼마나 멀리 떨어져 있는지와 관계 없이 스프링에 의해 적용된 힘이 한계값을 넘지 않도록 하는 최종 개량입니다. 이는 타겟으로부터 멀리 뻗어 나간 조인트가 오브젝트를 통제 불가능한 방식으로 빠르게 돌아오는 것을 방지합니다.

모든 구동력(아래에서 설명하는 슬러프 드라이브 제외)과 더불어 이 힘은 각 축에 개별적으로 적용된다는 점을 유의해야 합니다. 예를 들어, 비행 속도는 빠르지만 주변 스티어링 모션의 속도는 상대적으로 느린 우주선을 실행할 수 있습니다.

슬러프 드라이브(Slerp Drive)

다른 드라이브 모드가 개별 축에서 포스를 적용하는 반면에 슬러프 드라이브 는 관절의 방향을 바꾸기 위해 쿼터니언 구형 보간 또는 “슬러프” 기능을 사용합니다. 각각의 축을 독립시키는 것에 비해 슬러프 프로세스는 최소한의 회전수를 찾아 오브젝트를 현재의 방향으로부터 타겟 방향으로 향하게 하며, 필요 시 이 회전수를 모든 축에 적용합니다. 슬러프 드라이브는 비교적 설정이 쉽고 대부분의 용도에 용이하지만 사용자가 X축 및 Y축/Z축에 해당하는 구동력을 지정하지 못하도록 합니다.

슬러프 드라이브를 활성화하려면, Rotation Drive Mode 프로퍼티를 X and YZ 에서 Slerp 로 변경해야 합니다. 모드는 상호 배타적이기 때문에 관절은 Angular X/YZ Drive 값 또는 Slerp Drive 값 둘 중 하나를 사용하지만 둘 다를 사용할 수 없습니다.

캐릭터 조인트(Character Joint)
상수 힘(Constant Force)