U Can't Touch This - Nreal light용 MR 튜토리얼



오른손 검지로 물체를 터치합니다.

샘플 리포지토리


  • mr-tutorials-for-nreal-light/UCanTouchThis at main · karad/mr-tutorials-for-nreal-light

  • 샘플 실행


  • 샘플 리포지토리 복제, 현재 디렉토리를 UCanTouchThis 로 변경합니다. 그리고 Unity로 엽니다.
  • (NRSDK가 없는 경우) https://nreal-public.nreal.ai/download/NRSDKForUnityAndroid_1.7.0.unitypackage에서 NRSDK 1.7.0 다운로드
  • 열기Build Setting , 플랫폼을 Android로 변경
  • 열기 Project , Assets > import package > Custom Package를 선택하고 가져오기 NRSDKForUnityAndroid_1.7.0.unitypackage .
  • Configure Build Settings을 참조하여 Build Settings > Player Settings 확인
  • 프레스BuildBuild Settings 패널
  • Android 또는 DevKit에 *.apk를 설치합니다.

  • 지도 시간



    1. Nreal 개발을 위한 프로젝트 설정


  • Quickstart for Android - NRSDK Documentation을 참조하고 빌드 설정을 구성하십시오.
  • (NRSDK가 없는 경우) https://nreal-public.nreal.ai/download/NRSDKForUnityAndroid_1.7.0.unitypackage에서 NRSDK 1.7.0 다운로드
  • 열기 Project , Assets > import package > Custom Package를 선택하고 가져오기 NRSDKForUnityAndroid_1.7.0.unitypackage .

  • 2. NRInput에 대한 HandTracking 설정


  • NRInput를 선택하고 Input Source TypeHands로 변경합니다.
  • 장면에 NRHand_R > Assets > NRSDK > Prefabs > Hands > NRInput에서 Right를 넣습니다.
  • 장면에 NRHand_L > Assets > NRSDK > Prefabs > Hands > NRInput에서 Left를 넣습니다.

  • 3. NRHandPointer_R 비활성화


  • 장면에서 NRHandPointer_R > NRInput > Right에서 NRHand_R를 선택합니다.
  • 검사기 패널에서 비활성화NRHandPointer_R합니다.
  • 왼손에 대해 동일한 설정을 수행합니다( NRHandPointer_L ).

  • 4. 빈 게임 개체 만들기


  • 장면에 "HandController"라는 이름의 빈 게임 개체를 만듭니다.
  • 또한 장면에 "대상"이라는 이름의 빈 게임 개체를 만듭니다.
  • 각 게임 오브젝트의 위치를 ​​0으로 설정하십시오.
  • Pos X : 0, Pos Y : 0, Pos Z : 0


  • 5. 알파 재질 만들기


  • Assets에서 재료 만들기
  • "AlphaMaterial"로 이름 변경
  • Rendering Mode 항목을 Fade 로 변경하십시오.

  • 6. 손 추적을 위한 구 만들기


  • SphereHandController에 넣으세요.
  • "Hand_R_IndexTip"으로 이름 변경
  • Pos X : 0, Pos Y : 0, Pos Z : 0
  • Scale
  • X : 0.03 , Y : 0.03 , Z : 0.03

  • 구성 요소 추가Ridgitbody .
  • 체크 해제 Use Gravity

  • 재료 "AlphaMaterial"을 Materials에서 Assets로 설정합니다.


  • 7. 핸드 트래킹 확장을 위한 C# 스크립트 생성


  • 파일 이름이 "HandController.cs"인 자산에 생성C# Script합니다.
  • 다음과 같이 코드를 작성하십시오.

  • using NRKernal;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    /// <summary>
    /// Hand Controller for Tip
    /// </summary>
    public class HandController : MonoBehaviour
    {
        /// <summary>
        /// IndexTip GameObject
        /// </summary>
        public GameObject hand_R_IndexTip;
    
        // Start is called before the first frame update
        void Start()
        {
        }
    
        // Update is called once per frame
        void Update()
        {
            // Get Right Hand
            HandState handState = NRInput.Hands.GetHandState(HandEnum.RightHand);
            // Get Index Tip Position of right hand
            Vector3 handStateThumbTipPosition = handState.GetJointPose(HandJointID.IndexTip).position;
            // Set Hand R IndexTip Sphere position
            hand_R_IndexTip.transform.position = handStateThumbTipPosition;
        }
    }
    


    8. "HandController"에 C# 스크립트를 첨부합니다.


  • "HandController"게임 개체에 "HandController.cs"를 첨부합니다.
  • hand_R_IndexTip 패널의 Inspector를 장면에서 "Hand_R_IndexTip"게임 개체로 설정합니다.


  • 9. 대상 객체로 Cube 생성


  • SphereTarget에 넣으세요.
  • "TargetCube1"로 이름 변경
  • Pos X : 0.1, Pos Y : -0.05, Pos Z : 0.8
  • Scale
  • X : 0.1 , Y : 0.1 , Z : 0.1

  • 구성 요소 추가Ridgitbody .
  • 체크 해제 Use Gravity



  • 10. 대상 게임 개체에 대한 C# 스크립트 만들기


  • 파일 이름이 "TargetCube.cs"인 자산에 생성C# Script합니다.
  • 다음과 같이 코드를 작성하십시오.

  • using NRKernal;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;
    using UnityEngine.UI;
    
    /// <summary>
    /// Target Cube Script
    /// </summary>
    public class TargetCube: MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
        }
    
        // Update is called once per frame
        void Update()
        {
        }
    
        /// <summary>
        /// Display event log using console
        /// </summary>
        /// <param name="collision"></param>
        void OnCollisionEnter(Collision collision)
        {
            Debug.Log("Hit!");
        }
    }
    


    11. "Target"에 C# 스크립트를 첨부합니다.


  • "TargetCube1"게임 개체에 "TargetCube.cs"를 첨부합니다.

  • 12. 빌드


  • 프레스BuildBuild Settings 패널
  • Android 또는 DevKit에 *.apk를 설치합니다.
  • 좋은 웹페이지 즐겨찾기