유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu

유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu

Skybox에 6side를 사용할때 하늘을 움직이게 하고 싶을 때가 있다.
간단하게 움직이는 방법으로 6side material의 Rotation부분을 조절하면
0~360도 까지 조절이 가능하다.

스크립트에서 흐르는 것을 표현하려면
Update나 Coroutine를 사용하는 부분에서

RenderSettings으로 접근하면 된다.
RenderSettings.skybox.SetFloat("_Rotation", float);
이렇게 사용하면 해당 각만큼 배경이 회전한다.

쓸일은 거의 없겠지만 
MeshRenderer 에서 6side를 사용한 경우
MeshRenderer .material.SetFloat("_Rotation", float);
의 동일한 방법으로 사용 할 수 있다.


※이 방법은 기본적으로 좌우(y축)로만 회전된다.

메시 파티클 이미터(레거시 파티클 시스템)는 어떻게 만듭니까?

스카이박스는 어떻게 만듭니까?

스카이박스(Skybox) 는 게임의 모든 그래픽스 뒤에 그리는 6면체입니다. 스카이박스를 만드는 절차는 다음과 같습니다.

  • 스카이박스의 6개 면에 각각 해당하는 텍스처를 6개 만들어 프로젝트의 Assets 폴더에 넣습니다.
  • 각 텍스처마다 랩 모드를 반복(Repeat) 에서 클램프(Clamp) 로 변경해야 합니다. 변경하지 않으면 에지의 컬러가 일치하지 않게 됩니다.
유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu
  • 메뉴 모음에서 에셋(Assets)->생성(Create)->머티리얼(Material) 을 선택하여 새 머티리얼 을 만듭니다.
  • 인스펙터(Inspector) 상단에서 셰이더 드롭다운을 선택하고 Skybox/6 Sided 를 선택해야 합니다.
  • 머티리얼의 각 텍스처 슬롯에 텍스처를 6개씩 할당해야 합니다. 이렇게 하려면 각 텍스처를 Project View 에서 해당 슬롯으로 드래그해야 합니다.
유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu

이 스크린샷의 텍스처는 4.x StandardAssets/Skyboxes/Textures 폴더에서 가져왔습니다. 이 텍스처는 이미 스카이박스에서 사용되고 있습니다.

작업 중인 씬에 스카이박스를 할당하려면:

  • 메뉴 모음에서 창(Window)->조명(Lighting) 을 선택해야 합니다.
  • 표시되는 창에서 씬 탭을 선택해야 합니다.
  • 새 스카이박스 머티리얼을 스카이박스(Skybox) 슬롯으로 드래그해야 합니다.
유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu

메시 파티클 이미터(레거시 파티클 시스템)는 어떻게 만듭니까?

스카이박스

스카이박스 는 전체 씬을 둘러싸는 래퍼로 지오메트리 너머의 월드가 어떻게 생겼는지를 보여줍니다.

유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu

프로퍼티

프로퍼티:기능:
Tint Color 틴트 컬러입니다.
Exposure 스카이박스의 밝기를 조정합니다.
Rotation 양의 Y축으로 스카이박스의 회전을 변경합니다.
Front, etc 스카이박스를 저장하는 데 사용된 큐브 각 면의 텍스처입니다. 이런 텍스처를 정확한 슬롯에 적용하는 것이 중요합니다.

세부 정보

스카이박스는 전체 씬을 렌더링해 수평선에 다양한 배경이 있어 보이게 합니다. 내부적으로 스카이박스는 모든 불투명한 오브젝트 뒤에 렌더링됩니다. 그리고 이를 렌더링하는 데 사용되는 메시는 여섯 개의 텍스처가 있는 박스 또는 테셀레이트된 구체입니다.

스카이박스를 실행하려면 스카이박스 머티리얼을 생성합니다. 그런 다음 Window->Lighting 메뉴 아이템을 활용하고 씬 탭에서 스카이박스 머티리얼을 스카이박스로 지정해 씬에 추가합니다.

디폴트 스카이박스를 오버라이드 하려면 카메라에 Skybox Component 를 추가하면 유용합니다. 예를 들어 두 대의 카메라를 사용해 분할 화면 게임을 만들고 두 번째 카메라가 다른 스카이박스를 사용하는 경우를 생각해보겠습니다. Skybox 컴포넌트를 카메라에 추가하려면 카메라를 클릭해 강조 표시하고 Component->Rendering->Skybox 로 이동합니다.

새로운 스카이박스를 생성하려면 이 가이드를 참고합니다.

유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu
One of the default Skyboxes found under Standard Assets->Skyboxes

힌트

  • 카메라에 스카이박스를 할당할 때 카메라의 Clear mode 를 Skybox로 설정합니다.
  • 포그의 컬러를 스카이박스 컬러에 맞추는 것이 좋습니다. 포그 컬러는 라이팅 창에서 설정할 수 있습니다.

1. 스카이박스 (Skybox)

스카이박스는 유니티 씬(Scene) 화면의 백그라운드 이미지이며, 플레이 화면의 백그라운드 이미지이다. 스카이박스는 전체 씬을 둘러싸는 래퍼로 지오메트리 너머의 월드가 어떻게 생겼는지를 보여줍니다.

스카이박스는 모든 그래픽 뒤에 그려진다. 카메라에 비치는 영역에 이미지가 있다면, 스카이박스는 보이지 않는다. 게임 오브젝트가 없는 지역을 스카이박스로 채운다. 스카이박스를 사용하여, 투명한 영역을 처리하는 방법은 카메라의 Clear Flags 설정에 따른다.

스카이박스는 게임 월드를 시각적으로 아름답게 꾸며주는 요소이다. 스카이박스도 게임오브젝트의 하나이며, 회전, 색상, 밝기 조절 등이 가능하다. 스카이 박스는 몇 가지 수정 가능한 프로퍼티를 제공한다.

Tint Color 틴트 컬러입니다.
Exposure 스카이박스의 밝기를 조정합니다.
Rotation 양의 Y축으로 스카이박스의 회전을 변경합니다.
Front, etc 스카이박스를 저장하는 데 사용된 큐브 각 면의 텍스처입니다. 이런 텍스처를 정확한 슬롯에 적용하는 것이 중요합니다.

2. Camera Clear Flags 

카메라는 화면을 렌더링 할 때 색상(Color) 및 깊이(Depth)를 저장한다.  여기서 깊이는 카메라와 디스플레이된 게임 오브젝트 간의 거리이다. 색상은 게임 오브젝트의 색 정보이다. 

메인 카메라 설정의 Clear Flags을 변경하여, Skybox 사용 또는 단순 색상을 사용할지 등을 설정할 수 있다. 

Skybox : 스카이 박스를 사용하여, 화면의 백그라운드를 설정한다.

Solid color : 단일 색을 사용하여, 화면의 백그라운드를 설정한다.   

Depth only :  화면에 카메라가 두 대 이상 존재할 때 사용한다. 카메라는 새 프레임을 렌더링 할때, 이전 프레임의 색상 정보는 유지하고, 깊이 정보는 지운다. 이는 새 오브젝트들은 이전 오브젝트들의 위에 렌더링 된다는 것을 의미한다. FPS 게임에서 캐릭터가 매우 가깝게 벽에 근접하였을 때, 벽 너머로 총을 렌더링 하는 것을 방지하도록 해준다.  

Don't Clear :  새 프레임을 렌더링할 때 색상 정보와 깊이 정보를 유지한다. 이전 프레임의 정보를 지우지 않는 것은, 잔상 효과를 만드는 데 사용할 수 있다.

유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu
Camera Clear Flags

아래 Camera Preview 이미지는 게임을 플레이했을 때, 보이는 백그라운드 화면이다. 왼쪽은 스카이박스가 적용된 모습이며, 오른쪽은 Clear Flags 설정을 Solid Color 하면 보이는 화면이다. 가운데 존재하는 물체를 제외한 모든 영역에 스카이박스 또는 단순 색상으로 표현된 것을 보여준다.

Clear Flags 설정의 Solid Color는, 카메라의 Background 설정 값이다. 

유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu
Camera Preview

3. Skybox 생성

스카이 박스를 생성하기 위해서는 6개의 Texture가 필요하다. 새로운 머티리얼을 생성하고, Shader를 스카이박스로 변경한다. 유니티에서 제공하는 스카이박스 쉐이더는 6 Sided, Cubemap, Panoramic, Procedual 4종류가 있다. 

텍스처의 랩 모드(Wrap mode)는 클램프(Clamp)로 설정해야 한다. 변경을 하지 않으면 에지의 컬러가 일치하지 않는다.

Skybox_Space.zip

0.20MB

위의 파일은 스카이 박스에 대한 이해를 돕기위해 준비한 파일이다. 3개의 텍스처를 준비하였다. 하나의 텍스처는 이어지는 Seamless 형태이다. 파일 다운로드 후 압축을 해제한다.

Project → Mouse Right-Click  Create  Material 생성

생성한 머티리얼을 스카이박스로 수정한다. 

Material Click  Shader  Skybox 6 Sided 선택 

Front, Back, Left, Right 에는 SpaceSide를 등록한다. Up에는 SpaceTop을 등록한다.

Down에는 SpaceBottom을 등록한다. 

4. Skybox 등록 및 해제

스카이박스의 관리는 Lighting Settings에서 한다. Lighting Settings의 Environments에 스카이 정보가 있다.

스카이박스를 등록하려면, Skybox Material이 필요하다. 

스카이박스 등록은 Skybox Material을 Scene View에 드래그하면 가능하다. Scene View에 스카이박스를 등록하는 것은 Lighting Settings에 Skybox material을 등록하는 것과 같다. 

Window → Rendering→ Lighting Settings

등록한 스카이박스를 다시 Default-Skybox로 되돌리는 방법은 Lighting Settings에서 한다.

Skybox Material을 선택하고, Default-Skybox를 선택한다.

Lighting Settings에서 Skybox Material을 선택하여, 스카이박스를 수정한다. 

유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu

5. 스카이박스 in Script

스카이박스는 스크립트에서 동적으로 수정할 수 있다.  RenderSettings class는 스카이박스에 대한 정보를 포함하고 있다. RenderSettings는 skybox 정보뿐만 아니라, 라이트(Light), 안개(Fog) 정보와 같은 씬의 시각적인 요소의 범위를 설정하기 위한 값들을 포함합니다. RederSettings는 정적 변수로 시스템 전반에 걸쳐 유지됩니다. 

public class ChangeSkybox : MonoBehaviour
{
  // 스카이박스 머티리얼
  public Material skyboxMaterial;
  
  void Start()
  {
      // 머티리얼 등록
      RenderSettings.skybox = material;
  }
}

참조

docs.unity3d.com/kr/530/Manual/HOWTO-UseSkybox.html

유니티 - 매뉴얼: 스카이 박스는 어떻게 만듭니까?

How do I Import Alpha Textures? 메쉬 파티클 이미터(Particle Emitter)는 어떻게 만들 수 있습니까? (레거시 파티클 시스템) 스카이 박스는 어떻게 만듭니까? Skybox는 게임의 모든 그래픽 뒤에서 그려지는 6면

docs.unity3d.com

docs.unity3d.com/kr/2018.4/Manual/class-Skybox.html

스카이박스 - Unity 매뉴얼

스카이박스(Skyboxes) 는 전체 씬을 둘러싸는 래퍼로 지오메트리 너머의 월드가 어떻게 생겼는지를 보여줍니다.

docs.unity3d.com

유니티 움직이는 스카이박스 - yuniti umjig-ineun seukaibagseu