Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introduction to 3D Graphics - BostonVR VR/AR Ha...
Search
Douglass Turner
March 11, 2017
Technology
220
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to 3D Graphics - BostonVR VR/AR Hack Day
Introduction to 3D Graphics
Presented at BostonVR VR/AR Hack Day
March 11 2017
Douglass Turner
March 11, 2017
More Decks by Douglass Turner
See All by Douglass Turner
How To Think About Augmented Reality
douglassturner
0
52
Intro to 3D Graphics - WIG Boston - 2017
douglassturner
0
75
Metal for Mortals
douglassturner
0
110
The West 16th Street Peace Mural
douglassturner
4
79
How To Think About Software
douglassturner
0
160
Camp Interactive Talk - 9 Feb 2014
douglassturner
0
49
Bronx Community Charter School Visit - 4 jun 2014
douglassturner
0
130
iOS OpenGL
douglassturner
1
100
Implementing Data Visualization Apps on iOS Devices
douglassturner
2
150
Other Decks in Technology
See All in Technology
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.5k
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
300
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
290
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
430
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
680
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
33
21k
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
140
Antigravity SDK for the Java Developer
glaforge
0
200
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
1
270
2026-09-08 そのJavaモダナイゼーション、AIに丸投げで大丈夫?IBM Bobで変わる品質と効率
yutanonaka
1
190
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
240
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
810
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
How to build a perfect <img>
jonoalderson
1
6k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Claude Code のすすめ
schroneko
67
230k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
Six Lessons from altMBA
skipperchong
29
4.5k
The Spectacular Lies of Maps
axbom
PRO
1
1k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Transcript
INTRO TO 3D GRAPHICS Douglass Turner
[email protected]
@dugla 781 775
3708 DOUGLASS TURNER ELASTICIMAGE SOFTWARE email:
[email protected]
twitter: @dugla
Aim the camera
Elastic Image Software LLC Copyright Steve Jubinville Select and pose
the model
Elastic Image Software LLC Design Appearance. Light Scene. Copyright ©
2006 Holger Schömann 4
Render
Let’s unpack these activities …
Camera. Lights. Models. They all rely on various flavors of
transformation matrices for position, orientation, and scale.
Transform Transformation Matrix Coordinate Frame Reference Frame Eye Space Model
Space World Space Different words for the same thing
They are the fundamental state of your objects I think
of them as their DNA
Every object in Unity exists in a hierarchy. Think tree-branch.
Think parent-child, or sibling relationship.
Matrices are the basis of this hierarchical relationship.
Matrix Demo: Parent Child - Unity
Unity uses quaternions for rotation. They are easier to specify
and control then rotation via matrices.
Quaternion demo: HelloLight - iPhone For an implementation of quaternions
in Swift for iOS see the EIArcball class in my HelloMetal repository on Github: https://github.com/turner/HelloMetal
Models
Model demo: Bust - Blender model download: http://bit.ly/2mbLDZj
Hang on! Where did those surfaces come from …? Rendering.
3D shapes are defined by vertices. Each is a point
in 3-space.
We attach a set of attributes to each vertex. •
position: x, y, z • surface normal: nx, ny, nz, • texture coordinate: u, v
u,v define a coordinate system on the surface of an
object for attaching a texture u v
QUAD
Elastic Image Software LLC 22 SPHERE
Elastic Image Software LLC 23 TORUS
Something more interesting
UV Demo: Bust - Blender
Texture Mapping Demo: Low Poly Bust - Unity
surface normals
Normal Vector Demo: HelloLight - iPhone
Illumination Models
PrettyPixels = kd * (N.L) + ks * (R.V)^n An
illumination model describes the interaction between a object’s surface and light sources
PrettyPixels = kd * (N.L) + ks * (R.V)^n •
V - Eye vector • L - Light source vector • N - Normal vector • kd - diffuse scale factor Diffuse Illumination
PrettyPixels = kd * (N.L) + ks * (R.V)^n •
V - Eye vector • L - Light source vector • N - Normal vector • R - Refection vector • n - specular exponent • ks - specular scale factor Specular Illumination
In the real world surfaces are neither pure diffuse nor
pure specular.
Diffuse & Specular Show and Tell
Image Based Lighting (IBL) combined with High Dynamic Range (HDR)
Images allows us to eliminate “lights” entirely. Global Illumination (GI) takes things to another level.
IBL - HDR - GI Demo 1: Lego Star Wars
- Unity
IBL - HDR - GI Demo 2: Low Poly Bust
- Unity
All of what we have talked about up to this
point is preamble to where the real action happens, the … GPU
Elastic Image Software LLC Think of the GPU as a
dragster
Elastic Image Software LLC It does one thing insanely well
The GPU is a SIMD computing beast
SnapChat and Instagram are GPU apps
The GPU takes the triangles and textures and rasterizes then
for display. We control the GPU with small programs called shaders written in GLSL or Metal (iOS).
A shader defines the look of an object Shaders come
in pairs • vertex shader • fragment shader
vertexShader fragmentShader vertexShader vertexShader
void main() { vec4 raw = texture2D(hero, v_st); vec3 inverted
= 1.0 - raw.rgb; gl_FragColor = vec4(inverted, 1.0); } fragmentShader code
GPU - GLSL Demo 1: FotoCollection - iPad
Doug’s Brain
The shader concept was introduced by Pixar in the form
of RenderMan. It is a powerful idea that has unleashed all the visual f/x we take for granted in games and effects-heavy movies.
I wrote a 3D rendering system with an interpreted object-based
language where shaders are first class citizens
Doug’s Shading Language The language implements objects, variables and expressions
Doug’s Shading Language + + = shiny = ambient +
diffuse + specular
So how far can you take this shader idea?
DSL Demo: Swirl - Photoshop
DSL Demo: High Noon - Video
DSL Demo: Lance Williams Bust Gallery
None
360 Video Demo: Presence and Natural Phenomena
Thank You! Douglass Turner ElasticImage Software twitter: @dugla email:
[email protected]
Douglass Turner
[email protected]
@dugla 781 775 3708