게임을 하려면 여러 요소가 필요하다. 맵, 오브젝트, 플레이어 등등. 이러한 요소들을 게임엔진에서 구현하려면 3D 모델링 툴에서 모델링을 하여 가져와야 한다. 그런데 이런 모델링 하나만 가지고는 좋은 그래픽을 지원하는 게임을 만들기 힘들다. 그렇다면 좋은 그래픽을 지원하려면 어떠한 것들이 필요할까? 크게 네가지로 나누어 보았다.
Texture, Shader, Material, Mesh
1. Texture
텍스쳐도 여러 종류의 텍스쳐가 있다. 물체의 색, 질감, 투명도 등을 텍스쳐에 담아 표현할 수 있다. 아래 사진은 한 에셋 사이트에서 돌 에셋을 받아왔을 때 그 돌에 들어있는 텍스쳐들이다. (해당 에셋 링크는 글 마지막에 첨부) 순서대로 Albedo, Emission, Metallic, Normal 텍스쳐 이다. 이러한 텍스쳐들을 이용해 원하는 색, 질감 등을 표현할 수 있다. 고해상도의 텍스쳐를 사용할수록 모델링을 더욱 섬세하게 표현할 수 있다.
2. Shader
셰이더는 조명 입력과 머티리얼 설정에 따라 렌더링된 각 픽셀의 컬러를 계산하여 물체를 보여준다. (자세한 설명은 이 블로그의 유니티 Shader입문 참고) 셰이더는 이러한 텍스쳐들을 이용해 Material를 만들어 보여줄 수 있다. 아래 예시는 매우 간단하게 위 텍스쳐들을 Base Color, Nomal, Emission, Metallic에 연결해준 상태이다. 이러한 셰이더를 이용하면 해당 값들을 자유자제로 바꾸어주며 기존 모델링을 더욱 멋지게 표현할 수 있을 것이다. (해당 내용에 대해서는 다른 글에서 더 자세하게 설명해 보겠다.)
3. Material
https://docs.unity3d.com/kr/530/Manual/Shaders.html
유니티 공식문서 에서는 Material에 대해 이렇게 설명하고 있다. 쉽게 말해서 게임 내에 구현한 물체를 렌더링 하는 방법을 말한다. 이 Material은 텍스쳐와 셰이더로 만들어진다. 유니티에서 우클릭을 하여 Material를 만들어보자. 그럼 아래 사진처럼 나올 것이다.
1 - 해당 Material에 적용될 Shader에 대한 정보이다. 기본값은 Lit 셰이더 이고 해당 값을 바꿔주어 내가 작성한 셰이더나 다른 셰이더를 적용할 수 있다.
2 - Material에 대한 설정이다. 불투명, 반투명, 빛, 그림자 적용 유무 등을 설정할 수 있다.
3 - 텍스쳐를 넣는 곳이다. 해당 회색 네모에 텍스쳐를 넣어서 Material에 적용할 수 있다.
4 - 3에서 넣은 텍스쳐의 세부 값을 조정할 수 있다. 색, 투명도, 얼마나 적용할지 등 다양한 값들을 적용할 수 있다.
아래는 해당 값들을 일부 적용한 예시사진이다.
4. Mesh
Mesh는 쉽게 말해 모델링이다. 블랜더같은 모델링 툴에서 만들 수 있다. 아래 사진은 위에서 보여준 에셋에 Material을 적용하기 전 모습이다. 이렇게 Material을 적용하기 전까진 밋밋하다.
폴리곤은 Mesh를 구성하는 최소 면단위 이다. 기본적으로 삼각형 단위이며 유니티에서는 사각 폴리곤도 지원한다. 이런 폴리곤이 많아질수록 Mesh가 더욱 섬세해지고 그럴수록 모델링이 섬세해진다. 그래서 폴리곤이 많을수록 그래픽이 더욱 좋아지지만 PC에 부담이 커진다. 뒤에서 더 다루겠지만 언리얼에서는 나나이트 이라는 기술을 이용해 이러한 폴리곤을 수백 수억개씩 가진 오브젝트들을 처리할 수 있다.
https://docs.unity3d.com/kr/530/Manual/class-Mesh.html
에셋링크
https://sketchfab.com/3d-models/flying-rock-cad71f88ac4e4f1c852fc93fb2fb6035
'Shader' 카테고리의 다른 글
모델링 표현 - 2 (언리얼이 그래픽이 더 좋은 이유) (0) | 2023.01.12 |
---|---|
유니티 Shader Graph 입문 (0) | 2023.01.09 |