dylanebert HF staff commited on
Commit
1b5e137
·
1 Parent(s): 3b7903d
viewer/src/lib/splat.js/{core → cameras}/Camera.ts RENAMED
@@ -1,7 +1,12 @@
1
- import { Object3D } from "./Object3D";
 
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 "../core/Camera";
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 "./Camera";
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 "./core/Camera";
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 splatData = new Uint8Array(contentLength);
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 "../core/Camera";
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.Legacy";
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