개념공부

Unity Camera

Cadi 2024. 12. 23. 10:24

Camera

  • 3D로 게임을 만들더라도, 우리 스크린은 2D이기 때문에 변환 필요 >> 카메라로 찍은 것을 보여줌(View)
  • 카메라 오브젝트의 전방 축(Z)이 방향을, 수직 축(Y)이 스크린의 위 아래를 결정함.
  • 원근 모드 (Perspective)와 직교 모드(Orthograpic) 방식으로 카메라를 투영 가능

  • 스카이박스(Skybox)로 , 카메라를 감싸 배경 표현 가능

구성요소

  • Transform : 카메라의 위치와 방향을 설정
  • Clear Flags : 화면의 배경 처리를 설정
    -Skybox : 스카이박스를 사용해 배경을 렌더링
    -Solid Color : 단색 배경
    -Depth Only : 배경을 렌더링하지 않고, 이전 카메라의 내용을 유지 // 여백을 투명하게 처리, 버퍼를 초기화해 기존 내용을 모두 제거
    -Dont' Clear : 모든 렌더링을 유지// 버퍼를 초기화하지 않고 이전 내용에 새로운 화면을 그림
  • Culling Mask : 특정 레이어의 객체만 렌더링
  • Field of View (FOV) : 카메라의시야각을 조절
  • Clipping Planes : 렌더링할 최소/최대 거리 설정, 성능과 관련되어 있음, 먼 곳의 폴리를 낮추는 기법도 존
  • Depth : 카메라의 렌더링 우선순위 // 여러대 카메라 사용 시, 그리는 순서 -100~ 이며 높을수록 나중에 그림

카메라 사용

 

1. 다중 카메라 설정

 유니티는 하나의 장면에 여러 카메라를 배치할 수 있음, 각 카메라는 특정 목적을 위해 사용되며

카메라로 화면 전환을 하거나 Clear Flags를 사용해 다른 화면에 있는 물체를 겹치게 그리거나 할 수 있다.

  • Camera.mian.cullingMask = LayerMask.GetMask() 특정 객체만 렌더링 할 수 있음
  • Camera.main.rect = new Rect() 화면의 일부에 다른 카메라의 뷰를 표시할 수 있음

2. 카메라 전환

  카메라를 껐다 키면서 빠른 전환을 하거나, Lerp 혹은 SmoothDamp를 사용해 부드러운 전환을 구현 가능

  • camer1.enabled = true/false; : 카메라를 활성화/비활성화
  • Camera.main.transform.position/rotation = Vector3/Quaterninon.Lerp : 부드러운 위치 전
  • Cinemachine 활용 : 패키지관리자에서 설치 후 사용 / 나중에 추가 정보 알아볼 것Y)이 스크린의 위 아래를 결정함.
  • 원근 모드 (Perspective)와 직교 모드(Orthograpic) 방식으로 카메라를 투영 가능
  • 스카이박스(Skybox)로 , 카메라를 감싸 배경 표현 가능
  • 구성요소

Transform : 카메라의 위치와 방향을 설정

Clear Flags : 화면의 배경 처리를 설정

-Skybox : 스카이박스를 사용해 배경을 렌더링

-Solid Color : 단색 배경

-Depth Only : 배경을 렌더링하지 않고, 이전 카메라의 내용을 유지 // 여백을 투명하게 처리, 버퍼를 초기화해 기존 내용을 모두 제거

-Dont' Clear : 모든 렌더링을 유지// 버퍼를 초기화하지 않고 이전 내용에 새로운 화면을 그림

Culling Mask : 특정 레이어의 객체만 렌더링

Field of View (FOV) : 카메라의시야각을 조절

Clipping Planes : 렌더링할 최소/최대 거리 설정

Depth : 카메라의 렌더링 우선순위 // 여러대 카메라 사용 시, 그리는 순서 -100~ 이며 높을수록 나중에 그림

카메라 사용

 

 

 

1. 다중 카메라 설정

 

 유니티는 하나의 장면에 여러 카메라를 배치할 수 있음, 각 카메라는 특정 목적을 위해 사용되며

 

카메라로 화면 전환을 하거나 Clear Flags를 사용해 다른 화면에 있는 물체를 겹치게 그리거나 할 수 있다.

 

Camera.mian.cullingMask = LayerMask.GetMask() 특정 객체만 렌더링 할 수 있음

Camera.main.rect = new Rect() 화면의 일부에 다른 카메라의 뷰를 표시할 수 있음

 

2. 카메라 전환

 

  카메라를 껐다 키면서 빠른 전환을 하거나, Lerp 혹은 SmoothDamp를 사용해 부드러운 전환을 구현 가능

 

camer1.enabled = true/false; : 카메라를 활성화/비활성화

Camera.main.transform.position/rotation = Vector3/Quaterninon.Lerp : 부드러운 위치 전

Cinemachine 활용 : 패키지관리자에서 설치 후 사용 / 나중에 추가 정보 알아볼 것

 

3. 카메라 움직임

 카메라는 프로그래밍으로 이동시키거나, 특정 물체를 추적하거나, 회전시킬 수 있다.

  • transform.LooAt(target) : 특정 타겟을 바라보도록 만듬
  • 추적 코드 (자주 쓰이는)
public Transform target; // 추적할 대상
public float smoothSpeed = 0.125f;
public Vector3 offset; // 카메라와 대상의 거리

void LateUpdate() {
    Vector3 desiredPosition = target.position + offset;
    Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
    transform.position = smoothedPosition;
    transform.LookAt(target); // 대상을 바라보게 설정
}

( 보니까 저번에 했던 것처럼 카메라 오프셋을 설정해서 따라간다.)

 

4. 카메라 효과

  • 카메라 흔들림(Shake Effect)
public IEnumerator CameraShake(float duration, float magnitude) {
    Vector3 originalPosition = transform.localPosition;

    float elapsed = 0.0f;
    while (elapsed < duration) {
        float x = Random.Range(-1f, 1f) * magnitude;
        float y = Random.Range(-1f, 1f) * magnitude;

        transform.localPosition = originalPosition + new Vector3(x, y, 0);

        elapsed += Time.deltaTime;
        yield return null;
    }

    transform.localPosition = originalPosition;
}

이것도 저번에 했었던 인벤토리의 랜덤 흔들림과 비슷 ! 

 

  • Camera.main.fieldOfView 를 Lerp로 변경해서 시야각 변경 > 줌 인/아웃 구현
  • Camera.main.transform.forwoard * zoomSpeed 로 카메라의 위치를 변경해서 줌 인/아웃 구현 가능
  • Post Processing : 패키지 매니저에서 설치 후, Bloom,Depth of Field, Color Grading의 효과 추가 가능

https://www.youtube.com/watch?v=zRfq2rZa9Ho

 

 

 

https://blog.naver.com/winterwolfs/10180231956

 

[Unity] Camera 카메라

  = Camera 카메라       3차원 정보를 2차원으로 변환해서 화면에 출력을 ...

blog.naver.com

 

참조 : https://docs.unity3d.com/kr/2018.4/Manual/CamerasOverview.html

 

카메라 - Unity 매뉴얼

Unity에서는 3차원 공간에서 오브젝트를 정렬하고 움직이는 것으로 씬을 생성합니다. 그러나 뷰어의 스크린은 2차원 평면이기 때문에 뷰를 캡처한 뒤 디스플레이를 위해 “평면화” 시킬 방법이

docs.unity3d.com

https://docs.unity3d.com/kr/2022.3/Manual/class-Camera.html

 

Camera 컴포넌트 - Unity 매뉴얼

카메라 는 월드를 캡처하여 플레이어에게 보여주는 장치입니다. 카메라를 커스터마이즈 및 조정하여 게임의 프레젠테이션을 독창적으로 만들 수 있습니다. 하나의 씬에 카메라를 원하는 만큼

docs.unity3d.com