🫧

Apple Vision Pro で点群(Point Cloud)を表示する

2025/02/28に公開

はじめに

ホロラボ 林です。

Apple Vision Proで点群データを表示しようとして試した内容を共有します。
Swift を用いた点群表示と、Unityを活用した点群描画の2つの方法についてそれぞれ説明します。


Apple Vision Pro上でのply点群の描画

点群をApple製品(Metal)で表示することの難しさ

わざわざ何故このような記事を書くかというと、多少詳しい方はわかると思うのですが、Apple製品における点群描画は、他デバイスからの移植が困難だったりします。

理由1. Geometory Shaderが使えない

一般的に、Unityを用いて3Dアプリケーションで点群を表示する場合、以下のライブラリの活用が良く行われます。

上記ライブラリ含めて、点群表示において描画処理に Geometory Shaderが活用されることが多いのですが、Apple製品(mac/iOS/visionOS)のレンダリングエンジンでは、Geometory Shaderが使えないため、WindowsやAndroid向けの実装がそのまま使えないケースが多いです。

(Particle や VFX Graph をつかった点群描画なら、そのままいけるかもしれませんが)

理由2. Reality Kitの描画制限

また、visionOS 1.x ではパススルーレンダリングの方法としてReality Kitしか対応していませんでした。その上で動作する Unity上での Apple Vision Pro開発環境である PolySpatial visionOS 1.x においても当然レンダリングパイプラインとして Reality Kit しか利用できませんでした。
Reality Kit においてはShader Graph のみがサポートされるため、独自Shaderの利用に制限がありました。

その後 visionOS 2.0 が公開されPolySpatial visionOS 2.xにおいて Metalを利用したアプリケーションの開発が可能となりました。
こちらにおいては独自のコードを利用したShaderが利用可能となります。
https://docs.unity3d.com/Packages/com.unity.polyspatial.visionos@2.0/manual/MetalApps.html

実際に点群を描画する

このような中、ホロラボでは Xcode + Swift + Reality Kit を用いたネイティブアプリケーション上での点群描画方法の調査と、Unity + PolySpatial + Metal を利用した点群描画方法に関して調査しそれぞれで点群を描画することができました。

1. Swift + Reality Kit での実装

まず、Reality Kitを用いたネイティブアプリでは、Swift上で LowLevelMesh を利用する事でply形式の点群を読み込み表示することができました。
この実装は@t_sugiura0204が担当してくれています。

https://developer.apple.com/documentation/realitykit/lowlevelmesh

動画を見ていただくとわかると思いますが、手のオクルージョンも効いています。
https://youtu.be/FZo9_5PekSM

現時点でも数十万点程度の、点群の表示はできていますが、より大きな点群を描画する際はEntity分割やメモリ制御などの調整が必要そうです。

2. Dawnを用いた Unity/Metalでの実装

Unityを利用した実装においては、ホロラボで開発した独自の高速点群表示ライブラリDawn(ドーン) の描画エンジンを Apple Vision Pro (Metal)に対応させる事で表示ができました。

Dawnの概要に関しては、以前、ホロラボのカンファレンスにおいても紹介しているのでこちらを確認ください。
https://www.docswell.com/s/HoloLab/5V16ED-holotech24_b1_a
https://www.docswell.com/s/HoloLab/51R29L-holotech24_b1_b
カンファレンスの時点では、XR デバイスへの対応は対応途中だったのですが、現在はXRデバイス向けの軽量描画モードを開発し、Apple Vision Pro/Meta Quest/MiRZA などのデバイスでも表示ができるようになっています。
是非、事務所にお越しいただいたときはデモを体験ください。

https://youtu.be/zVqf530y_5c

元点群データ: 沖本家住宅

まとめ

今回は、Apple Vision Pro における点群描画の試験実装を Swift/Unityの両方のパターンで試しました。インターネットを検索しても、なかなか、この方法ならできる!という情報が少ない中で、実際に試して動作させることができました。

点群データの活用方法については、引き続き調査/情報発信をしていきます。ご興味のある方は、是非いいねボタンを押してください。

また、ホロラボのテックブログのフォローも是非お願いいたします。

ホロラボのテックブログ

Discussion