[Project] OpenGL 사용한 3ds MAX 프로그램 만들기

iinnoeyh·2024년 2월 8일

Project

목록 보기
2/2
post-thumbnail
진행기간과목프로젝트명
2022.05.11~2022.06.15컴퓨터그래픽스OpenGL 사용한 3ds MAX 프로그램 만들기
  • 프로젝트 요구사항
  1. 3ds MAX를 사용해서 제작한 3D 모델링 obj 파일을 불러오기
  2. 키보드를 사용하여 카메라 이동(줌-인, 줌-아웃, 좌, 우)
  3. Smooth, Flat Shading
  4. 조명 설치
  5. 3개 이상의 다른 재질 반영
  6. Texture 적용(반영X)

1. OBJ 파일 불러오기

obj 파일을 불러오려면 obj에 저장된 정보의 의미를 알아야 한다. 파일에는 정점, 법선벡터, 텍스쳐, 면의 개수 등 다양한 정보가 저장되어 있다. 일단 이 정보가 뭔지 이해를 해야한다. 파일에 왜 이러한 정보가 들어있고 이게 무슨 역할을 하는지, 이 정보를 이용해서 오브젝트를 어떻게 그릴지... 이해 못하면 원래의 오브젝트를 구경할 수 없을 것이다ㅠㅠ

데이터를 읽어와 각 정보를 각 배열에 저장한다. 법선벡터와 정점을 설정하고 glBegin(GL_TRIANGLES)를 사용해서 삼각형 폴리곤으로 오브젝트를 그린다. 법선벡터를 무시해서 그리면 뾰족한 오브젝트를 볼 수 있다. 알고 싶지 않은 정보였다.

2. 카메라 이동

카메라 조작은 2가지 방법으로 구현할 수 있다. 첫 번째는 카메라를 고정시키고 오브젝트를 이동하기. 두 번째는 오브젝트는 고정되어 있고 카메라가 이동하는 것이다. 본인은 후자를 선택했다.

glViewport 함수를 사용해서 뷰포트를 설정한다. gluLookAt 함수를 사용해서 키보드의 값에 따라서 x, y, z 거리가 변경되도록 했다.

3. Shading

glShadeModel 함수의 기본값은 GL_SMOOTH이다. 매개변수로 GL_SMOOTH와 GL_FLAT를 설정할 수 있다.

glShadeModel(GL_SMOOTH);
glShadeModel(GL_FLAT);


4. 조명

주변 반사광, 확산 반사의 입사광, 경면 반사의 입사광을 조절해서 조명의 색상을 변경하면 된다. glLightfv 함수를 사용하면 된다. glLightfv 함수에 조명의 정보를 설정한 다음, 설정한 조명의 정보를 glEnable 함수로 활성화하면 된다.

GLfloat pos[] = {0.0, 0.0, 0.0, 0.0};
glLightfv(GL_LIGHT1, GL_POSITION, pos);
glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT1, GL_SPECULAR, specular);
glEnable(GL_LIGHT1);


5. 재질

오브젝트의 재질은 glMaterialfv 함수를 사용해서 설정할 수 있다. ambient, diffuse, specular를 어떻게 설정하느냐에 따라서 여러 가지 재질을 설정할 수 있다.

glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);
glMaterialfv(GL_FRONT, GL_AMBIENT, diffuse);
glMaterialfv(GL_FRONT, GL_AMBIENT, specular);


6. 프로젝트 결과물

profile
기록해서 내 것으로 만들기

0개의 댓글