Renamed "forge" to "spark". Updated meta-references and future domain. (#40)

This commit is contained in:
Andreas Sundquist
2025-06-09 13:50:08 -07:00
committed by GitHub
parent ea9e4e3da9
commit acb541cc4e
72 changed files with 396 additions and 395 deletions
+25 -25
View File
@@ -1,102 +1,102 @@
{
"robot-head.spz": {
"url": "https://forge.dev/assets/splats/robot-head.spz",
"url": "https://sparkjs.dev/assets/splats/robot-head.spz",
"directory": "splats"
},
"forge.spz": {
"url": "https://forge.dev/assets/splats/forge.spz",
"url": "https://sparkjs.dev/assets/splats/forge.spz",
"directory": "splats"
},
"butterfly-wings-closed.spz": {
"url": "https://forge.dev/assets/splats/butterfly-wings-closed.spz",
"url": "https://sparkjs.dev/assets/splats/butterfly-wings-closed.spz",
"directory": "splats"
},
"butterfly.spz": {
"url": "https://forge.dev/assets/splats/butterfly.spz",
"url": "https://sparkjs.dev/assets/splats/butterfly.spz",
"directory": "splats"
},
"butterfly-ai.spz": {
"url": "https://forge.dev/assets/splats/butterfly-ai.spz",
"url": "https://sparkjs.dev/assets/splats/butterfly-ai.spz",
"directory": "splats"
},
"fireplace.spz": {
"url": "https://forge.dev/assets/splats/fireplace.spz",
"url": "https://sparkjs.dev/assets/splats/fireplace.spz",
"directory": "splats"
},
"snow-street.spz": {
"url": "https://forge.dev/assets/splats/snow-street.spz",
"url": "https://sparkjs.dev/assets/splats/snow-street.spz",
"directory": "splats"
},
"branzino-amarin.spz": {
"url": "https://forge.dev/assets/splats/food/branzino-amarin.spz",
"url": "https://sparkjs.dev/assets/splats/food/branzino-amarin.spz",
"directory": "splats/food"
},
"burger-from-amboy.spz": {
"url": "https://forge.dev/assets/splats/food/burger-from-amboy.spz",
"url": "https://sparkjs.dev/assets/splats/food/burger-from-amboy.spz",
"directory": "splats/food"
},
"clams-and-caviar-by-ikoyi.spz": {
"url": "https://forge.dev/assets/splats/food/clams-and-caviar-by-ikoyi.spz",
"url": "https://sparkjs.dev/assets/splats/food/clams-and-caviar-by-ikoyi.spz",
"directory": "splats/food"
},
"coral-caviar.spz": {
"url": "https://forge.dev/assets/splats/food/coral-caviar.spz",
"url": "https://sparkjs.dev/assets/splats/food/coral-caviar.spz",
"directory": "splats/food"
},
"double-double-from-InNOut.spz": {
"url": "https://forge.dev/assets/splats/food/double-Double-from-InNOut.spz",
"url": "https://sparkjs.dev/assets/splats/food/double-Double-from-InNOut.spz",
"directory": "splats/food"
},
"gyro.spz": {
"url": "https://forge.dev/assets/splats/food/gyro.spz",
"url": "https://sparkjs.dev/assets/splats/food/gyro.spz",
"directory": "splats/food"
},
"iberico-sandwich-by-reserve.spz": {
"url": "https://forge.dev/assets/splats/food/iberico-sandwich-by-reserve.spz",
"url": "https://sparkjs.dev/assets/splats/food/iberico-sandwich-by-reserve.spz",
"directory": "splats/food"
},
"primerib-tamos.spz": {
"url": "https://forge.dev/assets/splats/food/primerib-tamos.spz",
"url": "https://sparkjs.dev/assets/splats/food/primerib-tamos.spz",
"directory": "splats/food"
},
"steaksandwich-mels.spz": {
"url": "https://forge.dev/assets/splats/food/steaksandwich-mels.spz",
"url": "https://sparkjs.dev/assets/splats/food/steaksandwich-mels.spz",
"directory": "splats/food"
},
"pad-thai.spz": {
"url": "https://forge.dev/assets/splats/food/pad-thai.spz",
"url": "https://sparkjs.dev/assets/splats/food/pad-thai.spz",
"directory": "splats/food"
},
"tomahawk-niku.spz": {
"url": "https://forge.dev/assets/splats/food/tomahawk-niku.spz",
"url": "https://sparkjs.dev/assets/splats/food/tomahawk-niku.spz",
"directory": "splats/food"
},
"rubberduck.glb": {
"url": "https://forge.dev/assets/models/rubberduck.glb",
"url": "https://sparkjs.dev/assets/models/rubberduck.glb",
"directory": "models"
},
"table.glb": {
"url": "https://forge.dev/assets/models/table.glb",
"url": "https://sparkjs.dev/assets/models/table.glb",
"directory": "models"
},
"butterfly.png": {
"url": "https://forge.dev/assets/images/butterfly.png",
"url": "https://sparkjs.dev/assets/images/butterfly.png",
"directory": "images"
},
"sky.jpeg": {
"url": "https://forge.dev/assets/images/sky.jpeg",
"url": "https://sparkjs.dev/assets/images/sky.jpeg",
"directory": "images"
},
"furry-logo-pedestal.spz": {
"url": "https://forge.dev/assets/splats/furry-logo-pedestal.spz",
"url": "https://sparkjs.dev/assets/splats/furry-logo-pedestal.spz",
"directory": "splats"
},
"cat.spz": {
"url": "https://forge.dev/assets/splats/cat.spz",
"url": "https://sparkjs.dev/assets/splats/cat.spz",
"directory": "splats"
},
"arrow.glb": {
"url": "https://forge.dev/assets/models/arrow.glb",
"url": "https://sparkjs.dev/assets/models/arrow.glb",
"directory": "models"
}
}
+7 -7
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • VFX Dynamic Lighting</title>
<title>Spark • VFX Dynamic Lighting</title>
<style>
html,
body {
@@ -68,7 +68,7 @@
{
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
@@ -77,13 +77,13 @@
import {
SplatMesh,
SplatEdit,
ForgeRenderer,
SparkRenderer,
SplatEditSdf,
SplatEditSdfType,
SplatEditRgbaBlendMode,
FpsMovement,
PointerControls,
} from "@forge-gfx/forge";
} from "@sparkjs-dev/spark";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
const canvas = document.getElementById("canvas");
@@ -96,9 +96,9 @@
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement)
// Create a ForgeRenderer and add it to the scene to render all the Gsplats.
const forge = new ForgeRenderer({ renderer });
scene.add(forge);
// Create a SparkRenderer and add it to the scene to render all the Gsplats.
const spark = new SparkRenderer({ renderer });
scene.add(spark);
const splatURL = await getAssetFileURL("fireplace.spz");
const fireplace = new SplatMesh({ url: splatURL });
+8 -8
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf-8">
<title>Forge • Editor</title>
<title>Spark • Editor</title>
<style>
body {
margin: 0;
@@ -53,7 +53,7 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"three/addons/": "/examples/js/vendor/three/examples/jsm/",
"@forge-gfx/forge": "/dist/forge.module.js",
"@sparkjs-dev/spark": "/dist/spark.module.js",
"lil-gui": "../node_modules/lil-gui/dist/lil-gui.esm.js",
"stats.js": "../node_modules/stats.js/build/stats.min.js"
}
@@ -68,7 +68,7 @@
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
import { GUI } from "lil-gui";
import Stats from "stats.js";
import { constructGrid, ForgeControls, ForgeRenderer, SplatMesh, textSplats, dyno, transcodeSpz } from "@forge-gfx/forge";
import { constructGrid, SparkControls, SparkRenderer, SplatMesh, textSplats, dyno, transcodeSpz } from "@sparkjs-dev/spark";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
const scene = new THREE.Scene();
@@ -77,7 +77,7 @@
const canvas = document.getElementById("canvas");
const renderer = new THREE.WebGLRenderer({ canvas });
const forge = new ForgeRenderer({ renderer });
const spark = new SparkRenderer({ renderer });
function handleResize() {
const width = canvas.clientWidth;
@@ -119,7 +119,7 @@
container: document.getElementById("second-gui")
}).close();
const controls = new ForgeControls({ canvas });
const controls = new SparkControls({ canvas });
// Setup mouse controls to orbit the camera around
const orbitControls = new OrbitControls(camera, renderer.domElement);
@@ -463,7 +463,7 @@
gui.add(guiOptions, "stats").name("Show frame stats").onChange((value) => {
stats.dom.style.display = value ? "block" : "none";
});
gui.add(forge.defaultView, "sortRadial").name("Radial sort").listen();
gui.add(spark.defaultView, "sortRadial").name("Radial sort").listen();
gui.add(grid, "opacity", 0, 1, 0.01).name("Grid opacity").listen();
const normalColor = dyno.dynoBool(false);
@@ -472,8 +472,8 @@
const splatsFolder = secondGui.addFolder("Files");
const editFolder = gui.addFolder("Edit Splats").close();
editFolder.add(forge, "maxStdDev", 0.1, 3.0, 0.01).name("Max Gsplat stddev").listen();
editFolder.add(forge, "falloff", 0, 1, 0.01).name("Gaussian falloff").listen();
editFolder.add(spark, "maxStdDev", 0.1, 3.0, 0.01).name("Max Gsplat stddev").listen();
editFolder.add(spark, "falloff", 0, 1, 0.01).name("Gaussian falloff").listen();
function updateFrameSplats() {
frame.children.forEach((child) => {
+6 -6
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf-8">
<title>Forge • Environment Mapping</title>
<title>Spark • Environment Mapping</title>
<style>
body {
margin: 0;
@@ -33,13 +33,13 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"three/addons/": "/examples/js/vendor/three/examples/jsm/",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { SplatMesh, ForgeControls, ForgeRenderer } from "@forge-gfx/forge";
import { SplatMesh, SparkControls, SparkRenderer } from "@sparkjs-dev/spark";
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
@@ -51,8 +51,8 @@
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement)
// Explicitly create a ForgeRenderer to render environment maps
const forge = new ForgeRenderer({ renderer });
// Explicitly create a SparkRenderer to render environment maps
const spark = new SparkRenderer({ renderer });
const splatURL = await getAssetFileURL("fireplace.spz");
const background = new SplatMesh({ url: splatURL });
@@ -88,7 +88,7 @@
// Make sure we only launch async renderEnvMap once
if (!renderedEnvMap) {
renderedEnvMap = true;
forge.renderEnvMap({
spark.renderEnvMap({
scene,
// World center to render from
worldCenter: duck.position,
+3 -3
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf-8">
<title>Forge • Carousel</title>
<title>Spark • Carousel</title>
<style>
body {
margin: 0;
@@ -16,13 +16,13 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"three/addons/": "/examples/js/vendor/three/examples/jsm/",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { SplatMesh } from "@forge-gfx/forge";
import { SplatMesh } from "@sparkjs-dev/spark";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+3 -3
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Hello World</title>
<title>Spark • Hello World</title>
<style>
body {
margin: 0;
@@ -16,13 +16,13 @@
{
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { SplatMesh } from "@forge-gfx/forge";
import { SplatMesh } from "@sparkjs-dev/spark";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
const scene = new THREE.Scene();
+3 -3
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Multiple Splats</title>
<title>Spark • Multiple Splats</title>
<link rel="stylesheet" href="style.css">
</head>
@@ -25,13 +25,13 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"three/addons/": "/examples/js/vendor/three/examples/jsm/",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { SplatMesh } from "@forge-gfx/forge";
import { SplatMesh } from "@sparkjs-dev/spark";
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
import { EXRLoader } from "three/addons/loaders/EXRLoader.js";
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+1 -1
View File
@@ -4,7 +4,7 @@ export async function getAssetFileURL(assetFile) {
const assetsDirectory = "/examples/assets/";
const assetsInfo = await response.json();
let url = assetsInfo[assetFile].url;
if (window.forgeLocalAssets) {
if (window.sparkLocalAssets) {
url = `${assetsDirectory}${assetsInfo[assetFile].directory}/${assetFile}`;
}
return url;
+4 -4
View File
@@ -1,11 +1,11 @@
import { SplatMesh } from "@forge-gfx/forge";
import { SplatMesh } from "@sparkjs-dev/spark";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
// Add loading icon in the center of the screen
function addLoader(loading_icon_color) {
const loaderIcon = new Image();
loaderIcon.src = `/examples/js/forge_loading_${loading_icon_color}.gif`;
loaderIcon.id = "_forge_loader";
loaderIcon.src = `/examples/js/spark_loading_${loading_icon_color}.gif`;
loaderIcon.id = "_spark_loader";
loaderIcon.style.position = "absolute";
loaderIcon.style.zIndex = 99999;
loaderIcon.style.left = "50%";
@@ -16,7 +16,7 @@ function addLoader(loading_icon_color) {
}
function removeLoader() {
const el = document.getElementById("_forge_loader");
const el = document.getElementById("_spark_loader");
el.parentNode.removeChild(el);
}

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

+3 -3
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Multiple Splats</title>
<title>Spark • Multiple Splats</title>
<style>
body {
margin: 0;
@@ -28,13 +28,13 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"three/addons/": "/examples/js/vendor/three/examples/jsm/",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { SplatMesh } from "@forge-gfx/forge";
import { SplatMesh } from "@sparkjs-dev/spark";
import { EXRLoader } from "three/addons/loaders/EXRLoader.js";
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
+7 -7
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Multiple Viewpoints</title>
<title>Spark • Multiple Viewpoints</title>
<link rel="stylesheet" href="style.css">
</head>
@@ -18,13 +18,13 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"three/addons/": "/examples/js/vendor/three/examples/jsm/",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { ForgeRenderer, ForgeViewpoint, SplatMesh } from "@forge-gfx/forge";
import { SparkRenderer, SparkViewpoint, SplatMesh } from "@sparkjs-dev/spark";
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
@@ -37,8 +37,8 @@
renderer.setSize(window.innerWidth, window.innerHeight - header_height);
document.body.appendChild(renderer.domElement)
// Explicitly create a ForgeRenderer in the scene to spawn new viewpoints
const forge = new ForgeRenderer({ renderer });
// Explicitly create a SparkRenderer in the scene to spawn new viewpoints
const spark = new SparkRenderer({ renderer });
const splatURL = await getAssetFileURL("butterfly.spz");
const butterfly = new SplatMesh({ url: splatURL });
@@ -52,7 +52,7 @@
const height = 240;
const screen = new THREE.Mesh(
new THREE.PlaneGeometry(0.5 * camera.near, 0.5 * camera.near * height / width),
new THREE.MeshBasicMaterial({ map: ForgeViewpoint.EMPTY_TEXTURE }),
new THREE.MeshBasicMaterial({ map: SparkViewpoint.EMPTY_TEXTURE }),
);
screen.position.set(screenPos.x, screenPos.y, -1).multiplyScalar(camera.near);
scene.add(screen);
@@ -88,7 +88,7 @@
// Spawn a new viewpoint that auto-updates its sort order, double
// buffered in case the texture is used recursively in the scene
const viewpoint = forge.newViewpoint({
const viewpoint = spark.newViewpoint({
autoUpdate: true,
camera: viewCamera,
target: { width, height, doubleBuffer: true },
+6 -6
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Particle Animation</title>
<title>Spark • Particle Animation</title>
<style>
html, body {
margin: 0;
@@ -26,18 +26,18 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"lil-gui": "/examples/js/vendor/lil-gui/dist/lil-gui.esm.js",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import {
ForgeRenderer,
SparkRenderer,
PointerControls,
SplatMesh,
VRButton,
} from "@forge-gfx/forge";
} from "@sparkjs-dev/spark";
import GUI from "lil-gui";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
@@ -273,8 +273,8 @@
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const forge = new ForgeRenderer({ renderer });
scene.add(forge);
const spark = new SparkRenderer({ renderer });
scene.add(spark);
function handleResize() {
const width = window.innerWidth;
+6 -6
View File
@@ -2,7 +2,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Particle Simulation</title>
<title>Spark • Particle Simulation</title>
<style>
html, body {
margin: 0;
@@ -19,18 +19,18 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"lil-gui": "/examples/js/vendor/lil-gui/dist/lil-gui.esm.js",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import {
ForgeRenderer,
SparkRenderer,
PointerControls,
SplatMesh,
generators,
} from "@forge-gfx/forge";
} from "@sparkjs-dev/spark";
import GUI from "lil-gui";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
@@ -54,8 +54,8 @@
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const forge = new ForgeRenderer({ renderer });
scene.add(forge);
const spark = new SparkRenderer({ renderer });
scene.add(spark);
function handleResize() {
const width = window.innerWidth;
+4 -4
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Procedural Splats</title>
<title>Spark • Procedural Splats</title>
<style>
body {
margin: 0;
@@ -16,13 +16,13 @@
{
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { ForgeControls, SplatMesh, constructGrid, constructAxes, textSplats, imageSplats } from "@forge-gfx/forge";
import { SparkControls, SplatMesh, constructGrid, constructAxes, textSplats, imageSplats } from "@sparkjs-dev/spark";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
const scene = new THREE.Scene();
@@ -114,7 +114,7 @@
image.position.set(-0.5, -1, -2);
scene.add(image);
const controls = new ForgeControls({ canvas: renderer.domElement });
const controls = new SparkControls({ canvas: renderer.domElement });
renderer.setAnimationLoop(function animate(time) {
controls.update(camera);
+3 -3
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Raycasting</title>
<title>Spark • Raycasting</title>
<style>
body {
margin: 0;
@@ -26,13 +26,13 @@
{
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { SplatMesh, PackedSplats } from "@forge-gfx/forge";
import { SplatMesh, PackedSplats } from "@sparkjs-dev/spark";
import { getAssetFileURL } from "/examples/js/get-asset-url.js";
const scene = new THREE.Scene();
+15 -15
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Forge • Viewer</title>
<title>Spark • Viewer</title>
<style>
* {
box-sizing: border-box;
@@ -38,7 +38,7 @@
align-items: center;
}
.forge-canvas {
.spark-canvas {
display: block;
position: fixed;
top: 0;
@@ -179,22 +179,22 @@
"imports": {
"three": "/examples/js/vendor/three/build/three.module.js",
"three/addons/": "/examples/js/vendor/three/examples/jsm/",
"@forge-gfx/forge": "/dist/forge.module.js"
"@sparkjs-dev/spark": "/dist/spark.module.js"
}
}
</script>
<script type="module">
import * as THREE from "three";
import { SplatMesh, transcodeSpz } from "@forge-gfx/forge";
import { SplatMesh, transcodeSpz } from "@sparkjs-dev/spark";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
const forgeCanvasEl = document.querySelector(".forge-canvas");
const sparkCanvasEl = document.querySelector(".spark-canvas");
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.01, 1000);
camera.position.set(0, 0, 1);
const renderer = new THREE.WebGLRenderer({canvas: forgeCanvasEl});
const width = forgeCanvasEl.clientWidth;
const height = forgeCanvasEl.clientHeight;
const renderer = new THREE.WebGLRenderer({canvas: sparkCanvasEl});
const width = sparkCanvasEl.clientWidth;
const height = sparkCanvasEl.clientHeight;
var fileName;
var fileBytes;
renderer.setSize(width, height, false);
@@ -250,13 +250,13 @@
};
dropZoneEl.addEventListener('dragover', onDragover);
forgeCanvasEl.addEventListener('dragover', onDragover);
sparkCanvasEl.addEventListener('dragover', onDragover);
dropZoneEl.addEventListener('dragleave', onDragLeave);
forgeCanvasEl.addEventListener('dragleave', onDragLeave);
sparkCanvasEl.addEventListener('dragleave', onDragLeave);
dropZoneEl.addEventListener('drop', onDrop);
forgeCanvasEl.addEventListener('drop', onDrop);
sparkCanvasEl.addEventListener('drop', onDrop);
const fileInput = document.querySelector('#file-input');
fileInput.onchange = function(event) {
@@ -332,7 +332,7 @@
</script>
<div class="canvas-container invisible">
<div class="logo">
<a href="/"><img src="forge-logo.svg" alt="Forge Logo" /></a>
<a href="/"><img src="spark-logo.svg" alt="Spark Logo" /></a>
</div>
<button class="spz-button">
<span class="icon" aria-hidden="true">
@@ -341,12 +341,12 @@
<span class="label">.spz</span>
</button>
</button>
<canvas class="forge-canvas"></canvas>
<canvas class="spark-canvas"></canvas>
</div>
<div class="container">
<div class="drop-container">
<div class="hero-logo">
<a href="/"><img src="forge-viewer.svg" alt="Forge Viewer Logo" /></a>
<a href="/"><img src="spark-viewer.svg" alt="Spark Viewer Logo" /></a>
</div>
<div class="drop-zone">Drag and drop a splat file here</div>
<label for="file-input" class="button upload"><img class="upload-icon" src="upload-icon.svg" alt="upload" />Choose file</label>

Before

Width:  |  Height:  |  Size: 689 B

After

Width:  |  Height:  |  Size: 689 B

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB