空間コンピューティングにおける移動

Apple Vision Proを毎日のように使用している。装着したままで日常的な動作ができるし、多少の休憩を挟みながら何時間か使い続けても疲れない。ビデオ・パススルーの映像は高精細であり、歪みや遅延が少ないからだ。すでに試みたように自転車に乗りながら使うこともできる。ただし、目の側面が覆われていて周辺視野が失われるのは大きな問題。安全とは言えないので、この点は今後の改善が望まれる。

そもそも私たちは身動きをせず、ひとところに留まり続けることはない。身体を動かし、移動することは人の本性だ。それでは運動しながら、移動しながら、空間コンピューティングとして何をするのだろう。個体発生が系統発生を繰り返すとすれば、自転車における空間コンピューティングの第一歩はサイクル・コンピュータに違いない。そこで簡単なプロトタイプを作成した。

これは一般的なサイクル・コンピュータの2画面分、走行情報と地図情報をApple Vision Proに表示している。控えめに表示する情報をいつでも参照することに可能性を感じる。録画では細かなブレが目立つものの、実際にはそれほど気にならない。ただし、このプロトタイプの動作はダミーであり、数値も地図もそれらしい表示をしているに過ぎない。

自転車に乗ってApple Vision Proを使用

しかしすぐに大きな問題が現れる。自転車に乗って数km/hを超えると「Moving Too Fast」とのアラートが現れ、アプリが表示されなくなるのだ。パススルー映像は表示されるので自転車には乗り続けられるとは言え、サイクル・コンピュータとしての役目は果たせない。飛行機などでの移動中に使えるトラベル・モードでも「Tracking Failed」と表示され、同じく表示が消滅する。これは移動速度ではなく、Apple Vision Proが空間を認識できなくなるのが原因だ。

新幹線車内でのトラベル・モード

つまり現時点ではサイクル・コンピュータは実現できない。シースルーで映像を重ねるだけの単純なスマート・グラスでは簡単なことが、空間コンピューティングを標榜するApple Vision Proでは許容されない。これは安全性の問題もあり、早晩には解除されないだろう。つまり、Apple Vision Proは運動コンピュータでも移動コンピュータでもない。それはさらに未来に持ち越されたことになる。

トラベル・モードは飛行機での使用を想定
窓から見える景色の変化が少ないからだろう

ちなみに、このような制限は空間に没入するイマーシブ・スペース(Immersive Space)で起こる。サイクル・コンピュータの情報を視界に固定するヘッドアップ・ディスプレイ(HUD)を実感するには、利用者の頭を基準にするアンカー・エンティティを用いる必要があり、それはイマーシブ・スペースでしか利用できないからだ。空間を共有するシェアード・スペース(Shared Space)では、情報は空間の特定位置に固定されるので、利用者が移動すると情報を背後に置き去りにしてしまうことになる。

//  ImmersiveView.swift

import SwiftUI
import RealityKit
import RealityKitContent

struct ImmersiveView: View {
    var body: some View {
        RealityView { content, attachments in
            if let entity = attachments.entity(for: "HUD") {
                content.add(entity)
                
                let anchor = AnchorEntity(.head)
                anchor.anchoring.trackingMode = .continuous
                entity.setParent(anchor)
                content.add(anchor)
                
                entity.transform.translation.z = -1.0
                entity.transform.translation.y = 0.3
            }
        } 
        attachments: {
            Attachment(id: "HUD") {
                HUDView()
            }
        }
    }
}

#Preview {
    ImmersiveView()
        .previewLayout(.sizeThatFits)
}

Leave a Reply

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA