[SKKU DT] 55일차 -유니티 VR 오큘러스 프로젝트 만들기(3) -텔레포트, 사다리 오르기, Vignetting, AR AreaTarget

2024. 1. 18. 17:18SKKU DT

728x90
반응형

3D URP 프로젝트 생성해서 XR Interaction Toolkit 설치

 

 

OpenXR Plugin 설치

 

 

유니티 패키지 import

 

 

XR Origin에 다음과 같은 컴포넌트 넣고 구성요소 넣기

 

 

추가로 회전 관련 컴포넌트 더 넣기

 

 

텔레포트 컴포넌트도 넣기

 

 

Teleport Interactor를 Right Controller에 넣기 Interacton Layer Mask가 31번째 레이어 Teleport로 설정되어있어야 한다.

없으면 31번째 Layer에 Teleport 레이어 추가

 

 

TeleportArea 빈 오브젝트 생성, Teleportation Area 스크립트 컴포넌트 넣기

Interaction Manager는 런타임에 자동으로 할당된다. 밑에 Interaction Layer Mask를 Teleport로 설정.

 

 

Teleport Interactor에 XR Controller 스크립트 컴포넌트 넣고 위에서부터 4개 체크 해제, Select Action, Select Action Value의 Reference는 Teleport Select으로 수정

 

 

동시 동작을 막기 위해서(물건 집는 동시에 이동) XR Interaction Group 추가

 

 

Action Based Controller Manager 스크립트 컴포넌트 추가

 

이름 그대로 검색해서 넣기

 

 

오른손 조이스틱을 밀고 놨을 때 해당 지점으로 텔레포트하는 것을 볼 수 있다. 따로 밀지 않으면 Snap Turn이 된다.

 

 


 

 

 

터널링 효과 주기

Main Camera 밑에 TunnelingVignette 프리팹 넣기

 

 

Tunneling Vignette Controller 스크립트 컴포넌트에서, [Preview in Editor] - [Default Parameters] 설정, 위에 슬라이드 바를 포함한 설정 값을 바꾸면 효과가 적용된다.

 

 

밑에 [Locomotion Vignette Providers]에서 XR Origin을 끌어다놓고 Snap Turn이나 Teleportation에도 Vignetting이 적용되도록 설정한다.

 

턴을 할 때 Vignetting이 생기는 것을 볼 수 있다.

 

 


 

 

Ladder Interactor

Ladder 프리팹을 하나 넣고, XR Origin에 Climb Provider를 넣은 후 XR Origin을 끌어다 놓는다.

 

잘 적용되었다면 아래처럼 잡을 수 있게 된다.

 

 


 

버튼 눌러서 문 열기

버튼 모델링과 프리팹을 씬에 가져오고 Poke Interactor를 Left Controller와 Right Controller의 자식으로 둔다.

 

 

손가락 애니메이션에 point 애니메이션을 적용한다.

 

 

검지 손가락 끝에 Capsule Collider 넣기. 왼손, 오른손

 

 

Poke Interactor에 [Attach Transform]에 검지 손가락 끝을 넣는다.

 

버튼은 눌러지지만 아직 문을 열 수는 없다.

 

 

PushButtonDoor 스크립트 생성

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;

public class PushButtonDoor : MonoBehaviour
{
    public Animator animator;
    public string boolName = "Open";

    private void Start()
    {
        GetComponent<XRSimpleInteractable>().selectEntered.AddListener(x => ToggleDoorOpen());
    }

    public void ToggleDoorOpen()
    {
        bool isOpen = animator.GetBool(boolName);
        animator.SetBool(boolName, !isOpen);
    }
}

 

 

버튼 누르면 열리고 다시 누르면 닫힌다. 성공

 

 


 

 

Double Grip

두 손으로 동시에 잡는 것이 아니라 두 위치 어디에서든 잡을 수 있다.

소화기 패키지 import.

 

 

body에 Box Collider 넣기, XR Grab Interactable 넣기

[Select Mode] - [Multiple] 설정, Attach Transform은 두 개 넣을 수 있다. 여기에 Socket Interactor 처럼 원하는 지점을 넣으면 된다. handle과 nozle의 자식으로 빈 오브젝트 생성해서 위치 맞춘다.

 

 

잡을 지점 Transform 설정하기

 

 

잡을 위치 Transform을 Attach Transform 자리에 넣기

 

 

두 손을 동시에 잡을 수는 없고 아까 설정한 두 위치 어느 곳에서든 오브젝트를 잡을 수 있다.

 

 

[Use Dynamic Attach]를 활성화해서 잡는 부분 그대로 들어올린다.

 

 

[Velocity Tracking] 모드로 든 상태에서 바닥에 부딪히게 할 수 있다.

 

 

소화기 분사 파티클 import해서 위치 맞추기

 

 

 

FireEX 스크립트 생성해서 nozle에 넣기

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FireEX : MonoBehaviour
{
    public ParticleSystem effect;
    
    public void Select()
    {
        effect.Play();
    }

    public void Select_exit()
    {
        effect.Stop();
    }
}

 

 

nozle에 XR Simple Interactable 스크립트 컴포넌트 넣기, 아래 Interactable Events를 열고 Select Entered를 추가한다.

 

nozle에 Rigidbody 삭제...

nozle 부위를 잡으면 파티클이 나와야 한다.... 오큘러스와 유니티 연결이 잘 안되었다....

 

 


 

 

지게차 추가

지게차를 추가하기 위해서 에셋스토어에서 아래의 에셋 다운로드

 

Low Detail Forklift | 3D 지상 | Unity Asset Store

Elevate your workflow with the Low Detail Forklift asset from VIS Games. Find this & other 지상 options on the Unity Asset Store.

assetstore.unity.com

 

 

지게차가 깨져보이므로 [Window] - [Rendering] - [Render Pipeline Converter] 눌러서 창을 연 다음

 

 

[Rendering Settings]와 [Material Upgrade] 두 항목을 체크하고 [Initailize And Convert] 눌러서 컨버트 한다.

 

 

SitPosition 빈 오브젝트 만들고 운전석 아래쪽에 위치시킨다.

 

 

SitPosition도 텔레포트가 가능하게 만들기 위해서 TeleportArea의 Colliders 목록에 넣는다.

 

 


 

 

AR Vuforia 공간 Scan

Vuforia Area Target Generator를 열고 파일을 열어본다.

[3DT Space] 버튼 눌러서 .3dt 파일 넣는다.

 

잘 들어왔다면 스캔한 데이터가 보인다.

 

 

스캔 폴더의 .unitypackage 파일을 유니티에 import 하면 스캔된 데이터가 보인다.

 

 

[GameObjet] - [Vuforia Engine] - [Area Target] - [Area Target]을 Hierarchy에 불러온다. AR Camera도 불러온다.

 

그러면 Hierarchy 창이 이렇게 된다.

 

 

Runtime Mesh를 추가해서 쓸 수 있다.

 

밑에 Runtime Occlusion Mesh와 Runtime Mesh Collider 체크

 

 

패키지 매니저에서 Vuforia Engine AR 설치되어있는지 확인

728x90
반응형