Computer Graphics/SCOP

SCOP - 0. 과제해석

surkim 2024. 9. 24. 12:13

이번 SCOP 과제는 OpenGL을 배우면서 기본적인 GPU 렌더링을 연습하기 위한 첫 번째 과제이다. 3D 객체를 파싱하고 화면에 렌더링하는 경험을 쌓기 위해 이 과제를 선택하게 되었다. 특히, 이 프로젝트는 OpenGL의 여러 기능을 체험할 수 있는 좋은 기회로 생각하고 있으며, 과제의 세부 사항은 다음과 같다.

프로젝트 개요

SCOP 프로젝트는 3D 객체를 화면에 렌더링하는 프로그램을 개발하는 것을 목표로 한다. 객체는 .obj 파일로부터 파싱되며, 프로그램은 해당 객체를 화면에 퍼스펙티브로 회전시켜 보여준다. 각 면은 다른 색상으로 구분되고, 특정 키를 누르면 텍스처가 적용되며 다시 누르면 색상 모드로 돌아간다. 이 과정은 부드러운 전환이 필요하다.

목표

OpenGL을 사용해 3D 객체를 화면에 렌더링하고, 이를 다양한 축으로 회전시킬 수 있는 기능을 구현하는 것이 이번 과제의 주요 목표이다. 또한 텍스처 적용과 색상 전환, 객체 이동 등의 기능을 통해 OpenGL의 여러 기술적 요소를 이해하고 적용하는 것을 목표로 하고 있다.

일반 지침

  1. C, C++, 또는 Rust 언어 중 하나를 선택해 구현하며, OpenGL, Vulkan, Metal, MinilibX 중 하나의 API를 사용할 수 있다.
  2. Makefile을 이용해 프로젝트를 빌드해야 하며, 외부 라이브러리는 창 관리나 이벤트 처리에만 사용할 수 있다.
  3. .obj 파일 파싱, 셰이더 로드 등 주요 기능은 직접 구현해야 하며, 외부 라이브러리를 사용할 수 없다.

필수 부분

  1. 3D 객체의 회전 및 이동
    객체는 퍼스펙티브 방식으로 렌더링되며, 주요 대칭 축을 기준으로 회전해야 한다. 사용자는 객체를 x, y, z 축을 기준으로 이동시키고, 키보드 입력을 통해 텍스처를 적용하거나 색상 모드로 돌아갈 수 있다.
  2. 42 로고 구현
    과제의 필수 조건으로, 42 로고를 화면에 표시하고 그 중심 축을 기준으로 회전시켜야 한다. 또한, 로고는 각 면이 회색 음영으로 구분되고, 사용자 선택에 따라 다양한 텍스처가 적용되어야 한다.

보너스 부분

필수 요구 사항이 완벽하게 충족되었을 경우에만 보너스 기능이 평가된다. 보너스 아이디어로는 .obj 파일의 복잡한 형태(오목하거나 비공면인 객체)를 정확하게 렌더링하거나 텍스처의 섬세한 적용이 가능하다.