Spaces:
Running
Running
Download src/lib/types.ts from Xenova/kinetic-depth-effect: direct link, hf CLI and curl.
- Browser
- Download file 2.03 kB
-
https://huggingface.co/spaces/Xenova/kinetic-depth-effect/resolve/main/src/lib/types.ts
- Command line
-
hf download hf://spaces/Xenova/kinetic-depth-effect/src/lib/types.ts
-
curl -L -o types.ts https://huggingface.co/spaces/Xenova/kinetic-depth-effect/resolve/main/src/lib/types.ts
2.03 kB
| import type { SceneFrame } from "./framing"; | |
| export type Settings = { | |
| mode: "particles" | "wireframe" | "silhouette"; | |
| count: number; | |
| size: number; | |
| brightness: number; | |
| color: | |
| | "original" | |
| | "spectrum" | |
| | "ice" | |
| | "amber" | |
| | "mono" | |
| | "lavender" | |
| | "rose"; | |
| duration: number; | |
| axis: "x" | "y" | "z"; | |
| elevation: number; | |
| azimuth: number; | |
| zoom: number; | |
| cue: number; | |
| }; | |
| export const DEFAULTS: Settings = { | |
| mode: "particles", | |
| count: 38000, | |
| size: 1.3, | |
| brightness: 0.8, | |
| color: "ice", | |
| duration: 6, | |
| axis: "y", | |
| elevation: 12, | |
| azimuth: 0, | |
| zoom: 1.08, | |
| cue: 0, | |
| }; | |
| export const PRESETS = [ | |
| { key: "torus", label: "Knot" }, | |
| { key: "sphere", label: "Sphere" }, | |
| { key: "arrow", label: "Arrow" }, | |
| { key: "cube", label: "Cube" }, | |
| { key: "ring", label: "Ring" }, | |
| { key: "helix", label: "Helix" }, | |
| { key: "star", label: "Star" }, | |
| { key: "diamond", label: "Diamond" }, | |
| { key: "cone", label: "Cone" }, | |
| { key: "pyramid", label: "Pyramid" }, | |
| ]; | |
| export type Model = { | |
| name: string; | |
| triangles: Float32Array; | |
| wires: Float32Array; | |
| particles: Float32Array; | |
| id: number; | |
| rotationDirection: 1 | -1; | |
| rotationBounds: { | |
| axial: [number, number, number]; | |
| radial: [number, number, number]; | |
| }; | |
| }; | |
| export type ImportedAsset = { | |
| name: string; | |
| clips: { name: string; duration: number }[]; | |
| warning?: string; | |
| sourceFiles: File[]; | |
| dispose: () => void; | |
| build: (clip: number, time: number) => Promise<Model>; | |
| }; | |
| export type SceneSnapshot = { | |
| model: Model; | |
| settings: Settings; | |
| angle: number; | |
| width: number; | |
| height: number; | |
| frame: SceneFrame; | |
| pixelRatio: number; | |
| backend: Renderer["backend"]; | |
| }; | |
| export interface Renderer { | |
| readonly backend: "webgpu" | "canvas"; | |
| canvas: HTMLCanvasElement; | |
| onError?: (message: string) => void; | |
| resize: (width: number, height: number, ratio: number) => void; | |
| draw: ( | |
| model: Model, | |
| settings: Settings, | |
| angle: number, | |
| frame?: Readonly<SceneFrame>, | |
| ) => void; | |
| dispose: () => void; | |
| } | |