mirror of
https://github.com/storytold/spark.git
synced 2026-10-16 00:03:01 +00:00
SPZ writing, exporting, & viewer. Creates a new npm run to-spz which runs scripts/to-spz.js to convert any Gsplat input file to compress .spz. Also includes a configurable viewer examples/viewer that can load splats via drag-n-drop, from url query param, the URL text list, can edit sets of SplatMesh, and export composite .SPZ with some filters. Refactored some loading code from worker.ts to loader files so they can be called from Nodejs. Created api transcodeSpz with options to combine multiple source Gsplat files into one without losing coding quality along the way.
This commit is contained in:
committed by
Diego Marcos Segura
parent
b4257bcd64
commit
156bbf400e
+17
-17
@@ -18,8 +18,8 @@ export const transformPos = (
|
||||
return new TransformPosition({ position, scale, scales, rotate, translate })
|
||||
.outputs.position;
|
||||
};
|
||||
export const transformRay = (
|
||||
ray: DynoVal<"vec3">,
|
||||
export const transformDir = (
|
||||
dir: DynoVal<"vec3">,
|
||||
{
|
||||
scale,
|
||||
scales,
|
||||
@@ -30,7 +30,7 @@ export const transformRay = (
|
||||
rotate?: DynoVal<"vec4">;
|
||||
},
|
||||
): DynoVal<"vec3"> => {
|
||||
return new TransformRay({ ray, scale, scales, rotate }).outputs.ray;
|
||||
return new TransformDir({ dir, scale, scales, rotate }).outputs.dir;
|
||||
};
|
||||
export const transformQuat = (
|
||||
quaternion: DynoVal<"vec4">,
|
||||
@@ -90,36 +90,36 @@ export class TransformPosition extends Dyno<
|
||||
}
|
||||
}
|
||||
|
||||
export class TransformRay extends Dyno<
|
||||
{ ray: "vec3"; scale: "float"; scales: "vec3"; rotate: "vec4" },
|
||||
{ ray: "vec3" }
|
||||
export class TransformDir extends Dyno<
|
||||
{ dir: "vec3"; scale: "float"; scales: "vec3"; rotate: "vec4" },
|
||||
{ dir: "vec3" }
|
||||
> {
|
||||
constructor({
|
||||
ray,
|
||||
dir,
|
||||
scale,
|
||||
scales,
|
||||
rotate,
|
||||
}: {
|
||||
ray?: DynoVal<"vec3">;
|
||||
dir?: DynoVal<"vec3">;
|
||||
scale?: DynoVal<"float">;
|
||||
scales?: DynoVal<"vec3">;
|
||||
rotate?: DynoVal<"vec4">;
|
||||
}) {
|
||||
super({
|
||||
inTypes: { ray: "vec3", scale: "float", scales: "vec3", rotate: "vec4" },
|
||||
outTypes: { ray: "vec3" },
|
||||
inputs: { ray, scale, scales, rotate },
|
||||
inTypes: { dir: "vec3", scale: "float", scales: "vec3", rotate: "vec4" },
|
||||
outTypes: { dir: "vec3" },
|
||||
inputs: { dir, scale, scales, rotate },
|
||||
statements: ({ inputs, outputs }) => {
|
||||
const { ray } = outputs;
|
||||
if (!ray) {
|
||||
const { dir } = outputs;
|
||||
if (!dir) {
|
||||
return [];
|
||||
}
|
||||
const { scale, scales, rotate } = inputs;
|
||||
return [
|
||||
`${ray} = ${inputs.ray ?? "vec3(0.0, 0.0, 0.0)"};`,
|
||||
!scale ? null : `${ray} *= ${scale};`,
|
||||
!scales ? null : `${ray} *= ${scales};`,
|
||||
!rotate ? null : `${ray} = quatVec(${rotate}, ${ray});`,
|
||||
`${dir} = ${inputs.dir ?? "vec3(0.0, 0.0, 0.0)"};`,
|
||||
!scale ? null : `${dir} *= ${scale};`,
|
||||
!scales ? null : `${dir} *= ${scales};`,
|
||||
!rotate ? null : `${dir} = quatVec(${rotate}, ${dir});`,
|
||||
].filter(Boolean) as string[];
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user