2016년 8월 19일 금요일

유니티 메터리얼(Material)

유니티를 처음 배우는 사람들에게 있어서 첫 번째 난관은 Cube의 색깔을 바꾸는 것입니다.
선택한 GameObject의 속성을 관리하는 Inspector 창을 아무리 들여다봐도 색깔과 관련된 속성을 찾을 수 없어서 난감한 경우가 있을 것입니다.
이번에 포스팅할 주제는 바로 매터리얼(Material)이며 이것을 통해서 색깔을 포함한 여러가지 비주얼 효과를 표현하는 방법을 다루겠습니다.

우리가 흔히 다루는 포토샾이나 그림판같은 그래픽 도구는 2D용 입니다. 2D라는 말에는 다음과 같은 개념이 내포되어 있습니다.
  • X(가로)와 Y(세로)축으로 데이터가 표현된다.
  • 각 점은 픽셀(Pixel)이라 부르며 Color를 표현하는 포맷(Format)을 가진다.
  • 빛에 대한 영향(그림자, 반사 등)은 없다.

이 개념에서 기억해야 할 것은 빛에 대한 영향이 없다는 것입니다. 즉, 2D는 고유한 Color값이 결정되고 외부 영향에 의해 변경되지 않는다는 뜻입니다.
하지만, 이것이 3차원으로 넘어오면 이제까지 없었던 빛(Light)이라는 개념이 생겨서 같은 Color라 하더라도 보여지는 각도에 따라 다르게 표현되어야 한다는 이슈가 생깁니다.
이런 3차원에서 빛 영향에 대한 처리를 렌더링(Rendering)이라 부릅니다.
3D에서는 같은 색깔도 빛에 의해 다르게 보여진다.

렌더링을 효과적으로 처리하기 위해 3D 물체의 표면에 대한 정보를 별도로 관리하는데, 이 정보를 메터리얼(Material)이라 부릅니다.
따라서, GameObject의 색깔을 바꾸려면 바로 메터리얼(Material)을 찾아야 합니다.
메터리얼을 찾으려면 먼저, 메터리얼을 사용하는 컴포넌트인 Mesh Renderer를 찾아야 합니다.
Mesh Renderer는 말 그대로 3D 물체의 보여짐을 처리하는 컴포넌트입니다.

Mesh Renderer의 속성 중 Materials란 것을 찾을 수 있고 여기에 Material이 적용된 것을 알 수 있습니다. Mesh Renderer는 여러개의 Material을 가질 수 있기때문에 Size를 변경하여 이를 설정할 수 있지만, 일반적으로는 1개만 사용합니다.

메뉴에 의해 생성된 Cube는 기본 메터리얼을 갖고 있는데, 이 기본 메터리얼은 변경할 수가 없습니다. 따라서, 새 메터리얼을 만들어서 다시 적용해야 합니다.
메터리얼은 Project 창에서 만들어야 하는데, 그 이유는 메터리얼은 파일이기 때문입니다.

메뉴를 통해 메터리얼을 만들면 Project 창에 새로 만든 메터리얼이 보일 것이고, 그것을 선택하면 Inspector 창에 메터리얼 속성 메뉴를 볼 수 있습니다.

유니티의 메터리얼에는 아주 많은 속성이 있는데, 이것을 다 다룰 줄 안다면 아주 훌륭한 품질의 그래픽 결과물을 낼 수 있습니다.
우선, 가장 간단하게 색깔을 변경하기 위해서는 Albedo라는 속성의 Color를 바꾸면 됩니다.
이렇게 바꾼 메터리얼을 적용할 Cube의 Mesh Renderer에 넣어줘야 실제로 Cube의 색깔이 바뀌게 됩니다.
메터리얼의 속성에 대해 다루는 것은 너무 방대하여 이 포스트에서 끝낼 수 없습니다.
다만, 더 많은 것을 알고싶은 분들은 유니티에서 공식적으로 만든 튜토리얼 영상을 보시면 많은 도움이 될 것입니다. (영상 바로가기)

메터리얼을 언급할 때 빠지지 않고 같이 등장하는 용어는 텍스처(Texture)입니다.
이것에 대해 잠깐 설명하겠습니다.
텍스처는 3D 물체에 입혀지는 그림을 의미합니다.
일반 그림과 달리 UV맵이라 부르는 그림이 3D 물체에 입혀지는 방법에 관한 정보와 함께 사용됩니다.
3D 모델에 UV맵 정보로 이미지가 입혀지는 예

이 텍스쳐를 잘 활용하면 색깔보다 더 실감나는 3D 물체를 표현할 수 있습니다.
텍스쳐 적용 방법에 대한 유니티 공식 튜토리얼 영상을 보시면 많은 도움이 될 것입니다. (영상 바로가기)

마지막으로 메터리얼과 함께 항상 등장하는 용어는 바로 쉐이더(Shader)입니다.
쉐이더는 빛을 처리하는 방법을 의미하며 가장 그래픽을 화려하게 표현할 수 있는 기능입니다.
이런 실감나는 그래픽은 모두 쉐이더를 이용해서 표현됩니다.

쉐이더는 GPU라 부르는 그래픽 카드의 처리기에서 작동하는 프로그램이기때문에 쉐이더 프로그래밍이란 말이 더 많이 사용됩니다.
예전에는 쉐이더를 만들기 위해서는 쉐이더 언어를 배워야했고, 쉐이더 프로그래밍을 해야만 했습니다.
그러나, 유니티에서는 가장 일반적이고 성능이 좋은 Standard Shader를 만들어 놓았기 때문에 여러분은 이것을 사용하기만 하면 됩니다.
메터리얼은 처음 생성 시 Standard Shader를 기본으로 선택하게 되며, 메터리얼에 대한 Inspector메뉴는 대부분 Standard Shader를 위한 것입니다.
앞에서와 마찬가지로 이 메뉴에 대한 설명은 유니티 공식 튜토리얼 영상을 보시는 것이 좋습니다. (영상 바로가기)

댓글 없음:

댓글 쓰기