티스토리 뷰

활동/42Seoul

[miniRT] Subjects

geonwoopaeng@gmail.com 2021. 1. 25. 23:36

Subject


goal


  • 이미지를 생성하는 것
  • Raytracing protocol 사용
  • 생성 된 이미지는 각각 장면을 나타낸다.
  • 특정 각도, 위치에서 본 정의와 기하학적 개체에 의해 각각 고유한 조명시스템
    => 물체에 대한 빛에 의한 그림자 제작

explain


  • MinilibX 사용
  • 창 관리는 매끄럽게 유지되어야 합니다.(다른 창으로 변경, 최소화)
  • 기하학적 개체 필요 :place(평면), sphere(구), cylinder(원통), square(정사각형), triangle(삼각형)
  • 기하학적 개체의 모든 교차점과 물체 내부를 처리해야 합니다.
  • 개체 고유 속성의 크기를 조정할 수 있어야 합니다. (구, 정사각형의 측면 크기 및 원통의 너미와 높이)
  • 변환 및 회전 변환을 적용해야 합니다.(회전 할 수 없는 구,삼각형 및 조명 제외))
  • 조명 관리: 스폿 밝기, hard shadow, 주변 조명(물체는 절대 완전히 어둠 속에 있지 않는다.)
  • 컬러 조명과 멀티 스폿 조명을 올바르게 처리
  • 두번째 인수가 "--save"인 경우 프로그램은 rendered image를 bmp형식으로 저장해야 합니다.
  • 두번째 인수가 제공되지 않는 경우
  • 프로그램에서 이미지를 창에 표시
  • ESC를 누그면 창이 닫히고 프로그램이 깨끗하게 종료된다.
  • 창들의 빨간 십자가를 클릭하면 창이 닫히고 프로그램이 깨끗하게 종료된다.
  • declared scene의 크기가 디스플레이 해상도보다 클 경우 창 크기가 현재 디스플레이 해상도에 따라 설정되어야 한다.
  • 카메라가 2대 이상 있을 경우 원하는 키보드 키를 눌러 카메라 사이를 전환할 수 있어야 한다.
  • minilibX 영상 사용을 적극 권장
  • .rt 확장자인 scene description file을 첫 번째 argument로 해야 합니다.
  • 윈도우/rendered image size를 포함해야 한다(miniRT가 어떤 양의 크기에서도 render할 수 있어야 한다.)
  • 각 요소 유형은 하나 이상의 line break로 구분
  • 요소별 정보 유형은 하나 이상의 공백으로 구분
  • 파일의 순서에 상관없이 각 요소 유형을 설정할 수 있다.
  • 대문자로 정의된 요소는 1번만 선안 할 수 이다.

각 요소 정보/표시


  • 각 요소의 정보는 먼저 유형 식별자(1~2개 문자로 구성)이며, 다음과 같은 엄격한 순서로 각 개체에 대한 모든 특정 정보가 표시

Resolution(해상도)



R 1920 1080

  • identifier(식별자): R
  • x render size
  • y render size

Ambient lightning(주변 빛)



A 0.2 255,255,255

  • identifier: A
  • [0.0, 1.0] 범위의 주변 조도 비율: 0.2
  • [0-255] 범위의 R,G,B 색상: 255,255,255

Camera



c -50.0,0,20    0,0,1   70

  • identifier: c
  • x,y,z 좌표의 시야 점: 0.0,0.0,20.6
  • 3d 정규화 방향 벡터. 각 x,y,z 축의 범위[-1,1]: 0.0,0.0,1.0
  • FOV: 범위의 수평 시야[0,180]

Light



l -40.0,50.0,0.0    0.6     10,0,255

  • identifier: l
  • x,y,z 좌표의 광점: 0.0,0.0,20.6
  • [0.0,1.0] 범위의 밝기 비율: 0.6
  • [0-255] 범위의 R,G,B 색상: 10,0,255

Sphere(구)



sp 0.0,0.0,20.6 12.6    10,0,255

  • identifier: sp
  • 구 중심의 x,y,z 좌표: 0.0,0.0,20.6
  • 구면 직경(지름): 12.6
  • [0-255] 범위의 R,G,B 색상: 10,0,255

Plane(평면)



pl 0.0,0.0,-10.0 0.0,0.0,1.0 0,0,255

  • identifier: pl
  • x,y,z 좌표: 0.0,0.0,-10.0
  • 3d 정규화 방향 벡터, [-1,1]범위에 대한 x,y,z 축: 0.0,0.0,1.0
  • [0-255] 범위의 R,G,B 색상: 0,0,255

Square(정사각형)



sq 0.0,0.0,20.6     1.0,0.0,0.0 12.6    255,0,255

  • identifier: sq
  • 사각형의 중심 x,y,z 좌표: 0.0,0.0,20.6
  • 3d 정규화 방향 벡터, [-1,1]범위에 대한 x,y,z 축: 1.0,0.0,0.0
  • 측면 사이즈(한 변의 길이): 12.6
  • [0-255] 범위의 R,G,B 색상: 255,0,255

Cylinder(원기둥)



cy 50.0,0.0,20.6    0.0,0.0,1.0 10,0,255    14.2 21.42

  • identifier: cy
  • x,y,z 좌표: 50.0,0.0,20.6
  • 3d 정규화 방향 벡터, [-1,1]범위에 대한 x,y,z 축: 0.0,0.0,1.0
  • 원기둥 직경(지름): 14.2
  • 원기둥 높이: 21.42
  • [0-255] 범위의 R,G,B 색상: 10,0,255

Triangle(정삼각형)



tr 10.0,20.0,10.0 10.0,10.0,20.0    20.0,10.0,10.0  0,0,255

  • identifier: tr
  • 첫 번째 점의 x,y,z좌표: 10.0,20.0,10.0
  • 두 번째 점의 x,y,z좌표: 10.0,10.0,20.0
  • 세 번째 점의 x,y,z좌표: 20.0,10.0,10.0
  • [0-255]범위의 R,G,B 색상: 0,255,255

minimalist .rt scene의 예제



R   1920 1080
A   0.2                                            255,255,255

c    -50,0,20        0,0,0        79
l    -40,0,30                    0.7                255,255,255

pl    0,0,0            0,1.0,0                        255,0,255
sp    0,0,25                        20                255,0,0
sq    0,100,40        0,0,1.0        30                42,42,0
cy    50.0,0.0,20.6    0,0,1.0        14.2    21.42    10,0,255
tr    10,20,10        10,10,20    20,10,10        0,0,255

1. 파일에 잘못된 구성이 있는 경우


-> 프로그램이 제대로 종료되고 "Error\n"을 반환 후 사용자가 선택한 명시적 오류 메시지를 반환


2. 기능적인 것에 초점을 맞춰 전체 장면을 촬영하는 것이 이상적 + 쉽게 제어 가능


반응형

'활동 > 42Seoul' 카테고리의 다른 글

[miniRT, cub3d] wsl2에서 miniRT, cub3d setting  (2) 2021.01.25
[miniRT, cub3D] Man 설명  (0) 2021.01.25
[ft_server] 실행 순서(Window - WSL2)  (0) 2021.01.22
[ft_server] 개념  (0) 2021.01.22
42 Seoul La Piscine 후기  (0) 2020.12.19
공지사항
최근에 올라온 글