Skip to content

Annyeong-One/burenda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Burenda : A 3D rendering program in C++

by gs22059(Annyeong-One), 2022. 11. Github

1. 개요

Burenda는 공간상에 위치하는 직육면체 '큐브'들을 렌더링하는 프로그램입니다.
2022년 2학기 정보과학 이미지처리 수행평가를 위해 만들어졌습니다.
모 프로그램과 이름이 비슷하다면 기분 탓일 겁니다.

2. 사용 방법

아래에 나오는 예시 명령어의 [x] 부분에는 대괄호 없이 숫자를 입력해주세요.

2-1. 프로그램 구동하기

프로그램을 구동하기 위해서는 main.cpp 파일이 필요합니다. 불러오려는 저장 파일이 있다면 해당 파일도 필요합니다. 저장 파일은 .txt 형식이어야 합니다.
프로젝트를 실행하면 타이틀 페이지가 출력되며 프로그램이 시작됩니다. 이제 콘솔창에 명령어를 입력할 수 있습니다.

2-1-1. 실행 시 기본값

프로그램을 실행하면 기본적으로 아래와 같은 환경이 설정됩니다.

  • 카메라 위치 : (10,10,10)
  • 카메라 방향 : (3.93,-0.615)
  • 광원 방향 : (4,-1)

또한 공간상에 큐브 1개가 위치합니다. 이 큐브의 위치는 (0,0,0)이며, 크기는 1, 색은 (255,255,255)입니다.

2-2. 큐브 추가하기

큐브를 추가하기 위해서는 add cube 명령어를 사용합니다. add cube 명령어는 다음과 같이 사용할 수 있습니다.
add cube [x] [y] [z] [size_x] [size_y] [size_z] [r] [g] [b]
x, y, z에는 큐브의 원점 좌표를, size_x, size_y, size_z에는 큐브의 크기를, r, g, b에는 큐브의 색상을 입력합니다.
예를 들어, add cube 1 2 3 1 1 1 255 255 255 명령어를 입력하면 (1,2,3)과 (2,3,4)를 두 꼭짓점으로 가지는 흰색 큐브가 추가됩니다.
성공적으로 큐브가 추가되면 콘솔창에 add shape done! 라는 문구가 출력됩니다.

2-3. 큐브 삭제하기

큐브를 삭제하기 위해서는 delete 명령어를 사용합니다. delete 명령어는 다음과 같이 사용할 수 있습니다.
delete
이 명령어를 사용하면 가장 최근에 추가된 큐브를 삭제합니다. 추가한 큐브가 없다면 최초 실행 시 생성되는 큐브가 삭제되고, 그것도 없다면 큐브를 삭제할 수 없습니다.
성공적으로 큐브를 삭제하면 콘솔창에 delete cube done!라는 문구가 출력됩니다.

2-4. 카메라 설정

카메라의 위치나 방향을 조절할 수 있습니다. 이를 위해서는 camera 명령어를 사용합니다. camera 명령어는 다음과 같이 사용할 수 있습니다.
camera [x] [y] [z] [dir_h] [dir_v]
x, y, z에는 카메라의 위치 좌표를, dir_h, dir_v에는 카메라의 방향을 입력합니다. 방향은 극좌표계를 사용하며, dir_h은 수평방향 각도, dir_v는 수직방향 각도를 의미합니다. 모든 각도는 라디안 단위입니다.
예를 들어, camera 0 0 0 0 0 명령어를 입력하면 카메라의 위치가 (0,0,0)이 되고, +x 방향을 바라보게 됩니다.
성공적으로 카메라의 위치나 방향을 설정하면 콘솔창에 camera set! 라는 문구가 출력됩니다.

2-5. 광원 설정

Burenda는 평행광선을 방출하는 무한크기 면광원을 사용합니다. 이를 조절하기 위헤서는 light 명령어를 사용합니다. light 명령어는 다음과 같이 사용할 수 있습니다.
light [h] [v]
h, v에는 광원의 방향을 입력합니다. 방향은 극좌표계를 사용하며, h은 수평방향 각도, v는 수직방향 각도를 의미합니다. 마찬가지로, 모든 각도는 라디안 단위입니다.
예를 들어, light 0 0 명령어를 입력하면 광원의 방향이 +x 방향이 되고, light 0 1.57 명령어를 입력하면 광원의 방향이 +y 방향이 됩니다.
성공적으로 광원의 방향을 설정하면 콘솔창에 light set!라는 문구가 출력됩니다.

2-6. 렌더링

렌더링을 시작하기 위해서는 render 명령어를 사용합니다. render 명령어는 다음과 같이 사용할 수 있습니다.
render [filename]
filename에는 렌더링 결과를 저장할 파일의 이름을 입력합니다. 파일의 확장자는 .bmp으로 고정되어 있습니다.
렌더링은 relight 과정과 render 과정으로 나뉘어져 있습니다.
relight 과정이 시작되면 콘솔창에 relighting...라는 문구가 출력되고, 렌더링이 완료되면 relighting done!라는 문구가 출력됩니다.
render 과정이 시작되면 콘솔창에 rendering...라는 문구가 출력되고, 일정 간격으로 진행도와 남은 예상시간이 출력됩니다. 렌더링이 완료되면 rendering done!라는 문구가 출력됩니다.
렌더링이 완료되면 filename.bmp 파일이 생성되고 콘솔에 rendered and exported to filename.bmp successfully! 라는 문구가 출력됩니다.

2-7. 고급 설정

Burenda는 다음과 같은 고급 설정을 지원합니다.

2-7-1. 출력 크기 설정

Burenda는 기본적으로 1024x768 크기의 이미지를 출력합니다. 이를 변경하기 위해서는 adv siz 명령어를 사용합니다. adv siz 명령어는 다음과 같이 사용할 수 있습니다.
adv siz [width] [height]
width, height에는 출력할 이미지의 크기를 입력합니다. 이때, widthheight는 모두 4의 배수여야 하고, width는 3840 이하, height는 2560 이하여야 합니다.

2-7-2. 안티앨리어싱

안티앨리어싱은 렌더링 결과의 품질을 향상시키는 기술입니다. Burenda는 안티앨리어싱을 지원하며, 이를 위해서는 adv aa 명령어를 사용합니다. adv aa 명령어는 다음과 같이 사용할 수 있습니다.
adv aa [range]
range에는 안티앨리어싱의 범위를 입력합니다. range는 1 이상의 정수이며, 클수록 더욱 부드러운 결과를 얻을 수 있습니다. 안티앨리어싱을 사용하지 않을 경우에는 adv aa 1을 입력하면 됩니다.

2-7-3. 배경색 설정

Burenda는 배경색을 설정할 수 있습니다. 이를 위해서는 adv bgc 명령어를 사용합니다. adv bgc 명령어는 다음과 같이 사용할 수 있습니다.
adv bgc [r] [g] [b]
r, g, b에는 배경색의 RGB 값을 입력합니다. 각 값은 0 이상 255 이하의 정수입니다.

2-7-4. 시야각 설정

카메라의 시야각은 기본 90도=1.57rad입니다. 이때 카메라 방향으로 1만큼 이동하면 좌우 방향으로 1만큼 오프셋이 적용된 상태입니다. Burenda에서는 이 오프셋을 단위로 해 시야각을 변경할 수 있습니다. 이를 위해서는 adv fov 명령어를 사용합니다. adv fov 명령어는 다음과 같이 사용할 수 있습니다.
adv fov [fov]
fov에는 시야각을 입력합니다. 시야각 오프셋은 0.01 이상의 실수이며, 클수록 시야각이 넓어집니다.

2-8. 저장 및 불러오기

Burenda는 현재까지의 설정을 저장하거나 불러올 수 있습니다. 이를 위해서는 save 명령어와 load 명령어를 사용합니다.
save [filename] : 현재까지의 설정을 filename.txt에 저장합니다.
load [filename] : filename.txt에 저장된 설정을 불러옵니다.
저장되는 설정은 각 큐브 정보, 카메라 정보, 빛 정보가 포함되며, 고급 설정은 저장되지 않습니다.

2-9. 종료

Burenda를 종료하기 위해서는 exit 명령어를 사용합니다. exit 명령어는 다음과 같이 사용할 수 있습니다.
exit 명령어를 사용하면 프로그램이 종료됩니다.

3. 라이센스

Burenda는 MIT 라이센스를 따릅니다. 자세한 내용은 LICENSE를 참고하세요.

About

Info II image processing project perf. test: Burenda, a 3D modelling program

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages