[Unity] 유니티에서 VR/AR/XR 빌드하기
개요Permalink
XR(eXtended Reality)은 VR(가상 현실), AR(증강 현실), MR(혼합 현실)을 포함하는 개념으로, Unity에서는 XR Plugin Management 시스템을 활용하여 다양한 플랫폼을 지원할 수 있습니다.
- VR (Virtual Reality, 가상 현실): 사용자가 완전히 가상 환경에 몰입하는 기술 (예: Oculus, HTC Vive)
- AR (Augmented Reality, 증강 현실): 실제 환경 위에 가상 요소를 겹쳐 표시하는 기술 (예: ARCore, ARKit)
- MR (Mixed Reality, 혼합 현실): 실제 환경과 가상 환경이 상호작용하는 기술 (예: HoloLens)
(출처 : Interaction Design Foundation)
Unity XR 개발 환경 설정Permalink
- Unity 버전 선택: VR/AR 개발을 위해 Unity 2021 이상 버전 사용을 권장합니다.
- XR Plugin Management 설치
- Window → Package Manager → XR Plugin Management 검색 후 설치
- 플랫폼별 XR 플러그인 추가
- Oculus VR: Oculus XR Plugin
- OpenXR: OpenXR Plugin (HTC Vive, Windows MR 등 지원)
- AR: ARCore (Android), ARKit (iOS)
(출처 : https://docs.unity3d.com/kr/2022.3/Manual/xr-plugin-management.html)
VR 빌드 설정 (Oculus/OpenXR 기준)Permalink
- 프로젝트 설정
Edit
→Project Settings
→XR Plugin Management
→ Oculus/OpenXR 활성화Edit
→Project Settings
→Player
설정에서 XR 지원 옵션 체크
- XR Interaction Toolkit 추가
VR 컨트롤러 및 상호작용을 위해 XR Interaction Toolkit을 설치합니다.Window
→Package Manager
→XR Interaction Toolkit
설치GameObject
→XR
→XR Rig
추가
- 컨트롤러 입력 설정
- XR Controller 컴포넌트 추가
- Input Action 설정 (
Input System
패키지 사용) - Oculus, OpenXR 등 컨트롤러와 연결
AR 빌드 설정 (ARCore/ARKit 기준)Permalink
- AR 지원 설정
- Edit → Project Settings → XR Plugin Management → ARCore/ARKit 활성화
- Player 설정에서 AR 지원 옵션 체크
- AR Camera 및 Plane Detection 추가
- GameObject → XR → AR Session 추가
- GameObject → XR → AR Camera 추가
- GameObject → XR → AR Plane Manager 추가
- AR 인터랙션 구현
- AR Raycast를 사용하여 터치한 위치에 가상 오브젝트 배치
- AR Anchor를 활용하여 가상 오브젝트를 실제 공간에 고정
(출처 : https://learn.unity.com/tutorial/setting-up-ar-foundation#)
XR 빌드 및 실행Permalink
VR 빌드 (Oculus Quest 2 예시)Permalink
- 플랫폼 변경: File → Build Settings → Android 선택 후 Switch Platform
- Oculus 설정: XR Plugin Management → Oculus 활성화
- 빌드: Build And Run (Oculus 기기에 APK 설치)
AR 빌드 (Android ARCore 예시)Permalink
- File → Build Settings → Android 선택 후 Switch Platform
- XR Plugin Management에서 ARCore 활성화
- Player Settings에서 Camera Usage Description 입력
- 빌드 & 실행: Build And Run
예제 코드 (VR & AR 오브젝트 배치)Permalink
🔹 VR 컨트롤러 입력을 받아 오브젝트 생성
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;
public class VRObjectSpawner : MonoBehaviour
{
public GameObject prefab; // 생성할 오브젝트
public XRController controller; // VR 컨트롤러
void Update()
{
if (controller.inputDevice.TryGetFeatureValue(UnityEngine.XR.CommonUsages.triggerButton, out bool isPressed) && isPressed)
{
Instantiate(prefab, transform.position + transform.forward * 2, Quaternion.identity);
}
}
}
🔹 AR 터치 입력을 받아 오브젝트 생성
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class ARObjectSpawner : MonoBehaviour
{
public GameObject prefab;
private ARRaycastManager raycastManager;
private List<ARRaycastHit> hits = new List<ARRaycastHit>();
void Start()
{
raycastManager = GetComponent<ARRaycastManager>();
}
void Update()
{
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
if (raycastManager.Raycast(Input.GetTouch(0).position, hits, TrackableType.PlaneWithinPolygon))
{
Instantiate(prefab, hits[0].pose.position, Quaternion.identity);
}
}
}
}
정리Permalink
- Unity에서 XR 개발을 위해 XR Plugin Management를 설정해야 합니다.
- VR은 XR Interaction Toolkit을 사용하여 손쉽게 구현할 수 있습니다.
- AR은 AR Foundation을 활용하여 터치 기반 상호작용을 추가할 수 있습니다.
- 프로젝트 목표에 맞게 VR/AR/XR 빌드 설정을 최적화해야 합니다.