컨스트레인트

다양한 컨스트레인트를 사용하여 오브젝트의 위치나 오리엔테이션, 스케일을 다른 오브젝트에 어태치합니다.

애니메이팅할 때, 아웃라이너나 컨트롤 계층구조를 변경하지 않고 엘리먼트를 함께 어태치해야 하는 경우가 있을 수 있습니다. 이러한 종류의 어태치먼트를 컨스트레인트 라고 합니다. 언리얼 엔진에서 컨스트레인트는 위치(Position), 회전(Rotation), 스케일(Scale), 부모(Parent)룩앳(LookAt) 등 다양한 메서드로 나뉩니다. 이러한 메서드를 통해 어태치먼트 오프셋을 제어하고 컨스트레인트를 다시 노멀 키프레임에 굽는 등, 이러한 컨스트레인트 작동 방식을 제어하는 옵션을 설정할 수 있습니다.

이 문서에서는 시퀀서에서의 컨스트레인트 적용과 각 컨스트레인트 메서드의 다양한 워크플로에 대해 간략하게 살펴봅니다.

전제조건

  • 컨트롤 릭 에셋(Control Rig Asset) 을 생성한 상태여야 합니다. 자세한 방법은 컨트롤 릭 퀵스타트 페이지를 참조하세요.

  • 애니메이팅 시 컨스트레인트는 애니메이션 모드(Animation Mode) 패널을 통해 액세스할 수 있으므로 애니메이션 모드(Animation Mode) 를 활성화해야 합니다.

  • 제한은 주로 시퀀서 내의 컨트롤 릭 사용에 의존하므로, 시퀀서에 대한 기본 지식이 있어야 합니다.

컨스트레인트 생성

컨스트레인트 정보와 컨스트레인트를 추가하기 위한 워크플로는 애니메이션 모드가 활성화된 경우 애니메이션 패널에 있습니다.

애니메이션 패널의 컨스트레인트 섹션

컨스트레인트는 두 개 이상의 오브젝트 간에 부모 - 자손 관계를 생성함으로써 확립됩니다. 새 컨스트레인트를 생성하려면, 먼저 제한할 컨트롤(자손)을 선택한 다음, 컨스트레인트 추가(+) 를 클릭하고 컨스트레인트 타입을 선택합니다. 커서가 스포이드 툴로 변경되고 이를 사용하여 뷰포트에서 제한할 오브젝트(부모)를 선택할 수 있습니다.

컨스트레인트 생성

컨트롤 릭 엘리먼트만 제한할 수 있는 것이 아니며, 모든 오브젝트나 액터를 제한할 수 있습니다. 또한, 시퀀서를 열지 않고도 액터를 제한할 수 있습니다.

컨스트레인트를 생성한 다음에는 제한된 컨트롤에 대한 키프레임 정보를 시퀀서에서 확인할 수 있습니다. 대부분의 컨스트레인트는 컨스트레인트 활성화 시 그 자손의 현재 시각적 위치를 유지하는 보정 키프레임도 생성합니다. 이러한 보정 키프레임은 컨스트레인트 키프레임에 연결되며 타이밍을 변경하면 이를 따라갑니다.

컨스트레인트 키프레임

컨스트레인트 사용

컨스트레인트는 제한된 컨트롤 선택 시 애니메이션 패널의 컨스트레인트(Constraints) 섹션에서도 확인할 수 있습니다. 이 섹션에서 새 컨스트레인트 키프레임을 생성하고 컨스트레인트의 프로퍼티를 편집하고 컨스트레인트를 다시 노멀 키프레임에 구울 수 있습니다.

컨스트레인트 선택

오브젝트에 두 개 이상의 컨스트레인트가 적용되어 있으면, 그것도 여기에 표시됩니다. 해당 시퀀스를 재생하거나 스크럽할 때, 각 컨스트레인트는 활성화되거나 비활성화되는 경우 하이라이트되어 그 상태를 나타냅니다.

컨스트레인트 전환

컨스트레인트 항목에 대한 버튼은 다음과 같은 기능을 제공합니다.

버튼

설명

Button1.png

시퀀서에서 현재 시간의 컨스트레인트에 대한 활성 키프레임을 생성합니다. 해당 컨스트레인트가 이미 활성화된 경우, 대신 비활성화 키프레임을 생성합니다. 제한된 오브젝트에서 같은 월드 포지션을 유지하기 위해 보정 키프레임도 생성됩니다.

Manage4.gif

Button2.png

같은 오브젝트에 여러 개의 컨스트레인트가 있는 경우, 이러한 버튼으로 목록에서 컨스트레인트를 위아래로 이동할 수 있습니다. 언리얼 엔진의 컨스트레인트는 계층형이며, 해당 컨스트레인트가 같은 채널을 애니메이팅하는 경우에 한해 목록에서 더 위에 있는 다른 컨스트레인트를 오버라이드합니다. 새 컨스트레인트는 항상 예전 컨스트레인트보다 우선순위가 높고 목록에서 더 아래쪽에 위치합니다.

Manage6.gif

컨스트레인트는 오버라이드될 수 있으므로 다른 컨스트레인트를 항상 비활성화할 필요는 없습니다. 예를 들어, 부모 컨스트레인트는 컨트롤의 모든 트랜스폼 채널을 애니메이팅하므로, 우선순위가 높은 컨스트레인트 하나만 활성화하면 기본적으로 다른 모든 컨스트레인트가 비활성화됩니다. 이 예시에서는 두 컨스트레인트가 모두 활성화되어 있지만, 루트 컨스트레인트가 목록에서 더 아래에 있고 우선순위가 높으므로 루트 컨스트레인트만 컨스트레인트 이펙트를 제공합니다.

Manage5.png

Button3.png

이 컨스트레인트를 제거합니다.

컨스트레인트 항목을 우클릭하면 컨텍스트 메뉴가 표시되며, 이 메뉴를 사용하여 해당 컨스트레인트 타입과 관련된 프로퍼티를 편집하고, 컨스트레인트를 굽고, 키프레임 보정을 설정할 수 있습니다.

컨스트레인트 프로퍼티

컨스트레인트 굽기

컨스트레인트가 있는 애니메이팅을 완료한 다음에는 키프레임에 최종 결과를 구울 수 있습니다. 이는 노멀 키프레임 애니메이션으로 되돌려 컨스트레인트를 고려하지 않고 추가로 편집하려는 경우에 유용할 수 있습니다.

선택한 컨트롤을 구우려면, 컨스트레인트 항목을 우클릭하고 굽기(Bake) 를 선택합니다.

컨스트레인트 굽기

키프레임 보정

애니메이팅 시, 컨스트레인트가 활성화되거나 비활성화될 때 눈에 띄는 팝이 나타나는 경우가 있을 수 있습니다. 이러한 현상은 보통 컨스트레인트를 생성한 이후 부모의 포즈를 조정하면 원래의 보정 키프레임이 제공하는 시각적 매칭이 깨져서 발생합니다.

컨스트레인트 팝

이 문제를 해결하려면, 문제가 되는 컨트롤을 선택하고 해당 컨스트레인트를 우클릭한 다음 키 보정(Compensate Key) 을 선택합니다. 또한, 시퀀서 플레이헤드 가 수정하려는 컨스트레인트 키프레임과 같은 시간에 있는지도 확인해야 합니다. 이렇게 하면 부모 오브젝트의 새 위치에 대한 새로운 보정 키프레임이 다시 생성됩니다.

컨스트레인트 팝 수정

키 보정 을 사용하여 단일 컨스트레인트 오류를 해결할 수도 있지만, 모든 키 보정(Compensate All Keys) 을 사용하여 선택 또는 플레이헤드 위치에 상관없이 시퀀스의 모든 제한된 컨트롤에 대한 모든 보정 키프레임을 다시 생성할 수도 있습니다.

다이내믹 오프셋

기본적으로, 영향을 미치는 컨스트레인트 외에도 제한된 오브젝트를 키프레이밍할 수 있습니다. 이 옵션을 비활성화하고 자손 오브젝트의 애니메이팅을 허용하지 않으려면, 컨스트레인트를 우클릭하고 다이내믹 오프셋(Dynamic Offset) 을 비활성화합니다. 이렇게 하면 제한된 오브젝트의 위치가 현재 트랜스폼에 고정되며, 이제부터는 부모 오브젝트가 이동하는 경우에만 이동됩니다.

다이내믹 오프셋

컨스트레인트 매니저

레벨 시퀀스에서 많은 오브젝트를 제한하다 보면 컨스트레인트를 관리하고 확인하기 어려워질 수 있습니다. 레벨 안의 모든 컨스트레인트를 확인하고 관리하는 데 컨스트레인트 매니저 액터(Constraints Manager Actor) 를 사용할 수 있습니다.

처음으로 컨스트레인트를 생성하는 경우, 레벨 안에 컨스트레인트 매니저 액터 가 자동으로 생성되며, 이 액터를 선택하면 사용된 컨스트레인트가 모두 하나의 목록에 통합됩니다. 이를 통해 여러 오브젝트에 대한 다량의 컨스트레인트를 동시에 더 쉽게 확인하고 관리할 수 있습니다.

컨스트레인트 매니저

컨스트레인트 타입

컨스트레인트 추가(+) 를 클릭하면 다음과 같은 컨스트레인트 타입을 생성할 수 있습니다.

컨스트레인트 타입

이동 컨스트레인트

이동 컨스트레인트 는 이동 축을 따라서만 오브젝트를 제한합니다. 부모 위치를 따르지만, 회전이나 스케일은 따르지 않습니다.

이동 컨스트레인트

컨스트레인트 컨텍스트 메뉴에서 오프셋 유지(Maintain Offset) 가 비활성화된 경우, 제한된 오브젝트는 컨스트레인트가 생성된 시점을 기준으로 하는 대신 절대 좌표로 부모 오브젝트 위치를 따릅니다.

이동 컨스트레인트 오프셋 유지

회전 컨스트레인트

회전 컨스트레인트 는 회전축을 따라서만 오브젝트를 제한합니다. 부모 회전을 따르지만, 이동이나 스케일은 따르지 않습니다.

회전 컨스트레인트

컨스트레인트 컨텍스트 메뉴에서 오프셋 유지(Maintain Offset) 가 비활성화된 경우, 제한된 오브젝트는 컨스트레인트가 생성된 시점을 기준으로 하는 대신 절대 좌표로 부모 오브젝트 회전을 따릅니다.

회전 컨스트레인트 오프셋 유지

스케일 컨스트레인트

스케일 컨스트레인트 는 스케일 축을 따라서만 오브젝트를 제한합니다. 부모 스케일을 따르지만, 이동이나 회전은 따르지 않습니다.

스케일 컨스트레인트

컨스트레인트 컨텍스트 메뉴에서 오프셋 유지(Maintain Offset) 가 비활성화된 경우, 제한된 오브젝트는 컨스트레인트가 생성된 시점을 기준으로 하는 대신 절대 좌표로 부모 오브젝트 스케일을 따릅니다.

스케일 컨스트레인트 오프셋 유지

부모 컨스트레인트

부모 컨스트레인트 는 계층형으로 어태치된 것처럼 모든 축과 채널을 따라 부모에 오브젝트를 제한합니다.

부모 컨스트레인트

기본적으로, 스케일은 부모 컨스트레인트에 포함되지 않습니다. 스케일을 포함하려면 컨스트레인트 항목을 우클릭하고 스케일링(Scaling) 을 활성화합니다.

부모 컨스트레인트에서 스케일 활성화

다른 컨스트레인트 타입과 유사하게, 오프셋 유지 를 비활성화하면 제한된 오브젝트는 컨스트레인트가 생성된 시점을 기준으로 하는 대신 절대 좌표로 부모 트랜스폼을 따릅니다.

룩앳 컨스트레인트

룩앳 컨스트레인트 는 부모 위치 조준을 통해서만 회전축을 따라 오브젝트를 제한합니다.

조준 컨스트레인트

컨스트레인트 항목을 우클릭하고 축(Axis) 프로퍼티를 편집하여 자손 오브젝트에 대한 조준 방향을 설정할 수 있습니다.

조준 축

다른 조준 타입 어태치먼트와 달리, 룩앳 컨스트레인트는 업 벡터를 사용하지 않습니다. 대신, 축을 애니메이팅하여 원하는 롤의 행동 방식을 수동으로 제어할 수 있습니다. 이러한 방식은 다른 조준 타입 어태치먼트에 흔하게 발생하는 회전 플립 문제 제거에도 유용할 수 있습니다.

조준 컨스트레인트 롤 플립 없음

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소