1. 메쉬 ( Mesh )
폴리곤 메쉬는 3차원 컴퓨터 그래픽스에서 다면체의 형태를 구성하는 폴리곤과 정점들의 집합을 의미한다.(위키) 메쉬의 요소들은 Vertex (Vertices) , Edge, Face 등이 있다.
- Vertex : 좌표상의 한 점
- Edge : 두 Vertices을 연결한 선.
- Face : Vertices을 연결한 면
- …
유니티에서 이러한 정보를 생성하고, 수정하도록 하는 클래스가 메쉬이다. 메쉬는 Face를 구성하는데 최소 3개의 Vertices가 필요하다. 유니티는 삼각형을 기준으로 메쉬를 구성한다. 위의 사진에서는 4개의 Vectices로 페이스를 구성하고 있다. 유니티에 파일을 임포트 하면, 유니티 시스템에 의해 자동으로 유니티에 맞는 메쉬로 변환된다.
※ 임포트 한 메쉬 데이터가 정확하지 않다면, 문제가 발생할 수 있다.
Sword 파일을 다운로드하여 압축을 푼 후 , Sword_Great.fbx 파일과 Sword.png 파일을 임포트 한다.
메쉬의 임포트는 파일을 유니티의 Project View로 드래그하면 된다.
임포트 한 파일의 메쉬를 선택하면, 삼각면( Triangle )으로 이루어진 메쉬를 확인할 수 있다.
메쉬도 데이터이다. Vertex가 많으면 많을수록 화면에 출력하는데 더 많은 시간이 요구된다. 하지만 Vertex가 많아질수록 오브젝트의 퀄리티는 상승한다.
위의 파일을 다운로드하면 Weapon.obj파일이 있다. .obj 파일을 크롬 유저 기준 구글 크롬으로 드래그하면, 메쉬 데이터를 볼 수 있다. 간단한 폴리곤 메쉬인데도, 상당히 많은 데이터를 포함하고 있다.
2. 머티리얼( Material )
유니티에서 머티리얼 관리는 메쉬 렌더러에서 한다. 메쉬 렌더러는 MeshFilter 또는 TexeMesh에 의해 삽입되는 메쉬를 렌더링 한다. 머티리얼은 색상, 질감 등의 데이터이다. 머티리얼의 데이터를 이용해, 메쉬를 재질이 있는 형체가 있는 물체로 만든다.
위의 다운로드 파일을 유니티 프로젝트에 등록하였다면, 머티리얼을 추출한다.
Sword_Great ➝ Materials ➝ Extract Materials 선택
추출된 머티리얼을 선택하고, Albedo에 Sword.Png 파일을 등록한다.
Sword_Great의 색상이 변경되는 것을 확인할 수 있다.
머티리얼을 수정하여, 메쉬( 게임 오브젝트)에 다양한 연출을 한다.
Shader : 셰이더는 그래픽 카드가 실행하는 코드와 명령이 포함된 렌더링 효과를 계산하는 데 사용하는 에셋이다. 셰이더는 머티리얼를 기반으로 물체의 색상이나 텍스쳐를 설정한다. 유니티는 몇 가지 내장 셰이더를 제공한다. 자신의 고유한 셰이더를 작성하여, 사용도 가능하다.
Albedo : 기본 색상이다. 텍스처(Texture) 를 등록하여, 게임 오브젝트의 색상을 설정할 수 있다. 텍스쳐의 정보는 Mesh에 정의되어 있다. Mesh에 정의된 데이터를 기반으로 색상을 설정한다.
Metallic : 표면을 철과 같은 금속 재질로 표현하는 정도로 0~1사이의 값을 설정할 수 있다. 메탈 텍스처를 만들어 등록할 수도 있다. 1의 값일 때에는 주변 환경이 반사된 색상을 표면 색상에 적용하여, 완전한 다른 색으로 표현될 수 있습니다.
Smoothness : 앞서 설정한 메탈릭 속성에 영향을 받지 않는, 표면의 부드러움을 나타낸다. 0은 매우 거친 표면에 가깝고, 1은 매우 평평한 표면이다. 거친 표면은 빛을 여러 각도로 반사하여, 표면의 색이 거칠게 표현된다. 먼지가 쌓인 거울과 잘 닦여진 거울을 예로 들 수 있다.
Normal Map : 노말 맵은 범프 맵(Bump Map)의 하나로 폴리곤의 법선 벡터의 값을 사용하여 입체감 및 질감을 구현한다. 튀어나온 곳과 움푹 들어간 곳의 빛의 굴절을 왜곡시킨다.
Height Map : 노말 맵의 개념과 유사하다. 그러나 노말 맵보다 더 복잡하며, 더 높은 성능을 요구한다. 회색조( Grayscale ) 이미지로 흰색과 검은색으로 표현되는 이미지이다. 흰색은 빛의 감도가 높고, 검정은 감도가 낮은 영역이다.
Occlusion : 오클루전 맵은 주변광, 반사광과 같은 간접적인 빛의 정도를 나타낸다. 오클루전 맵은 회색조 이미지로 디자인되어, 흰색 영역은 간접적인 빛에 영향을 받는 부분이 강하며, 검은색 영역은 간접적인 빛에 영향을 받지 않는다.
Emission : 표면이 방출하는 광원이다. 빛나는 물체를 표현하는데 사용한다. 광원을 사용하려면 체크(√)한다. 추가 옵션으로 광원 색상 및 광역 일루전 (Global illusion) 설정이 있다. 색상은 광원의 색을 설정하며, 광역 일루전은 물체가 방출하는 광원이 주위 오브젝트에 영향을 미치는지와 연관이 있다.
- Realtime은 전역 광원에 추가되어 동적으로 움직이는 주변 오브젝트에 영향을 준다.
- Baked는 정적인 오브젝트에만 영향을 주도록 설정한다.
- None은 주변 영역에 영향을 주지 않는다.
Tiling : 머티리얼을 사용하는 오브젝트와의 일대일 비율로 적용할지를 설정한다. 값을 증가시키면, 타일 맵처럼 머티리얼이 여러개를 사용한 것처럼 대상 오브젝트에 적용된다.
Offset : 기준점이다. 실제 Offset을 변경하여, 마치 물체의 표면이 움직이는 것과 같은 효과를 줄수있다.
참조
메쉬
https://docs.unity3d.com/kr/530/ScriptReference/Mesh.html
메쉬 렌더러
https://docs.unity3d.com/kr/2018.4/Manual/class-MeshRenderer.html
위키 -폴리곤 메시
https://ko.wikipedia.org/wiki/%ED%8F%B4%EB%A6%AC%EA%B3%A4_%EB%A9%94%EC%8B%9C
머티리얼
https://docs.unity3d.com/kr/530/ScriptReference/Material.html
머티리얼 파라메터
docs.unity3d.com/Manual/StandardShaderMaterialParameters.html
위키 Obj 파일
https://en.wikipedia.org/wiki/Wavefront_.obj_file#Vertex_normal_indices
'유니티 > 기초' 카테고리의 다른 글
유니티 UI 리스트 뷰 (List View) (0) | 2020.11.18 |
---|---|
유니티 스프라이트 (Sprite) (0) | 2020.11.06 |
유니티 안개(Fog) (0) | 2020.11.06 |
유니티 스카이박스 ( Skybox ) (0) | 2020.11.06 |
유니티 카메라 ( Camera ) (0) | 2020.11.05 |