SlideShare a Scribd company logo
1 of 17
Download to read offline
WEBGL #4Three.js
04 28, 2015 - 이준호
오늘 볼 내용은...
CPU version - 
GPU version - 
http://ligo.kr/po1
http://ligo.kr/gr6
WHY CPU?
GPU 가속없이 CPU에서 동작하는 자바스크립트만으로 3D엔진을 구축 해보면
최신 GPU 가속을 이용한 3D 구축 원리를 이해할 수 있고,
더 복잡한 3D 엔진들을 쉽게 이해할 수 있게됨.
참고: 
코드: 
개인적으로는 GPU의 고마움을 알게 되었음. :)
http://ligo.kr/vwz
view source
CORE
Camera, Mesh, Device
Device의 render 메소드에서 Camera 기준의 View Matrix와 Projection Matrix를 처리.
Rendering loop: clear => render => present
var transformMatrix = worldMatrix * viewMatrix * projectionMatrix
DRAW TRIANGLE
Geomatry의 기본은 삼각형
모든 Mesh는 삼각형의 집합
Face: 삼각형을 구성하기 위해 필요한 3개의 Vertex의 인덱스
Vertex를 사용하여 삼각형을 그리고 Mesh를 구성하는 것으로 모든 오브젝트를 표현할 수 있음
DRAW TRIANGLE
MODELING DATA
복잡한 오브젝트를 그리기 위해서는 무수한 삼각형을 그려야 하는데...
일일이 Vertex 좌표를 작성하는 것은 불가능
모델링 툴에서 모델링하여 export한 데이터를 로드하여 사용한다.
모델링 툴도 많고 로더도 많고 포맷도 많고...
파싱은 나름. - 필요한 데이터만 파싱하여 사용하자.
MODELING DATA
삼각형 채우기
resterization 알고리즘은 매우 많다. 심지어 각자 제작하기도
CPU던 GPU던 가장 많은 부하가 걸리는 부분
processScanLine
위에서 아래로, 좌측에서 우측으로
두 가지 패턴의 삼각형을
두 가지 케이스로 나누어서 채운다.
Z-BUFFER
최종적으로 점을 채우기 전에
뒤에 있는 점을 앞에 있는 점이 가리고 있으면 그리지 않는 처리
점을 찍기 전에 z-buffer와 비교하면 간단히 처리 가능
z-buffer를 저장하기 위한 depthbuffer를 생성
GOURAUD SHADING
사실성을 높이기 위해 Light와 Face 사이의 각도를 이용.
Face normal vector와 light vector 사이의 각에 따라 0과 1 사이의 값을 곱
Blender에서 확인 가능
Vertex에 Normal을 저장
각 Vertex의 Normal을 사용하여 Vertex 사이를 보간
color * Math.max( 0, cos(angle) )
주요 메소드
Project World Matrix를 사용해서 3D상의 좌표를 가지는 Vertex
를 생성
DrawTriangle Vertex를 받아서 ComputeNDotL 메소드를 통해 NDotL
을 연산한 결과를 가지고 ProcessScanLine을 호출
ComputeNDotL Normal과 Light 사이의 cosine 각도를 연산
ProcessScanLine DrawTriangle로 부터 전달된 NDotL 값을 사용해 color를
결정.
GOURAUD SHADING
TEXTURE
Blender에서 export한 UV좌표를 사용
두 Vertex 사이를 보간하는 처리가 핵심
UV좌표란: Vertex에 사용하는 Texture 상의 2D 좌표
이미지를 로드하고 u, v 좌표를 받아 이미지 좌표 상의 컬러를 반환하는 map을 구현
TEXTURE
THREE.JS
Custom Loader
소스 코드를 직접 보겠습니다. :)
THANK YOU

More Related Content

Viewers also liked

[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGLNAVER D2
 
Survival: hard decisions in hard times
Survival: hard decisions in hard timesSurvival: hard decisions in hard times
Survival: hard decisions in hard timesRoxanne Missingham
 
201610무들배지시스템
201610무들배지시스템201610무들배지시스템
201610무들배지시스템won ho
 
BEZEROEN ASEBETETZEA
BEZEROEN ASEBETETZEABEZEROEN ASEBETETZEA
BEZEROEN ASEBETETZEAekonomistak
 
Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014
Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014
Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014Food Technical Consulting
 
Introduction To It
Introduction To ItIntroduction To It
Introduction To ItKonevo311
 
The VA Hybrid Loan and the CMT Index
The VA Hybrid Loan and the CMT IndexThe VA Hybrid Loan and the CMT Index
The VA Hybrid Loan and the CMT IndexEric Kandell
 
The Perkins Law Five-Finger Philosophy of Nonprofit Board Composition
The Perkins Law Five-Finger Philosophy of Nonprofit Board CompositionThe Perkins Law Five-Finger Philosophy of Nonprofit Board Composition
The Perkins Law Five-Finger Philosophy of Nonprofit Board CompositionPerkins Law, PLLC
 
Эффективное использование социальных сетей для развития интернет-магазина
Эффективное использование социальных сетей для развития интернет-магазинаЭффективное использование социальных сетей для развития интернет-магазина
Эффективное использование социальных сетей для развития интернет-магазинаFert
 
Liveperson DLD 2015
Liveperson DLD 2015 Liveperson DLD 2015
Liveperson DLD 2015 LivePerson
 
Communicating with members through social media 07212015
Communicating with members through social media 07212015Communicating with members through social media 07212015
Communicating with members through social media 07212015dinica
 
Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...
Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...
Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...Urska Saletinger
 
Integrating Twitter into Education
Integrating Twitter into EducationIntegrating Twitter into Education
Integrating Twitter into EducationJamie Edwards
 
anteprima del nuovo catalogo di integratori GJAV
anteprima del nuovo catalogo di integratori GJAVanteprima del nuovo catalogo di integratori GJAV
anteprima del nuovo catalogo di integratori GJAVGJAV
 

Viewers also liked (20)

[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
 
Survival: hard decisions in hard times
Survival: hard decisions in hard timesSurvival: hard decisions in hard times
Survival: hard decisions in hard times
 
201610무들배지시스템
201610무들배지시스템201610무들배지시스템
201610무들배지시스템
 
BEZEROEN ASEBETETZEA
BEZEROEN ASEBETETZEABEZEROEN ASEBETETZEA
BEZEROEN ASEBETETZEA
 
Ca eed 2014 milan wg5 4 nl split incentive
Ca eed 2014 milan wg5 4   nl split incentiveCa eed 2014 milan wg5 4   nl split incentive
Ca eed 2014 milan wg5 4 nl split incentive
 
Architecten en energieprestatiecontracten
Architecten en energieprestatiecontractenArchitecten en energieprestatiecontracten
Architecten en energieprestatiecontracten
 
Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014
Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014
Fast Food/Casual QSR Restaurant Tour of Sydney Australia 2014
 
Introduction To It
Introduction To ItIntroduction To It
Introduction To It
 
Al.landalus
Al.landalusAl.landalus
Al.landalus
 
The VA Hybrid Loan and the CMT Index
The VA Hybrid Loan and the CMT IndexThe VA Hybrid Loan and the CMT Index
The VA Hybrid Loan and the CMT Index
 
Oreind
OreindOreind
Oreind
 
Service solution 2012 overview_rus
Service solution 2012 overview_rusService solution 2012 overview_rus
Service solution 2012 overview_rus
 
Informatica client
Informatica clientInformatica client
Informatica client
 
The Perkins Law Five-Finger Philosophy of Nonprofit Board Composition
The Perkins Law Five-Finger Philosophy of Nonprofit Board CompositionThe Perkins Law Five-Finger Philosophy of Nonprofit Board Composition
The Perkins Law Five-Finger Philosophy of Nonprofit Board Composition
 
Эффективное использование социальных сетей для развития интернет-магазина
Эффективное использование социальных сетей для развития интернет-магазинаЭффективное использование социальных сетей для развития интернет-магазина
Эффективное использование социальных сетей для развития интернет-магазина
 
Liveperson DLD 2015
Liveperson DLD 2015 Liveperson DLD 2015
Liveperson DLD 2015
 
Communicating with members through social media 07212015
Communicating with members through social media 07212015Communicating with members through social media 07212015
Communicating with members through social media 07212015
 
Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...
Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...
Nov kapital, nove investicije za Facebook__Marketing Magazin_sep2012_st.376_s...
 
Integrating Twitter into Education
Integrating Twitter into EducationIntegrating Twitter into Education
Integrating Twitter into Education
 
anteprima del nuovo catalogo di integratori GJAV
anteprima del nuovo catalogo di integratori GJAVanteprima del nuovo catalogo di integratori GJAV
anteprima del nuovo catalogo di integratori GJAV
 

Similar to WebGL 20150428

KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발SeongWan Kim
 
Project anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementProject anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementDong Chan Shin
 
20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)Dongho Kim
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 dMinGeun Park
 
mago3D 한국어 소개 자료
mago3D 한국어 소개 자료 mago3D 한국어 소개 자료
mago3D 한국어 소개 자료 SANGHEE SHIN
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2MinGeun Park
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기진현 조
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요chcbaram
 
Gpgpu how to make bruteforcing tool using gpgpu
Gpgpu how to make bruteforcing tool using gpgpuGpgpu how to make bruteforcing tool using gpgpu
Gpgpu how to make bruteforcing tool using gpgpuGooBeom Jeoung
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기Chang W. Doh
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi
 
Direct3d overview
Direct3d overviewDirect3d overview
Direct3d overview문익 장
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기Chang W. Doh
 

Similar to WebGL 20150428 (20)

KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발
 
Project anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory managementProject anarchy로 3d 게임 만들기 part_4_network_memory management
Project anarchy로 3d 게임 만들기 part_4_network_memory management
 
20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
Ai based on gpu
Ai based on gpuAi based on gpu
Ai based on gpu
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 d
 
mago3D 한국어 소개 자료
mago3D 한국어 소개 자료 mago3D 한국어 소개 자료
mago3D 한국어 소개 자료
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
 
Gpgpu how to make bruteforcing tool using gpgpu
Gpgpu how to make bruteforcing tool using gpgpuGpgpu how to make bruteforcing tool using gpgpu
Gpgpu how to make bruteforcing tool using gpgpu
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
 
Direct3d overview
Direct3d overviewDirect3d overview
Direct3d overview
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 

More from Jun Ho Lee

우아한오픈소스
우아한오픈소스우아한오픈소스
우아한오픈소스Jun Ho Lee
 
ECMA2015 INSIDE
ECMA2015 INSIDEECMA2015 INSIDE
ECMA2015 INSIDEJun Ho Lee
 
HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트
HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트
HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트Jun Ho Lee
 
스타일 객체 활용
스타일 객체 활용스타일 객체 활용
스타일 객체 활용Jun Ho Lee
 
지금까지 상상한 Web 표현의한계를넘자 WebGL
지금까지 상상한 Web 표현의한계를넘자 WebGL지금까지 상상한 Web 표현의한계를넘자 WebGL
지금까지 상상한 Web 표현의한계를넘자 WebGLJun Ho Lee
 
WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성 WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성 Jun Ho Lee
 

More from Jun Ho Lee (6)

우아한오픈소스
우아한오픈소스우아한오픈소스
우아한오픈소스
 
ECMA2015 INSIDE
ECMA2015 INSIDEECMA2015 INSIDE
ECMA2015 INSIDE
 
HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트
HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트
HTML5 관점에서 본 2015년 웹개발 트렌드 및 인사이트
 
스타일 객체 활용
스타일 객체 활용스타일 객체 활용
스타일 객체 활용
 
지금까지 상상한 Web 표현의한계를넘자 WebGL
지금까지 상상한 Web 표현의한계를넘자 WebGL지금까지 상상한 Web 표현의한계를넘자 WebGL
지금까지 상상한 Web 표현의한계를넘자 WebGL
 
WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성 WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성
 

WebGL 20150428