Computer Graphics/SCOP
SCOP : 3D 객체 렌더링의 기본 - (1)
Banjosh
2024. 9. 18. 22:22
첫 번째 그래픽 과제, SCOP를 살펴보자!
SCOP 프로젝트: 3D 렌더링의 기초를 탐구하다
SCOP 프로젝트는 Blender와 같은 모델링 프로그램을 통해 제작된 3D 객체를 로드하고, 이를 화면에 렌더링하는 프로그램을 만드는 과제이다. 이 프로젝트의 목표는 3D 객체를 파싱하고, 원근법에 맞춰 화면에 표시하며, 객체의 회전, 이동, 텍스처 적용 등의 기능을 구현하는 것이다.
프로젝트 요구 사항
- 3D 객체 렌더링:
- 제공된 .obj 파일을 읽어들여 3D 객체를 화면에 렌더링해야 한다.
- 원근법을 적용해 멀리 있는 객체는 작게 보이도록 하고, 객체는 중심 축을 기준으로 회전해야 한다.
- 또한, 다양한 색상으로 여러 면을 구분하고, 객체는 세 축(x, y, z) 에서 자유롭게 이동할 수 있어야 한다.
- 텍스처 적용:
- 특정 키를 누르면 객체에 텍스처가 적용되어야 하고, 다시 같은 키를 누르면 텍스처에서 색상 모드로 전환될 수 있어야 한다.
- 두 모드 사이에는 부드러운 전환이 이루어져야 한다.
기술적 제약 사항
- 프로그래밍 언어:
- C, C++, Rust를 우선으로 사용하지만, 다른 언어도 선택 가능하다.
- 렌더링 API:
- OpenGL, Vulkan, Metal, MinilibX 중 하나를 사용할 수 있다.
- Makefile 필수:
- 프로젝트는 Makefile을 통해 컴파일될 수 있어야 한다.
- 외부 라이브러리 제한:
- 창 관리 및 이벤트 처리를 제외하고, 3D 객체를 로드하거나 행렬을 처리, 쉐이더를 로드하는 외부 라이브러리 사용은 금지된다.
추가 요구 사항
- 42 로고가 중앙 축을 기준으로 회전하는 장면이 필요하다. 로고의 한쪽 모서리가 아닌 중앙에서 회전해야 하며, 각 면에는 회색 음영이 적용되어야 한다.
보너스
1. 비공면 및 오목한 면의 올바른 렌더링:
- 비공면(Non-planar)과 오목한 면을 가진 .obj 파일에서 예상치 못한 왜곡이 발생할 수 있다. 이러한 파일을 올바르게 렌더링해야 한다.
2. 텍스처의 정교한 적용:
- 텍스처가 각 측면에서 늘어나지 않도록 더 섬세하게 적용해야 한다.
SCOP 진행 계획
이번 SCOP 프로젝트는 C++과 OpenGL을 사용하여 진행할 예정이다. OpenGL 공부는 권지용 교수님의 유튜브 강의를 통해 학습했다. OpenGL의 기본 개념부터 응용까지 다루고 있는 이 강의는 프로젝트를 준비하는 데 큰 도움이 되었다.
앞으로 진행될 SCOP 프로젝트에서는 3D 객체 파싱과 렌더링, 텍스처링 등 다양한 그래픽 기술을 구현할 계획이다. 과제를 통해 배운 점과 해결한 문제들에 대해 앞으로 더 많은 내용을 공유할 예정이다.