SlideShare a Scribd company logo
Game
 
Programing
 
Gems
 
[4.17~19]프렉탈
 지형
 생성
2015 – 07 – 30 NHN NEXT 남세현
지형을 만들어봅시다.
	
   가장 좋은 지형 만들기 방법은?	
  
◦  디자이너가 일일이 다 만드는거	
  
	
   근데 문제점은?	
  
◦  비용이 비싸다.	
  (시간, 돈, 지루함)	
  
◦  용량이 크다.	
  
	
   좀 더 쉽게 지형을 만드는 방법	
  
1.  노이즈를 만든다.	
  
2.  근데 노이즈가 좀 괜찮아 보이게 만든다.	
  
1. 단층 변형
단층 변형
1.  Z(높이) 값을 저장하는 필드	
  
필드	
  
Field[x][y]	
  =	
  Height	
  
처음엔 다 0으로 초기화	
  
(0,0)	
  
(Mx,	
  My)	
  (0,	
  My)	
  
(Mx,	
  0)	
  
단층 변형
1.  Z(높이) 값을 저장하는 필드	
  
2.  선을 긋는다.	
  
	
  
	
  선 긋는 방법	
  
1.  상 하 좌 우 중 2개 선택	
  
2.  0부터 1까지 중 2개 고름	
  
예를들어 (상,	
  0.5)	
  ,	
  (우, 0.3) 이 골라
지면	
  
점 1	
  :	
  (Mx	
  *	
  0.5	
  ,	
  My)	
  
점 2	
  :	
  (Mx,	
  My	
  *	
  0.3)임. 이으면 됨	
  
Field	
  
(0,0)	
  
(Mx,	
  My)	
  (0,	
  My)	
  
(Mx,	
  0)	
  
단층 변형
1.  Z(높이) 값을 저장하는 필드	
  
2.  선을 긋는다.	
  
3.  선 기준으로 왼쪽에 있는 애들은
dHeight만큼 높이 증가	
  
x,y가 선 왼쪽에 있는지 아는 방법	
  
외적 이용해서 구하세요~	
  
(x	
  -­‐	
  X1)	
  *	
  (Y2	
  –	
  Y1)	
  –	
  (y	
  –	
  Y1)	
  *	
  (X2	
  –	
  X1)	
  
이게 음수면 오른쪽, 양수면 왼쪽	
  
Field	
  
(0,0)	
  
(Mx,	
  My)	
  (0,	
  My)	
  
(Mx,	
  0)	
  
여기 +dHeight	
  
단층 변형
ß너무 날카롭지유?	
  
단층 변형
1.  최종 결과물을 일단 만듬	
  
2.  얘를 침식시킬거임	
  
◦  사포로 문지른다고 생각하면 됨	
  
Low Pass Filter
	
   필터링을 해야함	
  
1.  Low	
  Pass	
  Filter	
  
2.  High	
  Pass	
  Filter	
  
	
   필터링 : 없애는거.	
  DELETE. 죽여버리는거야 아주 그냥 아주!	
  
	
   Low	
  Pass	
  à	
  주파수 낮은걸 필터링 안하고 패스시킴	
  
	
   à 주파수 낮다 = 잘 안변하는 것들. 베이스들 à 즉, 위에 나대는거 깎음.	
  
	
   High	
  Pass	
  à 주파수 높은걸 필터링 안하고 패스시킴	
  
	
   à 주파수 높다 = 활발한 애들 	
  
à 옛날 티비 보면 지지지직 거리죠? 아니면 통화 음질 안좋을때 자꾸 지지
직 거리죠? 걔넨 항상 계~속 지지직 거리죠? 그런애들 지우는거. 우리 음성
은 활발하게 움직이니까 필터링 안되고 패스되고.	
  
Low Pass Filter
	
   우리가 지우고 싶은거	
  
◦  급격한 변화를 없애고 싶음.	
  
◦  마치 사포로 튀어나온 모서리 깎듯.	
  
◦  튀어나온 모서리? 갑작스런 변화 à 높은 주파수.	
  
◦  그럼 우리가 써야하는건 Low	
  Pass	
  Filter	
  
간단한 Low	
  Pass	
  Filter 방정식	
  
Result(i)	
  =	
  k	
  *	
  Result(i-­‐1)	
  +	
  (1-­‐k)	
  *	
  data(i), -­‐ 단 k	
  는 0~1	
  사이	
  
1.  i번째 필터링된 값은	
  
2.  i-1번째 필터링 된 값에 k 곱하고	
  
3.  필터링 되기 전의 데이터 i번째껄 (1-­‐k) 곱해서 더한거.	
  
◦  그러믄,	
  k가 1이면 너무 깎이고 0이면 하나도 안깎이겠네요?	
  
Low Pass Filter
ß 빨강 :	
  k가 높은거	
  
ß 초록검정 :	
  	
  k가 낮은거	
  
Low Pass Filter
	
   Data	
  data[MaxX][MaxY];	
  
	
   //data에 다 채워넣었음	
  
	
   k	
  =	
  0~1;	
  
	
   Data	
  filteredData[MaxX][MaxY];	
  
	
   for	
  x	
  =	
  0	
  ~	
  maxX	
  
	
  	
  	
  	
  for	
  y	
  =	
  0	
  ~	
  maxY	
  
	
  	
  	
  	
  	
  filteredData[x][y]	
  =	
  	
  
	
  k	
  *	
  filterData[x-­‐1][y]	
  /2	
  
	
  +	
  (1-­‐k)	
  *	
  data[x-­‐1][y]	
  /2	
  
	
  + k	
  *	
  filterData[x][y-­‐1]	
  /2	
  	
  
	
  +	
  (1-­‐k)	
  *	
  data[x][y-­‐1]	
  /2	
  
	
  
예시임.	
  	
  
다르게 해도 됨	
  
Before	
  
Low Pass Filter
Before	
   A[er	
  
결과물 – 단층 변형
2. 중점 높이 이동
중점 높이 이동
1.  태초에 선이 있었습니다.	
  
중점 높이 이동
1.  태초에 선이 있었습니다.	
  
2.  중점을 올려줍니다.	
  
적당한 상수 dHeight 를 만들고,	
  
-­‐ dHeight	
  /	
  2	
  ~	
  +	
  dHeight	
  /	
  2	
  
사이의 값을 더함.	
  
중점 높이 이동
1.  태초에 선이 있었습니다.	
  
2.  중점을 올려줍니다.	
  
3.  중점 of 중점을 올려줍니다.	
  
4.  while(true)	
  _3();	
  
5.  근데!	
  
	
   ±dHeight/2 의 사이값 더했잖아요,	
  
	
   그거 조금씩 낮추면 더 깔끔하게 나옴.	
  
	
   dHeight(i)	
  =	
  dHeight(i-­‐1)	
  *	
  2^r	
  
◦  r은 지형의 거칢 상수	
  
중점 높이 이동 – r 거칢 상수
중점 높이 이동 – 평면
1.  태초에 직선 평면이 있었다.	
  
중점 높이 이동 – 평면
1.  태초에 직선 평면이 있었다.	
  
2.  평면의 중점에 값을 더한다.	
  
중점 높이 이동 – 평면
1.  태초에 직선 평면이 있었다.	
  
2.  평면의 중점에 값을 더한다.	
  
3.  계속 반복한다.	
  
결과물 - 중점 높이 이동
3. 입자 침전 기법
입자 침전 기법
1.  입자를 떨어뜨립니다.	
  
	
  
	
  
규칙 	
  
1.  위치는 랜덤이다요!	
  
입자 침전 기법
1.  입자를 떨어뜨립니다.	
  
2.  두번째 입자를 떨어뜨린다.	
  
	
  
규칙 	
  
1.  위치는 랜덤이다요!	
  
2.  주변에 나보다 낮은데 비어있는
곳이 있으면 거기로 이동.	
  
	
  
	
  
입자 침전 기법
1.  입자를 떨어뜨립니다.	
  
2.  두번째 입자를 떨어뜨린다.	
  
3.  N번째 입자를 떨어뜨린다.	
  
규칙	
  
1.  위치는 랜덤이다요!	
  
2.  주변에 나보다 낮은데 비어있는
곳이 있으면 거기로 이동.	
  
	
  
	
  
결과물 – 입자 침전 기법
입자 침전 기법 - 칼데라
	
   아이디어의 모티브는?	
  
◦  환태평양 화산대의 생성 과정	
  
	
   화산대엔 뭐가 있다?	
  
◦  칼데라	
  
	
   오른쪽 결과물에 칼데라를 넣어보자	
  

More Related Content

Viewers also liked

이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011devCAT Studio, NEXON
 
[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문MinGeun Park
 
[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할MinGeun Park
 
D three level2
D three level2D three level2
D three level2
WONSEOK YI
 
노동진 Mega splatting
노동진 Mega splatting노동진 Mega splatting
노동진 Mega splattingdrandom
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summarySehyeon Nam
 
stored procedure2 + jdbc
stored procedure2 + jdbcstored procedure2 + jdbc
stored procedure2 + jdbc
Hoyoung Jung
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들Jubok Kim
 
레벨 디자인의 구성
레벨 디자인의 구성레벨 디자인의 구성
레벨 디자인의 구성
준태 김
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
devCAT Studio, NEXON
 
MySQL Create Table
MySQL Create TableMySQL Create Table
MySQL Create Table
Hoyoung Jung
 
iOS Human Interface Guidelines 정리 (1)
iOS Human Interface Guidelines 정리 (1)iOS Human Interface Guidelines 정리 (1)
iOS Human Interface Guidelines 정리 (1)
Theodore(Yongbin) Cha
 
Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Game programing gems 3.4 3.6
Game programing gems 3.4 3.6
Sehyeon Nam
 
MP2 레벨디자인
MP2 레벨디자인MP2 레벨디자인
MP2 레벨디자인준태 김
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
선협 이
 
[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기
[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기
[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기
NAVER D2
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요Chris Ohk
 
iOS human interface guidelines(HIG)
iOS human interface guidelines(HIG)iOS human interface guidelines(HIG)
iOS human interface guidelines(HIG)
Sun Jin Choi
 
데이터베이스 베이직 소개
데이터베이스 베이직 소개데이터베이스 베이직 소개
데이터베이스 베이직 소개
Hoyoung Jung
 
[1B2]자신있는개발자에서훌륭한개발자로
[1B2]자신있는개발자에서훌륭한개발자로[1B2]자신있는개발자에서훌륭한개발자로
[1B2]자신있는개발자에서훌륭한개발자로
NAVER D2
 

Viewers also liked (20)

이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011
 
[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문[0326 박민근] udk 소개 입문
[0326 박민근] udk 소개 입문
 
[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할
 
D three level2
D three level2D three level2
D three level2
 
노동진 Mega splatting
노동진 Mega splatting노동진 Mega splatting
노동진 Mega splatting
 
Ec++ 3,4 summary
Ec++ 3,4 summaryEc++ 3,4 summary
Ec++ 3,4 summary
 
stored procedure2 + jdbc
stored procedure2 + jdbcstored procedure2 + jdbc
stored procedure2 + jdbc
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
 
레벨 디자인의 구성
레벨 디자인의 구성레벨 디자인의 구성
레벨 디자인의 구성
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
 
MySQL Create Table
MySQL Create TableMySQL Create Table
MySQL Create Table
 
iOS Human Interface Guidelines 정리 (1)
iOS Human Interface Guidelines 정리 (1)iOS Human Interface Guidelines 정리 (1)
iOS Human Interface Guidelines 정리 (1)
 
Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Game programing gems 3.4 3.6
Game programing gems 3.4 3.6
 
MP2 레벨디자인
MP2 레벨디자인MP2 레벨디자인
MP2 레벨디자인
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기
[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기
[D2 campus seminar]진지할 수도 있는 자료구조와 알고리즘(듬) 이야기
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요
 
iOS human interface guidelines(HIG)
iOS human interface guidelines(HIG)iOS human interface guidelines(HIG)
iOS human interface guidelines(HIG)
 
데이터베이스 베이직 소개
데이터베이스 베이직 소개데이터베이스 베이직 소개
데이터베이스 베이직 소개
 
[1B2]자신있는개발자에서훌륭한개발자로
[1B2]자신있는개발자에서훌륭한개발자로[1B2]자신있는개발자에서훌륭한개발자로
[1B2]자신있는개발자에서훌륭한개발자로
 

More from Sehyeon Nam

Game programing gems 1.11
Game programing gems 1.11Game programing gems 1.11
Game programing gems 1.11
Sehyeon Nam
 
Game programing gems 1.10
Game programing gems 1.10Game programing gems 1.10
Game programing gems 1.10
Sehyeon Nam
 
Hexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong YuHexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong Yu
Sehyeon Nam
 
아르카스톤 기획
아르카스톤 기획아르카스톤 기획
아르카스톤 기획
Sehyeon Nam
 
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
Sehyeon Nam
 
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
Sehyeon Nam
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
Sehyeon Nam
 
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 [GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
Sehyeon Nam
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
Sehyeon Nam
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
Sehyeon Nam
 
Ec++ c 1,2 surmary
Ec++ c 1,2 surmaryEc++ c 1,2 surmary
Ec++ c 1,2 surmarySehyeon Nam
 

More from Sehyeon Nam (11)

Game programing gems 1.11
Game programing gems 1.11Game programing gems 1.11
Game programing gems 1.11
 
Game programing gems 1.10
Game programing gems 1.10Game programing gems 1.10
Game programing gems 1.10
 
Hexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong YuHexagrid Draw by NHN NEXT Seo Dong Yu
Hexagrid Draw by NHN NEXT Seo Dong Yu
 
아르카스톤 기획
아르카스톤 기획아르카스톤 기획
아르카스톤 기획
 
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
 
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
 
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산 [GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
[GPG 스터디] 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
 
Ec++ c 1,2 surmary
Ec++ c 1,2 surmaryEc++ c 1,2 surmary
Ec++ c 1,2 surmary
 

Game programing gems 4.17

  • 6.  생성 2015 – 07 – 30 NHN NEXT 남세현
  • 7. 지형을 만들어봅시다.   가장 좋은 지형 만들기 방법은?   ◦  디자이너가 일일이 다 만드는거     근데 문제점은?   ◦  비용이 비싸다.  (시간, 돈, 지루함)   ◦  용량이 크다.     좀 더 쉽게 지형을 만드는 방법   1.  노이즈를 만든다.   2.  근데 노이즈가 좀 괜찮아 보이게 만든다.  
  • 9. 단층 변형 1.  Z(높이) 값을 저장하는 필드   필드   Field[x][y]  =  Height   처음엔 다 0으로 초기화   (0,0)   (Mx,  My)  (0,  My)   (Mx,  0)  
  • 10. 단층 변형 1.  Z(높이) 값을 저장하는 필드   2.  선을 긋는다.      선 긋는 방법   1.  상 하 좌 우 중 2개 선택   2.  0부터 1까지 중 2개 고름   예를들어 (상,  0.5)  ,  (우, 0.3) 이 골라 지면   점 1  :  (Mx  *  0.5  ,  My)   점 2  :  (Mx,  My  *  0.3)임. 이으면 됨   Field   (0,0)   (Mx,  My)  (0,  My)   (Mx,  0)  
  • 11. 단층 변형 1.  Z(높이) 값을 저장하는 필드   2.  선을 긋는다.   3.  선 기준으로 왼쪽에 있는 애들은 dHeight만큼 높이 증가   x,y가 선 왼쪽에 있는지 아는 방법   외적 이용해서 구하세요~   (x  -­‐  X1)  *  (Y2  –  Y1)  –  (y  –  Y1)  *  (X2  –  X1)   이게 음수면 오른쪽, 양수면 왼쪽   Field   (0,0)   (Mx,  My)  (0,  My)   (Mx,  0)   여기 +dHeight  
  • 13. 단층 변형 1.  최종 결과물을 일단 만듬   2.  얘를 침식시킬거임   ◦  사포로 문지른다고 생각하면 됨  
  • 14. Low Pass Filter   필터링을 해야함   1.  Low  Pass  Filter   2.  High  Pass  Filter     필터링 : 없애는거.  DELETE. 죽여버리는거야 아주 그냥 아주!     Low  Pass  à  주파수 낮은걸 필터링 안하고 패스시킴     à 주파수 낮다 = 잘 안변하는 것들. 베이스들 à 즉, 위에 나대는거 깎음.     High  Pass  à 주파수 높은걸 필터링 안하고 패스시킴     à 주파수 높다 = 활발한 애들   à 옛날 티비 보면 지지지직 거리죠? 아니면 통화 음질 안좋을때 자꾸 지지 직 거리죠? 걔넨 항상 계~속 지지직 거리죠? 그런애들 지우는거. 우리 음성 은 활발하게 움직이니까 필터링 안되고 패스되고.  
  • 15. Low Pass Filter   우리가 지우고 싶은거   ◦  급격한 변화를 없애고 싶음.   ◦  마치 사포로 튀어나온 모서리 깎듯.   ◦  튀어나온 모서리? 갑작스런 변화 à 높은 주파수.   ◦  그럼 우리가 써야하는건 Low  Pass  Filter   간단한 Low  Pass  Filter 방정식   Result(i)  =  k  *  Result(i-­‐1)  +  (1-­‐k)  *  data(i), -­‐ 단 k  는 0~1  사이   1.  i번째 필터링된 값은   2.  i-1번째 필터링 된 값에 k 곱하고   3.  필터링 되기 전의 데이터 i번째껄 (1-­‐k) 곱해서 더한거.   ◦  그러믄,  k가 1이면 너무 깎이고 0이면 하나도 안깎이겠네요?  
  • 16. Low Pass Filter ß 빨강 :  k가 높은거   ß 초록검정 :    k가 낮은거  
  • 17. Low Pass Filter   Data  data[MaxX][MaxY];     //data에 다 채워넣었음     k  =  0~1;     Data  filteredData[MaxX][MaxY];     for  x  =  0  ~  maxX          for  y  =  0  ~  maxY            filteredData[x][y]  =      k  *  filterData[x-­‐1][y]  /2    +  (1-­‐k)  *  data[x-­‐1][y]  /2    + k  *  filterData[x][y-­‐1]  /2      +  (1-­‐k)  *  data[x][y-­‐1]  /2     예시임.     다르게 해도 됨   Before  
  • 21. 중점 높이 이동 1.  태초에 선이 있었습니다.  
  • 22. 중점 높이 이동 1.  태초에 선이 있었습니다.   2.  중점을 올려줍니다.   적당한 상수 dHeight 를 만들고,   -­‐ dHeight  /  2  ~  +  dHeight  /  2   사이의 값을 더함.  
  • 23. 중점 높이 이동 1.  태초에 선이 있었습니다.   2.  중점을 올려줍니다.   3.  중점 of 중점을 올려줍니다.   4.  while(true)  _3();   5.  근데!     ±dHeight/2 의 사이값 더했잖아요,     그거 조금씩 낮추면 더 깔끔하게 나옴.     dHeight(i)  =  dHeight(i-­‐1)  *  2^r   ◦  r은 지형의 거칢 상수  
  • 24. 중점 높이 이동 – r 거칢 상수
  • 25. 중점 높이 이동 – 평면 1.  태초에 직선 평면이 있었다.  
  • 26. 중점 높이 이동 – 평면 1.  태초에 직선 평면이 있었다.   2.  평면의 중점에 값을 더한다.  
  • 27. 중점 높이 이동 – 평면 1.  태초에 직선 평면이 있었다.   2.  평면의 중점에 값을 더한다.   3.  계속 반복한다.  
  • 28. 결과물 - 중점 높이 이동
  • 30. 입자 침전 기법 1.  입자를 떨어뜨립니다.       규칙   1.  위치는 랜덤이다요!  
  • 31. 입자 침전 기법 1.  입자를 떨어뜨립니다.   2.  두번째 입자를 떨어뜨린다.     규칙   1.  위치는 랜덤이다요!   2.  주변에 나보다 낮은데 비어있는 곳이 있으면 거기로 이동.      
  • 32. 입자 침전 기법 1.  입자를 떨어뜨립니다.   2.  두번째 입자를 떨어뜨린다.   3.  N번째 입자를 떨어뜨린다.   규칙   1.  위치는 랜덤이다요!   2.  주변에 나보다 낮은데 비어있는 곳이 있으면 거기로 이동.      
  • 33. 결과물 – 입자 침전 기법
  • 34. 입자 침전 기법 - 칼데라   아이디어의 모티브는?   ◦  환태평양 화산대의 생성 과정     화산대엔 뭐가 있다?   ◦  칼데라     오른쪽 결과물에 칼데라를 넣어보자  
  • 35. 입자 침전 기법 - 칼데라   아이디어의 모티브는?   ◦  환태평양 화산대의 생성 과정     화산대엔 뭐가 있다?   ◦  칼데라     오른쪽 결과물에 칼데라를 넣어보자   1.  선을 긋는다  
  • 36. 입자 침전 기법 - 칼데라   아이디어의 모티브는?   ◦  환태평양 화산대의 생성 과정     화산대엔 뭐가 있다?   ◦  칼데라     오른쪽 결과물에 칼데라를 넣어보자   1.  선을 긋는다   2.  선을 기준으로 뒤집는다   if(  H    LineHeight  )              H  =  2*LineHeight  -­‐  H  
  • 37. 결과물 – 입자 침전 기법
  • 38. 결론 1.  자주 쓸일은 없지만   2.  “지형이 다양한건 스케일이 크니까, 게임잼때 못만들겠지?”   3.  하지 않도록 ^_^   4.  아니면 공부해서 듀랑고 팀 ㄱㄱ   5.  민나 화이또다요!!  
  • 39. Game
  • 44.  생성 2015 – 07 – 30 NHN NEXT 남세현