다음을 통해 공유


상호 작용 가능 개체를 잡고, 길게 누르고, throw합니다.

개요

Mesh Interactables는 런타임에 개체 또는 아바타 동작과의 상호 작용을 정의하는 Unity 스크립트를 사용하여 개체를 구성하는 시스템입니다. 스크립트는 XRI 상호 작용기를 사용하여 상호 작용할 수 있는 개체의 속성을 정의합니다. Mesh 도구 키트에는 정의할 수 있는 다양한 개체 형식의 스크립트가 포함되어 있습니다. 프로젝트가 실행되면 개체 또는 아바타가 정의된 대로 동작하는 데 필요한 모든 프리팹 및 설정을 설정합니다. 상호 작용 가능한 개체가 메시 앱에서 실행될 때의 모양과 느낌에 대한 대략적인 미리 보기를 보려면 메시 에뮬레이션 모드를 설정해야 합니다. 메시 앱에 표시되는 IK 기능은 메시 에뮬레이션 모드에서 사용할 수 없습니다.

메시 상호 작용 가능 설정 구성 요소

개체를 상호 작용 가능하게 만들려면 메시 상호 작용 가능 설정 구성 요소를 추가해야 합니다.

  1. 계층 구조에서 개체를 선택합니다.
  2. 검사기에서 구성 요소 추가 단추를 클릭한 다음 메시 상호 작용 가능 설정을 선택합니다.

메시 상호 작용 가능 설정 구성 요소가 선택된 구성 요소 추가 대화 상자의 스크린샷.

구성 요소가 추가되고 기본 개체 유형 속성이 Interactable로 설정됩니다. (개체 형식은 다음 섹션에서 설명합니다.)

개체 유형이 상호 작용 가능으로 설정된 Mesh 상호 작용 가능 설정 구성 요소의 스크린샷.

모두 동일하게 동작하는 개체 그룹의 속성은 부모 Mesh 상호 작용 가능 설정 구성 요소를 사용하여 설정할 수 있습니다. 속성은 각 자식 개체에 Mesh Interactable Body 구성 요소를 자동으로 추가하여 런타임에 견고한 본문이 있는 모든 자식에 적용됩니다. 메시 상호 작용 가능 본문을 수동으로 추가하여 상호 작용 이벤트와 같은 시각적 스크립팅과 메시 상호 작용 가능 개체를 사용하거나 시각적 스크립트를 통해 조작 가능한 대상 변환을 수정할 수 있습니다.

메시 상호 작용 가능한 본문 구성 요소의 스크린샷입니다.

참고:

  • 메시 상호 작용 가능 본문을 사용하면 상호 작용 가능한 각 개체가 독립적으로 동작할 수 있습니다.

  • 물리를 사용하도록 설정하려면 개체에 강체를 추가해야 합니다.

상호 작용 가능한 개체 형식

다음과 같은 네 가지 개체 유형이 있습니다.

  • 상호 작용 가능
  • Manipulable
  • 장착 가능
  • Throw 가능

개체 형식을 선택하려면 다음을 수행합니다.

  • Mesh Interactable Setup 구성 요소에서 개체 유형 드롭다운을 클릭한 다음 네 가지 옵션 중 하나를 선택합니다.

메시 상호 작용 가능한 본문 구성 요소의 개체 유형 메뉴 옵션 스크린샷.

상호 작용 가능

위에서 설명한 대로 기본 형식이며 가장 기본적인 형식입니다. 사용자가 마우스로 가리키거나 다른 스크립트가 반응할 수 있는 개체를 선택할 때 호출할 수 있는 콜백에 액세스할 수 있습니다. 예를 들어 다른 개체를 사용하도록 설정하는 데 사용할 단추가 있는 경우 OnSelected 콜백을 사용하여 개체에 이 형식을 추가하여 다른 개체를 사용하도록 설정합니다. 단추는 이 형식과 충돌체를 추가하여 완전히 상호 작용할 수 있습니다. 다른 작업을 수행할 필요가 없습니다.

Manipulable

이 형식의 개체는 런타임에 변환을 조작할 수 있으며 상호 작용기 광선의 끝에 있는 공간을 통해 이동합니다. 바로 가기 컨트롤을 사용하여 개체를 회전하거나 변환할 수 있습니다. Mesh 앱에서 개체를 조작하려면 아바타 손에 대한 IK 설정을 설정하여 개체를 따를 수 있습니다. 조작 가능한 개체에는 강체가 필요하지 않지만 개체에 물리학 기능이 있도록 하려면 개체를 추가해야 합니다.

커피 포트가 조작되는 메시 환경의 스크린샷.

장착 가능

이 유형의 개체는 아바타의 손에 연결됩니다. 장비에 대한 PC 컨트롤은 개체를 클릭하거나 개체가 선택된 동안 'F'를 누르고 있습니다. 장비에 대한 퀘스트 컨트롤은 개체를 선택하는 동안 '그립' 단추를 누르고 있습니다. 장착 가능한 개체에는 개체가 장착된 동안 아바타의 팔 포즈에 대한 IK 대상에 대한 설정이 포함되어 있습니다. IK 대상은 아바타의 가슴에서 오프셋입니다. 개체를 보유하거나 활성화하는 동안 손이 어디로 가는지 결정합니다.

Throw 가능

이름에서 알 수 있듯이 이 형식의 개체를 잡고 throw할 수 있습니다. 마우스를 잡은 후 마우스 왼쪽 단추를 길게 눌러 조준 모드로 전환할 수 있습니다. 이렇게 하면 아바타의 팔이 마우스 대상을 따를 수 있습니다. 개체를 throw하려면 마우스 왼쪽 단추를 놓습니다.

다트를 잡고 던져 읽을 다트 게임의 스크린 샷.

모든 상호 작용 가능 구성 요소에는 시각적 스크립팅에서 사용할 수 있는 상호 작용 속성과 메서드가 있으므로 함께 작동할 수 있는 방법은 무제한입니다.

개체를 시각적 스크립팅과 상호 작용 가능하게 만들기

개체의 시각적 스크립팅 상호 작용에 대한 반응을 설정하려는 경우 OnStateChanged 노드에 연결된 OnHovered 또는 OnSelected와 같은 사용 가능한 속성에 대한 노드가 있는 스크립트 그래프 내에서 Mesh Interactable Body 구성 요소를 사용할 수 있습니다. 예를 들어 다음 스크립트 그래프는 단추를 누르는 동안 실린더를 사용하도록 설정하고 단추를 놓을 때 사용하지 않도록 설정합니다. 스크립트와 충돌체를 추가하면 단추가 완전히 상호 작용할 수 있습니다. 다른 작업을 수행할 필요가 없습니다.

메시 상호 작용 가능 본문이 있는 스크립트 그래프의 스크린샷이 선택됨 노드입니다.

설정

Manipulables, Equippables 및 Throwable에 공통적인 설정

모든 개체 유형에 공통된 속성이 강조 표시된 메시 상호 작용 가능 설정 구성 요소의 스크린샷.

상호 작용 근접 반경 아바타가 이 개체와 상호 작용할 수 있는 가장 먼 거리

마우스로 가리키기 IK 설정 – 개체를 마우스로 가리킨 경우 사용할 IK 설정

  • 손 포즈 셰이프: 개체를 마우스로 가리키면 아바타의 손을 넣을 손 포즈 모양입니다.
  • 손 포즈 크기: 손 포즈의 크기는 0 ~1입니다.
  • IK 추적 사용: IK 대상 지정을 사용하여 마우스를 가져가는 동안 아바타의 팔이 개체쪽으로 도달할지 여부입니다.
    • IK 구형 제한: true이면 arm IK가 구에서 수행됩니다. 이로 인해 아바타 팔이 똑바로 붙지 않습니다.

설정 강조 표시

  • 마우스로 가리키기/선택됨: 개체가 강조 표시되거나 선택된 경우 강조 표시할지 여부를 지정합니다.

  • 강조 표시 메커니즘

    • 메뉴 항목 1: 셰이더 속성

      • 강조 색: 개체가 강조 표시될 때 재질의 색 속성을 설정할 색입니다.
      • 전환 기간 강조 표시: 전환 시 강조 표시를 페이드 인/아웃하는 시간입니다.
      • 강조 표시 양 속성: 강조 표시할 때 강조 표시 크기를 설정할 재질의 속성입니다. float 값입니다.
      • 강조 색 속성: 강조 표시 시 강조 색을 설정할 재질의 속성입니다. 색 값입니다.
    • 메뉴 항목 2: 메시 윤곽선: 개체에 지정된 색/너비의 자동 윤곽선을 추가합니다.

      • 강조 색: 윤곽선의 색입니다.
      • 전환 기간 강조 표시: 전환 시 윤곽선을 페이드 인/아웃하는 시간입니다.
      • 윤곽선 너비 강조 표시: 윤곽선의 두께(미터)입니다. 그래픽 도구/표준 재질의 "압출 값"을 재정의합니다.
      • 사용자 지정 개요 재질: 윤곽선을 렌더링하는 데 사용되는 재질입니다.
      • 사용자 지정 스텐실 쓰기 자료: 사용된 재질은 스텐실 버퍼에 값을 씁니다.
      • 개요 제외 모드: 개요에 포함하지 않으려는 렌더러를 필터링하는 옵션입니다.
    • 메뉴 항목 3: 내부 네온: 지정된 속성을 사용하여 네온 효과와 함께 강조 표시를 적용합니다.

      • 강조 색: 내부 네온의 색입니다.
      • 전환 기간 강조 표시: 전환할 때 내부 네온을 페이드 인/아웃하는 시간입니다.
      • 사용자 지정 강조 재질: 이 개체와 관련된 옵션을 재정의하여 네온에 사용되는 재질을 설정합니다. 설정되지 않은 경우 설정 자산의 기본 자료가 사용됩니다.
      • 제외 문자열: 이 옵션을 설정하면 제외 문자열이 포함된 이름의 게임 개체가 강조 표시에서 제외됩니다.

Manipulable 전용 설정

매니풀 가능 설정이 표시된 메시 상호 작용 가능 설정 구성 요소의 스크린샷.

  • 강제 모드: 공간을 통해 개체를 강제 적용하는 데 사용할 모드입니다.
    • 기본: 중심을 사용하여 개체를 이동하는 기본 MRTK 동작입니다.
    • 포인트 스프링: 잡기 지점에서 힘을 적용하여 개체를 이동하는 대체 동작(강체에 대해서만 작동)
  • 회전(기본 모드에서만 사용 가능)
    • 사용: 조작하는 동안 개체를 회전할 수 있는지 여부입니다. 각 축은 개별적으로 설정할 수 있습니다.
    • 조작 회전 논리
      • 기본값: 개체를 조작할 때 카메라 주위를 회전하고 카메라를 기준으로 동일한 방향으로 유지됩니다(실제 변환 값은 회전).
      • 제한: 개체를 조작할 때는 변환을 회전하지 않으며 카메라를 기준으로 동일한 방향으로 유지되지 않습니다.
  • 번역(기본 모드에서만 사용 가능) =사용: 조작하는 동안 개체를 번역할 수 있는지 여부입니다. 각 축은 개별적으로 설정할 수 있습니다.
  • Point Spring(Point Spring 모드에서만 사용 가능)
    • 스프링 강도: 개체를 끌어오는 스프링의 힘입니다. 값이 높을수록 대상 지점에 더 빨리 도달할 수 있습니다.
    • 감쇠 계수: 잡기 지점 주위의 진동을 방지하기 위해 적용되는 감쇠 양입니다.
  • 대상 변환 수정: 사용자에게 기본 변환을 재정의하고 개체를 선택하는 동안 카메라/아바타를 기준으로 개체의 원하는 위치와 회전을 설정하는 옵션을 제공합니다. 이 속성을 사용으로 설정하면 다음 세 가지 속성이 표시됩니다.
    • 대상 공간:
      • 카메라의 로컬 공간: 카메라 로컬 공간에서 위치 및 회전을 지정할지 여부입니다.
      • 아바타의 로컬 공간: 아바타 로컬 공간에서 위치 및 회전을 지정할지 여부입니다.
    • 새 대상 위치: 새 대상 위치(z 구성 요소는 카메라/아바타가 향할 방향임)
    • 새 대상 회전: 새 대상 회전
  • 아바타 IK
    • 손 포즈 셰이프: 개체를 조작할 때 아바타의 손을 넣을 손 포즈 모양입니다.
    • 손 포즈 크기: 손 포즈의 크기는 0 ~1입니다.
    • IK 추적 사용: IK 대상 지정을 사용하여 조작하는 동안 아바타의 팔이 개체를 향해 도달할지 여부입니다.
      • IK 구형 제한: true이면 arm IK가 구에서 수행됩니다. 이로 인해 아바타 팔이 똑바로 붙지 않습니다.

장비 및 Throwable에서 공유하는 설정

장비 및 Throw 가능 항목에 공통된 설정이 강조 표시된 메시 상호 작용 가능 설정 구성 요소의 스크린샷

  • 상호 작용 오프셋: 개체를 배치할 아바타의 손을 기준으로 하는 위치 및 회전 오프셋입니다.
  • 대상 포즈 장착
    • 위치: 항목을 장착할 때 손을 놓을 아바타의 가슴에서의 거리입니다.
    • 회전: 항목이 장착될 때 손목을 회전하는 양입니다.
  • 개최된 손 포즈:
    • 손 포즈 모양: 이 드롭다운은 장착 시 아바타의 손을 넣을 수 있는 다양한 손 포즈 모양을 제공합니다. 없음을 선택할 수도 있습니다.
    • 손 포즈 크기: 손 포즈의 크기는 0 ~ 1입니다.

장비 전용 설정

장비 설정이 표시된 메시 상호 작용 가능 설정 구성 요소의 스크린샷.

  • 구성 활성화
    • 활성화 유형: 항목을 활성으로 설정해야 하는 경우입니다. Throw 가능한 개체는 활성화할 수 없으며 항상 활성화된 형식이 없음으로 설정됩니다.
      • 없음: 이 항목을 활성화할 수 없습니다.
      • 토글: 이 항목은 활성화 컨트롤을 클릭할 때마다 활성/활성화되지 않음 간에 전환됩니다.
      • 단일: 이 항목은 활성화 컨트롤을 클릭한 다음 마지막 대상 포즈에 도달하면 자동으로 비활성화될 때 활성화됩니다.
    • 대상 포즈 활성화: 항목이 활성화될 때 아바타의 손을 놓는 데 사용되는 대상 포즈 목록입니다. 각 포즈는 위치, 회전, 보간 시간 및 애니메이션 곡선의 네 가지 속성으로 구성됩니다. 위치 및 회전 오프셋은 아바타의 가슴을 기준으로 합니다. 아바타는 이전 포즈의 애니메이션 곡선을 사용하여 보간 시간에 정의된 시간 동안 목록 아래로 순차적으로 현재 포즈로 보간하고 비활성화될 때까지 최종 포즈에 유지합니다. 비활성화되면 아바타 손 포즈가 목록을 뒤로 이동합니다.

Throw 가능에만 적용되는 설정

Throw 가능한 설정이 표시된 메시 상호 작용 가능 설정 구성 요소의 스크린샷

Aim 구성:

  • Aim의 Arm 확장 – 조준 모드에서 팔을 확장하는 양입니다.
  • 조준 손 포즈:
    • 손 포즈 모양: 손은 조준할 때 아바타의 손을 넣을 모양을 포즈를 취합니다.
    • 손 포즈 크기: 손 포즈의 크기는 0 ~ 1입니다.
  • 조준 손 회전: 조준하는 동안 손의 회전
  • 손 포즈 던지기:
    • 손 포즈 모양: 던지기가 해제될 때 아바타의 손을 넣을 손 포즈 모양
    • 손 포즈 크기: 손 포즈의 크기는 0 ~ 1입니다.
  • VR Min Throw 속도: 퀘스트에서 throw될 때 개체에 적용할 최소 속도입니다.
  • VR 최대 Throw 속도: 퀘스트에서 throw될 때 개체에 적용할 최대 속도입니다. PC에서 사용되는 속도 값입니다. 퀘스트 시 사용자의 실제 팔 움직임에 따라 속도가 조정됩니다.

퀘스트에서 개체가 throw될 때 적용되는 속도는 사용자의 팔 이동의 실제 속도를 사용하여 최소값과 최대값 사이에서 크기가 조정됩니다.

  • 2D 설정
    • 2D Throw 속도: PC에서 throw될 때 개체에 적용할 속도입니다.
    • 방향 오프셋 throw: PC에서 throw할 때 개체에 적용할 방향 오프셋입니다.
  • 대상 포즈 throw: 항목이 throw되면 아바타의 손을 놓는 데 사용되는 대상 포즈 목록입니다. 위치 및 회전 오프셋은 throw가 시작될 때 아바타 손의 위치를 기준으로 합니다. 아바타는 이전 포즈의 애니메이션 곡선을 사용하여 보간 시간에 정의된 시간 동안 목록 아래로 순차적으로 현재 포즈로 보간합니다. 개체가 해제되고 throw 손 포즈가 두 번째 대상에서 마지막 대상까지 사용됩니다.

시각적 스크립팅

상호 작용 가능한 모든 본문의 경우:

  • 속성
    • IsHovered(읽기 전용) – 로컬 아바타가 개체를 가리키고 있는지 여부입니다.
    • IsSelected(읽기 전용) – 아바타가 개체를 선택하는지 여부입니다. MeshBrowser에서 실행하는 경우 네트워크로 표시됩니다.
    • IsSelectedLocally – 로컬 아바타가 개체를 선택하는지 여부입니다.
    • IsMine(읽기 전용) – 마지막 아바타가 개체를 선택하거나 장착하는 경우 True입니다.

장착 가능 장비의 경우:

  • 속성
    • EquippedAt(읽기 전용) - 이 개체가 장착된 위치 – 없음, DefaultHand, RightHand, LeftHand. MeshBrowser에서 실행하는 경우 네트워크로 표시됩니다.
    • EquipTime(읽기 전용) – 이 개체가 장착된 시간입니다. MeshBrowser에서 실행하는 경우 네트워크로 표시됩니다.
    • IsActivated(읽기 전용) – 이 개체가 활성화된 상태인 경우 throw할 수 없는 개체에 대해서만 유효합니다. MeshBrowser에서 실행하는 경우 네트워크로 표시됩니다.
    • IsAiming(읽기 전용) – 이 개체를 보유하는 동안 로컬 아바타가 조준 상태인 경우 throw 가능한 경우에만 유효합니다.
    • IsThrowing(읽기 전용) – 로컬 아바타가 개체를 적극적으로 throw하는 경우 throw 가능한 경우에만 유효합니다.
    • IsEquipped(읽기 전용) (읽기 전용) – 이 개체가 현재 아바타에 의해 장착되어 있는 경우 MeshBrowser에서 실행하는 경우 네트워크로 표시됩니다.
    • IsThrowable – 이 개체를 throw할 수 있는 경우 입니다.
    • ThrowVelocity – 개체가 해제될 때 throw할 속도입니다.

매니풀이 대상 위치를 수정하려면 다음을 수행합니다.

  • 대상 위치(읽기 전용) : 메시 상호 작용 가능한 속성에서 기본 힘 모드를 사용하는 경우 본문의 대상 위치
  • 대상 회전(읽기 전용): 메시 상호 작용 가능 속성에서 기본 힘 모드를 사용하는 경우 본문의 대상 회전
  • 광선 적중 위치(읽기 전용) : 본문에 상호 작용기의 광선 캐스트 적중 위치
  • 광선 적중 회전(읽기 전용): 광선 방향 주위의 상호 작용기 회전
  • 수정된 대상 위치(읽기 및 쓰기) : 시각적 스크립트에서 새 대상 위치를 설정하는 데 사용됩니다. 그러면 기본 대상 위치가 재정의됩니다. 이 속성을 재정의하는 것이 가장 좋습니다.
    • 사용 상태 대상 위치가 변경되었습니다. 이 경우 시각적 스크립트는 상호 작용기와 새 위치가 변경된 경우에만 흐름을 실행합니다.
    • 늦은 업데이트에서 를 사용합니다. 모든 프레임에서 대상 변환을 변경해야 하는 경우 새 대상 변환을 다음 프레임에서 즉시 사용할 수 있도록 늦은 업데이트에서 수행합니다.
  • 수정된 대상 회전(읽기 및 쓰기) : 시각적 스크립트에 의해 새 대상 회전을 설정하는 데 사용됩니다. 그러면 기본 대상 위치가 재정의됩니다.

설정

Visual Script를 사용하여 수정: 시각적 스크립트를 사용하여 관리 가능한 본문에 대한 대상 변환을 수정하려면 이 기능을 사용하도록 설정합니다. Modify-with-visual-script

다음 단계