본문 바로가기

Camera5

[Unity] GL로 카메라 페이드 효과 구현하기 화면을 점차 어두워지거나 밝아지게끔 구현하려면 어떤 방법이 있을까? 직접 카메라 오브젝트 앞에 검은색 물체를 가져다 놓는 방법도 있고, Canvas에 검은색 이미지를 두어 알파값을 조절하는 방법도 있을 것이다. 하지만, 위의 방법들은 기능의 비중에 비해 오버헤드가 크다고 볼 수 있다. 유니티에서는 OpenGL이라는 저수준(Low-Level) 그래픽 라이브러리 문법을 일부 지원한다. 이를 활용하면, Camera에 직접 그리기 명령을 호출하여 원하는 대로 도형을 만들어낼 수 있다. 이번 글에서는 이러한 도형으로 카메라 페이드 효과를 구현해보자. 원리 도형의 종류는 Lines(선), Triangles(삼각형), Quads(사각형)가 있다. ※ Strip도 있지만, 여기서는 생략한다. 각 도형의 점 개수만큼 위.. 2023. 10. 5.
[Unity] FOV(Field of View)에 대해 알아보자 유니티에서 Camera 컴포넌트를 자세히 들여다보면,Field of View 옵션을 확인할 수 있다. 줄여서 FOV라고도 불리는 이것이 어떤 의미를 가지는지 알아보겠다.일반적으로 FOV는 시야각을 정의하는 값인데, 이 값이 커질수록 넓은 범위를 화면에 담을 수 있다.유니티 Camera 컴포넌트에서는 기본값이 60으로 설정되어있고, 수직 시야각(VFOV)을 의미한다.아래의 이미지를 보자.유니티에서는 FOV가 수직 시야각을 의미하기 때문에,화면 세로 크기가 변경되더라도, 위아래 범위가 고정되어물건의 크기가 커졌다 작아지는 것을 볼 수 있다. 일단, 수직 시야각은 FOV 그 자체인 것을 확인했다.그렇다면 수평 시야각(HFOV)은 어떻게 구할 수 있을까? 수평 시야각은 화면 비율에 영향을 받는다.화면 비율은 (.. 2023. 9. 17.
[Unity] 안드로이드(Android) 카메라 연동하기 안드로이드의 카메라 화면을 실시간으로 가져와보자. Canvas 설정 먼저, RawImage 컴포넌트를 Canvas 상에 배치해야한다. 이 컴포넌트에 카메라 화면을 담을 것이다. Canvas를 생성하고, 자식으로 RawImage를 생성했다. 이때, Pivot은 따로 건드리지 말자. 나중에 스크립트에서 Width와 Height를 직접 조절할 것이기 때문이다. ※ CanvasScaler의 UI Scale Mode는 Constant Pixel Size로 지정해준다. Script 작성 [Header("Setting")] public Vector2 requestedRatio; //설정하고자 하는 카메라 비율 public int requestedFPS; //설정하고자 하는 프레임 [Header("Component").. 2023. 8. 5.
[Unity] Camera를 사용하여 World Canvas에 이벤트 전달하기 VR 콘텐츠를 재생할 때, HMD를 착용하고 조이스틱에서 나오는 레이저 포인터를 사용하여 UI를 조작한다. 이 레이저 포인터를 구현하기 위해 학습한 기법을 소개하고자 한다. 본래 Canvas는 마우스 커서로 이벤트(클릭, 호버링 등)를 전달받을 수 있다. 그러나 마우스가 아닌 다른 방법으로 Canvas에 이벤트를 전달해본 경험은 드물 것이다. 이 기법을 활용하기 위해서는 이벤트 발생 방법에 대한 대략적인 이해가 필요하다. 카메라 상의 마우스의 좌표는 PointerEventData가 담고, 이 좌표로부터 GraphicRaycaster가 발생한다. GraphicRaycaster가 UI와 충돌하면, 충돌한 UI는 BaseInputModule 클래스에 있는 함수들로 이벤트를 전달받는다. 캔버스와 GraphicR.. 2020. 2. 10.
[Unity] 특정 Camera의 화면을 녹화 저장하기 프로젝트를 진행하면서 특정 Camera에서 촬영되는 화면을 파일로 저장할 필요가 있었다. 고맙게도 Asset Store에 Unity Recorder라는 에셋이 있어서 원하는 작업을 진행할 수 있었다. 현재는 Package Manager에서 Unity Recorder를 내려받을 수 있다. 일단, 실험을 위해 Cube와 두 개의 Capsule을 Plane위에 올려두었다. Cube는 스크립트를 적용하여, 상하좌우로 5초 간격으로 움직이므로 Capsule들이 움직이는 것처럼 보이게 된다. 더보기 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Cube : MonoBehaviour { private.. 2020. 1. 29.