Skip to content

donggyun112/Ray_Tracing_MLX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MINIRT 프로젝트 소개

프로젝트명: MINIRT

MINIRT는 raycasting 기술을 활용하여 실시간 ray tracing을 구현한 3D 그래픽 프로젝트입니다. 본 프로젝트는 빛의 경로를 추적하여 3D 환경을 시각화하는 방식을 채택하고 있으며, 카메라에서 발사된 광선(ray)이 3D 물체와 교차하는 지점을 계산하여 해당 지점에 적절한 색상을 입힘으로써 현실감 넘치는 3D 이미지를 생성합니다.

이 기술은 광원, 물체의 재질, 그림자, 반사 및 굴절 등의 물리적 현상을 정밀하게 계산하여 실제와 같은 시각적 효과를 제공합니다. MINIRT 프로젝트의 목표는 사용자가 정의한 3D 환경에서 실시간으로 높은 품질의 렌더링을 달성하는 것입니다.

주요 특징

  • Raycasting 기반 Ray Tracing: 카메라에서 발사된 광선이 물체와 교차하는 지점을 계산하여 실사와 같은 3D 이미지를 생성합니다.
  • 현실적인 3D 시각화: 광원의 효과, 물체의 재질, 그림자, 반사 및 굴절 등을 정밀하게 계산하여 실감 나는 이미지를 제공합니다.
  • 고성능 렌더링: 최적화된 알고리즘을 통해 실시간으로 고품질의 3D 렌더링을 구현합니다.

산출물

alt text alt text

MINIRT 프로젝트를 통해 생성되는 주요 산출물은 사용자가 정의한 3D 환경에서 실시간으로 렌더링된 고품질의 실사 3D 이미지입니다. 이러한 이미지는 게임 개발, 시뮬레이션, 시각 효과 제작 등 다양한 분야에서 응용될 수 있습니다.

프로젝트 진행 과정

프로젝트의 전체 진행 과정은 여기에서 확인할 수 있습니다. 이 링크를 통해 개발 과정, 프로젝트 업데이트, 팀원들의 공동 작업 내용 등을 상세히 파악할 수 있습니다.

기대 효과

MINIRT 프로젝트는 3D 그래픽 개발자들에게 실시간으로 고품질의 렌더링을 구현할 수 있는 강력한 도구를 제공합니다. 또한, 이 기술은 교육, 엔터테인먼트, 건축 시각화 등 여러 분야에서 혁신적인 시각적 경험을 창출할 잠재력을 가지고 있습니다.

MINIRT 설치 가이드

이 가이드는 MINIRT 프로젝트를 macOS 운영 체제에서 컴파일하고 실행하기 위한 단계를 설명합니다. 아래의 명령어들은 프로젝트의 루트 디렉토리에서 실행되어야 합니다.

설치 전 요구 사항

  • macOS 운영 체제가 설치된 시스템

설치 방법

1. 라이브러리 컴파일:

MINIRT는 libftmlx 라이브러리에 의존합니다. 이 라이브러리들을 먼저 컴파일해야 합니다. MINIRT를 컴파일하는 과정에서 자동으로 libft, mlx가 컴파일 됩니다.

2. MINIRT 컴파일:

  • 기본적으로, make 명령어는 필수 부분만 컴파일합니다.
    make
  • 보너스 기능을 포함시키려면 make bonus 명령어를 사용합니다.
    make bonus

3. 실행

  • 컴파일이 완료된 후, 프로젝트를 실행할 준비가 완료됩니다. 실행 파일은 프로젝트 루트에 생성됩니다.

청소 명령어

  • 모든 생성된 오브젝트 파일과 실행 파일을 제거하려면, 다음 명령어들을 사용할 수 있습니다:
    • 오브젝트 파일 제거:
      make clean
    • 오브젝트 파일과 실행 파일 모두 제거:
      make fclean
    • 모든 것을 제거한 후 다시 컴파일:
      make re

이 지침을 따르면, MINIRT 프로젝트를 성공적으로 설치하고 실행할 수 있습니다. 추가 도움이 필요한 경우, 프로젝트 문서나 커뮤니티 포럼을 참조하세요.

MINIRT 실행 가이드

MINIRT 프로젝트는 .rt 파일을 사용하여 3D 장면을 정의하고 렌더링합니다. 이 가이드는 scenes 폴더 안에 있는 .rt 파일을 사용하여 MINIRT를 실행하는 방법을 설명합니다.

실행 파일

MINIRT의 실행 파일은 컴파일 과정을 통해 프로젝트의 루트 디렉토리에 생성됩니다. 이 파일의 이름은 minirt입니다.

실행 방법

  1. 터미널 열기: 프로젝트의 루트 디렉토리로 이동합니다.
  2. scenes 폴더 확인: .rt 파일이 scenes 폴더 안에 있는지 확인합니다.
  3. MINIRT 실행: 다음 명령어 형식을 사용하여 프로그램을 실행합니다:
    ./minirt scenes/your_scene_file.rt
    여기서 your_scene_file.rtscenes 폴더 안에 있는 장면 정의 파일의 이름을 나타냅니다.

예시

  • 가정: scenes 폴더 안에 example.rt라는 장면 파일이 있다고 가정합니다.
  • 실행 명령어:
    ./minirt scenes/example.rt

이 명령어를 실행하면, minirt 프로그램이 scenes/example.rt 파일을 읽어 해당 장면을 렌더링하고, 결과를 화면에 표시합니다.

주의 사항

  • .rt 파일은 MINIRT가 해석할 수 있는 올바른 형식이어야 합니다. 파일 형식이 잘못되었거나, 필요한 정보가 누락된 경우 프로그램이 오류를 반환할 수 있습니다.
  • scenes 폴더 외부에 있는 .rt 파일을 실행하려면, 파일의 정확한 경로를 명령어에 포함시켜야 합니다.

MINIRT를 성공적으로 실행하면, 지정된 .rt 파일에 정의된 3D 장면이 렌더링되어 화면에 표시됩니다. 장면을 변경하려면 .rt 파일을 수정하거나, 다른 .rt 파일을 사용하여 프로그램을 다시 실행하세요.

MINIRT 추가 기능 설명

MINIRT는 사용자 인터페이스와 상호작용을 위한 다양한 기능을 제공합니다. 아래는 프로그램 실행 중 사용할 수 있는 주요 기능들에 대한 설명입니다.

상태 및 조작 정보 표시

Editing Mode 상태

  • Editing Mode 상태는 현재 편집 모드가 활성화되었는지 (TRUE) 아니면 비활성화되었는지 (FALSE)를 나타냅니다.
  • 사용 예: Editing Mode : TRUE or Editing Mode : FALSE

기본 조작 키

  • Remove: F 키를 누르면 현재 선택된 객체를 제거할 수 있습니다.
  • Undo: G 키를 누르면 마지막으로 수행된 작업을 취소할 수 있습니다.
  • Random copy: Z 키를 누르면 무작위 복사 작업을 수행할 수 있습니다.
  • Copy: C 키를 누르면 선택한 객체를 복사할 수 있습니다.
  • Default render: T 키를 누르면 기본 렌더링 모드로 전환할 수 있습니다.

복사 조작 방법

  1. 객체 선택: 사용자는 마우스를 사용하여 복사하고자 하는 객체 위에 마우스 포인터를 위치시킵니다.
  2. 객체 클릭: 해당 객체를 클릭하여 선택합니다. 선택된 객체는 다양한 방법으로 시각적으로 표시될 수 있으며, 이는 현재 선택된 객체가 무엇인지 명확하게 알려줍니다.
  3. 복사 실행: 객체를 성공적으로 선택한 상태에서 C 키를 누릅니다. 이때, 선택된 객체의 복사본이 생성되며, 복사된 객체는 원본 객체와 동일한 속성(위치, 크기, 색상 등)을 가집니다.

주의 사항

  • 마우스 선택 필수: 복사 기능을 사용하기 위해서는 반드시 마우스로 객체를 클릭하여 선택해야 합니다. 마우스로 선택하지 않은 상태에서 C 키를 누르면 복사가 진행되지 않습니다.
  • 정확한 선택: 여러 객체가 밀집된 영역에서는 원하는 객체를 정확히 선택하는 것이 중요합니다. 잘못된 객체를 선택하고 복사할 경우, 의도하지 않은 결과를 초래할 수 있으므로 주의가 필요합니다.

MINIRT 객체 이동 기능 상세 설명

MINIRT에서는 사용자가 마우스로 특정 객체를 클릭하여 선택한 후, 이동할 수 있는 기능을 제공합니다. 이 기능은 사용자가 장면 내에서 객체의 위치를 쉽게 조정할 수 있도록 하여, 3D 장면의 구성과 레이아웃을 더욱 효율적으로 관리할 수 있게 합니다.

객체 이동 조작 방법

  1. 객체 선택: 마우스를 사용하여 이동하고자 하는 객체를 클릭하여 선택합니다. 선택된 객체는 시각적으로 표시되어 현재 어떤 객체가 선택되었는지 명확히 알 수 있습니다.
  2. 이동 모드 활성화: 객체를 선택한 상태에서 특정 키를 누르거나, 마우스 드래그 액션을 통해 이동 모드를 활성화합니다.
  3. 객체 이동: 마우스를 드래그하여 객체를 원하는 위치로 이동시킵니다. 마우스 버튼을 놓으면, 객체는 새 위치에 고정됩니다.

주의 사항

  • 정밀한 선택과 조작: 장면 내에서 여러 객체가 서로 가까이 위치해 있을 경우, 원하는 객체를 정확하게 선택하고 이동시키는 것이 중요합니다. 잘못된 객체를 선택하거나 이동시킬 경우, 의도하지 않은 레이아웃 변경이 발생할 수 있습니다.
  • 객체 간 충돌 주의: 객체를 이동시킬 때는 다른 객체와의 충돌을 피해야 합니다. 객체 간 충돌이 발생하면, 예상치 못한 렌더링 결과나 오류가 발생할 수 있습니다.

이동 기능의 활용

이 객체 이동 기능을 활용하면, 사용자는 장면을 보다 자유롭게 구성할 수 있습니다. 복잡한 장면에서도 객체의 위치를 쉽게 조정하여, 시각적인 균형과 구성을 최적화할 수 있습니다. 또한, 이 기능은 장면 내에서 객체 간의 관계를 실험하고, 다양한 시각적 효과를 탐색하는 데에도 유용하게 사용됩니다.

MINIRT의 인터랙티브한 객체 이동 기능은 사용자가 3D 장면을 보다 효과적으로 제어하고, 창의적인 시각 작업을 수행할 수 있도록 지원합니다.

현재 품질 상태

  • 현재 렌더링 품질을 나타냅니다. 품질은 숫자로 표시되며, 이 값은 렌더링 시의 디테일 정도를 조절합니다.
  • 사용 예: Current Quality : 1

객체 선택 상태

Grep Obj Type 상태

  • 현재 선택된 객체의 유형을 나타냅니다. SP (Sphere), CY (Cylinder), PL (Plane) 중 하나가 될 수 있습니다.
  • 선택되지 않았을 경우 공백으로 표시됩니다.
  • 사용 예: Grep Obj Type : SP

추가 조작 키

  • Quality up/down: 1 키와 2 키를 사용하여 렌더링 품질을 조정할 수 있습니다. 1은 품질을 높이고, 2는 품질을 낮춥니다.
  • Save image to ppm: 3 키를 누르면 현재 렌더링된 이미지를 PPM 형식으로 저장할 수 있습니다.
  • Export .rt: 4 키를 누르면 현재 장면 설정을 .rt 파일 형식으로 내보낼 수 있습니다.
  • Pause: P 키를 누르면 렌더링을 일시 중지할 수 있습니다.
  • View mouse point: M 키를 누르면 마우스 포인터의 현재 위치를 화면에 표시할 수 있습니다.
  • lidx: 현재 라인 인덱스를 나타내며, 프로그램에서 처리 중인 데이터의 위치를 파악하는 데 도움을 줍니다.
  • 사용 예: lidx : 5

이 기능들을 통해 사용자는 MINIRT 프로그램을 보다 효과적으로 조작하고, 렌더링 과정을 세밀하게 제어할 수 있습니다.

MINIRT 복사 기능 상세 설명

MINIRT에서 객체를 복사하는 기능은 사용자가 마우스로 특정 객체를 선택한 상태에서만 진행될 수 있습니다. 이 과정은 객체의 정밀한 관리와 편집을 가능하게 하며, 사용자가 원하는 객체를 정확하게 복제할 수 있도록 합니다.

About

3D raytracing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •