Home miniRT ① Subject
Post
Cancel

miniRT ① Subject

Untitled

요약 : 이 프로젝트에서는 레이트레이싱 세계를 소개한다. 프로젝트를 완성한다면 너는 간단한 컴퓨터 생성 이미지를 만들 수 있을 것이고 수학 공식을 두려워하지 않을 것이다.

Mandatory part - miniRT

프로그램명miniRT
제출 파일모든 파일
Makefileall, clean, fclean, re, bonus
인자*.rt 형태의 장면(scene)
허용 함수• open, close, read, write, printf, malloc, free, perror, strerror, exit
• All functions of the math library (-lm man man 3 math)
• All functions of the MinilibX
Libft 허용 여부허용
설명이 프로그램의 목표는 레이캐스팅 프로토콜을 사용하여 이미지를 생성하는 것이다.
특정 각도, 위치에서 볼 수 있는 각 이미지들은 각각의 장면을 나타내는 것으로,
간단한 기하학적 물체와 각각의 조명 시스템으로 정의된다.

제한 사항은 다음과 같다.

  • 너는 반드시 miniLibX를 사용해야 한다. OS에서 사용가능한 버전 또는 소스파일에서 제공하는 버전을 사용해라. 소스파일로 작업하려면 Common Instruction에 적혀있듯이 너의 Libft와 동일한 rule을 적용해야 한다.
  • 너의 창은 부드러워야 한다: 다른 창으로의 전환이나 최소화 등.
  • 최소한 다음의 3개의 기하학적 물체가 필요하다: 평면, 구, 원기둥.
  • 해당되는 경우, 모든 가능한 교차로와 객체 내부를 올바르게 처리해야 한다.
  • 너의 프로그램은 물체의 고유한 특성을 리사이즈할 수 있어야 한다: 구의 직경, 원기둥의 너비와 높이
  • 너의 프로그램은 물체, 조명, 카메라에 대해 변환(평행이동(translation), 회전(rotation))을 적용할 수 있어야 한다.
  • 조명 관리 : 스팟 밝기, hard 그림자, 주변광(물체는 완벽한 어둠 속에 있지 않다). 너는 주변광과 난반사를 구현해야 한다.
  • 프로그램은 이미지를 창에 띄워야 하고 다음 규칙을 준수해야 한다.
    • ESC를 누르면 창을 닫고 프로그램을 깨끗이 종료해야 한다.
    • 창의 빨간색 X를 클릭하면 창을 닫고 프로그램을 깨끗이 종료해야 한다.
    • minilibX의 images 사용을 강력히 추천한다.
  • 너의 프로그램은 첫 번째 인자로 장면 설명 파일(scene description file)을 .rt 확장자로 받는다.
    • 각 요소의 유형은 하나 이상의 개행으로 구분된다.
    • 요소의 각 정보 유형은 하나 이상의 공백으로 구분된다.
    • 각 요소 유형은 파일에서 임의의 순서로 배치되어 있다.
    • 대문자로 정의된 요소는 장면에서 한 번만 선언될 수 있다.
  • 각 요소의 첫 번째 정보는 타입 식별자(1~2개의 문자로 구성됨)이며 그 뒤에는 세부 정보가 다음의 순서로 따라온다.
    • 주변광 (Ambient lightning)

      Untitled

      • 식별자 : A
      • [0.0,1.0] 범위 내에서의 주변광의 비율: 0.2
      • [0-255] 범위 내에서의 R,G,B 색상: 255, 255, 255
    • 카메라

      Untitled

      • 식별자: C
      • 방향(view point)의 x,y,z 좌표: -50.0, 0, 20
      • 3차원에서 정규화된 방향 벡터. x,y,z 축 각각에 대해 [-1,1] 범위 내의 값을 가짐: 0, 0, 1
      • 시야 (FOV, Field of view): [0,180] 범위 내에서의 수평 시야각: 70
    • 조명

      Untitled

      • 식별자: L
      • 광점(light point)의 x,y,z 좌표: -40.0, 50.0, 0.0
      • [0.0,1.0] 범위 내에서의 조명 밝기 비율: 0.6
      • [0-255] 범위 내에서의 R,G,B 색깔(mandatory에서는 미사용): 10, 0, 255
    • 구 (Sphere)

      Untitled

      • 식별자 : sp
      • 구의 중점의 x,y,z 좌표: 0.0, 0.0, 20.6
      • 구의 직경: 12.6
      • [0-255] 범위 내에서의 R,G,B 색깔: 10, 0, 255
    • 평면 (Plane)

      Untitled

      • 식별자: pl
      • x,y,z 좌표 : 0.0, 0.0, -10.0
      • 3차원에서 정규화된 방향 벡터. x,y,z 축 각각에 대해 [-1,1] 범위 내의 값을 가짐: 0.0, 1.0, 0.0
      • [0-255] 범위 내에서의 R,G,B 색깔: 0, 0, 255
    • 원기둥 (Cylinder)

      Untitled

      • 식별자 : cy
      • x,y,z 좌표: 50.0,0.0,20.6
      • 3차원에서 정규화된 방향 벡터. x,y,z 축 각각에 대해 [-1,1] 범위 내의 값을 가짐: 0.0, 0.0, 1.0
      • 원기둥의 직경: 14.2
      • 원기둥의 높이: 21.42
      • [0-255] 범위 내에서의 R,G,B 색깔: 10, 0, 255
  • 다음은 mandatory 파트의 가장 단순한 .rt 장면의 예시이다.

    Untitled

  • 만약 파일에서 어떤 종류의 잘못된 설정을 만난다면 반드시 프로그램을 종료하고 “Error\n” 뒤에 명시적인 에러 메시지를 붙여서 출력해야 한다.
  • 동료평가를 받을 때, 요소 생성을 원할하게 하기 위해 각 기능에 맞는 장면을 모아서 평가를 받는 것이 이상적이다.

예시

Untitled

Untitled

Untitled

This post is licensed under CC BY 4.0 by the author.

C++ 개념 정리 : STL (표준 템플릿 라이브러리)

C++ 개념 정리 : 예외 처리