@vincentt-xr/sdk 2.0.0-alpha.0 → 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GROUNDING.md +232 -14
- package/dist/{DebuggerUI-CEfdddkZ.cjs → DebuggerUI-CatYc-RG.cjs} +1 -1
- package/dist/{DebuggerUI-Dgop6Q6o.js → DebuggerUI-gLMKiVwJ.js} +1 -1
- package/dist/MediaSourceSwitcher-C-xYg0nQ.js +317 -0
- package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +31 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +6 -1
- package/dist/components/FaceMesh/material/defaults.d.ts +4 -0
- package/dist/components/FaceMesh/material/types.d.ts +2 -0
- package/dist/components/FaceRetouch/Background.d.ts +6 -1
- package/dist/components/FaceRetouch/defaults.d.ts +13 -0
- package/dist/components/FaceRetouch/index.d.ts +3 -1
- package/dist/components/FaceRetouch/landmarkMask.d.ts +4 -1
- package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +2 -1
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +15 -0
- package/dist/components/FaceWarp3D/defaults.d.ts +37 -0
- package/dist/components/FaceWarp3D/index.d.ts +3 -0
- package/dist/components/FaceWarp3D/warp.d.ts +13 -0
- package/dist/components/HandJoints2D/index.d.ts +6 -0
- package/dist/components/HandTracker/index.d.ts +2 -2
- package/dist/components/HandTracking2D/HandVisual.d.ts +12 -0
- package/dist/components/HandTracking2D/index.d.ts +5 -0
- package/dist/components/HandTracking2DController/index.d.ts +5 -0
- package/dist/components/HandTracking3D/index.d.ts +6 -0
- package/dist/components/ScreenImage/index.d.ts +87 -0
- package/dist/components/ScreenText/index.d.ts +20 -0
- package/dist/components/TextLabel/index.d.ts +99 -0
- package/dist/components/XRScene/index.d.ts +14 -3
- package/dist/components/XRViewport/index.d.ts +17 -0
- package/dist/components/index.d.ts +7 -0
- package/dist/debug-ui/default-setting/index.d.ts +37 -0
- package/dist/debug-ui/default-setting.cjs +21 -0
- package/dist/debug-ui/default-setting.js +777 -0
- package/dist/debug-ui/face-warp-3d/index.d.ts +6 -0
- package/dist/debug-ui/hand-joints-2d/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-2d/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-3d/index.d.ts +6 -0
- package/dist/debug-ui/index.d.ts +23 -0
- package/dist/debug-ui/layer-panel/index.d.ts +17 -0
- package/dist/debug-ui/media-source/MediaSourceSwitcher.d.ts +10 -0
- package/dist/debug-ui/media-source/index.d.ts +4 -0
- package/dist/debug-ui/media-source/media-preset.d.ts +9 -0
- package/dist/debug-ui/media-source.cjs +1 -0
- package/dist/debug-ui/media-source.js +7 -0
- package/dist/debug-ui/screen-image-settings/index.d.ts +7 -0
- package/dist/debug-ui/screen-text-settings/index.d.ts +122 -0
- package/dist/debug-ui/settings-panel/index.d.ts +38 -0
- package/dist/debug-ui/shared/MaterialSection.d.ts +13 -0
- package/dist/debug-ui/shared/ScreenTransformSection.d.ts +29 -0
- package/dist/debug-ui.cjs +20 -0
- package/dist/debug-ui.js +6063 -0
- package/dist/defaults-BLpcN3pG.cjs +1 -0
- package/dist/defaults-LtY4M7dg.js +55 -0
- package/dist/entries/core.d.ts +5 -1
- package/dist/entries/face-effects.d.ts +2 -0
- package/dist/entries/low-level.d.ts +3 -0
- package/dist/face-effects.cjs +113 -23
- package/dist/face-effects.js +1566 -1399
- package/dist/handJoints2d.d.ts +49 -0
- package/dist/handTracking2d.d.ts +33 -0
- package/dist/handTracking2dController.d.ts +65 -0
- package/dist/handTracking3d.d.ts +52 -0
- package/dist/{index-BD-JWMjE.js → index-BGNbrc4C.js} +113 -137
- package/dist/index-BXyObVHF.cjs +1 -0
- package/dist/index-CY3bUAcW.js +12 -0
- package/dist/index-C_Duh13c.cjs +1 -0
- package/dist/index-D8fpPQkC.cjs +1 -0
- package/dist/index-DxshgBu0.cjs +1 -0
- package/dist/index-O-2crZ3M.js +1102 -0
- package/dist/{index-CYMj26Ej.js → index-safCs_af.js} +426 -416
- package/dist/{internal-DH5d1Xnq.cjs → internal-BjyhBP8i.cjs} +1 -1
- package/dist/{internal-KOKJDxCG.js → internal-Cae1ps15.js} +3 -3
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +2 -2
- package/dist/layerStack.d.ts +29 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +74 -890
- package/dist/main.cjs +73 -1
- package/dist/main.js +1656 -407
- package/dist/models/Hand/HandTracking.d.ts +2 -0
- package/dist/screen2d/index.d.ts +4 -0
- package/dist/screen2d/material-runtime.d.ts +32 -0
- package/dist/screen2d/texture.d.ts +10 -0
- package/dist/screen2d/transform.d.ts +25 -0
- package/dist/screen2d/types.d.ts +90 -0
- package/dist/screenImagePresets.d.ts +13 -0
- package/dist/screenImageSettings-6NRg4cx9.js +39 -0
- package/dist/screenImageSettings-y_B4_767.cjs +1 -0
- package/dist/screenImageSettings.d.ts +50 -0
- package/dist/screenTextPresets.d.ts +6 -0
- package/dist/screenTextSettings.d.ts +131 -0
- package/dist/{selectors-Bub0o3qy.cjs → selectors-BLl2JUWW.cjs} +1 -1
- package/dist/{selectors-BHO6TnoC.js → selectors-CXd_x-6t.js} +6 -6
- package/dist/tracking.cjs +1 -1
- package/dist/tracking.js +193 -168
- package/dist/types/hand-tracking.d.ts +8 -0
- package/dist/types/nodes.d.ts +2 -0
- package/dist/useXRModel-3DcUa28n.cjs +1 -0
- package/dist/useXRModel-BMJE1hrk.js +28 -0
- package/dist/x-Co8jPhP0.js +127 -0
- package/dist/x-KC8E4Gaj.cjs +41 -0
- package/package.json +19 -1
- package/dist/index-B5J4gzn2.cjs +0 -1
- package/dist/index-BVBVg96G.cjs +0 -1
- package/dist/index-DtwHElmG.js +0 -157
- package/dist/index-PtFmD6B8.cjs +0 -1
|
@@ -5,8 +5,10 @@ import { BaseXRModel } from '../Base';
|
|
|
5
5
|
export declare class HandTrackingModel extends BaseXRModel {
|
|
6
6
|
private landmarker;
|
|
7
7
|
private processingTime;
|
|
8
|
+
private hands;
|
|
8
9
|
private coordinates;
|
|
9
10
|
private gesture;
|
|
11
|
+
private handedness;
|
|
10
12
|
private sourceCanvas;
|
|
11
13
|
private readonly downscaler;
|
|
12
14
|
constructor();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Material } from './types';
|
|
2
|
+
export type MaterialDepthFunction = "never" | "always" | "less" | "lessEqual" | "equal" | "greaterEqual" | "greater" | "notEqual";
|
|
3
|
+
export type MaterialCullMode = "none" | "front" | "back" | "double";
|
|
4
|
+
export type MaterialColorMask = {
|
|
5
|
+
red: boolean;
|
|
6
|
+
green: boolean;
|
|
7
|
+
blue: boolean;
|
|
8
|
+
alpha: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type MaterialStencilState = {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
reference?: number;
|
|
13
|
+
mask?: number;
|
|
14
|
+
writeMask?: number;
|
|
15
|
+
};
|
|
16
|
+
export type MaterialPass = {
|
|
17
|
+
name?: string;
|
|
18
|
+
depthTest: boolean;
|
|
19
|
+
depthWrite: boolean;
|
|
20
|
+
depthFunction: MaterialDepthFunction;
|
|
21
|
+
cullMode: MaterialCullMode;
|
|
22
|
+
colorMask: MaterialColorMask;
|
|
23
|
+
stencil: MaterialStencilState;
|
|
24
|
+
renderQueue: number;
|
|
25
|
+
};
|
|
26
|
+
export type MaterialRuntime = {
|
|
27
|
+
material: Material;
|
|
28
|
+
passes: MaterialPass[];
|
|
29
|
+
};
|
|
30
|
+
export declare const DEFAULT_MATERIAL_COLOR_MASK: MaterialColorMask;
|
|
31
|
+
export declare const createDefaultMaterialPass: (material: Material, overrides?: Partial<MaterialPass>) => MaterialPass;
|
|
32
|
+
export declare const createMaterialRuntime: (material: Material, passOverrides?: Partial<MaterialPass>) => MaterialRuntime;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TextureSource } from './types';
|
|
2
|
+
import type * as THREE from "three";
|
|
3
|
+
export type TextureDimensions = {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const getTextureDimensions: (texture: THREE.Texture | null | undefined) => TextureDimensions | null;
|
|
8
|
+
export declare const getTextureAspect: (texture: THREE.Texture | null | undefined) => number;
|
|
9
|
+
export declare const getTextureSourceDimensions: (source: TextureSource) => TextureDimensions | null;
|
|
10
|
+
export declare const resolveTextureSource: (source: TextureSource | string | THREE.Texture | null | undefined) => TextureSource;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ScreenAnchorEdges } from '../components/ScreenSpaceUI/ScreenTransform';
|
|
2
|
+
import { ScreenCanvasSize, ScreenCoordinateSpace, ScreenTransform2D } from './types';
|
|
3
|
+
export declare const DEFAULT_SCREEN_CANVAS_SIZE: ScreenCanvasSize;
|
|
4
|
+
export type ResolveScreenRectInput = {
|
|
5
|
+
coordinateSpace?: ScreenCoordinateSpace;
|
|
6
|
+
canvasSize?: ScreenCanvasSize;
|
|
7
|
+
position?: [number, number];
|
|
8
|
+
size?: [number, number];
|
|
9
|
+
fallbackAnchors?: ScreenAnchorEdges;
|
|
10
|
+
};
|
|
11
|
+
export declare const pivot01ToSignedPivot: (pivot?: [number, number]) => [number, number];
|
|
12
|
+
export declare const basicTransformToAnchoredRect: ({ position, size, }: Pick<ScreenTransform2D, "position" | "size">) => {
|
|
13
|
+
left: number;
|
|
14
|
+
right: number;
|
|
15
|
+
top: number;
|
|
16
|
+
bottom: number;
|
|
17
|
+
};
|
|
18
|
+
export declare const canvasTransformToAnchoredRect: ({ position, size, canvasSize, }: Pick<ScreenTransform2D, "position" | "size" | "canvasSize">) => {
|
|
19
|
+
left: number;
|
|
20
|
+
right: number;
|
|
21
|
+
top: number;
|
|
22
|
+
bottom: number;
|
|
23
|
+
};
|
|
24
|
+
export declare const resolveScreenRectAnchors: ({ coordinateSpace, canvasSize, position, size, fallbackAnchors, }: ResolveScreenRectInput) => ScreenAnchorEdges;
|
|
25
|
+
export declare const screenTransform2DToAnchors: (transform: ScreenTransform2D) => ScreenAnchorEdges;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
export type ScreenTransformMode = "basic" | "advanced";
|
|
3
|
+
export type ScreenCoordinateSpace = "normalized" | "canvas";
|
|
4
|
+
export type ScreenCanvasSize = {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
8
|
+
export type ScreenTransform2D = {
|
|
9
|
+
mode?: ScreenTransformMode;
|
|
10
|
+
coordinateSpace?: ScreenCoordinateSpace;
|
|
11
|
+
canvasSize?: ScreenCanvasSize;
|
|
12
|
+
position?: [number, number];
|
|
13
|
+
size?: [number, number];
|
|
14
|
+
rotation?: number;
|
|
15
|
+
pivot?: [number, number];
|
|
16
|
+
anchors?: {
|
|
17
|
+
left?: number;
|
|
18
|
+
right?: number;
|
|
19
|
+
top?: number;
|
|
20
|
+
bottom?: number;
|
|
21
|
+
};
|
|
22
|
+
offsets?: {
|
|
23
|
+
left?: number;
|
|
24
|
+
right?: number;
|
|
25
|
+
top?: number;
|
|
26
|
+
bottom?: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export type MaterialKind = "image" | "surface" | "text";
|
|
30
|
+
export type MaterialType = "unlit" | "standardPBR" | "matcap";
|
|
31
|
+
export type BlendMode = "normal" | "add" | "subtract" | "multiply" | "screen" | "lighten" | "darken";
|
|
32
|
+
export type TextureSource = {
|
|
33
|
+
kind: "none";
|
|
34
|
+
} | {
|
|
35
|
+
kind: "asset";
|
|
36
|
+
id: string;
|
|
37
|
+
url?: string;
|
|
38
|
+
width?: number;
|
|
39
|
+
height?: number;
|
|
40
|
+
} | {
|
|
41
|
+
kind: "image";
|
|
42
|
+
src: string;
|
|
43
|
+
width?: number;
|
|
44
|
+
height?: number;
|
|
45
|
+
} | {
|
|
46
|
+
kind: "texture";
|
|
47
|
+
texture: THREE.Texture;
|
|
48
|
+
width?: number;
|
|
49
|
+
height?: number;
|
|
50
|
+
} | {
|
|
51
|
+
kind: "video";
|
|
52
|
+
src: string;
|
|
53
|
+
width?: number;
|
|
54
|
+
height?: number;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "camera";
|
|
57
|
+
width?: number;
|
|
58
|
+
height?: number;
|
|
59
|
+
} | {
|
|
60
|
+
kind: "renderTexture";
|
|
61
|
+
id: string;
|
|
62
|
+
texture?: THREE.Texture;
|
|
63
|
+
width?: number;
|
|
64
|
+
height?: number;
|
|
65
|
+
} | {
|
|
66
|
+
kind: "depthTexture";
|
|
67
|
+
id: string;
|
|
68
|
+
texture?: THREE.Texture;
|
|
69
|
+
width?: number;
|
|
70
|
+
height?: number;
|
|
71
|
+
};
|
|
72
|
+
export type Material = {
|
|
73
|
+
kind: MaterialKind;
|
|
74
|
+
type?: MaterialType;
|
|
75
|
+
texture?: TextureSource;
|
|
76
|
+
color?: THREE.ColorRepresentation;
|
|
77
|
+
opacity?: number;
|
|
78
|
+
blendMode?: BlendMode;
|
|
79
|
+
alphaTest?: number;
|
|
80
|
+
flipX?: boolean;
|
|
81
|
+
flipY?: boolean;
|
|
82
|
+
};
|
|
83
|
+
export type ImageStretchMode = "fit" | "fitWidth" | "fitHeight" | "stretch" | "fill" | "fillAndCut";
|
|
84
|
+
export type RenderOutputKind = "mediaColor" | "sceneColor" | "finalColor" | "sceneDepth" | "estimatedDepth";
|
|
85
|
+
export type RenderTextureSource = Extract<TextureSource, {
|
|
86
|
+
kind: "renderTexture";
|
|
87
|
+
}>;
|
|
88
|
+
export type DepthTextureSource = Extract<TextureSource, {
|
|
89
|
+
kind: "depthTexture";
|
|
90
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ScreenImageSettings } from './screenImageSettings';
|
|
2
|
+
export type ScreenImagePreset = "placeholder" | "hero-image" | "photo-frame";
|
|
3
|
+
export type ScreenImagePresetPatch = Partial<Omit<ScreenImageSettings, "image" | "transformation">> & {
|
|
4
|
+
transformation?: Partial<ScreenImageSettings["transformation"]>;
|
|
5
|
+
image?: Partial<ScreenImageSettings["image"]>;
|
|
6
|
+
};
|
|
7
|
+
export declare const SCREEN_IMAGE_PRESET_LABELS: Record<ScreenImagePreset, string>;
|
|
8
|
+
export declare const SCREEN_IMAGE_PRESET_OPTIONS: {
|
|
9
|
+
value: ScreenImagePreset;
|
|
10
|
+
label: string;
|
|
11
|
+
}[];
|
|
12
|
+
export declare const SCREEN_IMAGE_PRESETS: Record<ScreenImagePreset, ScreenImagePresetPatch>;
|
|
13
|
+
export declare const applyScreenImagePreset: (settings: ScreenImageSettings, preset: ScreenImagePreset) => ScreenImageSettings;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const e = {
|
|
2
|
+
enabled: !0,
|
|
3
|
+
preset: "placeholder",
|
|
4
|
+
transformation: {
|
|
5
|
+
enabled: !0,
|
|
6
|
+
showFitGuides: !1,
|
|
7
|
+
coordinateSpace: "normalized",
|
|
8
|
+
canvasSize: { width: 720, height: 1280 },
|
|
9
|
+
position: { x: 0, y: -0.15 },
|
|
10
|
+
size: { width: 0.7, height: 0.7 },
|
|
11
|
+
rotation: 0,
|
|
12
|
+
pivot: [0.5, 0.5],
|
|
13
|
+
renderOrder: 999,
|
|
14
|
+
overlay: !0,
|
|
15
|
+
visible: !0
|
|
16
|
+
},
|
|
17
|
+
image: {
|
|
18
|
+
sourceKind: "default",
|
|
19
|
+
src: "",
|
|
20
|
+
stretchMode: "fit",
|
|
21
|
+
materialType: "unlit",
|
|
22
|
+
blendMode: "normal",
|
|
23
|
+
opacity: 1,
|
|
24
|
+
color: "#ffffff",
|
|
25
|
+
flipX: !1,
|
|
26
|
+
flipY: !1,
|
|
27
|
+
transparent: !0,
|
|
28
|
+
alphaTest: 0
|
|
29
|
+
}
|
|
30
|
+
}, t = {
|
|
31
|
+
screenImage: e,
|
|
32
|
+
screenSpaceUI: {
|
|
33
|
+
enabled: !0
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
e as D,
|
|
38
|
+
t as a
|
|
39
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const e={enabled:!0,preset:"placeholder",transformation:{enabled:!0,showFitGuides:!1,coordinateSpace:"normalized",canvasSize:{width:720,height:1280},position:{x:0,y:-.15},size:{width:.7,height:.7},rotation:0,pivot:[.5,.5],renderOrder:999,overlay:!0,visible:!0},image:{sourceKind:"default",src:"",stretchMode:"fit",materialType:"unlit",blendMode:"normal",opacity:1,color:"#ffffff",flipX:!1,flipY:!1,transparent:!0,alphaTest:0}},t={screenImage:e,screenSpaceUI:{enabled:!0}};exports.DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS=t;exports.DEFAULT_SCREEN_IMAGE_SETTINGS=e;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ScreenImageBlendMode, ScreenImageMaterialType, ScreenImageStretchMode } from './components/ScreenImage';
|
|
2
|
+
import { ScreenCanvasSize, ScreenCoordinateSpace } from './screen2d';
|
|
3
|
+
import { ScreenImagePreset } from './screenImagePresets';
|
|
4
|
+
export type ScreenImageSourceKind = "default" | "image" | "texture" | "video" | "sequence" | "gif";
|
|
5
|
+
export type ScreenImageTransformationSettings = {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
showFitGuides: boolean;
|
|
8
|
+
coordinateSpace?: ScreenCoordinateSpace;
|
|
9
|
+
canvasSize?: ScreenCanvasSize;
|
|
10
|
+
position: {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
};
|
|
14
|
+
size: {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
};
|
|
18
|
+
rotation: number;
|
|
19
|
+
pivot: [number, number];
|
|
20
|
+
renderOrder: number;
|
|
21
|
+
overlay: boolean;
|
|
22
|
+
visible: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type ScreenImageImageSettings = {
|
|
25
|
+
sourceKind: ScreenImageSourceKind;
|
|
26
|
+
src: string;
|
|
27
|
+
stretchMode: ScreenImageStretchMode;
|
|
28
|
+
materialType: ScreenImageMaterialType;
|
|
29
|
+
blendMode: ScreenImageBlendMode;
|
|
30
|
+
opacity: number;
|
|
31
|
+
color: string;
|
|
32
|
+
flipX: boolean;
|
|
33
|
+
flipY: boolean;
|
|
34
|
+
transparent: boolean;
|
|
35
|
+
alphaTest: number;
|
|
36
|
+
};
|
|
37
|
+
export type ScreenImageSettings = {
|
|
38
|
+
enabled: boolean;
|
|
39
|
+
preset: ScreenImagePreset;
|
|
40
|
+
transformation: ScreenImageTransformationSettings;
|
|
41
|
+
image: ScreenImageImageSettings;
|
|
42
|
+
};
|
|
43
|
+
export type ScreenImageSceneSettings = {
|
|
44
|
+
screenImage: ScreenImageSettings;
|
|
45
|
+
screenSpaceUI: {
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export declare const DEFAULT_SCREEN_IMAGE_SETTINGS: ScreenImageSettings;
|
|
50
|
+
export declare const DEFAULT_SCREEN_IMAGE_SCENE_SETTINGS: ScreenImageSceneSettings;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ScreenTextArtPreset, ScreenTextStyle } from './screenTextSettings';
|
|
2
|
+
export type ScreenTextStylePatch = Partial<Omit<ScreenTextStyle, "background">> & {
|
|
3
|
+
background?: Partial<ScreenTextStyle["background"]>;
|
|
4
|
+
};
|
|
5
|
+
export declare const SCREEN_TEXT_ART_PRESETS: Record<ScreenTextArtPreset, ScreenTextStylePatch>;
|
|
6
|
+
export declare const applyScreenTextArtPreset: (style: ScreenTextStyle, textArtPreset: ScreenTextArtPreset) => ScreenTextStyle;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { ScreenImageSettings } from './screenImageSettings';
|
|
2
|
+
import { ScreenCanvasSize, ScreenCoordinateSpace } from './screen2d';
|
|
3
|
+
export type ScreenTextArtPreset = "clean" | "sticker" | "shadow-pop" | "neon" | "editorial" | "comic-burst" | "ice-outline" | "sunset-glow" | "cutout" | "badge-arc" | "chrome-bulge" | "retro-wave" | "flag-pop" | "fisheye-poster";
|
|
4
|
+
export type ScreenTextContent = {
|
|
5
|
+
text: string;
|
|
6
|
+
};
|
|
7
|
+
export type ScreenTextLayout = {
|
|
8
|
+
textAlign?: "left" | "center" | "right";
|
|
9
|
+
verticalAlign?: "top" | "center" | "bottom";
|
|
10
|
+
overflow?: "clip" | "ellipsis" | "clamp" | "shrink";
|
|
11
|
+
resizeToFit?: boolean;
|
|
12
|
+
minFontSize?: number;
|
|
13
|
+
};
|
|
14
|
+
export type ScreenTextBackground = {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
autoSize: boolean;
|
|
17
|
+
fit: "full" | "text";
|
|
18
|
+
fillMode: "solid" | "gradient";
|
|
19
|
+
color: string;
|
|
20
|
+
opacity: number;
|
|
21
|
+
borderRadius: number;
|
|
22
|
+
padding: number;
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
borderEnabled: boolean;
|
|
26
|
+
borderWidth: number;
|
|
27
|
+
borderColor: string;
|
|
28
|
+
gradientStops: Array<{
|
|
29
|
+
color: string;
|
|
30
|
+
position: number;
|
|
31
|
+
}>;
|
|
32
|
+
textureUrl?: string;
|
|
33
|
+
textureFit: "cover" | "contain" | "stretch";
|
|
34
|
+
textureFlipX: boolean;
|
|
35
|
+
textureFlipY: boolean;
|
|
36
|
+
};
|
|
37
|
+
export type ScreenTextStrokeLayer = {
|
|
38
|
+
color: string;
|
|
39
|
+
width: number;
|
|
40
|
+
opacity?: number;
|
|
41
|
+
};
|
|
42
|
+
export type ScreenTextShadowLayer = {
|
|
43
|
+
color: string;
|
|
44
|
+
blur: number;
|
|
45
|
+
offsetX?: number;
|
|
46
|
+
offsetY?: number;
|
|
47
|
+
opacity?: number;
|
|
48
|
+
offset?: number;
|
|
49
|
+
angle?: number;
|
|
50
|
+
feather?: number;
|
|
51
|
+
};
|
|
52
|
+
export type ScreenTextInnerShadow = {
|
|
53
|
+
color: string;
|
|
54
|
+
opacity?: number;
|
|
55
|
+
offset?: number;
|
|
56
|
+
angle?: number;
|
|
57
|
+
feather?: number;
|
|
58
|
+
};
|
|
59
|
+
export type ScreenTextGlow = {
|
|
60
|
+
color: string;
|
|
61
|
+
style: "outward" | "contoured";
|
|
62
|
+
intensity?: number;
|
|
63
|
+
range?: number;
|
|
64
|
+
horizontalAngle?: number;
|
|
65
|
+
verticalAngle?: number;
|
|
66
|
+
};
|
|
67
|
+
export type ScreenTextBendPreset = "arc" | "arc-lower" | "arc-upper" | "arch" | "bulge" | "shell-lower" | "shell-upper" | "flag" | "wave" | "fish" | "rise" | "fisheye" | "inflate" | "squeeze" | "twist";
|
|
68
|
+
export type ScreenTextBend = {
|
|
69
|
+
preset: ScreenTextBendPreset;
|
|
70
|
+
strength: number;
|
|
71
|
+
};
|
|
72
|
+
export type ScreenTextStyle = {
|
|
73
|
+
fontSize: number;
|
|
74
|
+
fontFamily?: string;
|
|
75
|
+
fontWeight?: number | "normal" | "bold";
|
|
76
|
+
bold?: boolean;
|
|
77
|
+
fontStyle?: "normal" | "italic";
|
|
78
|
+
underline?: boolean;
|
|
79
|
+
letterSpacing: number;
|
|
80
|
+
lineSpacing: number;
|
|
81
|
+
color: string;
|
|
82
|
+
opacity: number;
|
|
83
|
+
aspect: number;
|
|
84
|
+
outlineEnabled?: boolean;
|
|
85
|
+
shadowEnabled?: boolean;
|
|
86
|
+
innerShadowEnabled?: boolean;
|
|
87
|
+
innerShadow?: ScreenTextInnerShadow;
|
|
88
|
+
glowEnabled?: boolean;
|
|
89
|
+
glow?: ScreenTextGlow;
|
|
90
|
+
bendEnabled?: boolean;
|
|
91
|
+
bend?: ScreenTextBend;
|
|
92
|
+
background: ScreenTextBackground;
|
|
93
|
+
strokeLayers?: ScreenTextStrokeLayer[];
|
|
94
|
+
shadowLayers?: ScreenTextShadowLayer[];
|
|
95
|
+
};
|
|
96
|
+
export type ScreenTextSettings = {
|
|
97
|
+
enabled: boolean;
|
|
98
|
+
content: ScreenTextContent;
|
|
99
|
+
layout: ScreenTextLayout;
|
|
100
|
+
style: ScreenTextStyle;
|
|
101
|
+
transformation: ScreenTextTransformationSettings;
|
|
102
|
+
textArtPreset: ScreenTextArtPreset;
|
|
103
|
+
};
|
|
104
|
+
export type ScreenTextTransformationSettings = {
|
|
105
|
+
enabled: boolean;
|
|
106
|
+
showTransformGuides: boolean;
|
|
107
|
+
coordinateSpace?: ScreenCoordinateSpace;
|
|
108
|
+
canvasSize?: ScreenCanvasSize;
|
|
109
|
+
position: {
|
|
110
|
+
x: number;
|
|
111
|
+
y: number;
|
|
112
|
+
};
|
|
113
|
+
size: {
|
|
114
|
+
width: number;
|
|
115
|
+
height: number;
|
|
116
|
+
};
|
|
117
|
+
rotation: number;
|
|
118
|
+
pivot: [number, number];
|
|
119
|
+
renderOrder: number;
|
|
120
|
+
overlay: boolean;
|
|
121
|
+
visible: boolean;
|
|
122
|
+
};
|
|
123
|
+
export type ScreenTextSceneSettings = {
|
|
124
|
+
screenText: ScreenTextSettings;
|
|
125
|
+
screenImage: ScreenImageSettings;
|
|
126
|
+
screenSpaceUI: {
|
|
127
|
+
enabled: boolean;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
export declare const DEFAULT_SCREEN_TEXT_SHADOW_LAYER: ScreenTextShadowLayer;
|
|
131
|
+
export declare const DEFAULT_SCREEN_TEXT_SCENE_SETTINGS: ScreenTextSceneSettings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const s=require("react"),u=require("./index-
|
|
1
|
+
"use strict";const s=require("react"),u=require("./index-DxshgBu0.cjs"),o=()=>u.useXRContext().session.store,n=e=>t=>e.subscribe(t),c=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().ready,()=>!1)},a=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().error,()=>{})},i=()=>{const e=o();return s.useSyncExternalStore(n(e),()=>e.getSnapshot().cameraTexture,()=>{})},S=()=>{const e=o(),t=s.useSyncExternalStore(n(e),()=>e.getSnapshot().renderWidth,()=>0),r=s.useSyncExternalStore(n(e),()=>e.getSnapshot().renderHeight,()=>0);return s.useMemo(()=>({width:t,height:r}),[t,r])},l=e=>{const t=o(),r=s.useSyncExternalStore(n(t),()=>t.getSnapshot().pipeline.get(e)??null,()=>null);return s.useMemo(()=>r?r.getModelNode():null,[r])},p=()=>{const e=o(),t=s.useSyncExternalStore(n(e),()=>e.getSnapshot().pipeline,()=>e.getSnapshot().pipeline);return s.useMemo(()=>Array.from(t.keys()),[t])};exports.useXRCameraTexture=i;exports.useXRError=a;exports.useXRModelNode=l;exports.useXRPipelineSnapshot=p;exports.useXRReady=c;exports.useXRRenderSize=S;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useSyncExternalStore as s, useMemo as a } from "react";
|
|
2
|
-
import { u } from "./index-
|
|
2
|
+
import { u } from "./index-safCs_af.js";
|
|
3
3
|
const r = () => u().session.store, o = (e) => (t) => e.subscribe(t), p = () => {
|
|
4
4
|
const e = r();
|
|
5
5
|
return s(
|
|
@@ -50,10 +50,10 @@ const r = () => u().session.store, o = (e) => (t) => e.subscribe(t), p = () => {
|
|
|
50
50
|
return a(() => Array.from(t.keys()), [t]);
|
|
51
51
|
};
|
|
52
52
|
export {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
l as a,
|
|
54
|
+
d as b,
|
|
55
|
+
h as c,
|
|
56
|
+
S as d,
|
|
57
57
|
g as e,
|
|
58
|
-
|
|
58
|
+
p as u
|
|
59
59
|
};
|
package/dist/tracking.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const z=require("./useFaceResults-hVUJYSEY.cjs"),k=require("./index-BXyObVHF.cjs"),E=require("react/jsx-runtime"),S=require("@react-three/fiber"),i=require("react"),O=require("three"),m=require("./index-DxshgBu0.cjs"),x=require("./useXRModel-3DcUa28n.cjs");function j(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const A=j(O),B={"body.head":0,"body.leftShoulder":11,"body.rightShoulder":12,"body.leftElbow":13,"body.rightElbow":14,"body.leftWrist":15,"body.rightWrist":16,"body.leftHip":23,"body.rightHip":24,"body.leftKnee":25,"body.rightKnee":26,"body.leftAnkle":27,"body.rightAnkle":28},H=({bodyIndex:e=0,active:r=!0,children:t})=>{const n=i.useRef(null),{ready:o,node:c}=x.useXRModel(m.XRModel.BODY_TRACKER,void 0,r),{camera:u}=S.useThree(),h=i.useRef(u);h.current!==u&&(h.current=u);const s=i.useRef(null);S.useFrame(()=>{if(!o||!c||!n.current)return;const l=c;s.current=l;const a=l.getLandmarks2D(e),y=a==null?void 0:a[0];if(!y){n.current.visible=!1;return}const f=v(y,h.current);n.current.visible=!0,n.current.position.copy(f)});const d=i.useCallback(l=>{const a=s.current;if(!a)return null;const y=a.getLandmarks2D(e);if(!y)return null;if(l==="body.neck"){const p=y[11],b=y[12];if(!p||!b)return null;const g={x:(p.x+b.x)/2,y:(p.y+b.y)/2,z:(p.z+b.z)/2};return{position:v(g,h.current)}}const f=B[l];if(f===void 0)return null;const T=y[f];return T?{position:v(T,h.current)}:null},[e]),R=i.useMemo(()=>({type:"body",resolveLandmark:d}),[d]);return E.jsx(k.TrackerContext.Provider,{value:R,children:E.jsx("group",{ref:n,renderOrder:m.RENDER_LAYERS.TRACKED,children:t})})},v=(e,r)=>{const t=new A.Vector3(e.x,e.y,e.z);t.unproject(r);const n=t.sub(r.position).normalize(),o=-r.position.z/n.z;return r.position.clone().add(n.multiplyScalar(o))},G={"hand.wrist":0,"hand.thumbTip":4,"hand.indexTip":8,"hand.middleTip":12,"hand.ringTip":16,"hand.pinkyTip":20,"hand.indexBase":5,"hand.middleBase":9,"hand.ringBase":13,"hand.pinkyBase":17},K=({children:e,targetFps:r,active:t=!0})=>{const n=i.useRef(null),o=i.useMemo(()=>r===void 0?void 0:{targetFps:r},[r]),{ready:c,node:u}=x.useXRModel(m.XRModel.GESTURE_TRACKER,o,t),{camera:h}=S.useThree(),s=i.useRef(h);s.current!==h&&(s.current=h);const d=i.useRef(null);S.useFrame(()=>{var f;if(!c||!u||!n.current)return;d.current=u;const a=(f=u==null?void 0:u.coordinates)==null?void 0:f[0];if(!a){n.current.visible=!1;return}const y=D(a,s.current);n.current.visible=!0,n.current.position.copy(y)});const R=i.useCallback(a=>{var T,p;const y=G[a];if(y===void 0)return null;const f=(p=(T=d.current)==null?void 0:T.coordinates)==null?void 0:p[y];return f?{position:D(f,s.current)}:null},[]),l=i.useMemo(()=>({type:"hand",resolveLandmark:R}),[R]);return E.jsx(k.TrackerContext.Provider,{value:l,children:E.jsx("group",{ref:n,renderOrder:m.RENDER_LAYERS.TRACKED,children:e})})},D=(e,r)=>{const t=new A.Vector3(e.x,e.y,e.z);t.unproject(r);const n=t.sub(r.position).normalize(),o=-r.position.z/n.z;return r.position.clone().add(n.multiplyScalar(o))},L=800,F=200,P=()=>({armed:!1,armStart:null,holdStart:null,fired:!1}),q=(e,{isTrigger:r,gesture:t,now:n,mode:o,debounceMs:c,holdMs:u})=>{if(e.fired)return null;if(o==="hold"){if(r&&t){if(e.holdStart===null&&(e.holdStart=n),n-e.holdStart>=u)return e.fired=!0,t}else e.holdStart=null;return null}return e.armed?r&&t?(e.fired=!0,t):null:(r?e.armStart=null:(e.armStart===null&&(e.armStart=n),n-e.armStart>=c&&(e.armed=!0)),null)};function X({gestures:e,mode:r="arm",debounceMs:t=L,holdMs:n=F,onTrigger:o,enabled:c=!0}){const{ready:u,node:h}=x.useXRModel(m.XRModel.GESTURE_TRACKER),s=i.useRef(o);i.useEffect(()=>{s.current=o},[o]);const d=i.useRef(new Set);i.useEffect(()=>{d.current=new Set(Array.isArray(e)?e:[e])},[e]);const R=i.useRef(P());S.useFrame(()=>{if(!c||!u||!h)return;const l=h.gesture,a=!!(l&&d.current.has(l)),y=q(R.current,{isTrigger:a,gesture:l,now:performance.now(),mode:r,debounceMs:t,holdMs:n});y&&s.current(y)})}const W=e=>(X(e),null),V={"hand.wrist":0,"hand.thumbTip":4,"hand.indexTip":8,"hand.middleTip":12,"hand.ringTip":16,"hand.pinkyTip":20,"hand.indexBase":5,"hand.middleBase":9,"hand.ringBase":13,"hand.pinkyBase":17};function Y(e,r,t=0){var o;const n=(o=e==null?void 0:e.hands)!=null&&o.length?e.hands:e!=null&&e.coordinates?[{coordinates:e.coordinates,gesture:e.gesture,handedness:e.handedness}]:[];if(n.length){if(r){const c=n.find(u=>u.handedness===r);if(c)return c}return n[t]??n[0]}}const $=({children:e,hand:r,handIndex:t=0,targetFps:n,active:o=!0})=>{const c=i.useRef(null),u=i.useMemo(()=>n===void 0?void 0:{targetFps:n},[n]),{ready:h,node:s}=x.useXRModel(m.XRModel.HAND_TRACKER,u,o),{camera:d}=S.useThree(),R=i.useRef(d);R.current!==d&&(R.current=d);const l=i.useRef(null);S.useFrame(()=>{var b;if(!h||!s||!c.current)return;const f=Y(s,r,t);l.current=f??null;const T=(b=f==null?void 0:f.coordinates)==null?void 0:b[0];if(!T){c.current.visible=!1;return}const p=N(T,R.current);c.current.visible=!0,c.current.position.copy(p)});const a=i.useCallback(f=>{var b,g;const T=V[f];if(T===void 0)return null;const p=(g=(b=l.current)==null?void 0:b.coordinates)==null?void 0:g[T];return p?{position:N(p,R.current)}:null},[]),y=i.useMemo(()=>({type:"hand",resolveLandmark:a}),[a]);return E.jsx(k.TrackerContext.Provider,{value:y,children:E.jsx("group",{ref:c,renderOrder:m.RENDER_LAYERS.TRACKED,children:e})})},N=(e,r)=>{const t=new A.Vector3(e.x,e.y,e.z);t.unproject(r);const n=t.sub(r.position).normalize(),o=-r.position.z/n.z;return r.position.clone().add(n.multiplyScalar(o))},M=["portrait"],U=({type:e,active:r=!0,children:t})=>(x.useXRModel(m.XRModel.BACKGROUND_SEGMENTATION,{type:e},r),i.useEffect(()=>{M.includes(e)||console.warn(`[Segmentation] unsupported type "${e}"; valid values: ${M.join(", ")}`)},[e]),E.jsx(E.Fragment,{children:t})),I=["face.forehead","face.noseTip","face.chin","face.leftEyeOuter","face.rightEyeOuter","face.leftCheek","face.rightCheek","face.mouthCenter"],J=["hand.wrist","hand.thumbTip","hand.indexTip","hand.middleTip","hand.ringTip","hand.pinkyTip","hand.indexBase","hand.middleBase","hand.ringBase","hand.pinkyBase"],Q=["body.head","body.neck","body.leftShoulder","body.rightShoulder","body.leftElbow","body.rightElbow","body.leftWrist","body.rightWrist","body.leftHip","body.rightHip","body.leftKnee","body.rightKnee","body.leftAnkle","body.rightAnkle"],C=e=>e.startsWith("face.")?"face":e.startsWith("hand.")?"hand":e.startsWith("body.")?"body":null,w=(e,r,t)=>r+t*(e-r),_=(e,r)=>1/(1+1/(2*Math.PI*e)/r),Z=(e,r,t,n,o,c)=>{if(!e.initialized||t<=0)return e.pos.copy(r),e.prevRaw.copy(r),e.dxHat.set(0,0,0),e.initialized=!0,e;const u=_(c,t),h=["x","y","z"];for(const s of h){const d=(r[s]-e.prevRaw[s])/t,R=w(d,e.dxHat[s],u);e.dxHat[s]=R;const l=n+o*Math.abs(R),a=_(l,t);e.pos[s]=w(r[s],e.pos[s],a),e.prevRaw[s]=r[s]}return e},ee=({target:e,offset:r,smoothing:t=0,children:n})=>{const o=k.useTrackerContext(),c=i.useRef(null),u=i.useRef(!1),h=i.useRef(new A.Vector3),s=i.useRef({pos:new A.Vector3,prevRaw:new A.Vector3,dxHat:new A.Vector3,initialized:!1}),d=C(e),R=o!==null&&d!==null&&o.type!==d,l=o===null,a=l||R||d===null;return i.useEffect(()=>{l?console.warn(`[TrackingAnchor] target "${e}" requires a FaceTracker / HandTracker / BodyTracker ancestor; rendering null.`):R?console.warn(`[TrackingAnchor] target "${e}" namespace does not match parent tracker type "${o==null?void 0:o.type}"; rendering null.`):d===null&&console.warn(`[TrackingAnchor] target "${e}" is not a recognized face/hand/body landmark; rendering null.`)},[e,d,l,R,o==null?void 0:o.type]),S.useFrame((y,f)=>{if(a||!c.current||!o)return;const T=o.resolveLandmark(e);if(!T){c.current.visible=!1,u.current=!1,s.current.initialized=!1;return}c.current.visible=!0;const p=h.current.copy(T.position),b=c.current.parent;if(b){b.updateMatrixWorld();const g=new A.Matrix4().copy(b.matrixWorld).invert();p.applyMatrix4(g)}if(r&&(p.x+=r[0],p.y+=r[1],p.z+=r[2]),t>0){const g=t*.1;Z(s.current,p,u.current?f:0,g,.5,1),c.current.position.copy(s.current.pos)}else c.current.position.copy(p);u.current=!0,T.quaternion&&c.current.quaternion.copy(T.quaternion)}),a?null:E.jsx("group",{ref:c,renderOrder:m.RENDER_LAYERS.TRACKED,children:n})};exports.useFaceResults=z.useFaceResults;exports.FaceMesh=k.FaceMesh;exports.FaceTracker=k.FaceTracker;exports.BODY_TARGETS=Q;exports.BodyTracker=H;exports.FACE_TARGETS=I;exports.GestureTracker=K;exports.GestureTrigger=W;exports.HAND_TARGETS=J;exports.HandTracker=$;exports.SEGMENTATION_TYPES=M;exports.Segmentation=U;exports.TrackingAnchor=ee;exports.getTargetNamespace=C;
|