}
Interaction SDK를 사용할 때는 기본적으로 추천하는 'Rig(리그)' 구조를 사용하면 편리합니다.이번 포스팅에서는 Comprehensive Interaction Rig에 대한 특징과 장점, 그리고 설정 방법에 대해 알아보겠습니다.Comprehensive Interaction Rig란?Comprehensive Interaction Rig는 이전 버전들의 Rig 구조보다 더 발전된 형태로, 다음과 같은 장점이 있습니다.1. 모듈화(Modularity)Rig가 3가지 주요 부분으로 나누어져 있습니다.Data Sources (입력 소스)Interactions (상호작용 처리)Visuals (시각적 요소)각 모듈은 서로 독립적으로 교체할 수 있어서, 다른 플랫폼에도 쉽게 재사용할 수 있습니다.2. 간소..
VR을 개발하다 보면 한 쪽 눈에만 오브젝트 혹은 UI가 렌더링되는 경우가 종종 발생하시죠?이러한 문제들을 해결하기 위해서는 싱글 패스 인스턴스(Single Pass Instanced)라는 개념을 아셔야 합니다. 싱글 패스 인스턴스(Single Pass Instanced) 개념이 어디에 사용되냐고요?아래 사진을 보시면 VR 세팅을 하실 때 보실 수 있습니다.이번 포스팅에서는 싱글 패스 인스턴스(Single Pass Instanced)에 대해 배우진 않고, 어떻게 두 눈에 렌더링 되게 하는지 해결방법에 대해 알아보고자 합니다.싱글 패스 인스턴스(Single Pass Instanced)는 이전 포스팅을 참고해주세요. 유니티 Multi Pass와 Single Pass Instanced/Multi View에 대..
유니티 6부터는 Meta XR SDK v74 이상을 사용하는 경우, OpenXR 플러그인을 활용하는 것이 권장됩니다. Meta가 OpenXR 표준을 적극적으로 지원하고 있으며, 다양한 플랫폼에서 일관된 XR 경험을 제공할 수 있도록 하기 위함입니다. XR Plugin Management for Meta QuestThis topic describes how to install XR vendor plugins using the Unity XR Plugin framework. It also explains the overall Meta XR SDKs and Unity XR Plugin framework architecture and the benefits of them.developers.meta.comUn..
RecenterPose()란 무엇인가?OVRManager.display.RecenterPose() 함수는 (Meta)VR 환경에서 사용자의 현재 트래킹 데이터를 기반으로 Tracking Origin을 재설정합니다. 사용자가 VR 공간에 들어서거나 예상치 못한 문제가 발생했을 때, 이 함수를 호출하면 사용자의 포지션과 방향이 초기 상태로 재조정됩니다.OVRManager.display.RecenterPose();
OvrAvatarManagerOvrAvatarManager는 SDK의 생명주기(LifeCycle)를 관리하며, 주요 API를 제공하는 싱글톤 컴포넌트로써 중앙 설정 관리 역할을 수행하며 다음 기능들을 제공합니다.아바타 로드 속도 및 동시 실행 제한 등을 제어하여 프레임 속도를 유지합니다. 네트워크 대역폭 설정으로 로드 시간을 조정합니다.-1로 설정하면 대역폭 제한이 없으며, 설정 값을 낮추면 로드 시간이 증가할 수 있습니다.아바타 로드를 빠르게 하기 위해 자산(Avatar Asset)을 미리 로드합니다.Asset Preload는 로드 속도를 높이는 대신 메모리 사용량이 증가합니다.로그 레벨 설정으로 SDK 디버깅을 지원합니다.스키닝 솔루션 및 각 LOD에 대한 품질 설정을 지원합니다.사용하지 않는 Ski..
Unity Meta SDK를 사용할 때 음성 인식 기능을 구현하려면 Meta Voice SDK와 Wit.ai을 활용하시면 됩니다. GitHub - oculus-samples/voicesdk-samples-whisperer: Oculus Voice SDK showcase demonstrating the use of Voice SDK in Unity. ThisOculus Voice SDK showcase demonstrating the use of Voice SDK in Unity. This project contains the source code for the "Whisperer" demo available on App Lab. The Oculus SDK and other suppor...github...
Meta Avatar SDK 31버전부터는 Avatars 2.0의 도입으로 인해, 3인칭 뷰에서 아바타가 다리를 가지게 되었습니다. 아바타 다리가 생김에 따라 아바타에 적절한 애니메이션이 필요하게 되었는데요. 예를 들어, 점프, 걷기, 뛰기 등.아바타를 더 생동감 있게 만들기 위해, OvrAvatarAnimationBehavior라는 새로운 컴포넌트를 사용하여 아바타에 전신 로코모션을 추가할 수 있게 되었습니다.OvrAvatarAnimationBehavior컴포넌트는 아바타가 환경에 맞게 움직일 수 있도록 하는 애니메이션 컨트롤러를 구현하며, 헤드셋의 움직임을 기반으로 애니메이션을 작동시킬 수 있습니다. 또한, 커스텀 전신 애니메이션을 사용할 수도 있습니다.전신 로코모션으로 아바타 애니메이션 활성화Ava..
Meta SDK를 활용하여 프로젝트를 개발할 때, Meta 플랫폼의 유저 이름을 받아오는 기능에 대해 알아보고자 합니다. 또한 Entitlement, PlatformInfo, Platform이 무엇인지 알아보고, Oculus ID를 통해 최종적으로 유저 이름을 받아오는 방법을 공유하고자 합니다.Entitlement이란?Entitlement는 Meta 플랫폼에서 사용자의 소프트웨어 사용 권한을 확인하는 과정입니다. 사용자가 특정 애플리케이션에 접근할 권한이 있는지를 검증하는 단계로, 보안상 매우 중요한 역할을 합니다. Entitlement 검사는 일반적으로 다음과 같은 상황에서 이루어집니다.사용자가 구매한 애플리케이션에 대한 라이선스 확인애플리케이션의 불법 복제 방지Meta SDK는 이러한 과정(Entit..
Meta Avatar 움직임을 네트워크를 통해 동기화하기 위해 RecordStreamData와 ApplyStreamData 메서드, StreamLOD와 같은 기능을 제공합니다. RecordStreamDatapacket.dataByteCount = _localAvatar.RecordStreamData_AutoBuffer(lod, ref packet.data); //예시RecordStreamData 메서드는 아바타의 현재 상태(움직임과 표정 등)를 캡처하여 이진(binary) 형식으로 압축합니다. 생성된 데이터는 네트워크를 통해 전송되어 특정 시점(=스냅샷)의 아바타 상태를 나타냅니다.ApplyStreamDataavatar.ApplyStreamData(tempStreamDatas); //예시네트워크를 통해 ..
VR로 게임을 하다보면 UI가 선명하지 않아서 보기 불편한 적이 많으셨죠? 특히 2D UI의 경우 Text가 읽기 매우 불편한데요, 오늘 OVR Overlay 컴포넌트를 이용해서 약간 해결해보고자 합니다.OVROverlay는 Compositor Layer를 사용해서 텍스처를 애플리케이션 렌더링 경로를 거치지 않고 직접 디스플레이로 전달하므로, CPU와 GPU 리소스를 절약하면서 선명한 이미지를 제공하도록 도와주는 컴포넌트입니다.Compositor Layer란?Compositor Layer는 VR 애플리케이션의 렌더링 과정을 최적화하여 텍스처, UI, Video와 같은 요소를 효율적으로 디스플레이에 출력하는 방식입니다.Compositor Layer 방식은 Eye Buffer(전통적인 VR 렌더링 파이프라인..
Meta Avatar SDK 버전이 29 넘게 나온거 알고 계시나요?24버전과 29버전의 가장 큰 차이는 캐릭터의 비주얼 부분인데요. 좌측 사진이 Meta Avatar 1세대이고, 우측 사진이 Meta Avatar 2세대입니다.좀 더 사실적인 느낌을 보여주고 있습니다.Oculus 플랫폼 SDK를 비동기적으로 초기화Core.AsyncInitialize()Oculus 플랫폼을 초기화하는 것은 Oculus의 다양한 기능과 서비스에 접근할 수 있도록 하기 위함입니다. Oculus 서비스에는 사용자 인증, 스토어 접근, 소셜 기능, 클라우드 저장소 등이 있습니다. 사용자가 애플리케이션을 사용할 권한이 있는지 확인Entitlements.IsUserEntitledToApplication()정품 사용자만이 애플리케이션..
Meta XR Haptics SDK 패키지 Example을 다운받으시면 Haptic SDK Play Sample 스크립트를 발견하실 수 있습니다.해당 스크립트는 Haptic Clip Player Class을 이용해서 Haptic을 사용하는 예제가 담겨 있는데요. 해당 스크립트에 대해서는 다루지 않겠습니다.이번 포스팅에서는 Haptic Clip Player Class에 대해서만 알아보겠습니다.Haptic Clip Player 클래스란?Haptic Clip Player는 Meta Quest Controller의 진동을 제어하는 유틸리티 클래스입니다.Haptic Clip Player의 핵심 기능에는 다음과 같습니다. 메서드/프로퍼티 기능 설명 특징 Play(Controller)할당된 HapticClip을 ..
Snap Interactor 컴포넌트와 Snap Interactable을 활용하면 원하는 위치에 원하는 오브젝트를 놓을 수 있습니다. 이때 어느정도 간격이 떨어져 있어도 Smooth하게 해당 위치로 날아가면서 딱 Snap되듯 위치하는 기능도 추가할 수 있습니다. 이번 시간에는 원하는 위치에 Snap하는 방법과 Smooth하게 가는 방법, 그리고 해당 위치에 Snap할 수 있음을 시각적으로 알려주는 방법까지 알아보겠습니다.Snap InteractorSnap Interactor컴포넌트가 붙는 객체는 인터렉션하는 객체입니다. 주로 원하는 곳에 두게 되는 오브젝트입니다. 예를 들면 열쇠같은 객체가 있습니다. Building Blocks 기능을 이용해서 간단하게 인터렉션할 수 있는 Cube를 만들어줍니다. 그 C..
Meta XR Core SDK를 다운받으면 Util Script에 OVRScreenFade.cs가 존재합니다.OVRScreenFade를 이용해서 카메라가 벽에 충돌할 때 어두워지는 효과를 연출하는 코드를 가져왔습니다.CharacterCameraConstraintCharacterCameraConstraint 스크립트는 카메라와 오브젝트간의 충돌을 감지하고, 화면 페이드를 적용하거나 캐릭터의 캡슐 콜라이더 높이를 조정하여 자연스러운 움직임을 구현하는 스크립트입니다.using UnityEngine;public class CharacterCameraConstraint : MonoBehaviour{ private const float FADE_RAY_LENGTH = 0.25f; private const..
using System;using UnityEngine;[RequireComponent(typeof(CapsuleCollider), typeof(Rigidbody))]public class SimpleOVRMovement : MonoBehaviour{ public bool EnableLinearMovement = true; public bool HMDRotatesPlayer = true; public float RotationAngle = 45.0f; public float Speed = 0.0f; public OVRCameraRig CameraRig; private bool ReadyToSnapTurn; private Rigidbody rigidbody; pr..