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
950
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[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
590
[Rebecca Franks] Practical Image Processing in Android
gdglviv
1
490
[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
160
[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
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
0
240
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
180
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
840
Chainlitで作るお手軽チャットUI
ynt0485
0
200
失敗を資産に変えるClaude Code
shinyasaita
0
420
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
160
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
310
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
950
やさしいA2A入門
minorun365
PRO
12
1.7k
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
100
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
130
脆弱性対応、どこで線を引くか
rymiyamoto
0
360
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Practical Orchestrator
shlominoach
191
11k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Designing for humans not robots
tammielis
254
26k
Design in an AI World
tapps
1
240
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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 ;-)