実績とブログの一覧へ戻る
3DGSフォーマットリファレンス 2026-08-09更新 2026-08-11読了 約13分

3DGSのファイルフォーマットを整理する

3D Gaussian Splatting(3DGS)は、同じシーンでも保存フォーマットによってファイルサイズも読み込めるソフトも変わります。PLY・SPLAT・KSPLAT・SPZ・SOG・RAD・LCC/LCC2という主要フォーマットを、圧縮方式・対応ツール・用途で整理します。3DGSを扱えるソフト・ツール比較と合わせて読むと、「どのソフトでどのフォーマットを使うか」が決めやすくなります。

この記事の情報は2026年8月時点のものです3DGSのフォーマットは活発に更新されています。細かい仕様は各プロジェクトのリポジトリで最新版を確認してください。
Spark(sparkjsdev)ロゴ
Niantic Spatialロゴ
PlayCanvasロゴ
XGRIDSロゴ

記事で扱う主なフォーマットの開発元4社。各ロゴは各社の商標であり、フォーマットの識別・比較のために掲載しています。

01 早見表:まず全体像から

まずこの表で8フォーマットの性格をつかんでください。詳しくは各セクションで解説します。バイト単位の技術仕様は、各セクション内の「仕様の中身」を開くと読めます(普段は畳んであります)。

フォーマット一言でいうと拡張子圧縮対応ソフト向いている用途
PLY全部入りの原本。でかい.ply基本は非圧縮ほぼ全ツールソフト間のやり取り、互換性優先
SPLAT初期の簡易版。今は選ばない.splatSH係数を削り量子化初期のWebビューアー中心旧ビューアーとの互換用(新規では非推奨)
KSPLAT特定ビューアーの専用形式.ksplatチャンク分割+2段階圧縮GaussianSplats3Dのみプログレッシブ表示の自前ビューアー
SPZ配布用の定番圧縮。PLYの1/10.spzv1-3=gzip/v4=zstdScaniverse、splat-transform、Spark等配布・保存用の汎用コンパクト形式
SOG画像圧縮の技で最小クラスフォルダ+meta.json属性ソート+WebP(約20倍)PlayCanvas系ツールWebでの配信・ストリーミング
RAD巨大シーンの配信専用.rad + .radc16byte/ガウシアン+チャンク配信Sparkのみ1億点超級の超大規模ストリーミング
LCC / LCC2都市を丸ごと入れる箱.lcc2 + SOG/SPZ内部フォーマットに準拠XGRIDS SDK、splat-transform(読込)都市規模でのLOD切り替え
glTF(GLB)標準規格版。これからの本命.glb / .gltfSPZ方式のKHR圧縮拡張Cesium系、gsbox(対応拡大中)標準規格での保存・地理空間配信

02 PLY(オリジナル・非圧縮)

3DGSの元論文(Inria)がそのまま出力する、事実上の共通言語です。1ガウシアンごとに位置(x, y, z)・スケール・回転(クォータニオン)・不透明度・色情報を記録します。色は球面調和関数(SH)係数として保存され、次数3まで使うと1ガウシアンあたり45個の係数(3チャンネル×15)が必要になるため、ファイルサイズは全フォーマット中もっとも大きくなります。

項目内容
拡張子.ply
圧縮基本は非圧縮(splat-transform等が対応する「Compressed PLY」という派生もあり)
対応ソフトほぼ全てのDCC・ビューアー・変換ツールが読み込み可能
向いている用途ソフト間でのやり取り、DCCへの取り込み。互換性を最優先したいとき
仕様の中身(オタク向け)

仕様の中身 ── ヘッダーはASCIIテキストで、plyformat binary_little_endian 1.0element vertex Nに続いてproperty行が並びます。SH次数3の標準レイアウトでは1ガウシアン=62プロパティ×float32=248バイトです: 位置x,y,z/法線nx,ny,nz(3DGSでは未使用)/f_dc_0..2(SH0次=ベース色)/f_rest_0..44(SH1〜3次)/opacityscale_0..2rot_0..3。値は学習時の内部表現のまま格納されるため、表示時にはopacityにシグモイド、scaleに指数関数を通し、クォータニオンを正規化します。テキストエディタでヘッダーを開けばproperty構成がそのまま読めるので、手元のツールで読めるかどうかの一次判定に使えます。

実例 ── Inria公式実装の出力そのもので、Polycam・Luma AI・XGRIDS LCC Studioのエクスポートもこのレイアウトを踏襲します。SuperSplatが直接読み書きするため、編集のハブになるのもPLYです。

03 SPLAT(antimatter15)

初期のWebビューアーsplat(antimatter15)のために作られた、シンプルな固定長バイナリです。1ガウシアンあたり32バイト固定(位置・スケール・色・共分散)で、視点による色変化を表すSH係数を持たないため、PLYよりおよそ半分のサイズになります。

項目内容
拡張子.splat
圧縮SH係数を削り量子化する形での軽量化(コーデック的な圧縮ではない)
対応ソフト初期のWebビューアー中心。正式な仕様書は無く、慣習で決まっている
向いている用途とにかく手早くWebで表示したいとき。視点依存の質感(反射・光沢)は失われる
仕様の中身(オタク向け)

仕様の中身 ── ヘッダーはなく、1ガウシアン固定32バイトの連続です: 位置 float32×3(12バイト)+スケール float32×3(12バイト)+色 RGBA各8bit(4バイト)+回転クォータニオン各8bit(4バイト)。ファイルサイズ÷32がそのまま点数になります。SH係数は0次から計算した色をRGBAに焼き込んで捨てるため、視点依存の質感が失われます。正式な仕様書はなく、antimatter15のリポジトリの実装とREADMEが事実上の定義です。

04 KSPLAT(mkkellogg/GaussianSplats3D)

Three.jsライブラリGaussianSplats3D専用の圧縮フォーマットです。データをチャンク単位に分割し、届いたチャンクから順に描画するプログレッシブストリーミングを前提に設計されています。100MBを超えるシーンでも0.5〜1秒で最初の絵が出せます。圧縮レベルを選べ、SH係数を8bitまで圧縮する設定もあります。

項目内容
拡張子.ksplat
圧縮チャンク分割+2段階の圧縮レベル(レベル2はSHも8bit圧縮)
対応ソフトGaussianSplats3Dのみ(専用フォーマット)。PLY/SPLATからの変換ツールが同梱される
向いている用途GaussianSplats3Dベースの自前ビューアーで、大きいシーンを段階的に表示したいとき
仕様の中身(オタク向け)

仕様の中身 ── 圧縮レベルは3段階です: 0=非圧縮(float32)/1=位置・スケール・回転・SHをfloat32→16bitへ/2=レベル1に加えSH係数を8bitへ。空間をブロック(既定5.0)で区切り、バケット(既定256ガウシアン)単位に格納する構造が、そのままプログレッシブロードの単位になります。変換は同梱のnode util/create-ksplat.js [入力] [出力] [圧縮レベル] …で行い、保持するSH次数(0〜2)も引数で指定します。

05 SPZ(Niantic Spatial)

Niantic Spatial(Scaniverse)が開発した圧縮フォーマットで、業界標準になりつつあります。glTFのKHR_gaussian_splatting圧縮拡張(09)の圧縮方式にも採用されました。v1〜v3はgzip圧縮、最新のv4はzstd圧縮+平文32バイトヘッダーという構成に変わりました。v4のヘッダーはmagic「NGSP」から始まり、ガウシアン数・SH次数・バージョンなどがテキストで直接読めるため、ファイル全体をデコードしなくてもヘッダーだけ覗いて点数を確認できます

項目内容
拡張子.spz
圧縮v1〜3=gzip/v4=zstd(高圧縮率)
対応ソフトScaniverse、splat-transform、Spark、UnityGaussianSplatting、3ds Max 2027.2など幅広く対応
向いている用途配布・保存用の汎用コンパクト形式として。今後の事実上のデファクトスタンダード候補
仕様の中身(オタク向け)

仕様の中身(v4) ── 32バイトの平文ヘッダー(magic NGSP=0x5053474E・ガウシアン数・SH次数0〜4・固定小数点ビット数・アンチエイリアスフラグ・ストリーム数・目次オフセット)に、属性ごとに独立したzstdストリームが続きます。ストリームが独立しているため並列に展開できるのがv4の狙いです(v1〜3はgzip一本)。量子化は属性ごとに変えてあります:

属性量子化
位置座標あたり24bit固定小数点
スケール8bit(log域)
回転smallest-three方式: 最大成分のインデックス2bit+残り3成分を10bitずつ
色・不透明度各8bit
SH係数1次=5bit、2次以降=4bit(既定)

実例 ── ScaniverseアプリのエクスポートがSPZで、NianticがMITライセンスでOSS化しています(nianticlabs/spz)。公称でPLY比およそ1/10に縮みます。

06 SOG(PlayCanvas)

PlayCanvasが開発した、「Gaussian Splatting版のWebP」と呼ばれるフォーマットです。ガウシアンを位置・スケール・色などの属性でソートしてから、属性ごとにWebP画像として圧縮し、meta.jsonで紐付けます。似た性質のガウシアンを隣接させてから画像圧縮をかけるため圧縮効率が高く、1GBのPLYが55MB程度まで縮む(約20倍)例が報告されています。

項目内容
拡張子フォルダ+meta.json(単一ファイルではない)
圧縮属性ソート+WebP画像圧縮。実測で約20倍
対応ソフトSuperSplat、splat-transform、SparkなどPlayCanvas系ツール
向いている用途ブラウザでの配信・ストリーミング。ファイルサイズを最優先したいとき
仕様の中身(オタク向け)

仕様の中身 ── meta.json+WebP画像で1シーンを表します(必須5ファイル+高次SH用の2ファイルは任意)。「同じピクセル座標(x,y)が全画像を通して同じガウシアンを指す」という取り決めがフォーマットの核心です:

ファイル内容
means_l / means_u.webp位置。16bit値をlog域で量子化し、下位/上位8bitを2枚に分割(RGB=xyz)
quats.webp回転。smallest-three方式(3成分×8bit+捨てた成分のインデックス)
scales.webpスケール。8bitコードブック参照(log域)
sh0.webpベース色。RGB=コードブックのインデックス、A=不透明度
shN_centroids / shN_labels.webp高次SH。K-meansで最大65,536個のパレットへ集約し、16bitラベルで参照

WebPは量子化値を保つためロスレス必須です。全ファイルをZIPに固めた単一.sogも定義されています。仕様はPlayCanvas公式ドキュメントで公開されています。

07 RAD(Spark)

Three.js向けレンダラーSparkが2.0で追加した、LODツリーをそのまま保存できるストリーミング専用フォーマットです。あらかじめbuild-lodコマンドでLODツリーを構築して保存しておき、閲覧時はHTTP Range Requestでチャンク(.radc)を必要な分だけ取得します。粗いバージョンを一瞬で表示し、視点の移動に応じて詳細を追加でストリーミングする「coarse-to-fine」設計です。ロケハン3Dの自社ビューアーも、このRADフォーマットを軸にした独自の並列デコード・LOD制御を組み込んでいます。

項目内容
拡張子.rad(ヘッダー・LODツリー)+ .radc(チャンク本体)
圧縮内部は16バイト/ガウシアンのPackedSplatsが既定。チャンク単位でHTTP Range配信
対応ソフトSpark(paged:trueで読み込み)。他ツールへの対応は今のところ限定的
向いている用途1億点を超えるような超大規模シーンを、GPUメモリに収まる範囲でストリーミング表示したいとき

実例 ── 当社ビューアーでは934MB・4,940万ガウシアンのRADを、初回表示まで約6秒でストリーミングできています(以降の視点移動は常駐キャッシュで待ちなし)。フォーマットの一次情報はSparkのドキュメントとソースコードのみで、SPZやSOGのような独立した仕様書はまだありません。

08 LCC / LCC2(XGRIDS)

XGRIDSが開発した、都市規模のシーンをLOD(詳細度)付きで扱うためのコンテナフォーマットです。単一のファイルではなく、JSONメタデータ(octree型のLODツリー)と、実データを格納するdata/3dgs/フォルダで構成されます。実データはSOGかSPZのどちらか一方で保存され、隣接するノードは1ファイルに統合されます。PortalCamのスキャンでも、LCC Studioの書き出しにLcc2/lcc2-result/フォルダ(3dgsはSOG、meshはPLY)として含まれています。

項目内容
拡張子.lcc2(メタ)+ data/3dgs以下にSOGまたはSPZ
圧縮内部で使うSOG/SPZの圧縮率に準拠
対応ソフトXGRIDS純正SDK(UE5/Unity/Web)、splat-transform(読み込みのみ)、SuperSplat、3ds Max 2027.2(読み込み)
向いている用途都市1エリア丸ごとなど大規模シーンで、カメラ距離に応じたLOD切り替えをしたいとき
ライセンスに注意LCC/LCC2はXGRIDS独自ライセンスです。読み込むだけの自作ローダーであれば影響は小さいと考えていますが、商用での本格運用や再配布を検討する場合は、事前に公式のホワイトペーパーでライセンス条件を確認してください。

09 glTF(KHR_gaussian_splatting)

Khronosが標準化を進めている、glTF/GLBに3DGSを格納するための公式拡張です。2026年2月にリリース候補(RC)が公開され、正式承認に向けた最終段階にあります。圧縮にはNiantic Spatialが寄贈したSPZ方式の拡張(KHR_gaussian_splatting_compression_spz)を使います。最大の意義は、専用フォーマットの乱立からglTFという汎用3D標準の上に乗る流れができたことです。Cesiumはこれをペイロードに採用して3D Tilesの階層LODストリーミングに対応し(2026年4月)、都市スケールの3DGSを地理座標付きで配信できるようになりました。gsboxなどの変換CLIもPLY⇄GLBに対応しています。

項目内容
拡張子.glb / .gltf(KHR_gaussian_splatting拡張)
圧縮SPZ方式の圧縮拡張(PLY比で最大90%減)
対応ソフトCesiumJS、Cesium for Unreal、Cesium ion、gsbox。RC段階のため対応は拡大中
向いている用途標準規格での長期保存・配布。3D Tilesと組み合わせた都市スケールの地理空間配信
仕様の中身(オタク向け)

仕様の中身(RC) ── メッシュprimitiveの属性としてPOSITIONに加え、拡張名を接頭辞にしたKHR_gaussian_splatting:ROTATION(VEC4・単位クォータニオン)/:SCALE(VEC3)/:OPACITY(SCALAR・0〜1)/:SH_DEGREE_0_COEF_0(VEC3)を定義します。高次SHは3次(計45係数)までで、使う場合は下位の次数を必ず含める階層ルールです。0次係数からの表示色はColor = SH0 × 0.282095 + 0.5で導出します。3DGS非対応ビューアー向けに、点群としてフォールバック表示するためのCOLOR_0を併記できるのも標準規格らしい設計です。仕様はKhronosのglTFリポジトリで読めます。

10 結局どれを選べばいいか

先に大原則をひとつ。SPZ・SOG・KSPLATなどの圧縮フォーマットは量子化で情報を削っており、一度圧縮したデータから元の品質は戻せません。そのため、配信用にどのフォーマットを選ぶ場合でも、学習直後のPLYをマスターとして保管し、そこから用途別に派生させる運用にします。フォーマット選びは「マスターをどれにするか」ではなく「配信・受け渡しをどれでやるか」の問題です。

そのうえで、用途ごとの目安です。3DGSを扱えるソフト・ツール比較もあわせて、「どのソフトでどのフォーマットを使うか」を決めてください。

なおSPLATを今から新規に選ぶ理由はほぼありません。正式な仕様書がなくSH係数も失われるため、「手早く試したいだけ」の用途も、PLYをそのまま読めるSuperSplat等に投げるほうが早くて確実です。

フォーマット間の変換は、splat-transformでほぼ一括してカバーできます。

Locahun3D Viewer

フォーマットを気にせず巨大な3DGSデータを扱いたいなら

ロケハン3Dの自社ビューアーは、SOG・SPZを含む主要フォーマットに対応したSparkをベースに、オフライン・ブラウザだけで巨大な3DGSデータを扱えるよう開発しています。ダウンロードや会員登録なしでサンプルシーンを試せます。

サンプルシーンをブラウザで試す →
Credits / 制作

制作クレジット

中村 航
中村 航Kou Nakamura
ロケハン3D 代表 / 調査・執筆

ロケハン3D(LOCAHUN 3D)代表。3DGSスキャンとゲームエンジン・AIを組み合わせた撮影ワークフローを研究・検証している。

@Kou45388803 をフォロー →