Version: 2021.1
언어: 한국어
캐릭터 조인트
상수 힘

설정 가능한 조인트

설정 가능한 조인트 는 다른 조인트 타입의 모든 기능을 통합하며 캐릭터 움직임을 더욱 세부적으로 제어하도록 해줍니다. 래그돌의 움직임을 커스터마이즈하거나 캐릭터에 특정한 자세를 적용할 때 사용하면 특히 유용합니다. 또한 조인트를 고도로 전문화된 고유한 디자인의 조인트에 맞도록 개조할 때도 사용할 수 있습니다.

프로퍼티

프로퍼티: 기능:
Edit Joint Angular Limits 조인트 각도 한계를 편집할 수 있도록 시각 기즈모를 씬 뷰에 추가합니다. 이 기즈모를 사용하려면 Angular X, Y, Z MotionLimited 로 설정하십시오. 그러면 조인트의 회전 공간을 드래그하여 조정할 수 있는 핸들이 표시됩니다.
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 각도 한계
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 Unity가 Position SpringPosition Damper 드라이브 토크로 로컬 x축을 중심으로 조인트를 회전하는 데 사용하는 힘을 설정합니다. Maximum Force 파라미터는 힘을 제한합니다. 이 프로퍼티는 Rotation Drive Mode 프로퍼티가 X & YZ로 설정될 경우에만 사용할 수 있습니다. 자세한 내용은 아래의 구동력 섹션을 참조하십시오.
Position Spring Unity가 현재 포지션에서 타겟 포지션으로 조인트를 회전하는 데 사용하는 스프링 토크입니다.
Position Damper 조인트의 현재 속도와 타겟 속도의 차이에 비례하여 스프링 토크의 양을 줄입니다. 이렇게 하면 조인트 움직임의 속도가 줄어듭니다. 값을 0보다 크게 설정하면 조인트가 진동을 감속합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다.
Maximum Force 드라이브가 가할 수 있는 힘의 양을 제한합니다. 드라이브가 계산된 힘을 가하도록 하려면 이 값을 드라이브가 계산할 수 없는 높은 값으로 설정하십시오.
YDrive 앞서 설명한 X Drive 와 유사하지만 조인트의 y축에 적용됩니다.
ZDrive 앞서 설명한 X Drive 와 유사하지만 조인트의 z축에 적용됩니다.
Target Rotation 쿼터니언에 명시된 대로 조인트의 회전 드라이브가 회전하여 이동하는 방향입니다. Swap Bodies 파라미터가 설정되지 않으면 타겟 회전은 조인트가 연결된 바디를 기준으로 합니다. 이 경우 연결된 바디의 앵커가 기준이 됩니다.
Target Angular Velocity 조인트 회전 드라이브가 달성해야 하는 각속도입니다. 이 프로퍼티는 벡터로 지정됩니다. 벡터의 길이는 회전 속도를 지정하고 벡터의 방향은 회전 축을 정의합니다.
Rotation Drive Mode 오브젝트가 타겟 방향으로 회전할 수 있도록 Unity가 구동력을 오브젝트에 가하는 방식을 설정합니다. 모드를 X and YZ 로 설정하면 아래에 설명한 Angular X/YZ Drive 프로퍼티에 지정된 대로 세 축에 토크를 가합니다. Slerp 모드를 사용하면 Slerp Drive 프로퍼티가 드라이브 토크를 결정합니다.
Angular X Drive 드라이브 토크가 로컬 x축을 중심으로 조인트를 회전하는 방식을 지정합니다. 이 프로퍼티는 위에 설명한 Rotation Drive Mode 프로퍼티가 X & YZ 로 설정된 경우에만 사용할 수 있습니다. 자세한 내용은 아래의 구동력 섹션을 참조하십시오.
Position Spring Unity가 현재 포지션에서 타겟 포지션으로 조인트를 회전하는 데 사용하는 스프링 토크입니다.
Position Damper 조인트의 현재 속도와 타겟 속도의 차이에 비례하여 스프링 토크의 양을 줄입니다. 이렇게 하면 조인트 움직임의 속도가 줄어듭니다. 값을 0보다 크게 설정하면 조인트가 진동을 감속합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다.
Maximum Force 드라이브가 가할 수 있는 힘의 양을 제한합니다. 드라이브가 계산된 힘을 가하도록 하려면 이 값을 드라이브가 계산할 수 없는 높은 값으로 설정하십시오.
Angular YZDrive 앞서 설명한 Angular X Drive 와 비슷하지만 조인트의 Y축과 Z축에 적용됩니다.
Slerp Drive 드라이브 토크가 모든 로컬 축을 중심으로 조인트를 회전하는 방식을 지정합니다. 이 프로퍼티는 위에 설명한 Rotation Drive Mode 프로퍼티가 Slerp 로 설정된 경우에만 사용할 수 있습니다. 자세한 내용은 아래의 슬러프 드라이브 섹션을 참조하십시오.
Position Spring Unity가 현재 포지션에서 타겟 포지션으로 조인트를 회전하는 데 사용하는 스프링 토크입니다.
Position Damper 조인트의 현재 속도와 타겟 속도의 차이에 비례하여 스프링 토크의 양을 줄입니다. 이렇게 하면 조인트 움직임의 속도가 줄어듭니다. 값을 0보다 크게 설정하면 조인트가 진동을 감속합니다. 그렇지 않을 경우 조인트가 끝없이 진동합니다.
Maximum Force 드라이브가 가할 수 있는 힘의 양을 제한합니다. 드라이브가 계산된 힘을 가하도록 하려면 이 값을 드라이브가 계산할 수 없는 높은 값으로 설정하십시오.
Projection Mode 물리 엔진이 시뮬레이션에서 현재의 힘 조합을 조화시키는 것이 불가능하기 때문에 조인트가 예측 불가능한 움직임을 보일 때 해당 조인트를 바로잡을 수 있는 방법을 정의합니다. NonePosition and Rotation 옵션이 있습니다.
Projection Distance 물리 엔진이 허용 가능한 포지션으로 조인트를 돌려 놓기 이전에 조인트가 제한 이상으로 이동해야 하는 거리입니다.
Projection Angle 물리 엔진이 허용 가능한 포지션으로 조인트를 돌려 놓기 이전에 조인트가 제한 이상으로 회전해야 하는 각도입니다.
Configured in World Space 이 프로퍼티를 활성화하면 오브젝트의 로컬 공간 대신 월드 공간에서 다양한 타겟과 드라이브 프로퍼티에 의해 설정된 값을 계산할 수 있습니다.
Swap Bodies 이 프로퍼티를 활성화하면 물리 엔진이 조인트와 관련된 리지드바디를 처리하는 순서를 변경할 수 있습니다. 이를 통해 다양한 조인트 동작을 얻을 수 있지만, 리지드바디와 앵커에는 영향을 주지 않습니다.
Break Force 힘이 이 값보다 크면 조인트를 해당 제한 이상으로 밀어 조인트를 영구적으로 “파괴”하고 삭제합니다. Break Torque는 축이 Limited 또는 Locked 로 설정된 경우에만 조인트를 파괴합니다(아래의 제한된 움직임 섹션 참조).
Break Torque 토크가 이 값보다 크면 조인트를 해당 제한 이상으로 회전하여 조인트를 영구적으로 “파괴”하고 삭제합니다. 직선 파괴력은 축이 Free, Limited 또는 Locked 인지에 관계없이 조인트를 파괴할 수 있습니다(아래의 제한된 움직임 섹션 참조).
Enable Collision 이 프로퍼티를 활성화하면 조인트가 있는 오브젝트가 연결된 오브젝트와 충돌할 수 있습니다. 이 프로퍼티를 비활성화하면 조인트와 오브젝트가 서로 관통합니다.
Enable Preprocessing 전처리가 비활성화되면 조인트의 특정 “불가능” 설정이 통제 불능한 상태가 되지 않고 더욱 안정적으로 유지됩니다.
Mass Scale 리지드바디의 반전 질량 및 관성 텐서에 적용하는 스케일입니다(0.00001 - 무한대). 조인트가 질량이 크게 차이 나는 두 리지드바디를 연결하는 경우에 사용하면 좋습니다. 연결된 리지드바디의 질량이 비슷하면 물리 솔버는 더 나은 결과를 생성합니다. 연결된 리지드바디의 질량이 다르면 이 프로퍼티와 Connect Mass Scale 프로퍼티를 사용하여 두 질량이 대략적으로 비슷해지도록 가짜 질량을 적용하십시오. 이렇게 하면 안정된 고품질 시뮬레이션이 생성되지만, 리지드바디의 물리 동작이 감소합니다.
Connected Mass Scale 연결된 리지드바디의 반전 질량 및 관성 텐서에 적용하는 스케일입니다(0.00001 - 무한대).

세부 정보

다른 조인트와 마찬가지로 설정 가능한 조인트를 사용하여 오브젝트의 움직임을 제한할 수 있지만, 힘을 가하여 타겟 속도 또는 포지션으로 이동시킬 수도 있습니다. 설정 옵션이 매우 많기 때문에 실험을 통해 조인트가 원하는 방식으로 정확하게 움직이도록 만들어야 합니다.

제한된 움직임

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 VelocityTarget Angular Velocity 프로퍼티를 사용하여 해당 조인트에 대해 원하는 속도를 설정하십시오.

공간에서 특정 포지션이나 방향으로 오브젝트를 이동시키는 데 조인트를 사용해야 할 수도 있습니다. 이 기능은 Target PositionTarget Rotation 프로퍼티를 사용하여 설정할 수 있습니다. 예를 들어 지게차를 구현하려면 설정 가능한 조인트에 포크를 장착하고 타겟 높이를 설정하여 스크립트에서 들어 올릴 수 있습니다.

타겟을 설정한 후 X, Y, Z Drive 프로퍼티와 Angular X/YZ Drive (또는 대체 방안으로 Slerp Drive) 프로퍼티로 조인트를 해당 방향으로 미는 데 사용되는 힘을 지정하십시오. 드라이브의 Mode 프로퍼티는 조인트가 타겟 포지션, 타겟 속도, 또는 둘 다를 찾아야 하는지 여부를 선택합니다. 타겟 포지션을 찾을 때 Position SpringPosition Damper 도 조인트 한계에 대해 동일한 방식으로 작동합니다. 속도 모드에서 스프링 힘은 현재 속도와 타겟 속도 사이의 "거리"에 따라 달라지며, 이때 댐퍼는 끊임없이 진동하도록 하기 보다는 정해진 값으로 속도가 정착하도록 합니다. 예를 들어 XDrive 힘의 수식은 다음과 같습니다.

force = PositionSpring * (target position - position) + PositionDamper * (targetVelocity - velocity)

따라서 힘은 현재 값과 타겟 값의 차이에 비례하여 증가하고, 현재 속도와 타겟 속도의 차이에 비례하여 댐퍼를 통해 감속합니다. Unity는 위치 및 회전 드라이브 모두에 힘을 가합니다.

Maximum Force 프로퍼티는 조인트와 타겟 사이의 거리와 관계없이 스프링이 적용하는 힘이 한계값을 넘지 않도록 최종적으로 조정합니다. 이를 통해 타겟에서 멀리 뻗어 나간 조인트가 통제 불가능한 방식으로 오브젝트를 빠르게 되돌리는 것을 방지할 수 있습니다.

구동력(아래에 설명된 Slerp Drive 제외)을 사용할 때 조인트는 각 축의 오브젝트에 힘을 개별적으로 적용합니다. 예를 들어 전진 비행 속도는 빠르지만 측면 조향 동작의 속도는 상대적으로 느린 우주선을 구현할 수 있습니다.

슬러프 드라이브(Slerp Drive)

개별 축에서 힘을 적용하는 다른 드라이브 모드와 달리, Slerp Drive 는 조인트의 방향을 바꾸기 위해 쿼터니언 구형 보간 또는 “slerp” 기능을 사용합니다. 슬러프 프로세스는 각각의 축을 독립시키기보다 최소한의 총 회전수를 찾아 오브젝트를 현재의 방향으로부터 타겟 방향으로 향하게 하며, 필요 시 이 회전수를 모든 축에 적용합니다. 슬러프 드라이브는 비교적 설정이 간편하지만 X축 및 Y축/Z축에 다른 구동력을 지정할 수 없습니다.

슬러프 드라이브를 활성화하려면 Rotation Drive Mode 프로퍼티를 X and YZ 에서 Slerp 로 변경하십시오. 조인트는 Angular X/YZ Drive 값 또는 Slerp Drive 값 둘 중 하나만 사용할 수 있습니다.


  • 2019–05–23 페이지 수정됨
캐릭터 조인트
상수 힘