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の話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takaaki Tanaka
June 22, 2017
Technology
1.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ARKitの話
WWDC After Party 2017 @Ebisu での発表資料です。
https://pre-wwdc.connpass.com/event/56731/
Takaaki Tanaka
June 22, 2017
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
560
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.5k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
460
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.3k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
950
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
750
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
860
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.3k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
370
Other Decks in Technology
See All in Technology
kaonavi Tech Night#1
kaonavi
0
140
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
590
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
470
Kaggleで成長するために意識したこと
prgckwb
2
440
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
720
副作用のある Lambda でも Lambda Power Tuning は使えるのか / lambda-power-tuning-side-effects
koukihosaka
1
130
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
3
790
シンガポールで登壇してきます
yama3133
0
340
探索・可視化・自動化を一本化 Amazon Quickでデータ活用スピードを上げる方法
koheiyoshikawa
0
160
AI時代におけるエンジニアの新たな役割──FDEとクオリアの探求/登壇資料(戸井田 裕貴)
hacobu
PRO
0
290
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
160
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
160
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
870
What's in a price? How to price your products and services
michaelherold
247
13k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Building the Perfect Custom Keyboard
takai
2
820
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
GraphQLとの向き合い方2022年版
quramy
50
15k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
370
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
57k
Site-Speed That Sticks
csswizardry
13
1.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
610
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Visualization
eitanlees
152
17k
Transcript
2017/06/21 ARKitʹ৮ͬͯݟͨ݁Ռ ໘ന͍ൃද͕Ͱ͖Δ͔ͱࢥͬͨͷ͕ͩ ͦΜͳ͜ͱແ͔ͬͨ… ͰؤுͬͯLT͢Δ WWDC After Party 2017 @Ebisu
About Me
• ాத ໌ (Takaaki Tanaka) • Ϋϥεϝιουגࣜձࣾ • @kongmingtrap •
Swift / Objective-C / Scala / JavaScript … • GyazSquare / GitHub
WWDC
WWDC • ॳWWDC • ॳւ֎ • ӳޠ…?
WWDC • ฐࣾͷฏਅޗ͞Μ͕WWDC 2015ʹࢀՃ • ಉ͘͡ࢀՃ͍ͯͨ͠ࢣঊ͕ฏਅޗ͞Μͱ ᬍ • Ϋϥεϝιου͕ΤϯδχΞΛืू͍ͯ͠ Δ͜ͱΛΔ
• Ϋϥεϝιουస৬Λܾҙ
ؓٳ
WWDC17
Main topic • ARKit • eGPUKit • Core ML •
Home Kit • HomePod
Main topic • ARKit • eGPUKit • Core ML •
Home Kit • HomePod
AR
AR
WWDC
Demo IUUQTXXXZPVUVCFDPNXBUDI WN$P6YH0P. IUUQTJUVOFTBQQMFDPNKQBQQVGPDBNFSBE JE NU
AR • AVFoundation • Core Location • Heading • Core
Motion • Gyro scope • Accelerometer
AR • AVFoundation • Core Location • Core Motion •
Gyro scope • Accelerometer
AR $FMFTUJBM0CTFSWBUJPO7JFXFS
None
None
ARKit • ARKit • SceneKit
ARKit • ARKit • SceneKit
ARSession • ΧϝϥػೳɺϞʔγϣϯݕͳͲแׅͯ͠ ߦ͏manager object (shared) • ैདྷͷํ๏ͩͱɺόοςϦʔফඅ͕ܹ͔ͬ͠ ͕ͨɺframeworkϨϕϧͰ࠷దԽ͍ͯ͠Δ ʢΒ͍͠ʣ
ARSession
ARSession
Plane Detection
Plane Detection // configure session if let worldSessionConfig = sessionConfig
as? ARWorldTrackingSessionConfiguration { worldSessionConfig.planeDetection = .horizontal session.run(worldSessionConfig, options: [.resetTracking, .removeExistingAnchors]) }
ARAnchor • ARPlaneAnchor • ARAnchorͷαϒΫϥε • ݕग़͞Εͨฏ໘ • ݕग़͞ΕͨΒARSCNViewDelegateͷϝιου ʹ௨͞ΕΔ
• renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
ARSCNViewDelegate func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor:
ARAnchor) { DispatchQueue.main.async { if let planeAnchor = anchor as? ARPlaneAnchor { self.addPlane(node: node, anchor: planeAnchor) self.checkIfObjectShouldMoveOntoPlane(anchor: planeAnchor) } } }
ARPlaneAnchor + SCNNode func addPlane(node: SCNNode, anchor: ARPlaneAnchor) { let
pos = SCNVector3.positionFromTransform(anchor.transform) textManager.showDebugMessage("NEW SURFACE DETECTED AT \ (pos.friendlyString())") let plane = Plane(anchor, showDebugVisuals) planes[anchor] = plane node.addChildNode(plane) textManager.cancelScheduledMessage(forType: .planeEstimation) textManager.showMessage("SURFACE DETECTED") if virtualObject == nil { textManager.scheduleMessage("TAP + TO PLACE AN OBJECT", inSeconds: 7.5, messageType: .contentPlacement) } }
ARPlaneAnchor + SCNNode func updatePlane(anchor: ARPlaneAnchor) { if let plane
= planes[anchor] { plane.update(anchor) } }
ARPlaneAnchor + SCNNode private func updateOcclusionNode() { guard let occlusionNode
= occlusionNode, let occlusionPlane = occlusionNode.geometry as? SCNPlane else { return } occlusionPlane.width = CGFloat(anchor.extent.x - 0.05) occlusionPlane.height = CGFloat(anchor.extent.z - 0.05) occlusionNode.position = SCNVector3Make(anchor.center.x, occlusionPlaneVerticalOffset, anchor.center.z) }
Recap • ฏ໘ݕग़ʢਫฏํʣͷΈ • ARΑΓฏ໘ݕग़ػೳͷํ͕ϝΠϯ • Ϟʔγϣϯͷैࠓޙʹظ • όοςϦʔফඅʹؔͯ͠ܭଌͯ͠Έ͍ͨ
WWDC17 IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZ XXED *OUSPEVDJOH"3,JU"VHNFOUFE3FBMJUZGPSJ04
Thank you!