슬라이드 1

Similar documents
<4D F736F F F696E74202D20C1A63130B0AD202D20C1F6C7FCB0FA20C7CFB4C3C0C720B7BBB4F5B8B5>

슬라이드 1

슬라이드 1

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

슬라이드 1

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

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

<4D F736F F F696E74202D20C1A63037B0AD202D20B1A4BFF8B0FA20B1D7B8B2C0DA>

슬라이드 1

슬라이드 1

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

유니티 변수-함수.key

Microsoft PowerPoint - 05geometry.ppt

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

슬라이드 1

슬라이드 1

<4D F736F F F696E74202D20C1A63134B0AD202D20BBE7BFF8BCF6BFCD20C8B8C0FC>

슬라이드 1

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

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

PowerPoint Presentation

슬라이드 1

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

untitled

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

OCW_C언어 기초

<4D F736F F F696E74202D20C1A63137B0AD202D20C1F6C7FCC3E6B5B9C3B3B8AE>

PowerPoint Presentation

PowerPoint 프레젠테이션

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

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 \

Chap 6: Graphs

2002년 2학기 자료구조

PowerPoint 프레젠테이션

Microsoft PowerPoint - 07-Data Manipulation.pptx

; 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

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

adfasdfasfdasfasfadf

Microsoft PowerPoint - Java7.pptx

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

PowerPoint Presentation

Microsoft PowerPoint - lecture15-ch6.ppt

Microsoft PowerPoint - IP11.pptx

Microsoft PowerPoint - [2009] 02.pptx

C프로-3장c03逞풚

3D MAX + WEEK 9 Hansung Univ. Interior Design

Microsoft PowerPoint - lecture19-ch8.ppt

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap02.ppt

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

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

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

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

슬라이드 1

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

Microsoft PowerPoint - lecture16-ch6

쉽게 풀어쓴 C 프로그래밍

ThisJava ..

비긴쿡-자바 00앞부속

슬라이드 1

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft Word - logic2005.doc

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

중간고사

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

MATLAB and Numerical Analysis

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

chap 5: Trees

Microsoft PowerPoint - C++ 5 .pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

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

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

Microsoft PowerPoint - lecture17-ch8.ppt [호환 모드]

8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성

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

Microsoft Word - src.doc

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

.4 편파 편파 전파방향에수직인평면의주어진점에서시간의함수로 벡터의모양과궤적을나타냄. 편파상태 polriion s 타원편파 llipill polrid: 가장일반적인경우 의궤적은타원 원형편파 irulr polrid 선형편파 linr polrid k k 복소량 편파는 와 의

PowerPoint 프레젠테이션

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

슬라이드 1

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

설계란 무엇인가?

PowerPoint Presentation

PowerPoint 프레젠테이션

디지털영상처리3

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

Microsoft PowerPoint - logo_2-미해답.ppt [호환 모드]

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

Design

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

Transcription:

핚국산업기술대학교 제 15 강지형, 하늘, 및안개의렌더링 이대현교수

학습안내 학습목표 지형, 하늘, 안개등과같이읷반적읶 3D 모델로표현하기에적합하지않은오브젝트들을렌더링하는방법을익힌다. 학습내용 지형렌더링하늘렌더링 육면체하늘 (SkyBox) 반구하늘 (SkyDome) 평면하늘 (SkyPlane) 안개렌더링 선형안개 (linear fog) 지수안개 (exponential fog) 안개와하늘 안개로암흑구현하기

실습 Terrain 지형의렌더링

class LectureApp void go(void) {... 중략... mscenemgr = mroot->createscenemanager(st_exterior_close, main );... 중략... 실습 } 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 사용

DetailTexture=KPU_LOGO.png 사용

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

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

MaxHeight=400 으로핚실행결과

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

실습 Sky 하늘의렌더링

class LectureApp void go(void) {... 중략... 실습 } mscenemgr->setskybox(true, "Sky/SpaceSkyBox");

실행결과

하늘텍스쳐및재질정의 material Sky/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, Sky/SpaceSkyBox, 200, false); 하늘이카메라와장면사이에존재함. 장면이먼저그려지고그다음에하늘이그려짐. 하늘이장면보다카메라와가깝기때문에, 하늘만보이게됨.

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

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

반구하늘렌더링 mscenemgr->setskydome(true, Sky/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, Sky/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 로핚결과

평면하늘구현 Plane plane; plane.d = 1000; plane.normal = Vector3::NEGATIVE_UNIT_Y; 실습 mscenemgr->setskyplane(true, plane, "Sky/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, "Sky/CloudySky", 1500, 50, true, 2.0f, 150, 150); 곡률을 2.0 으로, 평면하늘을 x 축, y 축방향으로 150 등분한사각형으로구성.

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

실습 Fog 안개렌더링

안개의구현방법 안개를실제로공간상에만드는것이아니다. 일종의필터로써, 씬위의오브젝트들에적용된다. 따라서, 오브젝트들이없으면안개역시보이지않는다. 뷰포트의배경색만을보는결과가나옦다. 안개를정확히보이도록하려면, 배경색을안개의색상과읷치시켜야한다.

안개의설정 void Ogre::SceneManager::setFog ( FogMode mode = FOG_NONE, const ColourValue & colour = ColourValue::White, Real expdensity = 0.001, Real linearstart = 0.0, Real linearend = 1.0) mode: 선형 (linear) 또는지수형 (exponential) 의선택. colour: 안개의색상. expdensity: 지수형안개에사용되는농도값. linearstart, linearend: 선형안개에서만사용됨. 안개가끼는범위카메라로부터의거리로나타냄. linearstart( 가장엷음 ) 에서시작해서 linearend( 가장짙음 ) 에서안개가끝남.

선형안개와지수형안개 선형안개 안개의농도가거리에비례하여짙어진다. 안개설정시, FOG_LINEAR 를사용. 지수형안개 안개의농도가거리에지수적으로비례하여짙어진다. 안개설정시, FOG_EXP 또는 FOG_EXP2 FOG_EXP2 의경우는안개가짙어지는정도가훨씬크다.

class LectureApp Ogre::ColourValue fadecolor(0.7, 0.7, 0.7); mviewport->setbackgroundcolour(fadecolor); mscenemgr->setfog(ogre::fog_linear, fadecolor, 0.0, 500, 1000); 실습

실행결과

선형안개구현 뷰포트의배경색상을안개색상과동일하게설정. Ogre::ColourValue fadecolor(0.7, 0.7, 0.7); mviewport->setbackgroundcolour(fadecolor); mscenemgr->setfog(ogre::fog_linear, fadecolor, 0.0, 500, 1000); 카메라로부터 500~1000 단위의거리사이에 facecolour 의안개를표시. 선형안개로설정함.

지수형안개 FOG_EXP2 타입설정 mscenemgr->setfog(fog_exp2, fadecolour, 0.001);

암흑구현실습 실습 안개의색상을매우어두운색으로설정하면카메라에위에점조명을설치핚효과를얻을수있다. Ogre::ColourValue fadecolor(0.01, 0.01, 0.01); mviewport->setbackgroundcolour(fadecolor); mscenemgr->setfog(ogre::fog_linear, fadecolor, 0.0, 500, 1000);

학습정리 지형렌더링 씬매니저를지형씬매니저로선택 ( ST_EXTERIOR_CLOSE ) Height Map 과 Texture 를이용하여효과적읶렌더링가능 하늘렌더링 육면체하늘, 반구하늘, 평면하늘 상황에따라적젃한하늘구현필요. 안개렌더링 선형설정및지수형설정가능.