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
Google Developers Group Lviv
September 10, 2016
Technology
960
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
180
[Zac Sweers] Breaking the Android ClassLoader
gdglviv
1
270
[Daniel Galpin] Adventures in Navigation
gdglviv
2
600
[Rebecca Franks] Practical Image Processing in Android
gdglviv
1
500
[Mateusz Herych] Architecture for App Bundles
gdglviv
2
150
[Andrea Falcone] Iterative Mobile Development
gdglviv
2
150
[Yonatan Levin] Keynote: The world of change and your significance in it
gdglviv
1
170
[Denys Tkalich] Using BigQuery as a data warehouse in B2B startup
gdglviv
1
140
[Mete Atamel] Google Assistant powered by Containers, Machine Learning and .NET on Google Cloud
gdglviv
1
190
Other Decks in Technology
See All in Technology
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
360
20分でわかるセキュアAPI
nwiizo
2
320
Genie Codeハンズオン応用編
taka_aki
0
140
私がブラウザを自作したくなった理由
supurazako
1
280
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
120
国家プロジェクトを支える「さくらONE」 大規模LLM開発におけるGPU障害を乗り越えるクラスター運用戦略
gpuunite_official
0
240
【書籍出版記念】 10周回って、エージェント開発は RAGがすべてだった。〜RAGの歴史と開発現場で見えた実践知〜
akiratameto
11
4.1k
自宅NWにISR4331を導入してみた話
okaits
0
120
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.5k
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
220
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
480
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
4
26k
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
540
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
870
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
780
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
440
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
480
Utilizing Notion as your number one productivity tool
mfonobong
4
550
Why Our Code Smells
bkeepers
PRO
340
58k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
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 ;-)