Terrain.

Slides:



Advertisements
Similar presentations
목 차 Ⅰ 제도 도입 배경 및 개요 내일채움공제 사업 안내 내일채움공제 연계 지원 사업 Ⅲ Ⅱ.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
2015 상반기 공채 대비 _ 겁나 빠른 공채 달력 이용 안내 년 상반기 대기업 공채 달력 공채 달력을 대학 게시판에 쉽게 등록 - 게시판에 쉽게 등록할 수 있게 Html 로 제공 - 복사해서 학생들에게 메일로 발송 가능 대기업 공채 일정을.
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
목표/실행전략 기획안 작성 (교회1) 1.
제 3 장 변수와 자료형.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
2장 렌더링 파이프라인 목표 Direct3D에서 3D 물체를 표현하는 방법을 배운다. 가상카메라를 모델링하는 방법을 배운다.
Deferred Shading (지연 세이딩)
C++ Espresso 제1장 기초 사항.
D. 지뢰찾기 분석 설계 예제.
제12장 유연한 카메라 클래스 만들기 학기 컴퓨터게임(DirectX).
제13장 기본적인 지형 렌더링 학기 컴퓨터게임(DirectX).
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
Internet Computing KUT Youn-Hee Han
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
8. 객체와 클래스 (기본).
Internet Computing KUT Youn-Hee Han
C++ Espresso 제9장 다형성.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
자료 구조: Chapter 3 배열(1) 순천향대학교 컴퓨터공학과 하 상 호.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
문 성 원 3D Game Programming QuadTree Culling 문 성 원 KoreaIT 전문학교 게임학과.
6. 기본 클래스 프로그래밍 6 컴퓨터공학과 신동일.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
제6장 텍스처링 학기 컴퓨터게임(DirectX).
제8장 스텐실.
제 14 장 파티클 시스템.
12장 유연한 카메라 클래스 만들기 한성대학교 멀티미디어공학과 게임 프로그래밍-I 강의노트
1.민족의 발전과 민족 문화 창달(4)주체적 문화교류의 자세
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
C ++ 프로그래밍 시작.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 08. 상속과 다형성.
This, static, final 지정 예약어 자바 4대 중첩 클래스
제4장 컬 러(COLOR) 컬러 표현 Direct3D는 RGB 세 성분을 이용해 컬러 표현
프로그래밍2 및 실습 C언어 기반의 C++ 2.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
Visual Studio 2010 프로젝트 생성하기 PC화면에서 Visual Studio 2010 아이콘을 더블클릭 하거나
Matrix 및 Rendering 파이프라인
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
DirectX 3D 7개월차 김성도 3D 5인 프로젝트.
1. 논리적이란? 논리적이지 못하다 말이나 글에 두서가 없다. 1. 논리적이란? 논리적이지 못하다 말이나 글에 두서가 없다.
Chapter 3 클래스. 최호성.
adopted from KNK C Programming : A Modern Approach
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
어서와 Java는 처음이지! 제9장 인터페이스, 패키지.
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
<9조> 강지영(컴공) 김영수(역교) 김자원(정통) 박성심(통계) 하은수(화학)
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 그래픽 I 영화 홍보 사이트 분석 과목 : 컴퓨터 그래픽 I 담당교수 : 손애경 교수님 학과 : 정보처리과 1반(A1)
3장. 클래스의 기본.
루프와 카운트 Looping and counting
JA V A W. 07 Sb.L.
JA A V W. 06.
3D Shapes 3개 핵심 Properties가 존재 1.Material 표면의 재질을 설정합니다.
목차 성능과 최적화. 메모리할당. STL 알고리즘. 책의 성능 단원과 다른 단원들을 함께 포괄적으로 발표를 진행 하겠습니다.
Terrain 김 성 남.
2015년 2학년 1반.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
새로운 타입 정의하기 Defining new types
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
일반대학원 사용자 매뉴얼(학생)
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
우리나라에서 10대로 살아가기 엘리트조 오정희 / 송지선 / 손시하 / 박주현 / 김소현.
Ch.11. 이진영상처리를 이용한 영상인식.
Presentation transcript:

Terrain

Basic Terrain Rendering 산이나 계곡등의 지형을 나타내는 방식 텍스쳐를 추가하면 해변이나 풀덮인 언덕, 눈덮힌 산 등을 표현할 수도 있다. 전체 지형을 다 그리는 것은 낭비이며 보이는 부분만 그리고(View Frustum Culling), 멀리 있는 물체는 덜 세밀하게 그려야 (LOD:Level of Detail)속도가 향상된다.

Terrain Representation Height Map 사각형의 지역내 각각의 점에 높이 값이 저장되어 있는 map (2차원 이미지와 비슷한 개념) Height Map을 Geometry로 변환 (0,0) (1,0) 높이 좌표는 height map 참조 (0,1) (1,1)

Terrain LOD Cracks, T-junctions How do we solve this?

Terrain LOD Subdivide the terrain such that this is easier or done for free Quadtrees

Quadtree Each quad is actually two triangles Still have cracks and T-junctions Easy to implement

Error Estimation/Control τ = 2 pixels 79,382 triangles τ = 4 pixels 25,100 triangles

지형위를 걷기 현재 서있는 지점의 높이(y 좌표)에 따라 카메라의 높이를 조절한다. 카메라 위치 즉 x와 z축 좌표를 이용하여 현재의 셀(삼각형)을 찾아내야 한다. 그 후 x,z좌표값에서 해당되는 삼각형의 높이값을 계산한다. (0,0) (1,0) (0,1) (1,1)

private: IDirect3DDevice9* _device; IDirect3DTexture9* _tex; IDirect3DVertexBuffer9* _vb; IDirect3DIndexBuffer9* _ib; int _numVertsPerRow; int _numVertsPerCol; int _cellSpacing; int _numCellsPerRow; int _numCellsPerCol; int _width; int _depth; int _numVertices; int _numTriangles; float _heightScale; std::vector<int> _heightmap; // helper methods bool readRawFile(std::string fileName); bool computeVertices(); bool computeIndices(); bool lightTerrain(D3DXVECTOR3* directionToLight); float computeShade(int cellRow, int cellCol, D3DXVECTOR3* directionToLight); struct TerrainVertex { TerrainVertex(){} TerrainVertex(float x,float y,float z,float u,float v) _x = x; _y = y; _z = z; _u = u; _v = v; } float _x, _y, _z; float _u, _v; static const DWORD FVF; }; class Terrain { public: Terrain( IDirect3DDevice9* device, std::string heightmapFileName, int numVertsPerRow, int numVertsPerCol, int cellSpacing, // space between cells float heightScale); ~Terrain(); int getHeightmapEntry(int row, int col); void setHeightmapEntry(int row, int col, int value); float getHeight(float x, float z); bool loadTexture(std::string fileName); bool genTexture(D3DXVECTOR3* directionToLight); bool draw(D3DXMATRIX* world, bool drawTris);