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
Takaaki Tanaka
June 22, 2017
Technology
0
1.7k
ARKitの話
WWDC After Party 2017 @Ebisu での発表資料です。
https://pre-wwdc.connpass.com/event/56731/
Takaaki Tanaka
June 22, 2017
Tweet
Share
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.2k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
280
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
990
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
770
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
620
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
670
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
1.9k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
300
AWS / Google Cloud / Azure それぞれの推しサービス.pdf
kongmingstrap
1
1.5k
Other Decks in Technology
See All in Technology
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
3
1.2k
カミナシ社の『ID管理基盤』製品内製 - その意思決定背景と2年間の進化 #AWSUnicornDay / Kaminashi ID - The Big Whys
kaminashi
3
730
モダンフロントエンド 開発研修
recruitengineers
PRO
10
6.2k
Nstockの一人目エンジニアが 3年間かけて向き合ってきた セキュリティのこととこれから〜あれから半年〜
yo41sawada
0
180
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
100
攻撃と防御で実践するプロダクトセキュリティ演習~導入パート~
recruitengineers
PRO
4
1.8k
TypeScript入門
recruitengineers
PRO
35
11k
実運用で考える PGO
kworkdev
PRO
0
130
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
260
ヘブンバーンズレッドのレンダリングパイプライン刷新
gree_tech
PRO
0
440
【Grafana Meetup Japan #6】Grafanaをリバプロ配下で動かすときにやること ~ Grafana Liveってなんだ ~
yoshitake945
0
220
実践AIガバナンス
asei
3
300
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
4 Signs Your Business is Dying
shpigford
184
22k
Docker and Python
trallard
45
3.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Become a Pro
speakerdeck
PRO
29
5.5k
Embracing the Ebb and Flow
colly
87
4.8k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Site-Speed That Sticks
csswizardry
10
800
Testing 201, or: Great Expectations
jmmastey
45
7.6k
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!