2013년 1월 27일 일요일

랜더맨


renderman 테스트 shot  renderman 
2013/01/12 15:24
전용뷰어 보기
text editor를 사용해 아래의 내용물을 작성 후, basic.rib 파일명으로 저장합니다.

#basic.rib - a minimal scene
Projection "perspective"
Display "min.tiff" "file" "rgba"
WorldBegin
   Translate 0 0 5
   Sphere 1 -1 1 360
WorldEnd

3Delight의 rendering 프로그램인 renderdl.exe를 사용해 해당 basic.rib를 rendering합니다

C:\>c:\util\3Delight\bin\renderdl.exe c:\work\basic.rib

결과 이미지

sphere가 흰색입니다. 이제, basic.rib 파일의 내용을 아래와 같이 수정하여 basic1.rib로 저장한 후 renderdl.exe로 rendering하여 sphere를 빨간색으로 rendering되도록 만들어보세요.

#basic1.rib - a minimal scene
Projection "perspective"
Display "" "framebuffer" "rgba"
WorldBegin
   Translate 0 0 5
   Color 1 0 0
   Sphere 1 -1 1 360
WorldEnd

[출처] renderman 테스트 shot|작성자 excentri

ib 구문-(1)  renderman 
2013/01/12 19:01
전용뷰어 보기

앞의 테스트 샷에서 사용된 rib 파일의 내용물을 검토해 보겠읍니다. 

  
#basic1.rib - a minimal scene
Projection "perspective"
Display "min.tiff" "file" "rgba"
WorldBegin
   Translate 0 0 5
   Color 1 0 0
   Sphere 1 -1 1 360
WorldEnd 

위의 코드에서
#로 시작되는 한 줄은 주석문으로써, renderer에서 해당 rib 파일을 rendering할 때, 무시되는 부분입니다.

Display "min.tiff" "file" "rgba" 는 rgba channel정보를 가진 min.tiff라는 이름의 파일을 생성합니다. 파일을 생성하지 않고, 모니터 화면으로만 rendering하려면, file 대신에 framebuffer를 사용하면 됩니다.
즉, Display "" "framebuffer" "rgba"

Projection 명령어는 어떠한 원근을 사용해서 rendering할 지를 지정하는 명령어입니다. 위의 코드에서의 Projection "perspective" 코드는 perspective projection을 사용해서 rendering하라는 것을 나타냅니다.

worldBegin 명령어와 worldEnd 명령어 사이에 renderer가 rendering할 작업을 지정하면 됩니다. 즉, worldBegin 명령어 전에 사용된 Projection 명령어와 Display 명령어는 renderer를 설정하는 명령어들입니다

rib 구문 -(2)  renderman 
2013/01/12 19:54
전용뷰어 보기
예제 구문 
#구문 설명용 테스트 shot
Display "" "framebuffer" "rgba"
Projection "perspective"
WorldBegin
   Translate 0 0 2
   Translate -1 0 0
   Sphere 1 -1 1 360
WorldEnd

위의 구문에서 이번에 설명할 명령어는 WorldBegin과 WorldEnd 명령어 사이에 있는 Translate 명령어입니다.
Translate 명령어는 transform 명령어들 중 하나입니다. transform 명령어들은 이 명령어 다음에 만들어진 모든 물체들에 가해지기 때문에 어떠한 물체를 만들기 전에 그 물체의 위치를 지정하는 transform 명령어를 먼저 사용해야 합니다.

위의 코드에서 Translate 0 0 2 과 Translate -1 0 0은 뒤에 나타나는 Sphere 명령어에 의해 만들어진 sphere를 뒤쪽으로 2unit 이동시키고 왼쪽으로 1unit만큼 왼쪽으로 이동시킵니다.

결과물)

예제 구문
#구문 설명용 테스트 shot
Display "" "framebuffer" "rgba"
Projection "perspective"
WorldBegin
   Translate 0 0 2                          ----       1줄
   Translate -1 0 0                         ----       2줄
   Sphere 1 -1 1 360                      --- -      3줄
   Translate 1 0 0                          ----       4줄
   Sphere 1 -1 1 360                       ----      5줄
WorldEnd

위의 구문에서 설명할 명령어는 Translate 명령어입니다. Translate명령어는 transform 명령어들 중 하나입니다. transform 명령어 이후에 만들어진 모든 물체들에 전부 가해집니다. 그래서,
1번 줄에 있는 Translate 명령어는 3번 줄에서 만들어진 Sphere와 5번 줄에서 만들어진 Sphere 둘 다를 뒤쪽으로 2 unit이동시킵니다. 2번 줄에 있는 Translate 명령어는 3번 줄에서 만들어진 Sphere와 5번 줄에서 만들어진 Sphere 둘 다를 왼쪽으로 1 unit이동시킵니다.
4번 줄에 있는 Translate 명령어는 5번 줄에서 만들어진 sphere에게만 영향을 미칩니다.

결론적으로 3번 줄에 만들어진 sphere는 1번 줄과 2번 줄에 있는 Translate 명령어들에 의해 영향을 받아서 뒤쪽으로 2unit 이동하고 왼쪽으로 1 unit이동하게 됩니다.
그러나, 5번 줄에 만들어진 sphere는 4번 줄에 있는 1번 줄과 2번 줄, 그리고 4번 줄에 있는 3개의 Translate 명령어들에 의해 영향을 받아서, 맨 처음 만들어진 위치에서 뒤쪽으로 2unit 이동합니다.

결과물)

[출처] rib 구문 -(2)|작성자 excentri
rib 구문 - (3)  renderman 
2013/01/15 08:37
전용뷰어 보기
이번에는 TransformBegin 명령어와 TransformEnd 명령어에 대해서 설명하겠습니다.
바로 전의 코드에서

#구문 설명용 테스트 shot
Display """framebuffer" "rgba"
Projection "perspective"
WorldBegin
  Translate 0 0 2
  Translate -1 0 0                   ---1
  Sphere 1 -1 1 360                 ---2
  Translate 1 0 0                     ---3
  Sphere 1 -1 1 360                 ---4
WorldEnd

결과물)
 

맨 처음에 만들어진 Sphere를 재위치시키기 위해서 ---1 줄의 코드를 Translate -1.5 0 0 로 변경하면아래 그림과 같이 두 번째 만들어지는 Sphere로 재위치하게 됩니다.

#구문 설명용 테스트 shot
Display """framebuffer" "rgba"
Projection "perspective"
WorldBegin
  Translate 0 0 2
  Translate -1.5 0 0
  Sphere 1 -1 1 360
  Translate 1 0 0
  Sphere 1 -1 1 360
WorldEnd

결과물)

이 경우두 번째 Sphere를원래의 위치 그대로 두려면, 3번 줄의 Translate 1 0 0Translate 1.5 0 0로 변경하여야 합니다.

#구문 설명용 테스트 shot
Display """framebuffer" "rgba"
Projection "perspective"
WorldBegin
  Translate 0 0 2
   Translate-1.5 0 0
  Sphere 1 -1 1 360
  Translate 1.5 0 0
  Sphere 1 -1 1 360
WorldEnd

결과물)


이러한 경우, TransformBegin 명령어와 TransformEnd 명령어를 사용합니다.
TransformBegin 명령어와 TransformEnd 명령어 사이에 transform 종류의 명령어와object 명령어를 사용합니다.
TransformBegin 명령어는 이 명령어 바로 전까지의 모든transformation들을 기억하고 있습니다.
TransformEnd 명령어는 이 명령어가 사용되기 바로 전의 transformation 상태로 되돌아 갑니다.

아래의 코드를 가진 rib 파일을 만들어 이미지를 만들어 보세요.

#구문 설명용 테스트 shot
Display """framebuffer" "rgba"
Projection "perspective"
WorldBegin
  Translate 0 0 2
  TransformBegin
     Translate -1 0 0
     Sphere 1 -1 1 360
  TransformEnd
  TransfomBegin
     Translate 1 0 0
     Sphere 1 -1 1 360
WorldEnd

위의 코드는 맨 첫 번째 Sphere에 Translate 0 0 2와 Translate -1 0 0 2개의명령어를 가하게 됩니다 결과적으로 뒤쪽으로 2 unit 이동하고 왼쪽으로 1 unit 이동시키게 됩니다.
두 번째 Sphere는 Translate0 0 2와 Translate 1 0 0 2개의 명령어들을 가해져서결과적으로 뒤쪽으로 2 unit 이동하고 오른쪽으로 1 unit 이동하게 됩니다.

, TransformBegin 명령어와 TransformEnd 명령어는 특정 물체만을 이동시킬 경우 사용됩니다.

결과물)
[출처] rib 구문 - (3)|작성자 excentri

rib 구문-(4)  renderman 
2013/01/22 16:30
전용뷰어 보기
TransformBegin 명령어와 TransformEnd 명령어 사이에다른 또 하나의 TransformBegin 명령어와 TransformEnd 명령어가 사용된 경우를 살펴 보겠습니다.

#구문 설명용 테스트 shot
Display "" "framebuffer" "rgba"
Projection "perspective"
WorldBegin
   #모든 object들을 뒤쪽으로 3 unit만큼 이동시킵니다.
   Translate 0 0 3

   #머리에 해당하는 sphere를 만듭니다.
   Sphere 1 -1 1 360      //-------------1

   TransformBegin
      Translate 0 1.3 0

      TransformBegin
        Translate -0.75 0 0
           Scale 0.5 0.5 0.5
           Sphere 1 -1 1 360  //------------2
      TransformEnd

      TransformBegin
        Translate 0.75 0 0
           Scale 0.5 0.5 0.3
           Sphere 1 -1 1 360  //------------3
      TransformEnd
   TransformEnd
WorldEnd

위의 구문에서 1번에서 만든 sphere는 z축으로 3 unit만 이동한 상태가 됩니다.
2번 sphere는 Translate 0 0 3과 Translate 0 1.3 0과 Translate -0.75 0 0 의 명령어들이 가해져서 결과적으로 z축으로 3 unit이동하고 y축으로 1.3 unit이동하고 x축으로 -0.75 unit 이동하게 됩니다그런 후, Scale 0.5 0.5 0.5 명령어가 가해져 원래의 반의 크기가 됩니다.
3번 Sphere는 Translate 0 0 3과 Translate 0 1.3 0과 Translate 0.75 0 0 의 명령어들이 가해져서 결과적으로 z축으로 3 unit 이동하고 y축으로 1.3 unit이동하고 x축으로 0.75 unit 이동하게 됩니다.
그런 후, Scale 0.5 0.5 0.5 명령어가 가해져 원래의 반 크기가 됩니다.

결과물)
.
[출처] rib 구문-(1)|작성자 excentri

댓글 없음:

댓글 쓰기