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
totomo
March 16, 2018
Technology
0
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
490
ARKit + CoreLocation - Bonfire iOS #4 -
totomo1217
5
1.5k
ARKit + CoreLocation
totomo1217
1
560
ARKit - Nagoya iOS Meetup -
totomo1217
0
150
Other Decks in Technology
See All in Technology
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
5
590
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
220
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
170
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Lambdaと地方とコミュニティ
miu_crescent
2
370
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
350
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
290
Platform Engineering for Software Developers and Architects
syntasso
1
510
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
A better future with KSS
kneath
238
17k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
For a Future-Friendly Web
brad_frost
175
9.4k
Unsuck your backbone
ammeep
668
57k
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