| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- boj
- blender
- CS
- Photoshop
- 카드뉴스
- csharp
- level1
- leetcode
- 프로그래머스
- 3d모델링
- c언어
- 단계별문제풀이
- 블렌더튜토리얼
- AI
- 단계별로 풀어보기
- 알고리즘
- 3D그래픽
- blender4.0
- 도넛튜토리얼
- 파이썬
- 블렌더도넛
- 백준
- 포토샵
- cs기초
- Python
- 자바스크립트
- 3d스터디
- 블렌더
- 코딩테스트
- 비트연산
- Today
- Total
슬로우도파민
[유니티 그래픽스] Vertex 직접 찍어서 Quad 그리기 본문
유니티에서 버텍스를 사용하여 직접 Quad를 그려봄으로써,
랜더링의 전반적인 단계들과, 유니티에서는 랜더링 과정을 어떻게 돕고 있는지 알아보았다.
코드는 여기
https://github.com/eunchaeee/unity-snippets/tree/main/Assets/Graphics/DrawVideoPlayer
아래의 유니티 공식 도큐를 참고하여 작성하였다.
Unity - Manual: Example: creating a quad
Unity - Manual: Example: creating a quad
Level of Detail (LOD) for meshes Example: creating a quad To represent flat surfaces, Unity includes the Plane and QuadA primitive object that resembles a plane but its edges are only one unit long, it uses only 4 vertices, and the surface is oriented in t
docs.unity3d.com
메시 랜더링에 필요한 모든 과정을 직접 해보기 위해, Empty GameObject에 QuadCreator.cs 를 붙이면 Quad가 그려질 수 있도록 작성하였다.
Start 함수 안에 순차적으로 코드를 작성하였다.
다음은 그 설명이다.
1. Mesh Filter 붙이기
Mesh Filter의 역할
- 메시를 갖고 있음.
- 메시를 화면에 렌더링하기 위해 메시 렌더러에 전달.
2. Mesh Renderer 붙이고 Material 부착하기
Mesh Renderer의 역할
Material은 Universal Render Pipeline/Lit 쉐이더를 사용해 만들어주었다.
Material
머터리얼에 사용하는 셰이더에 따라 머터리얼의 설정 옵션들이 결정된다.
텍스처에 대한 레퍼런스, 타일링 정보, 컬러 틴트 등을 포함한 표면 랜더링 방법이 정의된다.
3. Mesh 생성
4. Vertices 찍기 (정점 찍기)
Vertices 는 그래픽스 공간에서 정점을 뜻한다.
Vector3 배열에 원하는 정점들을 찍어준다.
5. Triangle 그리기
mesh.Triangles
메시가 갖고있는 모든 삼각형을 나열한 배열.
따라서 triangles 배열의 크기는 3의 배수이다.
여기서 버텍스 인덱스는 시계방향으로 적어줘야한다..!
보통 그래픽스에서 반시계 방향으로 적어야 벡터의 외적을 따라 내가 보는 면이 앞면이 되는데,
유니티에서는 시계 방향으로 정의되면 무조건 앞면이라고 한다.
6. normal 정보 입력
normal 정보는 버텍스에 수직인 방향을 뜻한다.
노멀 벡터의 방향이 앞면(랜더링 되는 면)이다.
카메라가 보는 방향이 Vector3.forward이므로, 카메라를 마주보도록 Vector3.back으로 설정해 주었다.
normal 벡터 정보는 따로 설정해주지 않아도 괜찮다.
7. uv 정보 입력
uv 는 각각의 버텍스가 텍스처의 어느 위치를 랜더링하면 되는지를 나타내는 정보이다.
텍스처 매핑에 사용되며 Vector2로 나타낸다.

언리얼은 DirectX 방식을, 유니티는 OpenGL 방식을 따라 매핑하면 된다.
8. 만든 Mesh를 meshFilter.mesh 에 넣어준다.
9. Quad 그리기 성공!

'개발기록 > Unity 유니티' 카테고리의 다른 글
| 유니티 Input (GetAxis, GetAxisRaw) (0) | 2024.02.10 |
|---|---|
| 유니티 UnlitShader 코드 분석(렌더링 파이프라인 기반) (1) | 2024.01.31 |
| 유니티 아키텍쳐 (0) | 2024.01.18 |
| 쉐이더(Shader) 와 랜더링 파이프라인(Rendering Pipeline) (2) | 2024.01.18 |
| [유니티 꿀팁] 유니티가 에디터랑 연결이 안 될때 해결방법 (0) | 2021.10.23 |

