Spaces:
Running
Running
Commit
·
1b5e137
1
Parent(s):
3b7903d
loading
Browse files- viewer/src/lib/splat.js/{core → cameras}/Camera.ts +6 -1
- viewer/src/lib/splat.js/cameras/PerspectiveCamera.ts +1 -5
- viewer/src/lib/splat.js/core/Renderer.ts +2 -1
- viewer/src/lib/splat.js/index.ts +1 -1
- viewer/src/lib/splat.js/loaders/Loader.ts +8 -4
- viewer/src/lib/splat.js/renderers/WebGLRenderer.ts +5 -1
- viewer/src/routes/viewer/[slug]/+page.svelte +1 -1
- viewer/src/routes/viewer/[slug]/SplatViewer.ts +5 -3
viewer/src/lib/splat.js/{core → cameras}/Camera.ts
RENAMED
@@ -1,7 +1,12 @@
|
|
1 |
-
import { Object3D } from "
|
|
|
2 |
|
3 |
export class Camera extends Object3D {
|
|
|
|
|
4 |
constructor() {
|
5 |
super();
|
|
|
|
|
6 |
}
|
7 |
}
|
|
|
1 |
+
import { Object3D } from "../core/Object3D";
|
2 |
+
import { Matrix4 } from "../math/Matrix4";
|
3 |
|
4 |
export class Camera extends Object3D {
|
5 |
+
projectionMatrix: Matrix4;
|
6 |
+
|
7 |
constructor() {
|
8 |
super();
|
9 |
+
|
10 |
+
this.projectionMatrix = new Matrix4();
|
11 |
}
|
12 |
}
|
viewer/src/lib/splat.js/cameras/PerspectiveCamera.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
import { Camera } from "
|
2 |
import { Matrix4 } from "../math/Matrix4";
|
3 |
|
4 |
export class PerspectiveCamera extends Camera {
|
@@ -8,8 +8,6 @@ export class PerspectiveCamera extends Camera {
|
|
8 |
near: number;
|
9 |
far: number;
|
10 |
|
11 |
-
projectionMatrix: Matrix4;
|
12 |
-
|
13 |
constructor(fx: number = 1132, fy: number = 1132, near: number = 0.1, far: number = 100) {
|
14 |
super();
|
15 |
|
@@ -17,8 +15,6 @@ export class PerspectiveCamera extends Camera {
|
|
17 |
this.fy = fy;
|
18 |
this.near = near;
|
19 |
this.far = far;
|
20 |
-
|
21 |
-
this.projectionMatrix = new Matrix4();
|
22 |
}
|
23 |
|
24 |
updateProjectionMatrix(width: number, height: number): void {
|
|
|
1 |
+
import { Camera } from "./Camera";
|
2 |
import { Matrix4 } from "../math/Matrix4";
|
3 |
|
4 |
export class PerspectiveCamera extends Camera {
|
|
|
8 |
near: number;
|
9 |
far: number;
|
10 |
|
|
|
|
|
11 |
constructor(fx: number = 1132, fy: number = 1132, near: number = 0.1, far: number = 100) {
|
12 |
super();
|
13 |
|
|
|
15 |
this.fy = fy;
|
16 |
this.near = near;
|
17 |
this.far = far;
|
|
|
|
|
18 |
}
|
19 |
|
20 |
updateProjectionMatrix(width: number, height: number): void {
|
viewer/src/lib/splat.js/core/Renderer.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
-
import type { Camera } from "
|
2 |
|
3 |
export interface Renderer {
|
4 |
render(camera: Camera): void;
|
|
|
5 |
}
|
|
|
1 |
+
import type { Camera } from "../cameras/Camera";
|
2 |
|
3 |
export interface Renderer {
|
4 |
render(camera: Camera): void;
|
5 |
+
setData(data: Uint8Array): void;
|
6 |
}
|
viewer/src/lib/splat.js/index.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
export * from "./
|
2 |
export * from "./core/Renderer";
|
3 |
|
4 |
export * from "./loaders/Loader";
|
|
|
1 |
+
export * from "./cameras/Camera";
|
2 |
export * from "./core/Renderer";
|
3 |
|
4 |
export * from "./loaders/Loader";
|
viewer/src/lib/splat.js/loaders/Loader.ts
CHANGED
@@ -11,18 +11,22 @@ export class Loader {
|
|
11 |
throw new Error(req.status + " Unable to load " + req.url);
|
12 |
}
|
13 |
|
14 |
-
const rowLength = 3 * 4 + 3 * 4 + 4 + 4;
|
15 |
const reader = req.body!.getReader();
|
16 |
const contentLength = parseInt(req.headers.get("content-length") as string);
|
17 |
-
const
|
18 |
|
19 |
let bytesRead = 0;
|
20 |
-
let lastVertexCount = -1;
|
21 |
-
let stopLoading = false;
|
22 |
|
23 |
while (true) {
|
24 |
const { done, value } = await reader.read();
|
25 |
if (done) break;
|
|
|
|
|
|
|
|
|
|
|
26 |
}
|
|
|
|
|
27 |
}
|
28 |
}
|
|
|
11 |
throw new Error(req.status + " Unable to load " + req.url);
|
12 |
}
|
13 |
|
|
|
14 |
const reader = req.body!.getReader();
|
15 |
const contentLength = parseInt(req.headers.get("content-length") as string);
|
16 |
+
const data = new Uint8Array(contentLength);
|
17 |
|
18 |
let bytesRead = 0;
|
|
|
|
|
19 |
|
20 |
while (true) {
|
21 |
const { done, value } = await reader.read();
|
22 |
if (done) break;
|
23 |
+
|
24 |
+
data.set(value, bytesRead);
|
25 |
+
bytesRead += value.length;
|
26 |
+
|
27 |
+
onProgress?.(bytesRead / contentLength);
|
28 |
}
|
29 |
+
|
30 |
+
renderer.setData(data);
|
31 |
}
|
32 |
}
|
viewer/src/lib/splat.js/renderers/WebGLRenderer.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
import type { Camera } from "../
|
2 |
import type { Renderer } from "../core/Renderer";
|
3 |
|
4 |
export class WebGLRenderer implements Renderer {
|
@@ -10,4 +10,8 @@ export class WebGLRenderer implements Renderer {
|
|
10 |
}
|
11 |
|
12 |
render(camera: Camera): void {}
|
|
|
|
|
|
|
|
|
13 |
}
|
|
|
1 |
+
import type { Camera } from "../cameras/Camera";
|
2 |
import type { Renderer } from "../core/Renderer";
|
3 |
|
4 |
export class WebGLRenderer implements Renderer {
|
|
|
10 |
}
|
11 |
|
12 |
render(camera: Camera): void {}
|
13 |
+
|
14 |
+
setData(data: Uint8Array): void {
|
15 |
+
console.log("setData", data);
|
16 |
+
}
|
17 |
}
|
viewer/src/routes/viewer/[slug]/+page.svelte
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
import { onMount, onDestroy } from "svelte";
|
3 |
import type { IViewer } from "./IViewer";
|
4 |
import { BabylonViewer } from "./BabylonViewer";
|
5 |
-
import { SplatViewer } from "./SplatViewer
|
6 |
|
7 |
export let data: {
|
8 |
scene: {
|
|
|
2 |
import { onMount, onDestroy } from "svelte";
|
3 |
import type { IViewer } from "./IViewer";
|
4 |
import { BabylonViewer } from "./BabylonViewer";
|
5 |
+
import { SplatViewer } from "./SplatViewer";
|
6 |
|
7 |
export let data: {
|
8 |
scene: {
|
viewer/src/routes/viewer/[slug]/SplatViewer.ts
CHANGED
@@ -4,11 +4,13 @@ import * as SPLAT from "$lib/splat.js";
|
|
4 |
export class SplatViewer implements IViewer {
|
5 |
renderer: SPLAT.Renderer;
|
6 |
|
7 |
-
constructor() {
|
8 |
-
this.renderer = new SPLAT.WebGLRenderer();
|
9 |
}
|
10 |
|
11 |
-
async loadScene(url: string, onProgress?: (progress: number) => void) {
|
|
|
|
|
12 |
|
13 |
dispose() {}
|
14 |
|
|
|
4 |
export class SplatViewer implements IViewer {
|
5 |
renderer: SPLAT.Renderer;
|
6 |
|
7 |
+
constructor(canvas: HTMLCanvasElement) {
|
8 |
+
this.renderer = new SPLAT.WebGLRenderer(canvas);
|
9 |
}
|
10 |
|
11 |
+
async loadScene(url: string, onProgress?: (progress: number) => void) {
|
12 |
+
await SPLAT.Loader.LoadAsync(url, this.renderer, onProgress);
|
13 |
+
}
|
14 |
|
15 |
dispose() {}
|
16 |
|