Version: 2019.1
캐릭터 조인트
상수 힘

설정 가능한 조인트

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

프로퍼티

프로퍼티: 기능:
Edit Joint Angular Limits 조인트 앵글 한계를 편집할 수 있도록 시각 기즈모를 씬 뷰에 추가합니다. 이 기즈모를 사용하려면 Angular X, Y, Z MotionLimited 로 설정하십시오. 그러면 조인트의 회전 공간을 드래그하여 조정할 수 있는 핸들이 나타납니다.
Connected Body 조인트에 연결되는 리지드바디 오브젝트입니다. None 으로 설정하면 해당 조인트가 다른 리지드바디가 아닌 공백의 고정된 포지션에 연결됨을 의미합니다.
Anchor 조인트의 중심을 정의하는 포인트입니다. 모든 물리 기반 시뮬레이션에서는 계산 시 이 포인트를 중심으로 삼습니다.
물리 시뮬레이션을 기반으로 하여 오브젝트의 자연 회전을 정의하는 로컬 축입니다.
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 The spring torque that Unity uses to rotate the joint from its current position towards its target position.
Position Damper Reduces the amount of spring torque in proportion to the difference between the joint’s current velocity and its target velocity. This reduces the speed of the joint’s movement. Set a value above zero to allow the joint to dampen oscillations which would otherwise carry on indefinitely.
Maximum Force Limits the amount of force that the drive can apply. To make the drive apply the force that it’s calculated, set this to a high value that the drive is unlikely to calculate.
Angular YZDrive This is similar to the Angular X Drive described above but applies to both the joint’s Y and Z axes.
Slerp Drive This specifies how the drive torque rotates the joint around all local axes. The property is only available if the Rotation Drive Mode property described above is set to Slerp. For more information, see Slerp Drive section below.
Position Spring The spring torque that Unity uses to rotate the joint from its current position towards its target position.
Position Damper Reduces the amount of spring torque in proportion to the difference between the joint’s current velocity and its target velocity. This reduces the speed of the joint’s movement. Set a value above zero to allow the joint to dampen oscillations which would otherwise carry on indefinitely.
Maximum Force Limits the amount of force that the drive can apply. To make the drive apply the force that it’s calculated, set this to a high value that the drive is unlikely to calculate.
Projection Mode This defines how the joint snaps back to its constraints when it unexpectedly moves beyond them, because the physics engine is unable to reconcile the current combination of forces within the simulation. The options are None and Position and Rotation.
Projection Distance The distance the joint must move beyond its constraints before the physics engine attempts to snap it back to an acceptable position.
Projection Angle The angle the joint must rotate beyond its constraints before the physics engine attempts to snap it back to an acceptable position.
Configured in World Space Enable this property to calculate the values set by the various target and drive properties in world space instead of the object’s local space.
Swap Bodies Enable this property to make the joint behave as though the component is attached to the connected Rigidbody (ie, the other end of the joint).
Break Force If a force larger than this value pushes the joint beyond its constraints then the joint is permanently “broken” and deleted. Break Torque only breaks a joint when its axes are Limited or Locked (see Constraining movement section below).
Break Torque If a torque larger than this value rotates the joint beyond its constraints then the joint is permanently “broken” and deleted. Break Force can break a joint regardless of whether its axes are Free, Limited or Locked (see Constraining movement section below).
Enable Collision Enable this property to let the object with the joint collide with the object it is connected to. If this is disabled, the joint and object will pass through each other.
Enable Preprocessing If preprocessing is disabled then certain “impossible” configurations of the joint are kept more stable rather than drifting wildly out of control.
Mass Scale The scale to apply to the inverted mass and inertia tensor of the Rigidbody, ranging from 0.00001 to infinity. This is useful when the joint connects two Rigidbodies of largely varying mass. The physics solver produces better results when the connected Rigidbodies have a similar mass. When your connected Rigidbodies vary in mass, use this property with the Connect Mass Scale property to apply fake masses to make them roughly equal to each other. This produces a high-quality and stable simulation, but reduces the physical behaviour of the Rigidbodies.
Connected Mass Scale The scale to apply to the inverted mass and inertia tensor of the connected Rigidbody, ranging from 0.00001 to infinity.

세부 정보

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

제한된 움직임

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 값 둘 중 하나만 사용할 수 있습니다.


캐릭터 조인트
상수 힘