[OpenXR] XRGrabInteractable (Kinematic/Instantaneous/Velocity Tracked)

VR/XR Interaction Toolkit 2024. 1. 3. 15:17
반응형

https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.4/api/UnityEngine.XR.Interaction.Toolkit.XRGrabInteractable.html

Class XRGrabInteractable    | XR Interaction Toolkit | 2.4.3

Interactable component that allows for basic grab functionality. When this behavior is selected (grabbed) by an Interactor, this behavior will follow it around and inherit velocity when released. Inherited Members UnityEngine.Component.GetComponentInParent

docs.unity3d.com

XRGrabInteractable의 "Kinematic Movement," "Instantaneous Movement," 및 "Velocity Tracked Movement"는 각각 상호작용 오브젝트가 어떻게 움직이고 상호작용하는지를 제어하는 옵션입니다. 이러한 옵션은 XR Interaction Toolkit을 사용하여 상호작용을 디자인할 때 중요한 역할을 합니다. 각 옵션에 대한 설명은 다음과 같습니다:

  1. Kinematic Movement (운동법적 이동):
    • "Kinematic Movement" 옵션을 활성화하면 상호작용 오브젝트는 물리 시뮬레이션에 의한 영향을 받지 않고 움직입니다. 즉, 오브젝트는 플레이어나 코드에 의해 직접 제어됩니다.
    • 이 옵션은 물리 엔진을 사용하지 않는 상호작용, 예를 들어 손으로 물건을 직접 잡고 움직이는 경우와 같이 물리 시뮬레이션을 사용하지 않는 상황에서 유용합니다.
  2. Instantaneous Movement (즉시 이동):
    • "Instantaneous Movement" 옵션을 활성화하면 상호작용 오브젝트는 순간적으로 이동할 수 있습니다. 이는 오브젝트가 플레이어에게 즉시 이동하거나 플레이어가 오브젝트를 특정 위치로 순간 이동시키는 데 사용됩니다.
    • 이 옵션은 텔레포트 상호작용과 같이 오브젝트를 순간적으로 이동시키고 싶을 때 유용합니다.
  3. Velocity Tracked Movement (속도 추적 이동):
    • "Velocity Tracked Movement" 옵션을 활성화하면 상호작용 오브젝트의 움직임은 속도에 따라 추적됩니다. 즉, 오브젝트는 일정한 속도로 움직이며, 플레이어나 다른 상호작용 요소에 의한 속도 변화를 반영합니다.
    • 이 옵션은 오브젝트의 움직임을 물리 시뮬레이션에 비슷하게 나타내고 싶을 때 유용하며, 오브젝트를 움직일 때 자연스러운 물리적 움직임을 시뮬레이션하는 데 사용됩니다.

이러한 옵션은 XR Interaction Toolkit을 사용하여 상호작용을 구현할 때 어떻게 오브젝트가 움직이고 상호작용하는지를 조절하는 데 도움이 됩니다. 프로젝트의 요구사항과 상호작용 시나리오에 따라 이러한 옵션 중 하나를 선택하여 상호작용을 조정할 수 있습니다.
 
 
 
XRGrabInteractable의 다양한 움직임 옵션을 테스트하고 비교하려면 다음과 같은 방법을 따를 수 있습니다:

  1. 테스트 시나리오 설정:
    • Unity에서 XR Interaction Toolkit을 사용하여 테스트 씬을 만듭니다. 씬 내에 움직이는 대상 오브젝트와 상호작용 가능한 오브젝트를 배치합니다.
  2. Kinematic Movement 테스트:
    • "Kinematic Movement" 옵션을 사용하여 상호작용 가능한 오브젝트를 만듭니다. 이 오브젝트는 물리 시뮬레이션을 받지 않고 직접적으로 제어됩니다.
    • 이 오브젝트를 손으로 잡거나 움직여 보면, 오브젝트는 물리 시뮬레이션 없이 플레이어에 의해 제어됩니다.
  3. Instantaneous Movement 테스트:
    • "Instantaneous Movement" 옵션을 사용하여 상호작용 가능한 오브젝트를 만듭니다. 이 오브젝트는 순간적으로 이동할 수 있습니다.
    • 오브젝트를 텔레포트하거나 순간적으로 다른 위치로 이동시켜 보면, 오브젝트가 즉시 이동하는 것을 확인할 수 있습니다.
  4. Velocity Tracked Movement 테스트:
    • "Velocity Tracked Movement" 옵션을 사용하여 상호작용 가능한 오브젝트를 만듭니다. 이 오브젝트는 속도에 따라 움직입니다.
    • 이 오브젝트를 움직여 보면, 오브젝트가 일정한 속도로 움직이며, 속도 변화에 따라 움직임이 반응하는 것을 확인할 수 있습니다.
  5. 비교 및 평가:
    • 각 테스트에서 어떻게 움직임 옵션들이 작용하는지 비교하고, 상호작용 요구사항에 가장 적합한 옵션을 결정합니다.
    • 오브젝트의 움직임이 자연스러운지, 원하는 동작을 제공하는지, 프로젝트의 목표에 부합하는지를 고려하여 선택합니다.

이러한 테스트를 통해 XRGrabInteractable의 다양한 움직임 옵션을 비교하고 프로젝트에 가장 적합한 옵션을 결정할 수 있습니다. 특히 상호작용 시나리오와 사용자 경험에 따라 어떤 옵션이 가장 적합한지를 고려해야 합니다.
 
 
XRGrabInteractable의 다양한 움직임 옵션을 테스트할 때, Direct Interactor와 Ray Interactor 두 가지 방법을 모두 고려할 수 있습니다. 어떤 방법이 나을지는 프로젝트의 요구사항과 상호작용 시나리오에 따라 다를 수 있습니다.

  1. Direct Interactor 사용:
    • Direct Interactor를 사용하면 상호작용 요소(예: 손)와 상호작용 대상(예: 오브젝트)이 직접적으로 상호작용합니다.
    • 이 방법은 오브젝트를 직접 잡고 움직이는 상황을 모델링할 때 유용합니다. "Kinematic Movement" 옵션과 함께 사용하여 물리 시뮬레이션 없이 오브젝트를 제어할 때 효과적입니다.
  2. Ray Interactor 사용:
    • Ray Interactor를 사용하면 광선을 이용하여 오브젝트를 선택하고 상호작용할 수 있습니다.
    • 이 방법은 텔레포트 또는 레이를 이용한 상호작용을 모델링할 때 유용합니다. "Instantaneous Movement" 또는 "Velocity Tracked Movement"와 함께 사용하여 오브젝트를 순간 이동하거나 추적 움직임을 시뮬레이션할 때 효과적입니다.

어떤 방법을 선택할지는 프로젝트의 목표와 상호작용 스타일에 따라 다를 것입니다. 만약 프로젝트에서 특정 상황을 모델링하거나 테스트해야 한다면, 그 상황에 적합한 Interactor를 선택하여 움직임 옵션을 테스트하면 됩니다. 또한, Direct Interactor와 Ray Interactor를 모두 테스트하여 어떤 상호작용 방식이 사용자 경험과 프로젝트 목표에 더 적합한지 확인할 수 있습니다.
 
 
"Kinematic Movement" 옵션이 활성화된 경우, 오브젝트는 물리 연산에 의해 영향을 받지 않고 직접적으로 움직입니다. 이는 오브젝트가 물리 시뮬레이션을 통해 움직이는 게 아니라 플레이어 또는 코드에 의해 직접 제어된다는 것을 의미합니다.
따라서 "Kinematic Movement" 옵션이 활성화된 XRGrabInteractable를 사용하면 오브젝트가 물리 연산 없이 플레이어의 손과 같은 컨트롤러에 의해 움직일 수 있으며, 서로 부딪히거나 상호작용할 수 있습니다. 이것은 오브젝트의 움직임을 물리 시뮬레이션 없이 제어하고 상호작용을 모델링할 때 사용되는 옵션입니다.
따라서 물리 연산을 사용하지 않더라도 "Kinematic Movement" 옵션이 활성화된 XRGrabInteractable를 사용하면 오브젝트 간의 상호작용을 구현할 수 있습니다.
 
 
"Kinematic Movement" 옵션과 Rigidbody 컴포넌트의 "Is Kinematic" 옵션은 물리 시뮬레이션과 관련된 설정입니다. 이 두 옵션은 비슷한 이름을 가지고 있지만 서로 다른 컨텍스트에서 사용됩니다.

  1. "Kinematic Movement" 옵션 (XRGrabInteractable):
    • "Kinematic Movement" 옵션은 XRGrabInteractable 컴포넌트와 관련이 있습니다. 이 옵션은 XRGrabInteractable를 사용하는 상호작용 요소(예: 손 컨트롤러)가 해당 오브젝트를 직접적으로 제어하고 물리 시뮬레이션을 적용하지 않는지 여부를 결정합니다.
    • "Kinematic Movement" 옵션이 활성화되면, 오브젝트는 물리 시뮬레이션에 의해 영향을 받지 않고 직접적으로 움직입니다. 따라서 물리 연산이 적용되지 않습니다.
  2. "Is Kinematic" 옵션 (Rigidbody 컴포넌트):
    • "Is Kinematic" 옵션은 Rigidbody 컴포넌트와 관련이 있습니다. 이 옵션은 Rigidbody가 물리 시뮬레이션에 의해 영향을 받는지 여부를 결정합니다.
    • "Is Kinematic"을 활성화하면 해당 Rigidbody는 물리 시뮬레이션에 영향을 받지 않고 직접적으로 제어됩니다. 반면에 "Is Kinematic"을 비활성화하면 Rigidbody는 물리 시뮬레이션에 따라 움직입니다.

요약하면, "Kinematic Movement" 옵션은 XRGrabInteractable와 관련된 상호작용 설정이며, 물리 시뮬레이션을 적용하지 않고 오브젝트를 제어할지 여부를 결정합니다. 반면에 "Is Kinematic" 옵션은 Rigidbody 컴포넌트와 관련이 있으며, 해당 Rigidbody가 물리 시뮬레이션에 영향을 받는지 여부를 결정합니다.
 
 


 
"Kinematic Movement" 옵션과 Rigidbody의 "Is Kinematic" 옵션을 테스트하고 검증하기 위해서는 다음과 같은 단계를 따를 수 있습니다:

  1. 테스트 시나리오 설정:
    • Unity에서 테스트용 씬을 만들어서 사용할 상호작용 요소와 상호작용 가능한 오브젝트를 배치합니다.
  2. XRGrabInteractable 설정:
    • XRGrabInteractable 컴포넌트를 사용하여 상호작용 가능한 오브젝트를 만듭니다. 이 오브젝트에 "Kinematic Movement" 옵션을 적용하고 필요한 모델 또는 메쉬를 연결합니다.
  3. Rigidbody 설정 (선택적):
    • 상호작용 가능한 오브젝트에 Rigidbody 컴포넌트가 있다면 해당 Rigidbody의 "Is Kinematic" 옵션을 활성화 또는 비활성화합니다.
  4. 상호작용 요소 설정:
    • 사용할 상호작용 요소(예: 손 컨트롤러)를 설정하고 XRDirectInteractor 또는 다른 Interactor 컴포넌트를 연결합니다.
  5. 상호작용 테스트:
    • 게임을 실행하고, 상호작용 가능한 오브젝트를 상호작용 요소(손)로 잡아보세요.
    • "Kinematic Movement" 옵션이 활성화된 경우, 오브젝트가 상호작용 요소에 의해 직접 제어되며 물리 시뮬레이션을 받지 않을 것입니다.
    • "Is Kinematic" 옵션이 있는 Rigidbody가 상호작용 가능한 오브젝트에 있을 경우, 해당 Rigidbody가 "Is Kinematic" 옵션에 따라 동작할 것입니다.
  6. 동작 검증:
    • "Kinematic Movement" 옵션과 "Is Kinematic" 옵션을 활성화 또는 비활성화한 상태에서 오브젝트와 상호작용하면서 동작을 검증합니다.
    • 오브젝트가 물리 시뮬레이션에 따라 움직이거나 직접 제어되는 것을 확인하고 필요한 경우 수정합니다.
  7. 비교 및 평가:
    • 두 옵션의 동작을 비교하여 프로젝트 요구사항에 가장 적합한 옵션을 결정합니다.
    • 상호작용 요소와 상호작용 가능한 오브젝트 간의 상호작용이 원하는 대로 동작하는지 확인합니다.

이러한 단계를 통해 "Kinematic Movement" 옵션과 Rigidbody의 "Is Kinematic" 옵션을 테스트하고 검증할 수 있으며, 프로젝트에 적합한 상호작용 동작을 설정할 수 있습니다.
 

반응형
: