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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
290
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.4k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
350
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.1k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
830
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
660
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
740
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.1k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
330
Other Decks in Technology
See All in Technology
月間数億レコードのアクセスログ基盤を無停止・低コストでAWS移行せよ!アプリケーションエンジニアのSREチャレンジ💪
miyamu
0
810
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
210
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
4.9k
入社1ヶ月でデータパイプライン講座を作った話
waiwai2111
1
250
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
220
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
270
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
73k
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.3k
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
0
330
(金融庁共催)第4回金融データ活用チャレンジ勉強会資料
takumimukaiyama
0
130
Tebiki Engineering Team Deck
tebiki
0
24k
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.9k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
130
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
130
How to train your dragon (web standard)
notwaldorf
97
6.5k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
How to make the Groovebox
asonas
2
1.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Automating Front-end Workflow
addyosmani
1371
200k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.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!