<4D F736F F F696E74202D20C1A63130B0AD202D20C1F6C7FCB0FA20C7CFB4C3C0C720B7BBB4F5B8B5>

Similar documents
슬라이드 1

슬라이드 1

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272)

<4D F736F F F696E74202D20C1A63037B0AD202D20B1A4BFF8B0FA20B1D7B8B2C0DA>

슬라이드 1

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

(Microsoft PowerPoint - \301\24608\260\255 - \261\244\277\370\260\372 \300\347\301\372)

(Microsoft PowerPoint - \301\24615\260\255 - \303\346\265\271\303\263\270\256)

슬라이드 1

슬라이드 1

<4D F736F F F696E74202D20C1A63134B0AD202D20BBE7BFF8BCF6BFCD20C8B8C0FC>

Microsoft PowerPoint - 05geometry.ppt

슬라이드 1

유니티 변수-함수.key

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1

<4D F736F F F696E74202D20C1A63137B0AD202D20C1F6C7FCC3E6B5B9C3B3B8AE>

Microsoft PowerPoint - lecture12-ch5.ppt [호환 모드]

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint 프레젠테이션

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

쉽게 풀어쓴 C 프로그래밍

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

슬라이드 1

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

Microsoft PowerPoint - lecture15-ch6.ppt

OCW_C언어 기초

Chap 6: Graphs

슬라이드 1

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12

윈도우즈프로그래밍(1)

C프로-3장c03逞풚

untitled

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - lecture16-ch6

adfasdfasfdasfasfadf

슬라이드 1

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

MATLAB and Numerical Analysis

PowerPoint Presentation

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

31. 을전개한식에서 의계수는? 를전개한식이 일 때, 의값은? 을전개했을때, 의계수와상수항의합을구하면? 을전개했을때, 의 계수는? 를전개했을때, 상수항을 구하여라. 37

Microsoft PowerPoint - 07-Data Manipulation.pptx

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap02.ppt

chap 5: Trees

Visual Basic 반복문

PowerPoint 프레젠테이션

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/7) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당

RVC Robot Vaccum Cleaner

PowerPoint Presentation

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

디지털영상처리3

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - IP11.pptx

문제지 제시문 2 보이지 않는 영역에 대한 정보를 얻기 위하여 관측된 다른 정보를 분석하여 역으로 미 관측 영역 에 대한 정보를 얻을 수 있다. 가령 주어진 영역에 장애물이 있는 경우 한 끝 점에서 출발하여 다른 끝 점에 도달하는 최단 경로의 개수를 분석하여 장애물의

API 매뉴얼

*º¹ÁöÁöµµµµÅ¥-¸Ô2Ä)

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint - lecture18-ch8

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft PowerPoint - NV40_Korea_KR_2.ppt

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

비긴쿡-자바 00앞부속

슬라이드 1

제 5 일 년 7월교육청 년 10월교육청 년수능 년 6월평가원 년 9월평가원 년 9월평가원 년수능 년경찰대 년수능 년 10월교육청

Microsoft PowerPoint - Week04_DirectX9 프로그래밍의 기초2.pptx

슬라이드 1

ThisJava ..

PowerPoint 프레젠테이션

2002년 2학기 자료구조

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

제8장 자바 GUI 프로그래밍 II

Overview OSG Building a Scene Graph 2008 년여름 박경신 Rendering States StateSet Attribute & Modes Texture Mapping Light Materials File I/O NodeKits Text 2

K_R9000PRO_101.pdf

Microsoft Word - src.doc

PowerPoint Template

Microsoft PowerPoint - T1 ERS (Elevator Reservation System)SASD2.pptx

설계란 무엇인가?

<BFB5BBF3C1A4BAB8C3B3B8AEBDC3BDBAC5DB20BFACB1B82E687770>

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

3D MAX + WEEK 9 Hansung Univ. Interior Design

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

PowerPoint Presentation

디지털영상처리3

ePapyrus PDF Document

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft Word - PLC제어응용-2차시.doc

Inhalt01_Teil1

UI TASK & KEY EVENT

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Transcription:

게임엔진 제 10 강지형과하늘의렌더링 이대현교수 한국산업기술대학교게임공학과

학습목차 지형렌더링 하늘렌더링 육면체하늘 (SkyBox) 반구하늘 (SkyDome) 평면하늘 (SkyPlane)

실습 Terrain 지형의렌더링

장면설정 Y Step 1: 장면관리자설정 Step 2: 닌자의배치 Step 3: 광원생성및그림자표시 Step 4: 장면에지형을배치 X Z

PlayState.cpp bool PlayState::enter(void) { mroot = Root::getSingletonPtr(); mscenemgr = mroot->createscenemanager(st_exterior_close); 실습 중략 mscenemgr->setworldgeometry("terrain.cfg"); }

실행결과

지형장면관리자의설정 장면관리자의종류 옥트리 (Octree: 8진트리 ) 장면관리자 기본장면관리자 대부분의장면에사용가능 BSP(Binary Surface Partition) 장면관리자 건물내부와같이벽과복도등으로구성된장면에최적화된성능. 지형 (Terrain) 장면관리자 정적지형을가지는비교적소규모의장면에적합 고해상도의지형에적합 mscenemgr = mroot->createscenemanager(st_exterior_close); 장면관리자를지형장면관리자로설정.

지형의배치 mscenemgr->setworldgeometry("terrain.cfg"); 지형을 terrain.cfg 파일의정보를이용하여구성함.

terrain.cfg 의내용 # The main world texture WorldTexture=terrain_texture.jpg # The detail texture DetailTexture=terrain_detail.jpg 지형의전체모습 ( 평면색상 ) 을지정. 정적그림자가포함되어있슴. 지형의세부재질을지정. 일종의타일로볼수있음.

DetailTexture=BeachStones.jpg 사용

실행결과

높이맵 # Heightmap-source specific settings Heightmap.image=terrain.png 지형의높이를나타냄. 그레이레벨로높이를표시.(0-255) 백색 : 가장높은곳. 255 흑색 : 가장낮은곳. 0

# Maximum height of the terrain MaxHeight=100 지형의높이의최대값. 높이맵의 0~255 값이 0~100 값으로스케일링.

MaxHeight=200 으로한실행결과

몇가지일러두어야점들 지형장면관리자를사용할경우, 지형은광원과는영향이없다. 지형자체의그림자는텍스쳐를통해서만들어진다. 엔터티의그림자를드리우려면, 반드시 SHADOWTYPE_STENCIL_MODULATIVE 그림자기법을사용해야한다.

주변광원, 지향광원으로모두없애고실행한결과

SHADOWTYPE_STENCIL_ADDITIVE 사용

실습 Sky 하늘의렌더링

육면체하늘실습 PlayState.cpp bool PlayState::enter(void) { 실습 중략 mscenemgr->setskybox(true, "Examples/SpaceSkyBox"); }

실행결과

하늘텍스쳐및재질정의 material Examples/SpaceSkyBox { technique { pass { lighting off depth_write off 어차피다른오브젝트보다멀리있는것을가정하기때문에 depth buffer 를채울필요가없음. 속도향상 } } } texture_unit { cubic_texture stevecube.jpg separateuv tex_address_mode clamp }

육면체하늘 (SkyBox) 커다란정육면체로써, 장면안의모든오브젝트들을에워쌈. 육면체하늘의생성 void Ogre::SceneManager::setSkyBox ( bool enable, const String & materialname, Real distance = 5000, bool drawfirst = true, const Quaternion & orientation = Quaternion::IDENTITY, const String & groupname = ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME) enable: 하늘의사용여부. true 면표시. false 는표시하지않음. materialname: 하늘에사용될재질스크립트이름. distance: 하늘과카메라사이의거리. drawfirst: 하늘의출력순서. true 면하늘이먼저그려지고, 그다음에장면의오브젝트들이그려짐. fasle 면반대순서. 하늘을맨나중에그리는것이속도향상이됨.( 공간을 pixel 로채우는 rasterization 은시간이많이요구되는동작임.)

mscenemgr->setskybox(true, Examples/SpaceSkyBox, 10, false); 하늘이카메라와장면사이에존재함. 장면이먼저그려지고그다음에하늘이그려짐. 하늘이장면보다카메라와가깝기때문에, 하늘만보이게됨.

mscenemgr->setskybox(true, Examples/SpaceSkyBox, 800, false);

mscenemgr->setskybox(true, Examples/SpaceSkyBox, 5000, false);

반구하늘실습 PlayState.cpp bool PlayState::enter(void) { 실습 중략 mscenemgr->setskydome(true, "Examples/CloudySky", 2, 8); }

실행결과

반구하늘 (SkyDome) 기본적으로정육면체의하늘이지만, 텍스쳐가입혀질때반구면안으로입혀져서, 반구로보인다. 반구하늘의생성 void Ogre::SceneManager::setSkyDome ( bool enable, const String & materialname, Real curvature = 10, Real tiling = 8, Real distance = 4000, bool drawfirst = true, const Quaternion & orientation = Quaternion::IDENTITY, int xsegments = 16, int ysegments = 16, int ysegments_keep = -1, const String & groupname = ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME) enable: 하늘의사용여부. true 면표시. false 는표시하지않음. materialname: 하늘에사용될재질스크립트이름. curvature: 반구의곡률. 2-65 사이의값을설정. 값이작을수록거리감 ( 깊이감 ) 이좋으며, 클수록부드러운효과를얻을수있다. tiling: 하늘을텍스쳐재질의타일로구성했을때, 사용되는타일의개수.

반구하늘텍스쳐및재질설정 mscenemgr->setskydome(true, Examples/CloudySky, 2, 8); material Examples/CloudySky { technique { pass { lighting off depth_write off clouds.jpg } } } texture_unit { texture clouds.jpg scroll_anim 0.15 0 } x 회전속도, y 회전속도

반구하늘은밑바닥이없다.

curvature=65 로한결과

curvature=65, tiling=40 로한결과

curvature=2, tiling=40 로한결과

평면하늘실습 PlayState.cpp bool PlayState::enter(void) { 실습 중략 Plane plane; plane.d = 1000; plane.normal = Vector3::NEGATIVE_UNIT_Y; mscenemgr->setskyplane(true, plane, "Examples/CloudySky", 1500, 75); }

평면하늘 (SkyPlane) 평면을생성한후, 텍스쳐를입혀서하늘로사용한다. 그래픽부하량은세종류의평면중가장작다. 평면하늘의생성 void Ogre::SceneManager::setSkyPlane ( bool enable, const Plane & plane, const String & materialname, Real scale = 1000, Real tiling = 10, bool drawfirst = true, Real bow = 0, int xsegments = 1, int ysegments = 1, const String & groupname = ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME) plane: 하늘로사용될평면. scale: 평면하늘의크기. bow: 0 이면평평한완전평면. 값이커질수록휘어진면이됨. xsgements, ysegments: 평면의 x 축및 y 축방향의분할개수.

평면을생성. 원점과의거리 1000. 평면의법선벡터는 y 축음의방향. Plane plane; plane.d = 1000; plane.normal = Vector3::NEGATIVE_UNIT_Y; mscenemgr->setskyplane(true, plane, "Examples/CloudySky", 1500, 75);

평면지형문제점의해결 모든시야방향에높은벽이나언덕이있어서지평선을완전히가릴수있을경우에만사용. 곡률을부여함으로써반구형하늘처럼만든다. 이때는그래픽부하량이늘어난다. mscenemgr->setskyplane(true, plane, "Examples/CloudySky", 1500, 50, true, 2.0f, 150, 150); 곡률을 2.0 으로, 평면하늘을 x 축, y 축방향으로 150 등분한사각형으로구성.

하늘의선택 하늘의선택은실제프로그램에서사용자의시야의특성에따라다르게선택해야한다. 모든방향을다볼수있는상황이라면? 육면체하늘. 지형또는마루가있어서음의 y 방향은가려지는상황이면? 반구형하늘. 사방이산으로둘러쌓이거나, 성의내부에갇혀서지평선을볼수없는경우라면? 평면하늘. 그래픽부하를줄이려면? 평면하늘. 안개효과를사용하려면? 평면하늘.

실습과제 #6 석양하늘의구현 인터넷검색이미지사용.