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
AR mode in Yahoo! MAP
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
totomo
March 16, 2018
Technology
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AR mode in Yahoo! MAP
Talk about AR mode in Yahoo! MAP which is implemented by using ARKit.
totomo
March 16, 2018
More Decks by totomo
See All by totomo
Yahoo! MAPにおけるARの活用事例 - FOSS4G Tokai 2018 -
totomo1217
1
600
ARKit + CoreLocation - Bonfire iOS #4 -
totomo1217
5
1.7k
ARKit + CoreLocation
totomo1217
1
620
ARKit - Nagoya iOS Meetup -
totomo1217
0
170
Other Decks in Technology
See All in Technology
社内 AI エージェント Synapse と セマンティックレイヤーの育て方
hiroakis
2
1.7k
AIはどのように 組織のアジリティを変えるのか?
junki
1
490
Building applications in the Gemini API family.
line_developers_tw
PRO
0
3.1k
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
140
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
850
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
370
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
500
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
840
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
390
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
610
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
610
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
210
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
400
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
Making Projects Easy
brettharned
120
6.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
It's Worth the Effort
3n
188
29k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Transcript
20183݄16 1 Kenta Tokumoto AR mode in Yahoo! MAP
Outline • ࣗݾհ • ARϞʔυʹ͍ͭͯ • ARKit + CoreLocation •
ΦϒδΣΫτͷஔํ๏ʹ͍ͭͯ 2
3 About me ,FOUB5PLVNPUP 5XJUUFSUPUPNP (JUIVCUPUPNP 2JJUBUPUPNP
ೖࣾ ."1ͷJ04 8FC"1*։ൃ୲ 8&# %#13&447PM:BIPP."1ͷαʔ Ϗεվળʹ͍ͭͯJ04 8FC"1*ͷ෦Λࣥච͠· ͨ͠
AR mode? 4
Team 5 Product Manager Designer Engineer
ARKit • iOS 11Ҏ߱Ͱ͑ΔARػೳΛ࣮͢Δͷʹศ རͳFramework • AR modePosition TrackingΛඞཁͱ͢ΔͨΊ A9νοϓ͕ࡌ͞ΕͨͷΈαϙʔτ
• Android → ARCore 6
ARKit + CoreLocation
ARKit+CoreLocation 8 • ARConfiguration.worldAlignment.gravit yAndHeadingΛࢦఆ͢Δ • ݪͷҐஔใͱARKitʹΑΓߏங͞Ε ͨੈքۭؒͷݪ૬ޓมՄೳ AR ࣮ۭؒ
N N (x n , z n ) (lat n , lon n )
ARKit+CoreLocation 9 (0, 0) d [m] (x 1 , z
1 ) (lat 0 , lon 0 ) d [m] (lat 1 , lon 1 )
SCNNodeͷஔ • ϧʔτϥΠϯ (SCNPlane) • ൘ (3D) • ͚Μ͘͞+ΰʔϧϐϯ(3D) •
(SCNPlane) 10
ϧʔτϥΠϯ 11
ϧʔτϥΠϯ 12 position eulerAngles.y
൘ 13
൘ 14 position
൘ 15 position
൘ 16 position • ϚʔδϯΛઃ͚ͯݟ͍͢ํʹճస • ౦ͲͪΒʹஔ͢Δ͔ɺਐߦํ ͱ࣍ͷํͱͷ͔ࠩΒஅ͍ͯ͠Δ
17
18 position
19 position • ARSCNView͔ΒऔΕΔ pointOfViewͷpositionΛऔಘ • ݱࡏҐஔͷ࠲ඪΛͱʹҠಈڑ ͱ֯Λܭࢉ •
ϥϯμϜͰग़͢Α͏ʹ materialʹઃఆ͍ͯ͠ΔUIImageΛ ಈతʹઃఆ͍ͯ͠Δ
͚Μ͘͞+ΰʔϧϐϯ 20 position SCNBillboardConstrain t
LocationInfoProvider 21 public protocol LocationInfoProvidable { func location(completion: @escaping (CLLocation?)->())
func nearbyRoutePoint(from origin: SCNVector3) -> SCNVector3? weak var delegate: LocationInfoProviderDelegate? { get set } } protocol LocationInfoProviderDelegate: class { func locationInfoProvider(_ provider: LocationInfoProvidable, requestUpdateHeading heading: CLHeading) func ;ocationInfoProvider(_ provider: LocationInfoProvidable, requestUpdateLocation location: CLLocation, oldLocation: CLLocation?) }
LocationInfoProvider 22 locationInfoProvider.location { [weak self] location in guard let
origin = location else { self?.displayError() return } self?.addNodes(origin: origin) }
େྔͷSCNNodeͷՃ 23 func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
// 5ͭͣͭՃ͢Δ } self.navigationView.worldNode.addScheduledNodes(quantity: 5) func addObjects(origin: CLLocation) { self.navigationView.origin = origin let routeLineNodes = routeNodes(withCoordinates: self.coordinates) self.navigationView.scheduleNodes(routeLineNodes, priority: .high) } // ARSCNViewDelegate
ଞʹ… 24 • GPSɺిࢠίϯύεɺΧϝϥͷҐஔΛར ༻ۭͨؒ͠Ґஔิਖ਼ • ARϞʔυͰఆٛ͢Δۭؒͷׂํ๏ • SCNPlaneͷͭͳ͗ͷิਖ਼ ͳͲͳͲ
Fin