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
ARKitのための3D算数
Search
KBOY
August 30, 2018
Programming
3
4.9k
ARKitのための3D算数
iOSDC 2018
KBOY
August 30, 2018
Tweet
Share
More Decks by KBOY
See All by KBOY
How to make Stripe and RevenueCat coexist in an app
fujikawakei
0
140
iOS15から使えるScreenTimeAPIをFlutterアプリで動かす
fujikawakei
0
150
FlutterエンジニアがFlutterFlowを使ってみた感想
fujikawakei
0
150
Flutterと課金
fujikawakei
0
150
【スタートアップ開発者必見】firebaseとalgoliaとstripeで1人で本格的なiOSアプリを作る方法
fujikawakei
2
610
ARCore-Kotlin-Sampler作ってきました
fujikawakei
0
290
Basic 3D Math for ARKit
fujikawakei
1
790
ARKitでお絵かきする方法2選
fujikawakei
0
1.9k
assertion を積極的に使って 役立った話
fujikawakei
0
2k
Other Decks in Programming
See All in Programming
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
gunshi
kazupon
1
130
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
210
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
240
ゆくKotlin くるRust
exoego
1
180
Implementation Patterns
denyspoltorak
0
140
これならできる!個人開発のすゝめ
tinykitten
PRO
0
140
Cap'n Webについて
yusukebe
0
160
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
700
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
2.7k
クラウドに依存しないS3を使った開発術
simesaba80
0
210
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
120
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
140
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
130
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
48k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
130
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
Navigating Weather and Climate Data
rabernat
0
61
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
27
Believing is Seeing
oripsolob
0
19
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Transcript
ARKitͷͨΊͷ 3Dࢉ KBOY@ےΤϯδχΞ 2018.8.30@iOSDC 2018
ࣗݾհ ૣҴా͕ߍͰ͢
ےΤϯδχΞͷܦྺ
݄ ݄ ݄ ݄ ݄
Spajam༏ल ϕετϘσΟδϟύϯग़ ے.swift։࠵ స৬υϥϑτग़ԋ ॱ෩ຬൕʂʁ
͔ͦ͠͠͏͘ͳ͍
ےΤϯδχΞͷ಄
ےΤϯδχΞ ઓࠃ࣌
ͦ͏ͩʂARͩʂ
݄ ݄ ݄ ݄ ݄
Spajam༏ल ϕετϘσΟδϟύϯग़ స৬υϥϑτग़ԋ ے.swift։࠵
Δ͔͠ͳ͍ ͜ͷϏοάΣʔϒʹ
ͱ͍͏͜ͱͰ
ࠓ1݄ʹ ARελʔτΞοϓJOIN
Graffity Inc. Ϧʔμʔ
͜ΜͳΞϓϦ࡞ͬͯ·͢
ͱ͍͏͜ͱͰARKitΛ ؤுͬͯษڧ͠·ͨ͠
͔͠͠ ͦ͏͘ͳ͍
͜͏͍͏ྫΛ ߟ͑ͯΈ·͠ΐ͏
εΫϦʔϯ্ͷλοϓͨ͠෦ͷ 30cmલʹ ඈߦػΛஔ͘
None
༨༟ͬ͠ΐʂ
λοϓδΣενϟʔ͔Β x, yΛऔಘ, z0.3mΛೖΕΕʂ
݁Ռ
None
શવग़ͯ͜ͳ͍…
ཧ
None
ݱ࣮
None
ͬͺΓ ͦ͏͘ͳ͍
ͦΜͳ࣌ɺϦʔμʔ͕ खΛࠩ͠৳ͯ͘Εͨ
3DϓϩάϥϛϯάΛ ษڧ͢Ε༨༟ͩΑ
Ϧʔμʔʂʂ
ͦͯ͠
3Dϓϩάϥϛϯά Λษڧͨ͠ɻ
ษڧʹͬͨຊ IUUQTBN[OUP.4V.F( IUUQTBN[OUP1,'Z5
ͱ͍͏͜ͱͰ
ࠓօ͞Μʹ Θ͔Γ͘͢ 3DϓϩάϥϛϯάΛ આ໌͠·͢
ARKitͷͨΊͷ 3Dࢉ KBOY@ےΤϯδχΞ 2018.8.30@iOSDC 2018
ࠓͷΰʔϧ
εΫϦʔϯ্ͷλοϓͨ͠෦ͷ 30cmલʹ ඈߦػΛஔ͘
None
ษڧ͢Δ͜ͱ •࠲ඪܥΛΔ •࠲ඪมͷϝιουΛΔ
ARKitͰ͏࠲ඪܥ
࠲ඪ·ͱΊ ϫʔϧυ࠲ඪܥ ΦϒδΣΫτ࠲ඪܥ Χϝϥ࠲ඪܥ εΫϦʔϯ࠲ඪܥ iPad ProͰॻ͖·ͨ͠ɻ
ϫʔϧυ࠲ඪܥ ͜ΕΑΓେ͖ͳ֎ଆͷ ࠲ඪۭؒͰදݱͰ͖ͳ͍
ΦϒδΣΫτ࠲ඪܥ ඈߦػࣗͷϩʔΧϧ࠲ඪʂ
Χϝϥ࠲ඪܥ ΧϝϥͷϩʔΧϧ࠲ඪ
Χϝϥ࠲ඪܥ
εΫϦʔϯ࠲ඪܥ
εΫϦʔϯ࠲ඪܥ
࠲ඪ·ͱΊ ϫʔϧυ࠲ඪܥ ΦϒδΣΫτ࠲ඪܥ Χϝϥ࠲ඪܥ εΫϦʔϯ࠲ඪܥ iPad ProͰॻ͖·ͨ͠ɻ
ΰʔϧͷ֬ೝ
εΫϦʔϯ্ͷλοϓͨ͠෦ͷ 30cmલʹ ඈߦػΛஔ͘
30cm εΫϦʔϯλοϓͷ xy࠲ඪऔಘ ϫʔϧυ࠲ඪʹมͯ͠ ͦ͜ʹஔ͘ʂ Χϝϥͷ30cmલʹஔ͘ ϫʔϧυ࠲ඪʹม ᶃ ᶄ ᶅ
εΫϦʔϯ࠲ඪʹม ᶆ ᶄ’ εΫϦʔϯ࠲ඪʹม
ᶃΧϝϥ࠲ඪͰ30cmલʹஔ͘ ϚΠφε 30cm
None
ᶄϫʔϧυ࠲ඪʹม
͋Δ࠲ඪܥ͔Β ͋Δ࠲ඪܥ มͰ͖Δ
ᶄ’εΫϦʔϯ࠲ඪʹม
ϫʔϧυ࠲ඪܥ→εΫϦʔϯ࠲ඪܥ
ᶅεΫϦʔϯλοϓͷxy࠲ඪऔಘ
ᶆϫʔϧυ࠲ඪʹมͯ͠ஔ͘
εΫϦʔϯ࠲ඪܥ→ϫʔϧυ࠲ඪܥ
30cmલ λοϓͨ͠Ґஔ ม ม
ͦΕͧΕɺ߹ͷ͍͍ ࠲ඪܥͰܭࢉ͢Δ
ͪͳΈʹ
εΫϦʔϯ࠲ඪܥ͚ͩ ͰશͯΛදݱͰ͖Δ
εΫϦʔϯλοϓͷ xy࠲ඪऔಘ ϫʔϧυ࠲ඪʹมͯ͠ ͦ͜ʹஔ͘ʂ Χϝϥͷ30cmલʹஔ͘ ϫʔϧυ࠲ඪʹม ᶃ ᶄ ᶅ εΫϦʔϯ࠲ඪʹม
ᶆ ᶄ’ εΫϦʔϯ࠲ඪʹม ͜͜ল͚Δ 30cm
͜͜ল͚Δ
ͬͪ͜ͷํָ͕͡ΌΜʂ
͔ͨ͠ʹ
͜ͷ͍ίʔυͰߦ͚Δ
None
Ͱ
࣮
͜ͷ0.996 Χϝϥ࠲ඪܥͷ0.3mͱ ಉ͡ҙຯ
0.996ͱ
͜͜Ͱ࠲ඪܥͷ෮श
0.0 1.0 εΫϦʔϯ࠲ඪܥͷ z 0.001m 1000m Χϝϥ࠲ඪܥͷ z
εΫϦʔϯ࠲ඪܥͷz
https://developer.apple.com/documentation/scenekit/scnscenerenderer/1522631-unprojectpoint εΫϦʔϯ࠲ඪܥͷ z0.0~1.0
Χϝϥ࠲ඪܥͷzʁ
None
None
None
debugͯ͠ΈΔͱ
None
zNearΛ มԽͤͯ͞ΈΑ͏
None
0.0 1.0 εΫϦʔϯ࠲ඪܥͷ z 0.001m 1000m Χϝϥ࠲ඪܥͷ z
εΫϦʔϯ࠲ඪͷz vs Χϝϥ࠲ඪͷ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...
࣮ʹ໘͍͘͞
͜͜ল͚Δʂʁ
ඞཁʂ
ͱ͍͏͜ͱͰ
࠲ඪมΛۦͯ͠
None
ʂ
͏ͪΐ͍ͬͯΈ·͠ΐ͏ʂ
ඈߦػΛ֦େͨ͠Γɺ ճసͤ͞Α͏ʂ
֦େɾॖখ
ճస (SCNVector4) ࣠ ֯
ճస(Euler angle)
ճస (Euler angle) x
ճస (Euler angle) Y
ճస (Euler angle) Z
x Y Z
Ҏ্
͜͜·Ͱ͕ࢉ
·ֶ͕ͩ͋Γ·͢ɻ
Ͱ
࠲ඪͷ֓೦Λཧղͯ͠ SceneKitARKitΛ ͍͜ͳͤΕྑ͍ɻ
ֶʹ͍ͭͯQiitaͰɻ
ARKitͷͨΊͷ 3D ֶ
ࠂ
Graffity Inc. ΤϯδχΞืूதʂ
࠷ޙʹ
ݸਓͰARKitͷಈըڭࡐ࡞த
One More Thing
ࠓΓ·͢ .kt
ے.kt w :BIPP-PEHF w ݄
͓ΘΓ