$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AR mode in Yahoo! MAP
Search
totomo
March 16, 2018
Technology
0
2.2k
AR mode in Yahoo! MAP
Talk about AR mode in Yahoo! MAP which is implemented by using ARKit.
totomo
March 16, 2018
Tweet
Share
More Decks by totomo
See All by totomo
Yahoo! MAPにおけるARの活用事例 - FOSS4G Tokai 2018 -
totomo1217
1
570
ARKit + CoreLocation - Bonfire iOS #4 -
totomo1217
5
1.6k
ARKit + CoreLocation
totomo1217
1
600
ARKit - Nagoya iOS Meetup -
totomo1217
0
160
Other Decks in Technology
See All in Technology
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
450
5分で知るMicrosoft Ignite
taiponrock
PRO
0
250
新 Security HubがついにGA!仕組みや料金を深堀り #AWSreInvent #regrowth / AWS Security Hub Advanced GA
masahirokawahara
1
1.6k
eBPFとwaruiBPF
sat
PRO
4
2.5k
第4回 「メタデータ通り」 リアル開催
datayokocho
0
120
Microsoft Agent 365 を 30 分でなんとなく理解する
skmkzyk
1
1k
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
120
EM歴1年10ヶ月のぼくがぶち当たった苦悩とこれからへ向けて
maaaato
0
270
学習データって増やせばいいんですか?
ftakahashi
2
280
【AWS re:Invent 2025速報】AIビルダー向けアップデートをまとめて解説!
minorun365
4
480
Snowflakeでデータ基盤を もう一度作り直すなら / rebuilding-data-platform-with-snowflake
pei0804
4
990
Overture Maps Foundationの3年を振り返る
moritoru
0
160
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Done Done
chrislema
186
16k
Agile that works and the tools we love
rasmusluckow
331
21k
We Have a Design System, Now What?
morganepeng
54
7.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
GraphQLとの向き合い方2022年版
quramy
50
14k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Designing for humans not robots
tammielis
254
26k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
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