From ff1f5dae9758e93b7f014d4511f371c6303b5738 Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Mon, 25 Nov 2024 23:58:16 +0900
Subject: [PATCH 01/11] :memo: add ref comment
---
packages/babylonjs/lib/index.ts | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/packages/babylonjs/lib/index.ts b/packages/babylonjs/lib/index.ts
index 524afec..2a87b28 100644
--- a/packages/babylonjs/lib/index.ts
+++ b/packages/babylonjs/lib/index.ts
@@ -40,6 +40,13 @@ export const parseSpzToSplat = async (
const _convertGaussianCloudToSplatBuffer = (
gsCloud: GaussianCloud,
): ArrayBuffer => {
+ /**
+ * This section of the code is inspired by the implementation found in
+ * CedricGuillemet/Babylon.js, which is available under the Apache-2.0 License.
+ * See:
+ * https://github.com/CedricGuillemet/Babylon.js/blob/17f2f4a768e3dae50ccb1280f734522448879165/packages/dev/loaders/src/SPLAT/splatFileLoader.ts#L184-L308
+ */
+
// position(3*f32) + scale(3*f32) + color(4*u8) + rotation(4*u8)
const rowOutputLength = 3 * 4 + 3 * 4 + 4 + 4;
const splatCount = gsCloud.numPoints;
From b570d6b1aab55c4d98c674befe9ec95907583415 Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Tue, 26 Nov 2024 23:03:47 +0900
Subject: [PATCH 02/11] :memo: write about
---
README.md | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0a3013f..9e08457 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,19 @@
-# spz-wasm
+# spz-loader
+
+## About
+
+spz-loaderは、3D Gaussian Splatting のファイルフォーマットの一種である.spzをロードするためのnpmパッケージ群です。
+.spzフォーマットの詳細はNianticが公開している[ブログ記事](https://scaniverse.com/news/spz-gaussian-splat-open-source-file-format)や[GitHubリポジトリ](https://github.com/nianticlabs/spz)をご参照ください。
+
+spz-loaderは`nianticlabs/spz`をEmscriptenによってwasm化し、それを用いた純粋なデコード機能を有する`@spz-loader/core`と
+それに依存する各種プラットフォーム向けのローダパッケージを提供します。
+
+## Install & Usage
+
+### For Babylon.js
+
+### Core package
+
+## APIs
+
+## Developing spz-loader
\ No newline at end of file
From 83b4063a26531565e235a598266d26336293180e Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Wed, 27 Nov 2024 02:45:43 +0900
Subject: [PATCH 03/11] :memo: wip on readme
---
README.md | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 121 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 9e08457..2739061 100644
--- a/README.md
+++ b/README.md
@@ -10,10 +10,130 @@ spz-loaderは`nianticlabs/spz`をEmscriptenによってwasm化し、それを用
## Install & Usage
-### For Babylon.js
+### For Web3D Engines (example for Babylon.js)
+
+Install like below. `@spz-loader/babylonjs` requires Babylon.js version 7 or later.
+
+```sh
+# for npm
+npm i -D @babylonjs/core @spz-loader/babylonjs
+
+# for pnpm
+pnpm add -D @babylonjs/core @spz-loader/babylonjs
+```
+
+Code example of ESModule or TypeScript.
+
+
+```ts
+import "./style.css";
+
+import { Engine, Scene } from "@babylonjs/core";
+import { createGaussianSplattingFromSpz } from "@spz-loader/babylonjs";
+
+// .spz file path/url
+import spzPath from "../assets/hornedlizard.spz?url";
+
+const engine = new Engine(renderCanvas);
+const scene = new Scene(engine);
+
+// ...
+
+const spzBuffer = await fetch(spzPath).then((res) => res.arrayBuffer());
+const splat = await createGaussianSplattingFromSpz(spzBuffer, scene);
+```
### Core package
+Install like below.
+
+```sh
+# for npm
+npm i -D @spz-loader/core
+
+# for pnpm
+pnpm add -D @spz-loader/core
+```
+
+Usage example of core package.
+
+```ts
+import { loadSpz } from "@spz-loader/core";
+
+import spzUrl from "../assets/racoonfamily.spz?url";
+
+const spzBuffer = await fetch(spzUrl)
+ .then((res) => res.arrayBuffer())
+ .then((buf) => new Uint8Array(buf));
+
+const splat = await loadSpz(spzBuffer);
+
+console.log(splat.numPoints);
+```
+
## APIs
+### Core
+
+#### type `GaussianCloud`
+
+Data type of Gaussian Splatting.
+
+| field | type | detail |
+| :---------- | :------------- | :-------------------------------------------------------------- |
+| numPoints | `number` | number of gaussian |
+| shDegree | `number` | number of Sperical Harmonics degree |
+| antialiased | `boolean` | is antialias enable |
+| positions | `Float32Array` | gaussian positions(length: numPoints x3) |
+| scales | `Float32Array` | gaussian scales(length: numPoints x3) |
+| rotations | `Float32Array` | gaussian rotations for quaternion(len: numPoints x4) |
+| alphas | `Float32Array` | gaussian alphas ranged 0-1 (length: numPoints x1) |
+| colors | `Float32Array` | gaussian colors ranged 0-1 (length: numPoints x3) |
+| sh | `Float32Array` | gaussian's spherical harmonics(**!!now, it's not supported!!**) |
+
+```ts
+type GaussianCloud = {
+ numPoints: number;
+ shDegree: number;
+ antialiased: boolean;
+ positions: Float32Array;
+ scales: Float32Array;
+ rotations: Float32Array;
+ alphas: Float32Array;
+ colors: Float32Array;
+ sh: Float32Array;
+}
+```
+
+#### function: `loadSpz`
+
+Load .spz file and decode it to Gaussian Cloud.
+
+| args | type | detail |
+| :------ | :---------------- | :----------------- |
+| spzData | `Uint8Array` | buffer of spz file |
+| options | `ILoadSpzOptions` | load options |
+
+| return type | detail |
+| :-------------- | :------------------------------ |
+| `GaussianCloud` | decoded Gaussian Splatting data |
+
+```ts
+loadSpz: (spzData: Uint8Array, options?: ILoadSpzOptions) => Promise;
+```
+
+#### interface: `ILoadSpzOptions`
+
+| field | type | detail |
+| :--------------- | :------- | :-------------------------------------------- |
+| colorScaleFactor | `number` | color scale for representing gaussian's color |
+
+```ts
+interface ILoadSpzOptions {
+ colorScaleFactor?: number;
+}
+```
+
+### Babylon.js
+
## Developing spz-loader
\ No newline at end of file
From a397ee0622545d486c27b56f3336b2828e40be83 Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Wed, 27 Nov 2024 02:55:15 +0900
Subject: [PATCH 04/11] :memo: babylonjs api
---
README.md | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/README.md b/README.md
index 2739061..fee961c 100644
--- a/README.md
+++ b/README.md
@@ -136,4 +136,38 @@ interface ILoadSpzOptions {
### Babylon.js
+#### function: `createGaussianSplattingFromSpz`
+
+Load spz file and create Gaussian Splatting object into Babylon.js scene.
+
+| args | type | detail |
+| :------ | :------------------------ | :----------------------- |
+| data | `ArrayBuffer` | buffer of spz file |
+| scene | `Scene` | Babylon.js' scene object |
+| options | `ICreateGSFromSpzOptions` | load options |
+
+| return type | detail |
+| :---------------------- | :----------------------------------------- |
+| `GaussianSplattingMesh` | Babylon.js' Gaussian Splatting mesh object |
+
+```ts
+createGaussianSplattingFromSpz: (data: ArrayBuffer, scene: Scene, options?: ICreateGSFromSpzOptions) => Promise;
+```
+
+#### interface: `ICreateGSFromSpzOptions`
+
+| field | type | detail |
+| :--------------- | :-------- | :-------------------------------------------- |
+| colorScaleFactor | `number` | color scale for representing gaussian's color |
+| name | `string` | Gaussian Splatting Mesh objects's name |
+| keepInRam | `boolean` | keep datas in ram for editing purpose |
+
+```ts
+interface ICreateGSFromSpzOptions {
+ colorScaleFactor?: number;
+ name?: string;
+ keepInRam?: boolean;
+}
+```
+
## Developing spz-loader
\ No newline at end of file
From d905ea975d837a2ec16a556a256a39d25d3e6ef5 Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Thu, 28 Nov 2024 01:09:46 +0900
Subject: [PATCH 05/11] :memo: test syntax highlight
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index fee961c..4ed8a8e 100644
--- a/README.md
+++ b/README.md
@@ -119,7 +119,7 @@ Load .spz file and decode it to Gaussian Cloud.
| `GaussianCloud` | decoded Gaussian Splatting data |
```ts
-loadSpz: (spzData: Uint8Array, options?: ILoadSpzOptions) => Promise;
+const loadSpz: (spzData: Uint8Array, options?: ILoadSpzOptions): Promise;
```
#### interface: `ILoadSpzOptions`
From 4ff84d0bbbaf39be6b39ffd5295d3fd4051a9344 Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Thu, 28 Nov 2024 01:10:55 +0900
Subject: [PATCH 06/11] :memo: highlight test again
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4ed8a8e..0f1f7bc 100644
--- a/README.md
+++ b/README.md
@@ -119,7 +119,7 @@ Load .spz file and decode it to Gaussian Cloud.
| `GaussianCloud` | decoded Gaussian Splatting data |
```ts
-const loadSpz: (spzData: Uint8Array, options?: ILoadSpzOptions): Promise;
+const loadSpz: (spzData: Uint8Array, options?: ILoadSpzOptions)=> Promise;
```
#### interface: `ILoadSpzOptions`
From ebf45966fa9daeda03a0d204b9c11ed895fc5b2d Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Thu, 28 Nov 2024 03:38:51 +0900
Subject: [PATCH 07/11] :memo: test preview
---
README.md | 140 ++++++++++++++++++++++--------------------------------
1 file changed, 56 insertions(+), 84 deletions(-)
diff --git a/README.md b/README.md
index 0f1f7bc..0a38ce3 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,15 @@
-# spz-loader
+
+
+ 🦎
+ spz-loader
+
+
+
+
+
+
+
+
## About
@@ -71,103 +82,64 @@ const splat = await loadSpz(spzBuffer);
console.log(splat.numPoints);
```
-## APIs
+## Developing spz-loader
-### Core
+### Environment
-#### type `GaussianCloud`
+Project author's local environment is below.
-Data type of Gaussian Splatting.
+- Windows 11 Home
+- Node.js 20.18.1
+- pnpm 9.14.2
+- Docker Desktop
+ - with VSCode dev container
+- Emscripten 3.1.72 (on docker)
-| field | type | detail |
-| :---------- | :------------- | :-------------------------------------------------------------- |
-| numPoints | `number` | number of gaussian |
-| shDegree | `number` | number of Sperical Harmonics degree |
-| antialiased | `boolean` | is antialias enable |
-| positions | `Float32Array` | gaussian positions(length: numPoints x3) |
-| scales | `Float32Array` | gaussian scales(length: numPoints x3) |
-| rotations | `Float32Array` | gaussian rotations for quaternion(len: numPoints x4) |
-| alphas | `Float32Array` | gaussian alphas ranged 0-1 (length: numPoints x1) |
-| colors | `Float32Array` | gaussian colors ranged 0-1 (length: numPoints x3) |
-| sh | `Float32Array` | gaussian's spherical harmonics(**!!now, it's not supported!!**) |
+### Setup
-```ts
-type GaussianCloud = {
- numPoints: number;
- shDegree: number;
- antialiased: boolean;
- positions: Float32Array;
- scales: Float32Array;
- rotations: Float32Array;
- alphas: Float32Array;
- colors: Float32Array;
- sh: Float32Array;
-}
-```
-
-#### function: `loadSpz`
-
-Load .spz file and decode it to Gaussian Cloud.
-
-| args | type | detail |
-| :------ | :---------------- | :----------------- |
-| spzData | `Uint8Array` | buffer of spz file |
-| options | `ILoadSpzOptions` | load options |
+Clone this repo and submodule
-| return type | detail |
-| :-------------- | :------------------------------ |
-| `GaussianCloud` | decoded Gaussian Splatting data |
+```sh
+git clone https://github.com/drumath2237/spz-loader.git
-```ts
-const loadSpz: (spzData: Uint8Array, options?: ILoadSpzOptions)=> Promise;
+git submodule update --init --recursive
```
-#### interface: `ILoadSpzOptions`
-
-| field | type | detail |
-| :--------------- | :------- | :-------------------------------------------- |
-| colorScaleFactor | `number` | color scale for representing gaussian's color |
-
-```ts
-interface ILoadSpzOptions {
- colorScaleFactor?: number;
-}
+Repository structure is below.
+spz-loader is a monorepo project setup by pnpm-workspace.
+
+```txt
+/
+├─ packages/
+│ ├─ core/
+│ │ └─ lib/
+│ │ ├─ spz-wasm/
+│ │ │ └─ spz/ <-- submodule
+│ │ ├─ build.sh
+│ │ └─ index.ts
+│ └─ babylonjs/
+│ └─ lib/
+│ └─ index.ts
+├─ package.json
+├─ pnpm-lock.yaml
+└─ pnpm-workspace.yaml
```
-### Babylon.js
+To install dependencies, you can run `pnpm install` on the root directory.
-#### function: `createGaussianSplattingFromSpz`
-
-Load spz file and create Gaussian Splatting object into Babylon.js scene.
-
-| args | type | detail |
-| :------ | :------------------------ | :----------------------- |
-| data | `ArrayBuffer` | buffer of spz file |
-| scene | `Scene` | Babylon.js' scene object |
-| options | `ICreateGSFromSpzOptions` | load options |
-
-| return type | detail |
-| :---------------------- | :----------------------------------------- |
-| `GaussianSplattingMesh` | Babylon.js' Gaussian Splatting mesh object |
-
-```ts
-createGaussianSplattingFromSpz: (data: ArrayBuffer, scene: Scene, options?: ICreateGSFromSpzOptions) => Promise;
+```sh
+pnpm install
```
-#### interface: `ICreateGSFromSpzOptions`
+### Build packages
-| field | type | detail |
-| :--------------- | :-------- | :-------------------------------------------- |
-| colorScaleFactor | `number` | color scale for representing gaussian's color |
-| name | `string` | Gaussian Splatting Mesh objects's name |
-| keepInRam | `boolean` | keep datas in ram for editing purpose |
+Run build script `build:all`.
+This command does follow:
-```ts
-interface ICreateGSFromSpzOptions {
- colorScaleFactor?: number;
- name?: string;
- keepInRam?: boolean;
-}
-```
+1. Build spz(C++) to WebAssembly by Emscripten on a Docker container
+2. Build `@spz-loader/core` package by Vite library mode
+3. Build `@spz-loader/babylonjs` package by Vite library mode
-## Developing spz-loader
\ No newline at end of file
+```sh
+pnpm build:all
+```
\ No newline at end of file
From f9795740524f4a4e5d311aaeed9a1e5c1676c0bb Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Thu, 28 Nov 2024 04:03:50 +0900
Subject: [PATCH 08/11] :memo: some badges
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 0a38ce3..4b9171d 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,14 @@
- 🦎
- spz-loader
+ 🦎
spz-loader
-
-
-
+
+
+
+
## About
From ade8fa23071e3e54bc7674aaca03d23e5c2c987c Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Thu, 28 Nov 2024 04:08:35 +0900
Subject: [PATCH 09/11] :memo: eng translation
---
README.md | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 4b9171d..639ef75 100644
--- a/README.md
+++ b/README.md
@@ -13,11 +13,15 @@
## About
-spz-loaderは、3D Gaussian Splatting のファイルフォーマットの一種である.spzをロードするためのnpmパッケージ群です。
-.spzフォーマットの詳細はNianticが公開している[ブログ記事](https://scaniverse.com/news/spz-gaussian-splat-open-source-file-format)や[GitHubリポジトリ](https://github.com/nianticlabs/spz)をご参照ください。
+
-spz-loaderは`nianticlabs/spz`をEmscriptenによってwasm化し、それを用いた純粋なデコード機能を有する`@spz-loader/core`と
-それに依存する各種プラットフォーム向けのローダパッケージを提供します。
+spz-loader is a set of npm packages for loading .spz, a type of 3D Gaussian Splatting file format. For more information on the .spz format, see [the blog post](https://scaniverse.com/news/spz-gaussian-splat-open-source-file-format) published by Niantic and the [GitHub repository](https://github.com/nianticlabs/spz).
+
+
+
+spz-loader provides `@spz-loader/core`, which is a pure decoding facility using `nianticlabs/spz` converted to wasm by Emscripten, and loader packages for various platforms that depend on it.
## Install & Usage
@@ -142,4 +146,8 @@ This command does follow:
```sh
pnpm build:all
-```
\ No newline at end of file
+```
+
+## Author
+
+[@drumath2237](https://x.com/ninisan_drumath)
\ No newline at end of file
From 03ac962345f8fd58166f081c7e6b3bcbe4223ada Mon Sep 17 00:00:00 2001
From: drumath2237 <2237k.drumath@gmail.com>
Date: Thu, 28 Nov 2024 04:19:49 +0900
Subject: [PATCH 10/11] :bento: add gif capture
---
README.md | 4 +++-
images/hornedlizard.gif | Bin 0 -> 10023330 bytes
2 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 images/hornedlizard.gif
diff --git a/README.md b/README.md
index 639ef75..46be190 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,9 @@
-
+
+
+
## About
diff --git a/images/hornedlizard.gif b/images/hornedlizard.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3247d20480e1e83d7fa8fd62f5552fdeb73aa3fe
GIT binary patch
literal 10023330
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