상세 컨텐츠

본문 제목

SCOP : 3D 객체 렌더링의 기본 - (1)

Computer Graphics/SCOP

by Banjosh 2024. 9. 18. 22:22

본문

첫 번째 그래픽 과제, SCOP를 살펴보자!


SCOP 프로젝트: 3D 렌더링의 기초를 탐구하다

SCOP 프로젝트Blender와 같은 모델링 프로그램을 통해 제작된 3D 객체를 로드하고, 이를 화면에 렌더링하는 프로그램을 만드는 과제이다. 이 프로젝트의 목표는 3D 객체를 파싱하고, 원근법에 맞춰 화면에 표시하며, 객체의 회전, 이동, 텍스처 적용 등의 기능을 구현하는 것이다.

프로젝트 요구 사항

  1. 3D 객체 렌더링:
    • 제공된 .obj 파일을 읽어들여 3D 객체를 화면에 렌더링해야 한다.
    • 원근법을 적용해 멀리 있는 객체는 작게 보이도록 하고, 객체는 중심 축을 기준으로 회전해야 한다.
    • 또한, 다양한 색상으로 여러 면을 구분하고, 객체는 세 축(x, y, z) 에서 자유롭게 이동할 수 있어야 한다.
  2. 텍스처 적용:
    • 특정 키를 누르면 객체에 텍스처가 적용되어야 하고, 다시 같은 키를 누르면 텍스처에서 색상 모드로 전환될 수 있어야 한다.
    • 두 모드 사이에는 부드러운 전환이 이루어져야 한다.

기술적 제약 사항

  1. 프로그래밍 언어:
    • C, C++, Rust를 우선으로 사용하지만, 다른 언어도 선택 가능하다.
  2. 렌더링 API:
    • OpenGL, Vulkan, Metal, MinilibX 중 하나를 사용할 수 있다.
  3. Makefile 필수:
    • 프로젝트는 Makefile을 통해 컴파일될 수 있어야 한다.
  4. 외부 라이브러리 제한:
    • 창 관리 및 이벤트 처리를 제외하고, 3D 객체를 로드하거나 행렬을 처리, 쉐이더를 로드하는 외부 라이브러리 사용은 금지된다.

추가 요구 사항

  • 42 로고중앙 축을 기준으로 회전하는 장면이 필요하다. 로고의 한쪽 모서리가 아닌 중앙에서 회전해야 하며, 각 면에는 회색 음영이 적용되어야 한다.

보너스

1. 비공면 및 오목한 면의 올바른 렌더링:

  • 비공면(Non-planar)오목한 면을 가진 .obj 파일에서 예상치 못한 왜곡이 발생할 수 있다. 이러한 파일을 올바르게 렌더링해야 한다.

2. 텍스처의 정교한 적용:

  • 텍스처가 각 측면에서 늘어나지 않도록 더 섬세하게 적용해야 한다.

SCOP 진행 계획

이번 SCOP 프로젝트C++과 OpenGL을 사용하여 진행할 예정이다. OpenGL 공부는 권지용 교수님의 유튜브 강의를 통해 학습했다. OpenGL의 기본 개념부터 응용까지 다루고 있는 이 강의는 프로젝트를 준비하는 데 큰 도움이 되었다.

 

 

OpenGL 강의 유튜브 링크 - 권지용 교수님

 


앞으로 진행될 SCOP 프로젝트에서는 3D 객체 파싱과 렌더링, 텍스처링 등 다양한 그래픽 기술을 구현할 계획이다. 과제를 통해 배운 점과 해결한 문제들에 대해 앞으로 더 많은 내용을 공유할 예정이다.

관련글 더보기