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
Basic 3D Math for ARKit
Search
KBOY
September 15, 2018
Technology
1
680
Basic 3D Math for ARKit
KBOY
September 15, 2018
Tweet
Share
More Decks by KBOY
See All by KBOY
How to make Stripe and RevenueCat coexist in an app
fujikawakei
0
74
iOS15から使えるScreenTimeAPIをFlutterアプリで動かす
fujikawakei
0
120
FlutterエンジニアがFlutterFlowを使ってみた感想
fujikawakei
0
120
Flutterと課金
fujikawakei
0
120
【スタートアップ開発者必見】firebaseとalgoliaとstripeで1人で本格的なiOSアプリを作る方法
fujikawakei
2
550
ARCore-Kotlin-Sampler作ってきました
fujikawakei
0
240
ARKitのための3D算数
fujikawakei
3
4.5k
ARKitでお絵かきする方法2選
fujikawakei
0
1.8k
assertion を積極的に使って 役立った話
fujikawakei
0
1.9k
Other Decks in Technology
See All in Technology
Fintech SREの挑戦 PCI DSS対応をスマートにこなすインフラ戦略/Fintech SRE’s Challenge: Smart Infrastructure Strategies for PCI DSS Compliance
maaaato
0
450
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
biwashi
6
770
MC906491 を見据えた Microsoft Entra Connect アップグレード対応
tamaiyutaro
1
480
技術的負債解消の取り組みと専門チームのお話 #技術的負債_Findy
bengo4com
1
1.2k
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
2
880
2.5Dモデルのすべて
yu4u
2
610
依存関係があるコンポーネントは Barrel ファイルでまとめよう
azukiazusa1
3
530
株式会社EventHub・エンジニア採用資料
eventhub
0
4.2k
テストアーキテクチャ設計で実現する高品質で高スピードな開発の実践 / Test Architecture Design in Practice
ropqa
3
710
[2025-02-07]生成AIで変える問い合わせの未来 〜チームグローバル化の香りを添えて〜
tosite
1
290
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
370
自動テストの世界に、この5年間で起きたこと
autifyhq
10
7.1k
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
29
2.2k
Agile that works and the tools we love
rasmusluckow
328
21k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
950
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Raft: Consensus for Rubyists
vanstee
137
6.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
31
2.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Transcript
Basic 3D Mathematics for ARKit Kei Fujikawa 2018.9.15@Tokyo iOS Meetup
Who?
Who?
Why is ے?
Spajam 2nd Prized Best Body Japan Held ے.swift Showing in Article Smooth-sailing?
Not so easy.
A bunch of ے
ے 4FOHPLV1FSJPE
AR!
Question!
Spajam 2nd Prized Best Body Japan Held ے.swift Showing in Article
I have to ride on this big wave.
So,
I joined AR startup this January
Graffity Inc.
Apps we’re making
I studied ARKit for so much time
Not so easy.
Let’s think about this example.
Place an airplane at the 30cm in front of screen’s
touched point.
None
Looks way too easy
Getting x,y from touch gesture and Z is 0.3?
Finally
None
It does not show
Ideal
None
Real
None
Not so easy
So,
I studied 3D programming.
Books I read for study IUUQTBN[OUP.4V.F( IUUQTBN[OUP1,'Z5
So,
Today I will explain 3D Programming clearly.
Basic 3D Mathematics for ARKit Kei Fujikawa 2018.9.15@Tokyo iOS Meetup
Today’s goal
Place an airplane at the 30cm in front of screen’s
touched point.
None
We will study •Coordinate systems •Method for coordinate transformation
Coordinate system for ARKit
Coordinates World Object Camera Screen Drawn by iPad Pro
World Coordinate system The biggest coordinates In your iPhone
Object Coordinate system Airplane’s own coordinate
Camera coordinate system ΧϝϥͷϩʔΧϧ࠲ඪ
Camera
Screen
Screen
Coordinates World Object Camera Screen Drawn by iPad Pro
Let’s check the Goal
Place an airplane at the 30cm in front of screen’s
touched point.
30cm Get x,y from tap gesture Place the object In
the world. Place at 30cm In front of camera Convert to world ᶃ ᶄ ᶅ Convert to Screen ᶆ ᶄ’ Convert to screen
ᶃPlace at 30cm in front of camera Minus 30cm
None
ᶄConvert to World
Convert from a coordinate to a coordinate
ᶄ’Convert to screen
World <-> Screen
ᶅGet x,y from tap gesture
ᶆPlace in the world
Screen <-> World
At 30cm Tapped position Convert Convert
Calculate at easy coordinate system
By the way
You can do it all in the screen coordinate
30cm Get x,y from tap gesture Place the object In
the world. Place at 30cm In front of camera Convert to world ᶃ ᶄ ᶅ Convert to Screen ᶆ ᶄ’ Convert to screen Removable
Removabl
It looks easier!!
Yes
You can code shorter
None
But
In fact
This 0.996 is Same with 0.3m in camera coordinate
What is 0.996?
Review for coordinate system
0.0 1.0 Screen’s z 0.001m 1000m Camera’s z
Screen’s Z
https://developer.apple.com/documentation/scenekit/scnscenerenderer/1522631-unprojectpoint Z is 0.0~1.0
Camera’s Z?
None
None
None
debug
None
Z is 0.01~1000
Let’s change zNear.
None
0.0 1.0 Screen’s z 0.001m 1000m Camera’s z
Screen’s z vs Camera’s z
http://www.alecjacobson.com/weblog/?p=3835 -0.001 -1000 0.996 screenZ = f(n + cameraZ)/((f −
n)cameraZ) -0.3 screenZ cameraZ
screenZ = f(n + cameraZ)/((f − n)cameraZ) screenZ = 1000(0.001
+ (−0.3))/((1000 − 0.002)(−0.3)) f = 1000 n = 0.001 cameraZ = − 0.3 screenZ = 0.9966...
Way too hassle
Removable?
Must
So,
Understanding Coordinate’s system And..
None
Make sense?
Let’s study more?
Make a airplane Bigger or Rotation
Scale
Rotate by SCNVector4 Axis Degree
Rotate by Euler angle
Rotate by Euler angle x
Rotate by Euler angle Y
Rotate by Euler angle Z
x Y Z
That’s it
One more thing.
Making ARKit 2.0 repository
End