※ e++ 엔진에서 World 란 ?

; e++ 엔진에서 World 는

World = 여러개의 외부지형 + 여러개의 내부지형  이 합쳐진 하이브리드 지형 입니다.

※ e++ 엔진에서의 Terrain 지형?

; 외부지형을 표현하기위해 여러개의 사각형 격자를 이어 만든 지형 표현방식으로

특정단위의 사각형 격자를 Sector 이라고 부르며

Terrain 은 Sector 들의 집합 이라고 생각하면 된다.

그러므로 Sector Group 는 Terrain 이며, Terrain Group 는 World 라고 표현한다.


(1) 우선 EntityTool 을 실행한후 좌측 창에서 Terrain_Edit 탭을 선택하여 활성화 한다.
;
⊙ Load : 만들어진 터레인 지형을 Load  한다.
⊙ Save : 만들어진 터레인 지형을 Save 한다.
⊙ Texture : 텍스쳐 설정을 변경한다.
⊙ Add : 터레인을 하나 더 추가한다.
               터레인을 추가할 경우, dist 라던지 sector 갯수등의 설정은 하지 않는다. 기존 생성된 터레이과 같은 설정값을 가진다.
               텍스쳐설정값들은 변경할 수 있다.
⊙ Remove : 터레인을 하나 제거한다.
                     가장 외곽에 있는 터레인만 제거 가능하다.
⊙ Create : 터레인을 하나 생성한다.
⊙ Add_Item : 터레인의 특정 항목에 값을 하나 추가한다. (안개, 환경광, 직사광 ... )
⊙ Remove_Item : 터레인의 특정 항목중 하나의 값을 제거한다.
tool-6-1.jpg



(2) 창 아래에 Create 버튼을 눌러 Terrain 하나를 생성한다.
;
⊙ X Dist : 터레인의 x축으로의 거리
⊙ Z Dist : 터레인의 z축으로의 거리
⊙ X Sector Count : 터레인의 x 축으로의 거리에 몇개의 섹터가 존재할지 설정한다.
⊙ Z Sector Count : 테레인의 z 축으로의 거리에 몇개의 섹터가 존재할지 설정한다.
⊙ X Verts Per Sector : 하나의 섹터에 x 축으로의 정점의 갯수.
⊙ Z Verts Per Sector : 하나의 섹터에 z 축으로의 정점의 갯수.
⊙ Textures : 터레인의 텍스쳐 설정. 하나의 레이어 혹은 4개 모든 레이어 에 텍스쳐를 설정 할 수 있다.
                      하나의 레이어에만 설정하였다 하더라도 문제되지 않는다.
     - Layer0 - 3 : 4개의 레이어 각각에 텍스쳐를 설정한다.
     - Bump : 특정 레이어층에 범프맵을 설정한다.
     - Light Texture : 전체 터레인에 하나의 라이트맵을 설정 할 수 있다. 
     - Blend Texture : 각 레이어에 설정된 텍스쳐를 얼마의 가중치로 보일지를 결정하는 텍스쳐.
                                 Blend Texture를 설정하지 않을경우 Layer 텍스쳐가 1장 이상이라면 자동으로 생성된다.
tool-6-2.jpg

tool-6-3.jpg

(3) Terrain 을 추가하기 위해서는 Add 버튼을 누르면 같은 크기에 같은 Sector 수를 가진 Terrain 이 좌우 또는 앞뒤에 생성된다.
; 추가로 생성된 터레인은 크기정보와 섹터수 등은 이전 터레인 정보와 동일하게 설정되므로 단지 텍스쳐 설정만 하면 된다.


(4) Terrain 편집에 관한 설명은 지형의 높이 편집과 지형의 텍스쳐 편집, 환경 오브젝트 등록 과 오브젝트 배치, 라이트와 포그 설정 의 순으로 이루어 진다.
;지형의 편집은 지형이 만들어진 상태에서 edit mode 를 활성화 한다. 그 이후 단축버튼 'T' 혹은 팝업메뉴에서 Edit_Terrain
을 선택하여 이루어 진다.
tool-6-4.jpg

⊙ 높이 편집
; Edit_Terrain 상태에서 좌측 창의 Edit_Mode 에 Edit_Height_Mode 를 선택한다. 혹은 Edit_Terrain 상태에서 키패드 위 아래 버튼을 눌러 Edit_Height_Mode 를 선택 할 수 있다.
 tool-6-6.jpg

tool-6-7.jpg
    - Height_Mode : 지형의 높이를 수정하기 위한 모드. 
             cos , sin, average, set height, perlin noise 방식이 있다.
    - Power : 지형 편집시 얼마나 빠르게 높이가 변하는지를 나타내는 수치
    - Radius : 지형 편집시 브러쉬의 반경 설정.

⊙ 텍스쳐 편집
;Edit_Terrain 상태에서 좌측 창의 Edit_Mode 에 Edit_Blend_Texture_Mode 를 선택한다. 혹은 Edit_Terrain 상태에서 키패드 위 아래 버튼을 눌러 Edit_Blend_Texture_Mode 를 선택 할 수 있다.
tool-6-8.jpg

tool-6-10.jpg

tool-6-9.jpg
     - Layer : 좌측 아래 텍스쳐중 하나의 레이어를 선택하여 paint 할 수 있다.
     - Splating_Mode : 
     - Out_Random_Blend : 
     - In_Radius : 
     - Out_Radius :

⊙ 구름과 하늘 렌즈플레어 등록 및 water 생성
; 가장 우측에 세로로 놓인 버튼들중 제일 아래 버튼을 선택한다. 선택이 되었다면 sky_edit 라는 창이 생성된다.
tool-6-11.jpg

스카이 오브젝트를 등록하려면, 우선 좌측에 새로 생성된 창에서 --Sky-- 를 선택한 후 Add 버튼을 누른다.
tool-6-12.jpg
     - Sky Object : 스카이 오브젝트에 사용될 파일명. 스킨파일이 아닌 맥스의 원천데이터를 익스포트한 *.eoj 파일이 된다.
     - Sky Rotate : 스카이 오브젝트를 회전시킬 필요가 있을때 이 값을 설정한다. 초당 회전 속도를 나타낸다.
     - Sky Scale : 스카이 오브젝트를 제작할때 단위길이로 제작하는 것 을 추천한다. 스케일 값을 이용해 스카이의 크기를 조정.
     - Sky Texture : 텍스쳐를 추가할 필요가 있을때 사용한다. 마우스로 선택한후 Add 버튼을 눌러 텍스쳐를 추가 한다.
                              텍스쳐가 추가 되지 않은 상태라면 맥스에서 기본적으로 설정된 텍스쳐가 사용되며 이 값이 하나라도 설정
                              되면, DayCycleTime 에 따라 모든 텍스쳐가 자연스럽게 보간되면서 순회 한다.
tool-6-13.jpg

구름을 등록하기 위해서는 새로 생성된 Sky_Edit 창에서 -Cloud- 항목을 선택한 후 Add 버튼을 누른다.
tool-6-14.jpg
     - Cloud Object : 구름오브젝트. skin 파일이 된다. *.skin  이곳에 설정될 skin 파일은 엔진에서 지정하는 렌더메소드 를
                                사용 한 skin 파일이여야만 한다. 
     - Cloud Height : 구름오브젝트의 높이. 
     - Cloud Ratio : 구름의 밀도. 100 으로 갈수록 구름의 양이 없어지고, 0 으로 갈수록 구름의 양이 많아진다. 
e++ 엔진에서 기본적으로 제공하는 구름의경우 각종 라이트의 영향을 받으며 실시간으로 구름의 생성이 이루어진다.
그리고 구름의 밀도계산을 통해 구름의 음영계산이 이루어진다. 노이즈텍스쳐를 변화시켜 다양한 텍스쳐를 구름의 형태를
만들 수 있다. 현재 사용된 노이즈 텍스쳐는 프로그래머가 대충 만든 텍스쳐 이다. ^^;
tool-6-16.jpg                             
렌즈플레어 삽입.
; 새로 생성된 Sky_Edit 창에서 --LightSource-- 항목을 선택한 후 오브젝트를 Add 버튼을 누른다.
그 이후 텍스쳐 파일을 설정하기 위한 창이 나오는데, 태양이라던지 혹은 달과같은 라이트오브젝트에 대한 텍스쳐를
설정한다. 현재는 달의 텍스쳐를 설정해 보았다.
tool-6-17.jpg

     - Light Source Texture : 라이트의 원천에 대한 텍스쳐 (예 : 해, 달 .. )
     - Additive : 색을 더하는 형태의 모습이 될지에 대한 설정.
     - Light Source Orig Scale : 라이트의 원천 크기. 이 크기 이하로는 크기가 줄지 않는다. 크기의 변화는 다른 오브젝트에 의해
                                               라이트가 가려졌을경우 크기의 변화가 일어나는데, 이때 최소의 크기를 설정한다.
                                               ( 최대 1 의경우 화면크기와 같은 크기를 가지게 된다. )
     - Light Source Max Scale : 라이트 크기가 변화할때 최대로 커지기는 크기. 라이트 크기 변화는 라이트가 어떠한 오브젝트에
                                               얼마나 가려지는가를 기준으로 크기의 변화가 일어난다. 아무것도 라이트를 가리지 않았을 경우의
                                               크기 설정이다. ( 1의 경우 화면크기와 같은 크기를 가진다.)
     - Flares : 라이트에 대한 빛번짐 혹은 렌즈플레어와 같은 연출을 위한 설정값들. 마우스로 Flares 를 선택한후 Add 버튼을
                    눌러서 Flares 를 추가 할 수 있다. 추가되는 순서가 중요한데, 최초 추가되는 Flare 는 라이트의 위치와 동일한 위치
                    가 되며, 그 이후 추가되는 Flare 들은 화면의 중심을 기준으로 뻗어나가는 형태의 모습이 된다.

tool-6-18.jpg

Flares 를 추가하는 모습
tool-6-19.jpg
     - Flare_Texture : 렌즈플레어에 사용될 텍스쳐
     - Flare clip scale : 렌즈플레어가 사라질 크기 로 크기변화가 일어날때 특정크기 이하로 작아질경우 사라지는 크기 설정.
     - Flare min scale : 렌즈플레어의 크기가 변화할때 최소 크기 설정.
     - Flare max scale : 렌즈플레어 크기가 변화할때 최대 크기 설정.
         (위 모든 크기는 1 일경우 화면의 가로크기와 동일한 크기의 정 사각형이 된다.)

한개의 플레어를 설정한 상태와 여러개의 플레어를 설정한 상태.
tool-6-20.jpg

물 등록
; 팝업메뉴(P) 에서 Create_Water 을 선택한후 화면에서 특정위치를 선택한후, 버튼을 때지 않은 상태에서 드래그를 통해
물이 만들어 진다. 물은 Top 뷰와 Perspective 뷰에서만 생성 가능하다.
tool-6-28.jpg
                           
tool-6-29.jpg

tool-6-30.jpg

⊙ 오브젝트 배치
; 오브젝트 배치의 경우 우측 List_Edit 창에서 Prop_List 에서 Prop 들을 등록한후 피킹을 통해 오브젝트를 터레인에 올려
놓을 수 있다. 터레인에 Prop 을 올려놓기 위해서는 에디트 모드를 활성화 한후 Edit_Terrain 모드를 활성화 시킨다.
 그후 피킹을 통해 Prop을 올려 놓을 수 있다.
- 좌측 버튼
    - Load : 이전에 저장된 Prop들을 리스트로 로드 한다.
    - Save As : 현재 등록된 Prop 들을 하나의 리스트로 저장한다.
    - Add Category : 아무 의미없는 빈 item 을 등록한다. 물론 각 아이템의 자식으로 한개 혹은 여러개의 자식들이 등록
                                가능하다. 예를들어 Object 라는 카테고리를 등록하고 자식으로 house.skin  ,  tree.skin , stone.skin 등을
                                자식으로 등록 할 수 있다. 
    - Remove Category : 등록된 카테고리를 삭제한다. 만약 자식들이 아래에 있으면 아래 자식들까지 삭제된다.
    - Add Item : 아이템을 등록한다. 아이템은 카테고리의 자식으로도 등록 가능하며, 등록가능한 아이템으로는
                         *.skin 파일,  *.eec 파일,  *.eeo 파일 등이 있다.
    - Remove Item : 등록된 아이템을 삭제한다. 아이템의 자식으로 등록된 또다른 아이템들이 있다면 자식들까지도 모두
                               제거 된다.

tool-6-31.jpg

Edit_Terrain 모드가 활성화 된후 좌측의 Edit_Put_Object_Mode 를 활성화 하여 Prop 를 등록한 모습.
tool-6-32.jpg

⊙ 라이트와 포그 설정
라이트 설정은 두가지로 나뉘는데, 하나는 환경광이며, 또 하나는 직사광 이다.
라이트 설정 방식은 좌측에 컨트롤중 Ambient_Light 항목 또는 Direction_Light 항목을 선택한 후 아래에 Add_Item 버튼을
눌러 Ambient Light혹은 Direction Light 가 추가 된다. 기본적으로 각 라이트와 포그는 하나씩 추가되어 있다.
tool-6-33.jpg

Ambient Light 가 추가되었을 경우 Ambient_Color_N (N은 Index) 로 추가된다.
Direction Light 가 추가되었을 경우 DLight_Info_N (N은 Index) 로 추가된다.
Fog 가 추가되었을 경우 Fog_Info_N (N은 Index) 로 추가된다.

Fog 의 EndDistance 와 Range 값은 포그 색이 100 % 적용될 최종 거리 값과, 최종 거리값에서 부터의 거리를 뜻한다.

이렇게 추가된 값은 Terrain 에서 설정한 Day Cycle Time (초단위) 에 맞추어 모두 순회하면서 계속해서 연결된다.
( Day Cycle Time 에 설정된 시간까지 추가된 0 번째 값에서 부터 마지막 값까지 순회하며 Day Cycle Time 는 다시 초기화 되면서 추가된 0 번째 값부터 다시 순회하게 된다. 그러므로 마지막값과 끝 값이 같으면 보다 자연스러운 보간이 이루어 진다.)