Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[Martin Splitt] Practical WebGL with Three.js
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Google Developers Group Lviv
September 10, 2016
Technology
940
1
Share
[Martin Splitt] Practical WebGL with Three.js
Presentation from GDG DevFest Ukraine 2016.
Learn more at:
https://devfest.gdg.org.ua
Google Developers Group Lviv
September 10, 2016
More Decks by Google Developers Group Lviv
See All by Google Developers Group Lviv
[Elad Bezalel] Angular Material CDK
gdglviv
1
170
[Zac Sweers] Breaking the Android ClassLoader
gdglviv
1
260
[Daniel Galpin] Adventures in Navigation
gdglviv
2
580
[Rebecca Franks] Practical Image Processing in Android
gdglviv
1
480
[Mateusz Herych] Architecture for App Bundles
gdglviv
2
150
[Andrea Falcone] Iterative Mobile Development
gdglviv
2
140
[Yonatan Levin] Keynote: The world of change and your significance in it
gdglviv
1
150
[Denys Tkalich] Using BigQuery as a data warehouse in B2B startup
gdglviv
1
130
[Mete Atamel] Google Assistant powered by Containers, Machine Learning and .NET on Google Cloud
gdglviv
1
170
Other Decks in Technology
See All in Technology
Fラン学生が考える、AI時代のデザインに執着した突破口
husengs7
1
200
JTCでRedmine利用者2700人を実現した手法 第二部
nobuonakamura
0
130
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
2.1k
Every Conversation Counts
kawaguti
PRO
0
250
Loadbalancing exporter internals
ymotongpoo
1
100
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
300
社内RAGの導入で気を付けたポイント
yakumo
1
120
分断された OT と IT を繋ぐ架け橋 -Kubernetes が切り拓く 産業用組み込み製品の現在地 -
yudaiono
1
120
AI全盛の今だからこそ、あえてもう一度振り返るAPIの基礎
smt7174
3
120
Claude Code / Codex / Kiro に AWS 権限を 渡すとき、何を設計すべきか
k_adachi_01
5
1.7k
【関西製造業祭り2026春】現場を変える技術はここまで来た〜世界最大の製造業見本市から持って帰ってきたもの〜
tanakaseiya
0
180
Swift Sequence の便利 API 再発見
treastrain
1
290
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Designing for humans not robots
tammielis
254
26k
30 Presentation Tips
portentint
PRO
1
290
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
800
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Bash Introduction
62gerente
615
210k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Designing for Performance
lara
611
70k
Docker and Python
trallard
47
3.8k
Balancing Empowerment & Direction
lara
6
1.1k
Transcript
@g33konaut with Three.js Practical WebGL
@g33konaut Hi, I’m Martin, Senior Dev @ Archilogic @g33konaut on
Twitter
@g33konaut This is what we do
@g33konaut The next 30ish minutes... Why should you be excited?
How do you create 3D experiences? What is next?
@g33konaut Why?
@g33konaut Use cases • Maps / Navigation • Education /
Research • Healthcare / Therapy • Entertainment / Journalism • Marketing
@g33konaut So, what’s it look like?
@g33konaut It’s well-ish-supported
@g33konaut Is WebGL fast?
@g33konaut
@g33konaut How?
@g33konaut
@g33konaut So how do we get 3D graphics? 1. We
need points (“vertices”) 2. We need to connect them (“faces”) 3. We need to define a. What colour? b. What texture? c. Shiny / Transparent / …? “Material”
@g33konaut The WebGL pipeline
@g33konaut Three.js • threejs.org • Lots of plugins, 3D format
importers, ... • Basic principle: ◦ “Movie shooting”: Camera, Scene, Meshes • Let’s go: avgp.github.io/h2g2three
@g33konaut The WebGL pipeline Three.js covers this
@g33konaut Setup var renderer = new THREE.WebGLRenderer(), scene = new
THREE.Scene(), camera = new THREE.PerspectiveCamera( ...)
@g33konaut Getting something on stage var box = new THREE.Mesh(
new THREE.BoxGeometry(100, 100, 100), new THREE.MeshBasicMaterial() ) scene.add(box)
@g33konaut Rendering it out (function render() { requestAnimationFrame( render )
renderer.render( scene, camera ) })()
@g33konaut Working with 3D assets • Use the 3D editor
of your choice (e.g. Blender) • Export as a common 3D format (e.g. OBJ or glTF)
@g33konaut Tips & Tricks
@g33konaut The basic ones: Reducing vertices
@g33konaut The basic ones: Level of detail
@g33konaut The basic ones: Extensions
@g33konaut Using textures to cheat • Normal maps • Light
maps • Bump maps • Environment maps
@g33konaut Normal maps
@g33konaut Light maps
@g33konaut Light maps
@g33konaut Bump maps
@g33konaut Environment maps
@g33konaut Post processing
@g33konaut Tooling • Shader Editor: Chrome & Firefox (built in)
• WebGL Insight • WebGL Inspector
@g33konaut What’s next? • Explore WebVR • Check out what’s
coming in WebGL 2 • Get started!
@g33konaut Wrap up • 3D is great for spatial visualisation
• 3D can be used as an enhancement • Three.js gets you up & running quickly • Trick the eyes to get nicer visual quality
@g33konaut GO EXPLORE! • The harder way: learningwebgl.com • The
easier way: three.js.org/docs
@g33konaut Thank you! Questions? Slides: bit.ly/dfua-webgl Twitter: @g33konaut Web: spaces.archilogic.com
Feedback wanted ;-)