[GGP] 1. Modeling

Cherish·2023년 5월 25일

Game Graphic Programming

목록 보기
1/14
post-thumbnail

☁️ Polygon

Mesh를 이루는 plane shape
폴리곤의 크기가 작을수록 정교한 mesh

  • triangle polygon
    연산이 빨라 real time 에서 많이 쓰임. but 빛 계산에 불리
  • quad polygon
    연산이 느리지만 빛 계산에서 유리하다

☁️ Polygon Mesh

  • implicit way : 잘 사용되지 않는다. 수학적으로 표현할 때 사용 ex) 물리 힘, 유체 등
  • explicit way(polygon mesh)
    삼각형의 군집 / 삼각형의 모든 정보를 모아서 나열 후 rendering

🔎 In typical closed mesh (no hole)

  • 모든 edge는 두개의 face에 공유된다.
  • 모든 face는 3개의 edge를 가진다.
  • Euler's polyhedron formula
    • v - e + f = 2

      v = vertices
      e = edges
      f = faces(면)

    • f = 2v - 4

      = mesh의 크기가 커질 때 vertices의 두배만큼 face가 증가한다.

☁️ LOD (Level of Detail)

  • real time graphic에서 LOD는 핵심
  • polygon의 크기가 작을수록 곡선을 잘 표현하지만 polygon개수가 많을 수록 컴퓨터가 힘들어진다.
  • 중요한 물체에 polygon을 늘리고 멀리있는 물체는 줄이자!

☁️ GPU (Graphics processing unit)

Parallel structure = 병렬 처리에 특화!

CPU에게 일을 받아서 GPU가 계산 처리

  • GPU는 혼자 사용할 수 없다. OS가 올라가지 않아요. 뇌가 없어요
  • CPU가 OS를 돌려서 task를 정리한 후 GPU에게 넘겨주면 GPU가 처리
  • 미리 정보를 받아놓고 한번에 처리
  • 한 clock에 대한 처리는 CPU가 빠르지만, GPU는 여러개를 동시에 처리

  • CPU가 Host Memory에 할 일들 적재 / data bus를 통해 GPU Memory로 task 전달 / GPU core에 넘겨서 해결 / 결과물을 다시 CPU로 보냄 / CPU가 다음 task를 내줌
  • data 교환은 물리적인 선(data bus)을 통해 -> 개선을 위해서는 굵은 선 , 메인보드와 가깝게, 파워 강하게 등이 필요-> but 한계가... 이 이슈를 줄이는 것이 중요

☁️ Polygon Mesh Representation

  • vertex array : vertex의 정보를 담고있는 memory 공간에 쓰이는 자료구조

🔎 LHS vs RHS

  • LHS (DirectX) : 왼손 좌표계 (colum major order)
  • RHS (OpenGL) : 오른손 좌표계 (row major order)

엄지의 방향 = 우리가 바라보는 방향

  • column major order

  • row major order


🔎 Non-indexed representation

  • 불필요한 자료까지 갖게 된다 - vetex 중복

🔎 Indexed representation

  • vertex를 한번씩만 vertex array에 넣는다
  • index array에 index를 기준으로 표기


☁️ Normals

🔎 Surface normals in graphics

  • normal = 표면의 특정지점에서 표면 tangent와 수직인 vector
  • 물체의 밝기 : light direction과 normal at the point 사이 각으로만 계산
    그 외의 것들은 참조 불가능하다.
  • triangle normal과 vertex normal로 분류된다.

🔎 Triangle normal

  • p1,p2,p3는 couter-colockwise(CCW)
  • triangle normal은 cross product를 이용해서 구할 수 있다.
  • 모든 normal vector는 unit vector가 기본이다.

if) CW?

  • normal의 방향이 반대가 된다
  • vertex의 order에 따라 normal 방향이 바뀐다.

🔎 Vertex normal

  • triangle normal = vectex의 위치만 가지고 구함
  • vertex normal = vertex를 공유하는 모든 triangle normal들의 평균
  • vertex array에 vertex normal이 저장됨

🔎 Export & Import

  • obj 파일에 vertex , face 개수 / vertex position들이 저장되어있음
  • example
  • 디자이너들과 xyz좌표나 index번호에서 차이가 있을 수 있음. 이런 차이를 고려해서 프로그래밍을 할 수 있어야 한다.














0개의 댓글