Graphics

[Graphics] vertex, face, normal란 무엇인가?

dev_hyunn 2025. 3. 18. 21:42

오늘 다루어볼 주제는 Graphics에서 3D 오브젝트의 각 요소들에 대해서 다루어 보겠습니다.

이 주제를 선정하게된 계기

타 부서 사람들과 협업을 해보면서 Graphic을 잘 모르는 사람들에게 vertex, face, normal를 설명할 수있는가? 라는 질문을 스스로에게 해보았을 때 머리로는 이해하지만, 설명할 수없는 것은 아직 지식이 부족하다라는 것이라고 이해하고 한번 정리해보고자 시작하게 되었습니다. Vertex, line, Mesh, face, normal 뿐만아니라 MVP : Model, View, Projection Matrix의 내용까지 한번 이어서 정리해보겠습니다.

 

Vertex

3D 상에서 오브젝트의 가장 기본이 되는 단위 : 정점, 점
위치, 색상, 법선 등 다양한 정보를 가지고 있음.

 

여기서 법선?이란

법선이라는 말을 들어보면 고등학교 때 많이 들어본, 법선 벡터라는 용어가 기억에 남을 겁니다. 여기서도 같은 개념인데요. 법선은 해당 점의 수직인 선을 의미합니다. 점을 기준으로 해당 점이 바라보고 있는 방향(수직)선의 정보를 포함하고 있다는 뜻입니다.

 

Line(Edge)

점과 점이 이어져 라인이 만들어 지듯이 하나의 선을 의미

 

Face, Polygon

면, 다각형이라는 사전적인 의미에서, 정점 이 모여서 Line이 되고,
Line이 모여서 삼각형(Polygon)이 되며 이를 Face 면 이라고 부릅니다. 

 

Mesh

Mesh와 Polygon, Face 각 용어들을 살펴보면 유사한점이 많은데요. 세가지의 용어 모두 면이라는 의미를 내포하고 있습니다. Graphics에서 Mesh를 Face 와 Polygon을 포함하는 의미로 많이 사용하고 있는 것 같습니다.
아래 이미지를 참고해보면 다음과 같습니다.

Polygon이 모여서 하나의 Mesh 혹은 더큰 Polygon

 

모든 Mesh는 여러개의 삼각형으로 이루어 지게 됩니다. 이미지와 같이, 사각형은 두개의 삼각형, 4개의 정점으로 이루어지게 되고, 오각형은 3개의 삼각형, 5개의 정점으로 이루어지게 됩니다. 이를 3D로 확장하게되면 아래와같은 이미지가 나타나게 됩니다.

Blender에서의 3D Cube

이미지를 확인해보면 하나의 Cube를 렌더링하기 위해서, 6개의 Mesh, 8개의 Vertex, 12개의 Edge(Line)를 활용하여 하나의 온전한 Cube를 표현하게 됩니다. 여기서 각 Vertex의 위치정보가 변경되어 이미지 기준 위쪽 면에 있는 Vertex가 이동하게되면, Mesh, Line 또한 같이 변화하게 됩니다.

 

해당 이미지에서 Normal만 아직 설명하지 못했는데요. 아래에서 이야기해보겠습니다.

 

Normal

3D에서 Normal이란, 3개의 Vertex를 활용하여, Mesh를 형성한다고 위에서 이야기하였습니다. 이 때 해당 Mesh는 두개의 방향의 면을 형성하게되는데요. 3D 에서 두개의 면을 모두 렌더링하게 되면 의도하지않은 부분까지 렌더링을 하게됩니다. 이렇듯 해당면이 바라보고있는 방향을 Normal이라고 표현합니다. 한쪽면만 렌더링을 하게되면 두개의 면을 렌더링하는 것에 비해 1/2의 자원으로 렌더링이 가능합니다.

 

Normal을 조금더 확장하면 아래와 같은 개념을 이야기할 수있습니다.

  • 노멀 벡터: 3D 공간에서 어떤 면(또는 버텍스)이 “수직으로 뻗어 있는 방향”을 설명하기 위한 단위 벡터입니다.
  • 조명 계산: 면(또는 점)의 노멀 벡터와 광원(Light)이 이루는 각도를 통해, 해당 영역이 빛을 얼마나 받는지 계산하게 됩니다.
  • 반사/굴절 계산: 화면에 반사광, 굴절 효과 등을 표현할 때는 표면의 노멀 벡터가 핵심적인 역할을 합니다.

조명 계산

  • 면의 노멀 벡터와, 빛이 들어오는 광원의 방향에 따라 해당 영역(Mesh or Vertex)가 빛을 얼마나 받는지 계산하게 됨.

여기서 의문점??

바로아래 이미지와같이 면이 기울어져도 들어오는 Lighting의 광원이 같으면 해당 영역에 빛의 크기는 같은것이 아닌가? 라는 생각을 하게되었습니다.

위 의문점은 수학적 근거에 따라 아래 수식이 도출됩니다.

 

  • 면에 입사하는 빛의 양은 면의 노멀과 광원 방향 간 각도에 따라 달라집니다.
  • 두 벡터(노멀, 라이트)가 이루는 각도 θ가 클수록(즉, 면이 기울어질수록) cos(θ) 값이 작아집니다.
  • 램버트 반사(Lambertian Reflection) 모델 등 기본 셰이딩 공식에 따르면,
    조명 세기 I = kd × (N • L)
    (N • L은 노멀과 라이트의 내적)
  • 따라서 동일한 빛 세기가 위에서 ‘수직’으로 들어와도, 면이 기울어져 있을 때는 내적 결과가 작아져 실제로 빛을 받는 면의 조명 값이 감소합니다.

위의 내용은 수식에 관한 이야기이고, 일상생활에서 확인해본다면 종이에 손전등을 한번 수직, 45도, 60도로 표현하면서 빛을 얼마나 받게되는지 알아볼 수있을것 같습니다.