---
title: 3DGS を Quest 3 単機で 表示したい！【XGRIDS Meetup Nagoya 2026】
tags: 
author: [nerumawoosimu@yahoo.co.jp](https://docswell.com/user/oshimu)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GE8DZV5ZED.jpg?width=480
description: 3DGS を Quest 3 単機で 表示したい！【XGRIDS Meetup Nagoya 2026】 by nerumawoosimu@yahoo.co.jp
published: August 01, 26
canonical: https://docswell.com/s/oshimu/59N2YP-2026-08-01-131044
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GE8DZV5ZED.jpg)

3DGS を Quest 3 単機で
表示したい！
寝る間をオシム
XGRIDS Meetup Nagoya 2026 ／ 2026.07.31


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LELMD5Y17R.jpg)

自己紹介
名前
寝る間をオシム
SNS
X（@nerumawo_oshimu） / note（oshimu）
リアル
株式会社 palan で XR エンジニアをしています
VR
Web メディア「バーチャルライフマガジン」に所属しています
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4JMYP3N5JW.jpg)

バーチャルライフマガジンについて
VRChat をはじめ、広く XR 界隈の情報を扱う Web メディア。
ワールド紹介・企画モノ・現地レポートなどバラエティ豊かな内容を発信。
「壁新聞」も発行しています。
https://vr-lifemagazine.com/
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PJR91QDZ79.jpg)

目的：3DGSをPCを使わず、スタンドアローンで表示したい！
ゲーミングPC持ってる人意外と少ないし……
PC
Quest 3
Quest 3 単体
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/PEXQY511JX.jpg)

まずは既存ライブラリを調べた
3DGS を Unity で表示するライブラリはいくつかある。Quest 単体で行けるか確認してみた。
UnityGaussianSplatting
おそらく一番使われているが、開発が止まっている。
https://github.com/aras-p/UnityGaussianSplatting
gsplat-unity
後発。BiRP / URP / HDRP に対応。
https://github.com/wuyize25/gsplat-unity
→ 今回は後発で扱いやすい gsplat-unity をベースに試した。
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/3EK9362MED.jpg)

一応できた ……が、とても重い！
Scaniverse で撮影した簡単なシーンでも 10fps 程度まで落ちる。
表示そのものより、3DGS の読み込み時点で Quest には負荷が高い。
しかもライブラリ側に、負荷を調整する手段がほとんど無い。
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/L73WG64275.jpg)

一方 Web は進んでいて、スプラット数が多くても表示できる
https://www.worldlabs.ai/blog/spark-2.0
LoD の概念があり、見ている場所に合わせて動的に splat をロードできる
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/87DK1VQ6JG.jpg)

Spark 2.0 のざっくり解説
事前に ply を変換し、エリアごとに細切れにしておく。
見ている方向に合わせて、必要な分だけをロードする。
・遠いものはそれなり、近いものは高密度に。
→ 大きなファイルでも、端末のスペックに合わせて表示できる
※ Spark の LoD は「画面上で何 px か」でツリーを打ち切る方式。今回の実装もこの考え方を踏襲している。
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/VJPKQVGZE8.jpg)

……これアプリに応用できないかな〜〜〜
難しそうだな〜〜〜 誰か作ってくれないかな〜〜〜
と思っていたところ……
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/2EVV5Z6MEQ.jpg)

Claude Fable 登場！
これを逃す手はない
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/57GL64NXEL.jpg)

……実装出来ちゃいました。
https://youtu.be/IN-4Hfv0YsE
（理論上は） GB 級のシーンを、固定メモリのまま Quest 3 だけで表示できる
※約800MB、1200万splatまでは動きまし）
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4EQY4GQ5JP.jpg)

何を借りて、何を自作したか
Spark 2.0 の LoD ツリー構築は「ソースごと同梱」して流用。
フォーマットと Unity ランタイムは自作。
借りたもの
自作したもの
・Spark 2.0の入力デコーダとLoD ツリー構築
・変換ファイルフォーマット
・gsplat-unityのスプラット投影部分の仕組み
・点群表示のための処理部分
※Spark2.0とgsplat-unityはMITライセンス
ply を用意
PC で変換
・非同期ストリーミングと描画部分（Unity 一式）
Quest へ転送
端末側で必要分を読み込み
→ 描画
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/KJ4WQ5NV71.jpg)

事前処理： splat をツリーとチャンクに切る
splat を LoD ツリーに組み直し、固定サイズのチャンクに切り出しておく（この処理は PC 側）。
scene.ply
LoD ツリー構築
葉 ＝ 元の splat
内部ノード ＝ 子をまとめた代表 splat
root
深いノードほど細かい
近い splat 同士が同じチャンクに入るよう
空間的に並べ替えて分割
並べ替えてから切り出す
チャンク
.usst（ノード表 / チャンク索引）
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LE1YPW547G.jpg)

ランタイム：毎フレーム、ツリーを途中で打ち切る
カメラから見て細かさが要るところだけツリーを下まで降り、それ以外は代表 splat で止める。
カメラ
GPU プール（固定サイズ）
ツリーを上から降りる
root
近い
遠い
子へ展開
（細かく表示）
ここで打ち切り
（代表 splat 1 個）
足りない分は非同期ロード／使わないページはアンロード
ソート → 1 ドローで描画
打ち切りの条件 ＝ そのノードが画面上で何 px を占めるか
シーンが何 GB でも、GPU 側は常に固定サイズ
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GEWG265ZJ2.jpg)

色々検証した結果、 Quest 3 で一度に表示できるのは
25 万 〜 30 万 splat
25 万 splat で実測 35〜44fps、表示するデータの内容によって上下する
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/47ZLDYNLJ3.jpg)

まとめ
画質
表示の綺麗さはそれなり
取り回し
Quest1台で完結するためとても楽。
オフライン
データは端末内に置く形なので、通信なしで確認できる。
横展開
XREALでも実機動作を確認！色々な機器で応用可能。
※ XREALはスペックが低く、描画は 5 万splatほど……
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/YJ6W1D8MJV.jpg)

今回展示もしていますので、
気になる方は是非ご体験ください。
寝る間をオシム


