예전에 샌드백 만들었던 적이 있었는데 그 때 사용했던 Configurable Joint 컴포넌트를 활용해서 조이스틱을 만들어 보고자 합니다. 유니티 VR 샌드백을 만들어보자! 예전부터 샌드백을 엄청엄청엄청 만들어 보고 싶었습니다... 샌드백 관련 영상과 기술들을 찾아봤었지만 여태껏 찾지 못하다가, AutoHand라는 에셋 안에 샌드백이 있어서 너무나 행복했고 바로 알 wlsdn629.tistory.com 조이스틱 구조 최상위 오브젝트 JoyStick은 빈오브젝트입니다. 그 자식으로 Grab, Base를 만들어줍니다. Grab은 Sphere, Base는 Cube로 간단하게 제작해주었습니다. Grab의 경우 Collider, Rigidbody를 가지고 있으되, Mesh Renderer는 삭제해줍니다. 자식으..
Windows standalone settings Stereo Rendering Mode - Multi Pass 또는 Single Pass Instanced 렌더링 모드를 선택할 수 있습니다. Multi Pass 또는 Single Pass Instanced에 대해서는 언급한 적이 있으니 해당 포스트를 보고 오시길 추천드립니다! 유니티 Multi Pass와 Single Pass Instanced/Multi View에 대해 VR작업을 하다보면 초반 세팅하는 부분에 한 번씩쯤 다들 봤을 것입니다. Rendering Mode에 보면 Multi Pass와 Single Pass Instanced , 모바일의 경우 Multi View가 존재합니다. 이 3개의 차이는 아래 표와 같습니 wlsdn629.tistory.c..
VR작업을 하다보면 초반 세팅하는 부분에 한 번씩쯤 다들 봤을 것입니다. Rendering Mode에 보면 Multi Pass와 Single Pass Instanced , 모바일의 경우 Multi View가 존재합니다. 이 3개의 차이는 아래 표와 같습니다. 기능 Multipass (다중 패스) Single Pass Instanced Multiview 렌더링 방식 여러 개의 렌더 패스를 사용하여 화면을 그립니다. 단일 렌더 패스에서 모든 드로우 콜을 인스턴스화된 드로우 콜로 교체합니다. 단일 렌더 패스에서 모든 드로우 콜을 처리합니다. 효율성 느림 (여러 번의 렌더링 작업이 필요) CPU 사용량: 크게 감소, GPU 사용량: 소폭 감소 CPU 사용량: 적게 줄지만 GPU 사용량은 미세하게 개선됩니다. 사..
예전부터 샌드백을 엄청엄청엄청 만들어 보고 싶었습니다... 샌드백 관련 영상과 기술들을 찾아봤었지만 여태껏 찾지 못하다가, AutoHand라는 에셋 안에 샌드백이 있어서 너무나 행복했고 바로 알아보았습니다. 저는 당연히 코드를 직접 짜야할 줄 알았으나, Configure Joint 하나로 해결이 된다는 점에서 너무 신기했습니다! 진짜.....이 글을 보는 여러분들은 행운...저는 진짜 오랫동안 찾음 ㅠㅠ 구조 구조는 정해진 틀이 없습니다. 하지만 기본적인 샌드백 뼈대는 설치하시면 됩니다. 저는 허수아비 타입의 샌드백 구조를 만들어 보았습니다. Configure Joint Auto Hand 에셋에 설치되어 있는 샌드백 구조를 살펴보았을 때, 위 빨간색 박스친 부분만 사용한 것을 확인했습니다. 그 외에는 기..
이번 시간에는 Curved UI를 만드는 방법에 대해 배워보고자 합니다. 저번 시간에 배운 Flat Canvas도 참고하시길 추천드립니다! 유니티 VR UI 인터렉션 #Flat Canvas 이번 포스팅에서는 Flat한 Canvas와 인터렉션 할 수 있는 방법에 대해 알아보겠습니다. UI와 인터렉션 하기 위해 Ray 기능을 사용할 것입니다. UI 세팅 먼저, 빈 게임 오브젝트를 하나 생성해준 후 이 wlsdn629.tistory.com 이번 시간 최종 목표는 Curved UI를 만든 후에, Ray Interaction이 가능하도록 하는 것입니다. 구조 위 사진과 같은 구조로 만들 예정이므로, 각 이름에 맞게 빈오브젝트를 만들어 두시길 바랍니다. Canvas의 경우 빈 오브젝트가 아닌 UI - Canvas로..
VR개발을 하다 보면 에디터를 실행할 때 에어링크로 연결된 기기가 재생이 되지 않고 PC를 이용한 에디터 디버깅이 필요할 때가 종종 생깁니다. 에어링크가 연결된 상태임에도 불구하고 PC로 에디터를 컨트롤 하기 위해서는 프로젝트 세팅에 있는 XR 플러그인 매니지먼트의 Initialize XR on Startup부분을 비활성화해주면 됩니다. 하지만, 매번 저 윈도우창에 들어가서 껐다 켰다 하기란 매우 불편한 과정입니다.모습 그래서 에디터 상단에 토글을 이용하여 저 부분을 껐다 켰다 할 수 있는 기능을 만들어 보았습니다.큰 문제는 되지 않으나 윈도우 창에서 토글을 건드려도 에디터 상단 토글은 업데이트 되지 않습니다. 따라서, 에디터 상단 토글을 이용하시길 추천드립니다. 코드using System.Reflect..
저번 시간에도 Flat Canvas 활용법에 알아봤었습니다. 저번에는 Ray를 이용한 방법이였고, 이번 시간에는 Poke를 이용한 방법에 대해 알아보고자 합니다. 유니티 VR UI 인터렉션 #Flat Canvas 이번 포스팅에서는 Flat한 Canvas와 인터렉션 할 수 있는 방법에 대해 알아보겠습니다. UI와 인터렉션 하기 위해 Ray 기능을 사용할 것입니다. UI 세팅 먼저, 빈 게임 오브젝트를 하나 생성해준 후 이 wlsdn629.tistory.com 플레이어 세팅 [Controller / Hand]Poke Interactor 프리팹을 배치해줍니다. 플레이어의 손가락이 UI를 뚫고 지나가게 하고 싶지 않다면 Limit Visual 컴포넌트를 Poke Interactor 프리팹에 추가해줍니다. Can..
이번 포스팅에서는 Flat한 Canvas와 인터렉션 할 수 있는 방법에 대해 알아보겠습니다. UI와 인터렉션 하기 위해 Ray 기능을 사용할 것입니다. UI 세팅 먼저, 빈 게임 오브젝트를 하나 생성해준 후 이름을 Flat Canvas로 바꿔준 다음 Ray Interactable 컴포넌트와 Pointable Canvas 컴포넌트를 부착해줍니다. 그 다음 Flat Canvas의 자식으로 빈 오브젝트를 하나 더 생성해준 다음 이름을 Mesh로 바꿔주고, Box Collider와 Collider Surface컴포넌트를 붙여줍니다. Collider Surface의 Collider 부분에 방금 만든 Box Collider를 할당해줍니다. Flat Canvas의 자식으로 UI Canvas를 하나 만들어줍니다. 그 ..
OVR SDK 프로젝트를 스터디 하다보면 MaterialPropertyBlockEditor 스크립트를 종종 발견하곤 했습니다. MaterialPropertyBlockEditor 스크립트가 무엇인지 이번 포스팅에서 살펴보고자 합니다😁. MaterialPropertyBlockEditor이란? 여러 객체의 Mateiral 속성을 효율적으로 관리하고 업데이트하는 데 사용되는 유틸리티 스크립트입니다. 예를 들어, 위 움짤에서 보이는 거와 같이 텔레포트를 할 때 특정 핫스팟에 타겟팅이 되는 순간 핫스팟의 Ring의 밝기가 밝아지는 상황 등에 사용할 수 있습니다. 위 코드와 같이 빠르게 MaterialPropertyBlock에 접근하고 업데이트할 수 있습니다.
이번 포스팅에서는 OVR SDK를 이용해서 텔레포트 로코모션하는 방법에 대해 알아보겠습니다. 저의 경우 버전은 위 사진에 나와 있는 버전을 사용중에 있습니다. 저의 경우 더 이상 예전 버전을 사용하지 않습니다. 플레이어 세팅 저는 언제나 세팅되어 있는 플레이어 프리팹을 사용합니다. 프로젝트 검색란에 InteractionRig까지 검색하신후 Basic을 하이러키창에 끌어다 놓아줍니다. 다음으로, LocomotionControllerInteractorGroup을 찾아줍니다. LocomotionControllerInteractorGroup을 각 Controller의 자식으로 집어넣어줍니다. 그 다음, 3개의 빈 오브젝트를 만들어준 다음 우측 사진처럼 각 컨트롤러에 하나씩 넣어주고 OVRControllers 자..
이번 포스팅에서는 오브젝트를 들고 두 손으로 해당 오브젝트의 사이즈를 컨트롤 하는 방법에 대해 알아보고자 합니다. 플레이어 세팅하기 프로젝트 돋보기에 full이라고 검색하시면 맨 아래 InteractionRigOVR-FullSynthetic 프리팹이 보입니다. 해당 프리팹을 하이러키창에 끌어다가 놓으신 다음, OVRControllerHands아래에 ControllerHandInteractores를 찾아줍니다. 이때 [Right/Left] 둘 모두에게 HandGrabInteractor을 끌어다가 놓아줍니다. 위와 같이 하셨다면 플레이어 세팅은 모두 끝났습니다. 오브젝트 세팅하기 큐브를 하나 생성해준 다음 Rigidbody, Grabbable, One Grab Free Transformer, Two Grab..
HMD(헤드셋)없이 VR테스트 하는 방법에 대해 소개해드리고자 합니다. 우선 이 방법을 사용하기 위해서는 조건이 있습니다. 필수조건은 진행중인 프로젝트의 Toolkit은 "XR Interaction Toolkit"이여야 한다는 점입니다. Device 세팅 [Project Setting]에 들어가셔서 "Use XR Device Simulator in scenes" 옵션을 체크해줍니다. 실행하기 에디터를 실행시키면 좌측 하단에 컨트롤러 조작 설명이 적혀있는 이미지를 보실 수 있습니다. 키보드 및 마우스를 이용하여 실제 VR 기기의 컨트롤을 따라할 수 있습니다. 조작키가 어려우시면 "XR Device Sumulate"프리팹을 수정하여 본인의 취향에 맞게 설정할 수 있습니다. 결과
VR게임을 만들 때 Player가 HMD을 착용했는지 착용해제 했는지 상황 트래킹이 필요한 경우가 있습니다. HMD Condition을 트래킹 하려면 OVRManager을 활용하면 됩니다. OVRManager 구조 HMDManager public class HMDManager : MonoBehaviour { public static HMDManager Instance { get; private set; } public bool IsHMDConnected { get; private set; } public bool IsHMDMounted { get; private set; } private void Awake() { if (Instance == null) { Instance = this; DontDestr..
세팅 방법 [Project Settings]에 들어간 후 XR Plug-in Management를 활성화시켜줍니다! 그 후, Mock HMD Loader를 활성화시켜줍니다! 결과