$30 off During Our Annual Pro Sale. View Details »

iPhoneでの空間メディア視聴体験の探求

 iPhoneでの空間メディア視聴体験の探求

visionOS TC 2025, LT

iPhoneで空間ビデオを撮影しても、Vision Proを持っていなければその空間っぷりは確認できません。APMPもVision Pro以外ではなにやら歪んだ映像のまま。Vision Proを所有していたとしても、いつも持ち歩いている訳ではありませんし、装着自体もちょっと手間です。

もっと気軽に試せないかしら...できれば普及しているデバイスで。そんな思いから、iPhoneで空間メディアを視聴する体験について考え、試した内容をシェアします。iPhoneは立体視こそ出来ませんが、多くのセンサーを搭載し、MV-HEVCもAmbisonicsも扱えるデバイス。それらを活用して直感的な方法を目指しました。
視聴できるデバイスも空間コンテンツも、もっともっと増えていってほしいですね!

Avatar for Chiharu Nameki

Chiharu Nameki

December 06, 2025
Tweet

More Decks by Chiharu Nameki

Other Decks in Technology

Transcript

  1. ۭؒϝσΟΞ Examples - HTTP Live Streaming, Apple • ۭؒϏσΦ •

    APMP 180°, 360°, Wide FoV • Apple Immersive Video ͦͷ৔ʹ͍Δ͔ͷΑ͏ͳ Ϧονͳࢹௌମݧ ࢹࠩʹΑΔԞߦ͖ ࣮෺େͰͷ࠶ੜ
  2. ࣮ྫ ) YouTubeΞϓϦ 360°ಈըϓϨΠϠʔ • iPhoneΛճసͤ͞Δͱ360°ݟΔ͜ͱ͕Ͱ͖Δ • ϑϦοΫͰ΋ճͤΔ = ಈ͖ճΒͳͯ͘΋ྑ͍ʂ

    • Χϝϥ͸ਫฏ360°ɺॎʹ±90°ಈ͘Ӣ୆ʹ ৐͍ͬͯΔΑ͏ʹಈ͘ ※͜ͷ੍໿ʹΑΓϑϦοΫͱڞଘͤͯ͞΋ݟ΍͍͢ ಉ͡΋ͷΛRealityKitͰ࡞ͬͯΈΑ͏ʂ
  3. ಈը࠶ੜʹ࢖͏ͷ͸ʁ VideoPlayerComponent VideoMaterial • ద੾ͳܗͷϝογϡͷࣗಈੜ੒ɺࣈນରԠ • iPhoneͰͷ viewingMode ͸ .mono

    • ΧελϚΠζੑ ௿ ˕ ❌ 360°ಈը͸ฏ໘ͷ··࠶ੜ͞ΕΔ • ೚ҙͷܗͷϝογϡʹషΓ෇͚ͯ࢖͏, ࠓճ͸ٿͷ಺ଆʹషΔ
  4. 3DoF τϥοΩϯάͷ࣮ݱํ๏͸ʁ AROrientationTrackingConfiguration Core Motion • IMUʢՃ଎౓ηϯαʔ, δϟΠϩείʔϓʣΛར༻ • ڍಈΛΧελϚΠζ͠΍͍͢

    • എ໘ΧϝϥΛར༻ (= ࡱӨΠϯδέʔλ͕ͭ͘) • ARͷ3DoFτϥοΩϯά͕਺ߦͰ࣮ݱՄೳ • ௨ৗ͸6DoFͷARWorldTrackingConfigurationͷFallback༻్ ❌ ˕ ௨ৗͷARͱҟͳΔಈ͖ ΋࣮ݱՄೳͳͷ͸ͪ͜Β
  5. View͸Ͳ͕ͬͪྑ͍ʁ ARView RealityView • SwiftUI ͷ View • iOS 18+,

    visionOSͰ͸࠷ॳ͔Β = OSؒͰҠ২͠қ͍ • visionOSʹ͸ଘࡏ͠ͳ͍ • iOS 17ҎલΛαϙʔτ͢Δඞཁ͕͋ΔͳΒͪ͜Β ˕ ̋
  6. x Z ٿମ͸ݻఆ͠ɺΧϝϥͷ޲͖Λ੍ޚ // σόΠεͷ޲͖͔Βyaw/pitchΛநग़ let forward = deviceRotation.act(SIMD3<Float>(0, 0,

    -1)) let deviceYaw = atan2(-forward.x, -forward.z) let devicePitch = asin(forward.y) // δΣενϟʔͱσόΠεͷyaw/pitchΛՃࢉ let totalYaw = yawOffset + deviceYaw let totalPitch = max(-.pi / 2, min(.pi / 2, pitchOffset + devicePitch)) // ߹੒ͨ֯͠౓͔ΒΧϝϥճసΛߏங let yawQuat = simd_quatf(angle: totalYaw, axis: SIMD3<Float>(0, 1, 0)) let pitchQuat = simd_quatf(angle: totalPitch, axis: SIMD3<Float>(1, 0, 0)) let rollQuat = simd_quatf(angle: deviceRoll, axis: SIMD3<Float>(0, 0, -1)) camera.transform.rotation = yawQuat * pitchQuat * rollQuat y
  7. ARKit Face Tracking ࢹ໺֯ ܭࢉ Perspective Camera Core Motion 3DoF

    fieldOfViewInDegrees transform.rotation // ྆໨ͷதؒ஍఺Λإ࠲ඪܥͰܭࢉ let leftEyeLocal = faceAnchor.leftEyeTransform.columns.3 let rightEyeLocal = faceAnchor.rightEyeTransform.columns.3 let eyeCenterLocal = (leftEyeLocal + rightEyeLocal) / 2.0 // ϫʔϧυ࠲ඪʹม׵ͯ͠Χϝϥʢݪ఺ʣ͔Βͷڑ཭Λܭࢉ // ໨ͷޫֶతத৺͸֯ບද໘͔Β໿7mmԞ let eyeCenterWorld = faceAnchor.transform * eyeCenterLocal let distance = length(SIMD3<Float>(eyeCenterWorld.x, eyeCenterWorld.y, eyeCenterWorld.z)) + 0.007 // ࢹ໺֯Λܭࢉ: θ = 2 × atan(ը໘෯/2 / ڑ཭) let fovRadians = 2.0 * atan(screenHightMeters / 2.0 / distance) let fovDegrees = fovRadians * 180.0 / .pi
  8. VideoMaterialͱԻ੠ • Ϟϊϥϧʹμ΢ϯϛοΫε͞Ε͸͠ͳ͍ • Իͷ޿͕Γํ͸Ұఆ • EntityͷpositionʹԻͷத৺͕͋Δ • Χϝϥ͕޲͍͍ͯΔํ޲ͷԻ͕ฉ͑ͯ͘͜Δ •

    EntityΛճసͯ͠΋Իͷਖ਼໘͸มΘΒͳ͍‼ ʢ-Zํ޲ݻఆʁʣ iOS 26Ͱ1࣍ΞϯϏιχοΫΛฉ͍ͯ֬ೝ ԕ͍ ͍ۙ ӈ ࠨ ಈըͷԻ͸3DϛΩαʔͰௐ੔͞Εͯಧ͘