@aura3d/engine 1.3.3 → 1.4.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/README.md +138 -15
- package/dist/assets/GLTFLoader.js +1 -0
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
- package/dist/assets/GLTFRenderResources.js +1 -0
- package/dist/assets/GLTFRenderResources.js.map +1 -1
- package/dist/aura3d-cli/asset-constants.d.ts +5 -0
- package/dist/aura3d-cli/asset-constants.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-constants.js +5 -0
- package/dist/aura3d-cli/asset-constants.js.map +1 -0
- package/dist/aura3d-cli/asset-core-types.d.ts +222 -0
- package/dist/aura3d-cli/asset-core-types.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-core-types.js +2 -0
- package/dist/aura3d-cli/asset-core-types.js.map +1 -0
- package/dist/aura3d-cli/asset-inspection-types.d.ts +131 -0
- package/dist/aura3d-cli/asset-inspection-types.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-inspection-types.js +2 -0
- package/dist/aura3d-cli/asset-inspection-types.js.map +1 -0
- package/dist/aura3d-cli/asset-manifest.d.ts +8 -0
- package/dist/aura3d-cli/asset-manifest.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-manifest.js +116 -0
- package/dist/aura3d-cli/asset-manifest.js.map +1 -0
- package/dist/aura3d-cli/asset-readiness-types.d.ts +164 -0
- package/dist/aura3d-cli/asset-readiness-types.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-readiness-types.js +2 -0
- package/dist/aura3d-cli/asset-readiness-types.js.map +1 -0
- package/dist/aura3d-cli/asset-source-ast.d.ts +8 -0
- package/dist/aura3d-cli/asset-source-ast.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-source-ast.js +241 -0
- package/dist/aura3d-cli/asset-source-ast.js.map +1 -0
- package/dist/aura3d-cli/asset-source-roles.d.ts +4 -0
- package/dist/aura3d-cli/asset-source-roles.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-source-roles.js +79 -0
- package/dist/aura3d-cli/asset-source-roles.js.map +1 -0
- package/dist/aura3d-cli/asset-source-validation.d.ts +4 -0
- package/dist/aura3d-cli/asset-source-validation.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-source-validation.js +200 -0
- package/dist/aura3d-cli/asset-source-validation.js.map +1 -0
- package/dist/aura3d-cli/character-assembly-types.d.ts +39 -0
- package/dist/aura3d-cli/character-assembly-types.d.ts.map +1 -0
- package/dist/aura3d-cli/character-assembly-types.js +2 -0
- package/dist/aura3d-cli/character-assembly-types.js.map +1 -0
- package/dist/aura3d-cli/cli-help.d.ts +4 -0
- package/dist/aura3d-cli/cli-help.d.ts.map +1 -0
- package/dist/aura3d-cli/cli-help.js +48 -0
- package/dist/aura3d-cli/cli-help.js.map +1 -0
- package/dist/aura3d-cli/cli-options.d.ts +66 -0
- package/dist/aura3d-cli/cli-options.d.ts.map +1 -0
- package/dist/aura3d-cli/cli-options.js +234 -0
- package/dist/aura3d-cli/cli-options.js.map +1 -0
- package/dist/aura3d-cli/cli.js +20 -177
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +12 -402
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +948 -90
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/adapters.d.ts +4 -0
- package/dist/aura3d-cli/pull-bridge/adapters.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/adapters.js +38 -0
- package/dist/aura3d-cli/pull-bridge/adapters.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/download.d.ts +6 -0
- package/dist/aura3d-cli/pull-bridge/download.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/download.js +208 -0
- package/dist/aura3d-cli/pull-bridge/download.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/profiles.d.ts +14 -0
- package/dist/aura3d-cli/pull-bridge/profiles.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/profiles.js +63 -0
- package/dist/aura3d-cli/pull-bridge/profiles.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/provenance.d.ts +9 -0
- package/dist/aura3d-cli/pull-bridge/provenance.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/provenance.js +99 -0
- package/dist/aura3d-cli/pull-bridge/provenance.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/pullable.d.ts +14 -0
- package/dist/aura3d-cli/pull-bridge/pullable.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/pullable.js +58 -0
- package/dist/aura3d-cli/pull-bridge/pullable.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/scoring.d.ts +21 -0
- package/dist/aura3d-cli/pull-bridge/scoring.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/scoring.js +177 -0
- package/dist/aura3d-cli/pull-bridge/scoring.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/search.d.ts +39 -0
- package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/search.js +114 -0
- package/dist/aura3d-cli/pull-bridge/search.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/types.d.ts +9 -0
- package/dist/aura3d-cli/pull-bridge/types.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/types.js +2 -0
- package/dist/aura3d-cli/pull-bridge/types.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/vector3.d.ts +2 -0
- package/dist/aura3d-cli/pull-bridge/vector3.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/vector3.js +4 -0
- package/dist/aura3d-cli/pull-bridge/vector3.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge.d.ts +18 -100
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge.js +59 -526
- package/dist/aura3d-cli/pull-bridge.js.map +1 -1
- package/dist/create-aura3d/cli.js +10 -0
- package/dist/create-aura3d/cli.js.map +1 -1
- package/dist/create-aura3d/index.d.ts +1 -1
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +3 -1
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-artifacts.d.ts +105 -0
- package/dist/create-aura3d/showcase-spec-artifacts.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-artifacts.js +143 -0
- package/dist/create-aura3d/showcase-spec-artifacts.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-category-plan.d.ts +15 -0
- package/dist/create-aura3d/showcase-spec-category-plan.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-category-plan.js +45 -0
- package/dist/create-aura3d/showcase-spec-category-plan.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-compiler.d.ts +5 -0
- package/dist/create-aura3d/showcase-spec-compiler.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-compiler.js +240 -0
- package/dist/create-aura3d/showcase-spec-compiler.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-evidence.d.ts +7 -0
- package/dist/create-aura3d/showcase-spec-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-evidence.js +881 -0
- package/dist/create-aura3d/showcase-spec-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +21 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +725 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.d.ts +14 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.js +219 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts +72 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js +435 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.js +108 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-parser.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-parser.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-parser.js +690 -0
- package/dist/create-aura3d/showcase-spec-parser.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.js +274 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.js +273 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.d.ts +10 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.js +166 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.d.ts +16 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.js +244 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.d.ts +4 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.js +175 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.d.ts +41 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.js +62 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.d.ts +9 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.js +41 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement.d.ts +13 -0
- package/dist/create-aura3d/showcase-spec-replacement.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement.js +144 -0
- package/dist/create-aura3d/showcase-spec-replacement.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-types.d.ts +319 -0
- package/dist/create-aura3d/showcase-spec-types.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-types.js +2 -0
- package/dist/create-aura3d/showcase-spec-types.js.map +1 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts +5 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -1
- package/dist/engine/agent-api/GameAssetValidation.js +103 -0
- package/dist/engine/agent-api/GameAssetValidation.js.map +1 -1
- package/dist/engine/agent-api/GameEvidence.d.ts +14 -1
- package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -1
- package/dist/engine/agent-api/GameEvidence.js +77 -6
- package/dist/engine/agent-api/GameEvidence.js.map +1 -1
- package/dist/engine/agent-api/GameGenreKits.d.ts +473 -0
- package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -0
- package/dist/engine/agent-api/GameGenreKits.js +1269 -0
- package/dist/engine/agent-api/GameGenreKits.js.map +1 -0
- package/dist/engine/agent-api/GameRuntime.d.ts +190 -3
- package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
- package/dist/engine/agent-api/GameRuntime.js +431 -2
- package/dist/engine/agent-api/GameRuntime.js.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +182 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.js +488 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.d.ts +39 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.d.ts.map +1 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.js +89 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.js.map +1 -0
- package/dist/engine/agent-api/PublicGameGeometry.d.ts +117 -0
- package/dist/engine/agent-api/PublicGameGeometry.d.ts.map +1 -0
- package/dist/engine/agent-api/PublicGameGeometry.js +118 -0
- package/dist/engine/agent-api/PublicGameGeometry.js.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +4 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.js +2 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts +86 -0
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -1
- package/dist/engine/agent-api/SceneGroundingUtils.js +116 -0
- package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -1
- package/dist/engine/agent-api/index.d.ts +266 -5
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +2445 -113
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +14 -2
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +95 -4
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/rendering/ForwardPass.js +7 -1
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/MorphTarget.d.ts +1 -0
- package/dist/rendering/MorphTarget.d.ts.map +1 -1
- package/dist/rendering/MorphTarget.js.map +1 -1
- package/dist/rendering/Renderer.js +7 -1
- package/dist/rendering/Renderer.js.map +1 -1
- package/package.json +30 -32
- package/templates/mini-game/README.md +13 -0
- package/templates/mini-game/index.html +1 -1
- package/templates/mini-game/package.json +1 -1
- package/templates/mini-game/src/main.ts +251 -21
- package/templates/mini-game/tests/playable.spec.ts +49 -0
- package/templates/mini-game/tests/screenshot.spec.ts +37 -32
|
@@ -36,8 +36,50 @@ export interface GroundedPlacement {
|
|
|
36
36
|
readonly position: readonly [number, number, number];
|
|
37
37
|
readonly scale: number;
|
|
38
38
|
}
|
|
39
|
+
export interface RenderGroundedPlacementOptions {
|
|
40
|
+
/** Desired rendered height in Aura world units. Mutually exclusive with `targetMaxDimension`. */
|
|
41
|
+
readonly targetHeight?: number | undefined;
|
|
42
|
+
/** Desired rendered largest dimension in Aura world units. Used when `targetHeight` is omitted. */
|
|
43
|
+
readonly targetMaxDimension?: number | undefined;
|
|
44
|
+
/** Floor X position for the placement (defaults to 0). */
|
|
45
|
+
readonly x?: number | undefined;
|
|
46
|
+
/** Floor Z position for the placement (defaults to 0). */
|
|
47
|
+
readonly z?: number | undefined;
|
|
48
|
+
/** World Y of the floor the asset should rest on (defaults to 0). */
|
|
49
|
+
readonly floorY?: number | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* The default largest dimension produced by Aura3D's safe model renderer
|
|
52
|
+
* before user scale is applied. Keep this aligned with the renderer's
|
|
53
|
+
* internal `createModelMatrix(..., normalizeToUnit = true)` fit size.
|
|
54
|
+
*/
|
|
55
|
+
readonly normalizedMaxDimension?: number | undefined;
|
|
56
|
+
}
|
|
57
|
+
export interface SceneAssetBoundsMetadata {
|
|
58
|
+
readonly min?: readonly number[] | undefined;
|
|
59
|
+
readonly max?: readonly number[] | undefined;
|
|
60
|
+
readonly size?: readonly number[] | undefined;
|
|
61
|
+
readonly center?: readonly number[] | undefined;
|
|
62
|
+
}
|
|
63
|
+
export interface SceneAssetLike {
|
|
64
|
+
readonly bounds?: readonly number[] | undefined;
|
|
65
|
+
readonly metadata?: {
|
|
66
|
+
readonly boundsMetadata?: SceneAssetBoundsMetadata | undefined;
|
|
67
|
+
} | undefined;
|
|
68
|
+
}
|
|
69
|
+
export interface AssetGroundedPlacement extends GroundedPlacement {
|
|
70
|
+
readonly bounds: SceneBounds;
|
|
71
|
+
readonly height: number;
|
|
72
|
+
}
|
|
73
|
+
export interface RenderGroundedAssetPlacement extends AssetGroundedPlacement {
|
|
74
|
+
readonly maxDimension: number;
|
|
75
|
+
}
|
|
76
|
+
export declare const AURA_NORMALIZED_MODEL_MAX_DIMENSION = 1.55;
|
|
39
77
|
/** Height (Y extent) of the bounds in the asset's own local units. */
|
|
40
78
|
export declare function boundsHeight(bounds: SceneBounds): number;
|
|
79
|
+
/** Width/depth/height extents for a bounds object. */
|
|
80
|
+
export declare function boundsSize(bounds: SceneBounds): Vec3;
|
|
81
|
+
/** Largest finite positive extent for a bounds object. */
|
|
82
|
+
export declare function boundsMaxDimension(bounds: SceneBounds): number;
|
|
41
83
|
/**
|
|
42
84
|
* Y translation that puts the asset's lowest point on the floor.
|
|
43
85
|
*
|
|
@@ -56,6 +98,25 @@ export declare function groundedYOffset(bounds: SceneBounds): number;
|
|
|
56
98
|
* is non-positive, so callers never produce NaN/Infinity scales.
|
|
57
99
|
*/
|
|
58
100
|
export declare function normalizedScaleForTargetHeight(bounds: SceneBounds, targetHeight: number): number;
|
|
101
|
+
/** Uniform scale factor so the largest bounds extent equals `targetMaxDimension`. */
|
|
102
|
+
export declare function normalizedScaleForTargetMaxDimension(bounds: SceneBounds, targetMaxDimension: number): number;
|
|
103
|
+
/**
|
|
104
|
+
* Scale for Aura3D's safe model renderer, which first normalizes GLBs to a
|
|
105
|
+
* stable largest dimension and then applies user scale.
|
|
106
|
+
*
|
|
107
|
+
* Use this when writing normal `model(asset).scale(...)` examples. Use
|
|
108
|
+
* `normalizedScaleForTargetMaxDimension` only when you are bypassing the safe
|
|
109
|
+
* model renderer and working in raw asset-local units.
|
|
110
|
+
*/
|
|
111
|
+
export declare function normalizedRenderScaleForTargetMaxDimension(targetMaxDimension: number, normalizedMaxDimension?: number): number;
|
|
112
|
+
/**
|
|
113
|
+
* Scale for Aura3D's safe model renderer so the rendered height hits a target.
|
|
114
|
+
*
|
|
115
|
+
* The renderer's default maximum dimension is fixed, but the default rendered
|
|
116
|
+
* height depends on the GLB's aspect ratio. This preserves each asset's aspect
|
|
117
|
+
* ratio while making characters and props comparable on screen.
|
|
118
|
+
*/
|
|
119
|
+
export declare function normalizedRenderScaleForTargetHeight(bounds: SceneBounds, targetHeight: number, normalizedMaxDimension?: number): number;
|
|
59
120
|
/**
|
|
60
121
|
* Resolve a deterministic grounded placement for an asset.
|
|
61
122
|
*
|
|
@@ -64,6 +125,31 @@ export declare function normalizedScaleForTargetHeight(bounds: SceneBounds, targ
|
|
|
64
125
|
* same scale so the lowest point lands precisely on the floor after scaling.
|
|
65
126
|
*/
|
|
66
127
|
export declare function groundedPlacement(bounds: SceneBounds, options: GroundedPlacementOptions): GroundedPlacement;
|
|
128
|
+
/**
|
|
129
|
+
* Build bounds from a generated typed asset record.
|
|
130
|
+
*
|
|
131
|
+
* Prefer `metadata.boundsMetadata.min/max` because it preserves the real pivot
|
|
132
|
+
* and grounding offset from inspection. Fall back to the legacy `bounds` size
|
|
133
|
+
* array when only extents are available.
|
|
134
|
+
*/
|
|
135
|
+
export declare function boundsFromAsset(asset: SceneAssetLike): SceneBounds;
|
|
136
|
+
/**
|
|
137
|
+
* Resolve a grounded placement directly from a typed asset record.
|
|
138
|
+
*
|
|
139
|
+
* This is the helper public examples should use instead of route-local scale
|
|
140
|
+
* math. It keeps primary GLBs grounded even when the catalog asset has a
|
|
141
|
+
* center-origin or extreme native units.
|
|
142
|
+
*/
|
|
143
|
+
export declare function groundedAssetPlacement(asset: SceneAssetLike, options: GroundedPlacementOptions): AssetGroundedPlacement;
|
|
144
|
+
/**
|
|
145
|
+
* Resolve placement for normal public `model(asset)` usage.
|
|
146
|
+
*
|
|
147
|
+
* Aura3D's safe renderer already translates GLBs so their lowest local point
|
|
148
|
+
* rests on the node's `position.y` after normalization. Therefore render-safe
|
|
149
|
+
* grounded placement sets `position.y` directly to `floorY` and returns a scale
|
|
150
|
+
* compatible with the renderer's normalized model size.
|
|
151
|
+
*/
|
|
152
|
+
export declare function groundedRenderedAssetPlacement(asset: SceneAssetLike, options: RenderGroundedPlacementOptions): RenderGroundedAssetPlacement;
|
|
67
153
|
/**
|
|
68
154
|
* Convenience adapter: build {@link SceneBounds} from a `size` extent and an
|
|
69
155
|
* optional `center`, matching the shape stored in `boundsMetadata`. When no
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneGroundingUtils.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIhG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAO3G;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAE,IAAgB,GAAG,WAAW,CAKhF"}
|
|
1
|
+
{"version":3,"file":"SceneGroundingUtils.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,10 +16,23 @@
|
|
|
16
16
|
* They are intentionally dependency-free and side-effect-free so they can be
|
|
17
17
|
* unit tested in isolation and reused by any template or runtime.
|
|
18
18
|
*/
|
|
19
|
+
export const AURA_NORMALIZED_MODEL_MAX_DIMENSION = 1.55;
|
|
19
20
|
/** Height (Y extent) of the bounds in the asset's own local units. */
|
|
20
21
|
export function boundsHeight(bounds) {
|
|
21
22
|
return bounds.max[1] - bounds.min[1];
|
|
22
23
|
}
|
|
24
|
+
/** Width/depth/height extents for a bounds object. */
|
|
25
|
+
export function boundsSize(bounds) {
|
|
26
|
+
return [
|
|
27
|
+
bounds.max[0] - bounds.min[0],
|
|
28
|
+
bounds.max[1] - bounds.min[1],
|
|
29
|
+
bounds.max[2] - bounds.min[2]
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
/** Largest finite positive extent for a bounds object. */
|
|
33
|
+
export function boundsMaxDimension(bounds) {
|
|
34
|
+
return Math.max(...boundsSize(bounds).filter((value) => Number.isFinite(value) && value > 0), 0);
|
|
35
|
+
}
|
|
23
36
|
/**
|
|
24
37
|
* Y translation that puts the asset's lowest point on the floor.
|
|
25
38
|
*
|
|
@@ -45,6 +58,41 @@ export function normalizedScaleForTargetHeight(bounds, targetHeight) {
|
|
|
45
58
|
return 1;
|
|
46
59
|
return targetHeight / height;
|
|
47
60
|
}
|
|
61
|
+
/** Uniform scale factor so the largest bounds extent equals `targetMaxDimension`. */
|
|
62
|
+
export function normalizedScaleForTargetMaxDimension(bounds, targetMaxDimension) {
|
|
63
|
+
const maxDimension = boundsMaxDimension(bounds);
|
|
64
|
+
if (!(maxDimension > 0) || !(targetMaxDimension > 0))
|
|
65
|
+
return 1;
|
|
66
|
+
return targetMaxDimension / maxDimension;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Scale for Aura3D's safe model renderer, which first normalizes GLBs to a
|
|
70
|
+
* stable largest dimension and then applies user scale.
|
|
71
|
+
*
|
|
72
|
+
* Use this when writing normal `model(asset).scale(...)` examples. Use
|
|
73
|
+
* `normalizedScaleForTargetMaxDimension` only when you are bypassing the safe
|
|
74
|
+
* model renderer and working in raw asset-local units.
|
|
75
|
+
*/
|
|
76
|
+
export function normalizedRenderScaleForTargetMaxDimension(targetMaxDimension, normalizedMaxDimension = AURA_NORMALIZED_MODEL_MAX_DIMENSION) {
|
|
77
|
+
if (!(targetMaxDimension > 0) || !(normalizedMaxDimension > 0))
|
|
78
|
+
return 1;
|
|
79
|
+
return targetMaxDimension / normalizedMaxDimension;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Scale for Aura3D's safe model renderer so the rendered height hits a target.
|
|
83
|
+
*
|
|
84
|
+
* The renderer's default maximum dimension is fixed, but the default rendered
|
|
85
|
+
* height depends on the GLB's aspect ratio. This preserves each asset's aspect
|
|
86
|
+
* ratio while making characters and props comparable on screen.
|
|
87
|
+
*/
|
|
88
|
+
export function normalizedRenderScaleForTargetHeight(bounds, targetHeight, normalizedMaxDimension = AURA_NORMALIZED_MODEL_MAX_DIMENSION) {
|
|
89
|
+
const rawMaxDimension = boundsMaxDimension(bounds);
|
|
90
|
+
const rawHeight = boundsHeight(bounds);
|
|
91
|
+
if (!(rawMaxDimension > 0) || !(rawHeight > 0) || !(targetHeight > 0) || !(normalizedMaxDimension > 0))
|
|
92
|
+
return 1;
|
|
93
|
+
const defaultRenderedHeight = rawHeight / rawMaxDimension * normalizedMaxDimension;
|
|
94
|
+
return targetHeight / defaultRenderedHeight;
|
|
95
|
+
}
|
|
48
96
|
/**
|
|
49
97
|
* Resolve a deterministic grounded placement for an asset.
|
|
50
98
|
*
|
|
@@ -60,6 +108,68 @@ export function groundedPlacement(bounds, options) {
|
|
|
60
108
|
const y = floorY + groundedYOffset(bounds) * scale;
|
|
61
109
|
return { position: [x, y, z], scale };
|
|
62
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Build bounds from a generated typed asset record.
|
|
113
|
+
*
|
|
114
|
+
* Prefer `metadata.boundsMetadata.min/max` because it preserves the real pivot
|
|
115
|
+
* and grounding offset from inspection. Fall back to the legacy `bounds` size
|
|
116
|
+
* array when only extents are available.
|
|
117
|
+
*/
|
|
118
|
+
export function boundsFromAsset(asset) {
|
|
119
|
+
const metadata = asset.metadata?.boundsMetadata;
|
|
120
|
+
const min = toVec3(metadata?.min);
|
|
121
|
+
const max = toVec3(metadata?.max);
|
|
122
|
+
if (min && max)
|
|
123
|
+
return { min, max };
|
|
124
|
+
const size = toVec3(metadata?.size) ?? toVec3(asset.bounds);
|
|
125
|
+
const center = toVec3(metadata?.center);
|
|
126
|
+
if (size)
|
|
127
|
+
return boundsFromSize(size, center ?? [0, 0, 0]);
|
|
128
|
+
return boundsFromSize([1, 1, 1]);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Resolve a grounded placement directly from a typed asset record.
|
|
132
|
+
*
|
|
133
|
+
* This is the helper public examples should use instead of route-local scale
|
|
134
|
+
* math. It keeps primary GLBs grounded even when the catalog asset has a
|
|
135
|
+
* center-origin or extreme native units.
|
|
136
|
+
*/
|
|
137
|
+
export function groundedAssetPlacement(asset, options) {
|
|
138
|
+
const bounds = boundsFromAsset(asset);
|
|
139
|
+
const placement = groundedPlacement(bounds, options);
|
|
140
|
+
return {
|
|
141
|
+
...placement,
|
|
142
|
+
bounds,
|
|
143
|
+
height: boundsHeight(bounds) * placement.scale
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve placement for normal public `model(asset)` usage.
|
|
148
|
+
*
|
|
149
|
+
* Aura3D's safe renderer already translates GLBs so their lowest local point
|
|
150
|
+
* rests on the node's `position.y` after normalization. Therefore render-safe
|
|
151
|
+
* grounded placement sets `position.y` directly to `floorY` and returns a scale
|
|
152
|
+
* compatible with the renderer's normalized model size.
|
|
153
|
+
*/
|
|
154
|
+
export function groundedRenderedAssetPlacement(asset, options) {
|
|
155
|
+
const bounds = boundsFromAsset(asset);
|
|
156
|
+
const rawMaxDimension = boundsMaxDimension(bounds);
|
|
157
|
+
const normalizedMaxDimension = options.normalizedMaxDimension ?? AURA_NORMALIZED_MODEL_MAX_DIMENSION;
|
|
158
|
+
const scale = options.targetHeight !== undefined
|
|
159
|
+
? normalizedRenderScaleForTargetHeight(bounds, options.targetHeight, normalizedMaxDimension)
|
|
160
|
+
: normalizedRenderScaleForTargetMaxDimension(options.targetMaxDimension ?? normalizedMaxDimension, normalizedMaxDimension);
|
|
161
|
+
const height = rawMaxDimension > 0
|
|
162
|
+
? boundsHeight(bounds) / rawMaxDimension * normalizedMaxDimension * scale
|
|
163
|
+
: boundsHeight(bounds) * scale;
|
|
164
|
+
const maxDimension = normalizedMaxDimension * scale;
|
|
165
|
+
return {
|
|
166
|
+
position: [options.x ?? 0, options.floorY ?? 0, options.z ?? 0],
|
|
167
|
+
scale,
|
|
168
|
+
bounds,
|
|
169
|
+
height,
|
|
170
|
+
maxDimension
|
|
171
|
+
};
|
|
172
|
+
}
|
|
63
173
|
/**
|
|
64
174
|
* Convenience adapter: build {@link SceneBounds} from a `size` extent and an
|
|
65
175
|
* optional `center`, matching the shape stored in `boundsMetadata`. When no
|
|
@@ -71,4 +181,10 @@ export function boundsFromSize(size, center = [0, 0, 0]) {
|
|
|
71
181
|
max: [center[0] + size[0] / 2, center[1] + size[1] / 2, center[2] + size[2] / 2]
|
|
72
182
|
};
|
|
73
183
|
}
|
|
184
|
+
function toVec3(value) {
|
|
185
|
+
if (!value || value.length < 3)
|
|
186
|
+
return undefined;
|
|
187
|
+
const vec = [Number(value[0]), Number(value[1]), Number(value[2])];
|
|
188
|
+
return vec.every((component) => Number.isFinite(component)) ? vec : undefined;
|
|
189
|
+
}
|
|
74
190
|
//# sourceMappingURL=SceneGroundingUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneGroundingUtils.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"SceneGroundingUtils.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"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"}
|