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
2.2k
0
Share
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
Azure Static Web Apps の自動ビルドがタイムアウトしやすくなった状況に対応した件/global-azure2026
thara0402
0
410
AIはハッカーを減らすのか、増やすのか?──現役ホワイトハッカーから見るAI時代のリアル【MEGU-Meet】
cscengineer
0
150
EarthCopilotに学ぶマルチエージェントオーケストレーション
nakasho
0
300
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
220
#jawsugyokohama 100 LT11, "My AWS Journey 2011-2026 - kwntravel"
shinichirokawano
0
350
The Journey of Box Building
tagomoris
4
2.6k
マルチエージェント × ハーネスエンジニアリング × GitLab Duo Agent Platformで実現する「AIエージェントに仕事をさせる時代へ。」 / 20260421 GitLab Duo Agent Platform
n11sh1
0
160
弁護士ドットコム株式会社 エンジニア職向け 会社紹介資料
bengo4com
1
150
AzureのIaC管理からログ調査まで、随所に役立つSkillsとCustom-Instructions / Boosting IaC and Log Analysis with Skills
aeonpeople
0
230
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.3k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
7.3k
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
11
32k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
170
New Earth Scene 8
popppiees
3
2.1k
Tell your own story through comics
letsgokoyo
1
900
A Soul's Torment
seathinner
6
2.7k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
370
Fireside Chat
paigeccino
42
3.9k
How STYLIGHT went responsive
nonsquared
100
6.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Utilizing Notion as your number one productivity tool
mfonobong
4
290
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