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..
Meta Quest Developer Hub를 사용해서 첫 번째 apk를 빌드할 때는 아무 문제가 없었습니다.하지만 두 번째 apk를 빌드하려니 설정 건든 것도 없는데 아래 사진과 같은 말도 안되는 에러가 발생하면서 빌드가 계속 실패됐습니다. 위 사진들을 보면 아시겠지만 설정은 아무 문제가 없습니다.그냥 Meta Quest Developer Hub버그인듯 합니다.. 그래서 어떻게 해결했냐?Meta Quest Developer Hub를 사용하지 않고 ovr-platform-util를 사용했습니다.ovr-platform-util 사용방법Meta Quest Developer Hub를 사용하면 버튼 딸-깍이라 편하지만 버그가 너무 많네요...ovr-platform-util를 사용하면 값을 타이핑해야하는 번거..
게임을 제작하고 스토어에 출시를 하려면 무엇을 해야할까요? 바로 빌드입니다.빌드를 하고 출시하면 전부 끝일까요? 물론 끝일 수도 있지만 예상치 못한 버그 픽스로 인해 다시 빌드하는 경우도 생기곤 합니다. 여러분도 아시겠지만 빌드하는데 걸리는 시간이 그리 짧지는 않은데요. Meta SDK에서는 빌드 반복 과정을 빠르게 도와주는 OVR Build APK라는 Tool이 존재합니다.OVR Build APK외에도 OVR Quick Scene Preview라는 Tool도 존재하지만 이번 시간에는 OVR Build APK에 대해서만 알아보고자 합니다. OVR Build APK Tool을 사용하기 위해서는 Meta XR Core SDK를 임포트 하셔야 합니다. OVR Build APK Tool이란?OVR Build A..
유니티 하프라이프 알릭스 Distance Grab, XR Interaction Toolkitusing UnityEngine; using UnityEngine.XR.Interaction.Toolkit; public class HalfLifeDistanceGrab : XRGrabInteractable { public float VelocityThreshold = 2f; public float JumpAngleInDegree = 60f; private XRRayInteractor m_XrRayInteractor; private Vector3 prevwlsdn629.tistory.com예전에 하프라이프 그랩 기능을 만들어 본적이 있습니다.Hurricane VR에는 해당 기능이 구현되어 있어서 쉽게 해당 기능을 ..
핵심 2가지HurricaneVR 에셋을 사용하기 위해서는 Scene에 반드시 2가지가 존재해야 합니다.XR Rigs : HurricaneVR에셋에는 이미 제작된 두 개의 XR Rig가 포함되어 있습니다. (XR Rig 위치: /HurricaneVR/TechDemo/Prefabs/)TechDemoXRRig: Oculus / SteamVR 플러그인과 함께 사용할 때 사용하는 Rig입니다.TechDemoXRRigOpenXR: OpenXR 플러그인과 함께 사용할 때 사용하는 Rig입니다.HVRGlobal : 프레임워크가 기능을 수행하는 데 필요한 여러 컴포넌트가 포함되어 있습니다. 예를 들어, Input Manager, Time Manager 등의 역할을 수행합니다. XR Rigs과 HVRGlobal이 포함된..
VR 개발하시는 분들이라면 Grab Interactable Object를 만들 때 Rigidbody 만들고, Collider 만들고, Grabbable 컴포넌트 추가하는 등의 매우 귀찮은 작업을 항상 하셔왔을 것입니다. 이제는 그럴 필요가 없어졌습니다. 버튼 딸깍 딸깍 한 번으로 Interaction 기능을 만들 수 있게 되었습니다.사용 방법 사용하고자 하는 Interactor를 선택해서 생성해줍니다. 이때도 Block Building 방법으로 쉽게 만들 수 있지만 , 저는 아직 버그가 많아보여서 사용하지 않고 프로젝트에서 검색해서 Drag해서 끌어다 놓는 방법을 여전히 이용중에 있습니다. Interactor를 끌어다놨으면 그에 맞는 Interactable 객체를 만들어야겠죠? Cube를 하나 만들어주..