Slide 1

Slide 1 text

Poly API for ARKit AKIBA.swift ๨೥ճ 1

Slide 2

Slide 2 text

Profile Kazuya Ueoka Timers inc.ͷiOSΤϯδχΞ Twitter: @fromkk Github: fromkk Qiita: fromkk Sarahah: fromkk 2

Slide 3

Slide 3 text

2017೥ͱ͍͑͹ʁ 3

Slide 4

Slide 4 text

ARݩ೥ 4

Slide 5

Slide 5 text

AR(Augmented Reality) • ֦ுݱ࣮ • Χϝϥ ! ͰࡱӨͨ͠ө૾ʹ3Dͷ෺ମ౳Λ഑ஔ͢ΔࣄͰݱ࣮ʹ Ծ૝తͳ෺ମ͕͍Δ༷ʹݟ͑Δٕज़ • AppleͰ͸ARKitɺGoogleͰ͸ARCore 5

Slide 6

Slide 6 text

WWDC 2017Ͱൃද͞ΕͨARKit 602 Introducing ARKit: Augmented Reality for iOS 6

Slide 7

Slide 7 text

ͲΜͳࣄ͕ग़དྷΔ͔ • Made with ARKit • Awesome ARKit • Best of 2017 AR 7

Slide 8

Slide 8 text

ARKit • ϋΠϨϕϧͳAPI • iOSରԠ(A9Ҏ্) • SceneKit(3D), SpriteKit(2D), Metal(ΧελϜϨϯμϦϯά)ର Ԡ • Կԯ΋ͷσόΠε͕ARKitʹରԠࡁΈ 8

Slide 9

Slide 9 text

ओཁͳػೳ • ϫʔϧυτϥοΩϯάʢಛ௃఺ΛτϥοΩϯάʣ • γʔϯͷཧղʢচͷ൑அɾ౰ͨΓ൑ఆɾ໌Δ͞ਪଌʣ • ϨϯμϦϯά UnityɾUnrealରԠ 9

Slide 10

Slide 10 text

Poly • 10݄຤ϦϦʔε • Google͕ൃදͨ͠3DϞσϧ͕ࣗ༝ʹ μ΢ϯϩʔυग़དྷΔαΠτ • ར༻͢Δࡍʹ͸ϥΠηϯε(CC-BY)ʹ ஫ҙ 10

Slide 11

Slide 11 text

Poly API • 2017/11݄຤ʹGoogle͕ൃද • Sample(iOS) https://github.com/googlevr/poly- sample-ios 11

Slide 12

Slide 12 text

APIͷར༻ํ๏ Google APIͷConsoleը໘ͰPoly APIΛ ༗ޮʹ͓ͯ͘͠ 12

Slide 13

Slide 13 text

APIΩʔͷऔಘ 13

Slide 14

Slide 14 text

API֓ཁ υϝΠϯ: https://poly.googleapis.com 14

Slide 15

Slide 15 text

v1.assets Methods Path get GET /v1/{name=assets/*} list GET /v1/assets ؆қೝূͰྑ͍ɻURLͷޙΖʹAPIΩʔΛ෇༩ɻ (ྫ: https://poly.googleapis.com/v1/assets? key=YOUR_API_KEY ) 15

Slide 16

Slide 16 text

v1.users.assets Methods Path list GET /v1/{name=users/*}/ assets ϢʔβʔͷassetҰཡɻOAuthೝূ͕ඞཁɻ 16

Slide 17

Slide 17 text

v1.users.likedassets Methods Path list GET /v1/{name=users/*}/ likedassets Ϣʔβʔ͕ߴධՁʹͨ͠΋ͷͷassetҰཡɻOAuthೝূ͕ඞཁɻ 17

Slide 18

Slide 18 text

ARKit/SceneKitͰͷ࢖͍ํ • asset.formats.root.url(.obj), asset.formats.resources.url(.mtl) ΛϩʔΧϧʹμ΢ϯ ϩʔυ import SceneKit import SceneKit.ModelIO import ModelIO // MDLAssetΠϯελϯεΛੜ੒ let mdlAsset = MDLAsset(url: objURL) // ςΫενϟΛಡΈࠐΉ mdlAsset.loadTextures() // SCNNodeΛੜ੒ let node = SCNNode(mdlObject: mdlAsset.object(at: 0)) 18

Slide 19

Slide 19 text

ࣄલ४උ৭ʑେมͩͬͨͷͰϥΠϒϥϦԽ https://github.com/fromkk/PolyKit 19

Slide 20

Slide 20 text

Install Cartfile github "fromkk/PolyKit" 20

Slide 21

Slide 21 text

Usage Fetch assets import PolyKit let query = PolyAssetsQuery(keywords: "Cat", format: Poly3DFormat.obj) let polyApi = PolyAPI(apiKey: "Poly API Key is HERE!!!") polyApi.assets(with: query) { (result) in switch result { case .success(let assets): self.dataSource.assets = assets.assets ?? [] case .failure(_): self.showFetchFailedAlert() } } 21

Slide 22

Slide 22 text

Download .obj and .mtl from Poly API. import PolyKit let asset: PolyAsset = ... // Download obj and mtl files from Poly asset.downloadObj { (result) in switch result { case .success(let localUrl): let mdlAsset = MDLAsset(url: localUrl) mdlAsset.loadTextures() let node = SCNNode(mdlObject: mdlAsset.object(at: 0)) // do something with node case .failure(let error): debugPrint(#function, "error", error) } } 22

Slide 23

Slide 23 text

Demo 23

Slide 24

Slide 24 text

Recap • Polyͷར༻͕ਵ෼؆୯ʹͳͬͨ • 3DσʔλΛಈతʹར༻͢ΔΞϓϦେมͩͬͨ • Polyͷ͓ӄͰARKit΍SceneKitΛར༻ͨ͠ΞϓϦ΋࡞Γ΍͢ ͍ • ͏·͘දࣔग़དྷͳ͍΋ͷ΋͋ΔͷͰཁ஫ҙ 24

Slide 25

Slide 25 text

⭐ ͍ͩ͘͞ 25

Slide 26

Slide 26 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 26