@skenora/scene-plan 0.1.2
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 +114 -0
- package/dist/check/check-scene-input.d.ts +38 -0
- package/dist/check/check-scene-input.d.ts.map +1 -0
- package/dist/check/check-scene-input.js +209 -0
- package/dist/check/check-scene-input.js.map +1 -0
- package/dist/compilation/compile.d.ts +4 -0
- package/dist/compilation/compile.d.ts.map +1 -0
- package/dist/compilation/compile.js +498 -0
- package/dist/compilation/compile.js.map +1 -0
- package/dist/description/example-recipes.d.ts +66 -0
- package/dist/description/example-recipes.d.ts.map +1 -0
- package/dist/description/example-recipes.js +1097 -0
- package/dist/description/example-recipes.js.map +1 -0
- package/dist/description/examples.d.ts +18 -0
- package/dist/description/examples.d.ts.map +1 -0
- package/dist/description/examples.js +58 -0
- package/dist/description/examples.js.map +1 -0
- package/dist/description/information.d.ts +415 -0
- package/dist/description/information.d.ts.map +1 -0
- package/dist/description/information.js +980 -0
- package/dist/description/information.js.map +1 -0
- package/dist/description/recipes.d.ts +20 -0
- package/dist/description/recipes.d.ts.map +1 -0
- package/dist/description/recipes.js +163 -0
- package/dist/description/recipes.js.map +1 -0
- package/dist/description/scene-fields.d.ts +11 -0
- package/dist/description/scene-fields.d.ts.map +1 -0
- package/dist/description/scene-fields.js +471 -0
- package/dist/description/scene-fields.js.map +1 -0
- package/dist/diagnostics/diagnostics.d.ts +79 -0
- package/dist/diagnostics/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics/diagnostics.js +91 -0
- package/dist/diagnostics/diagnostics.js.map +1 -0
- package/dist/generated/example-gallery.d.ts +2897 -0
- package/dist/generated/example-gallery.d.ts.map +1 -0
- package/dist/generated/example-gallery.js +3290 -0
- package/dist/generated/example-gallery.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/model/json.d.ts +14 -0
- package/dist/model/json.d.ts.map +1 -0
- package/dist/model/json.js +60 -0
- package/dist/model/json.js.map +1 -0
- package/dist/model/types.d.ts +329 -0
- package/dist/model/types.d.ts.map +1 -0
- package/dist/model/types.js +5 -0
- package/dist/model/types.js.map +1 -0
- package/dist/normalization/normalize.d.ts +7 -0
- package/dist/normalization/normalize.d.ts.map +1 -0
- package/dist/normalization/normalize.js +145 -0
- package/dist/normalization/normalize.js.map +1 -0
- package/dist/parsing/parse.d.ts +5 -0
- package/dist/parsing/parse.d.ts.map +1 -0
- package/dist/parsing/parse.js +330 -0
- package/dist/parsing/parse.js.map +1 -0
- package/dist/patch/patch.d.ts +6 -0
- package/dist/patch/patch.d.ts.map +1 -0
- package/dist/patch/patch.js +319 -0
- package/dist/patch/patch.js.map +1 -0
- package/dist/validation/validate.d.ts +16 -0
- package/dist/validation/validate.d.ts.map +1 -0
- package/dist/validation/validate.js +704 -0
- package/dist/validation/validate.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
import { createEmptySceneDocument, MATERIAL_SLOT_TARGET_RULE, MATERIAL_TEXTURE_SLOT_NAMES, } from "@skenora/contracts";
|
|
2
|
+
const number = (description, extra = {}) => ({ type: "number", description, ...extra });
|
|
3
|
+
const string = (description) => ({
|
|
4
|
+
type: "string",
|
|
5
|
+
description,
|
|
6
|
+
});
|
|
7
|
+
const choice = (description, values) => ({
|
|
8
|
+
...string(description),
|
|
9
|
+
enum: values,
|
|
10
|
+
});
|
|
11
|
+
const boolean = (description) => ({
|
|
12
|
+
type: "boolean",
|
|
13
|
+
description,
|
|
14
|
+
});
|
|
15
|
+
const object = (description, properties, required = []) => ({
|
|
16
|
+
type: "object",
|
|
17
|
+
description,
|
|
18
|
+
properties,
|
|
19
|
+
required,
|
|
20
|
+
additionalProperties: true,
|
|
21
|
+
});
|
|
22
|
+
const array = (description, items) => ({
|
|
23
|
+
type: "array",
|
|
24
|
+
description,
|
|
25
|
+
items,
|
|
26
|
+
});
|
|
27
|
+
const id = {
|
|
28
|
+
...string("Stable logical ID; references are resolved within this Blueprint"),
|
|
29
|
+
minLength: 1,
|
|
30
|
+
};
|
|
31
|
+
const asset = { ...id, reference: "asset" };
|
|
32
|
+
const vector = object("Three finite components in the documented coordinate space", { x: number("X"), y: number("Y"), z: number("Z") }, ["x", "y", "z"]);
|
|
33
|
+
const color = object("Linear RGB components; display hex values require explicit conversion", { r: number("Red"), g: number("Green"), b: number("Blue") }, ["r", "g", "b"]);
|
|
34
|
+
const positive = (description, unit) => number(description, { exclusiveMinimum: 0, ...(unit ? { unit } : {}) });
|
|
35
|
+
const radians = (description) => number(description, { unit: "radians" });
|
|
36
|
+
const easing = choice("Time interpolation", [
|
|
37
|
+
"linear",
|
|
38
|
+
"easeIn",
|
|
39
|
+
"easeOut",
|
|
40
|
+
"easeInOut",
|
|
41
|
+
]);
|
|
42
|
+
export const BLUEPRINT_TRANSFORM_RULE = object("Local, Y-up, meter-based transform; use Euler radians OR a unit quaternion, never both", {
|
|
43
|
+
coordinateSpace: {
|
|
44
|
+
...choice("Relative to parentId", ["local"]),
|
|
45
|
+
default: "local",
|
|
46
|
+
},
|
|
47
|
+
units: { ...choice("Scene length unit", ["meters"]), default: "meters" },
|
|
48
|
+
position: { ...vector, default: { x: 0, y: 0, z: 0 }, unit: "meters" },
|
|
49
|
+
scaling: { ...vector, default: { x: 1, y: 1, z: 1 } },
|
|
50
|
+
rotationRadians: { ...vector, unit: "radians" },
|
|
51
|
+
rotationQuaternion: object("Unit quaternion; norm checked by semantic validation", { x: number("X"), y: number("Y"), z: number("Z"), w: number("W") }, ["x", "y", "z", "w"]),
|
|
52
|
+
});
|
|
53
|
+
const entity = {
|
|
54
|
+
id,
|
|
55
|
+
kind: string("Entity capability kind"),
|
|
56
|
+
name: string("Display name; defaults to id"),
|
|
57
|
+
parentId: {
|
|
58
|
+
...id,
|
|
59
|
+
nullable: true,
|
|
60
|
+
reference: "entity",
|
|
61
|
+
default: null,
|
|
62
|
+
},
|
|
63
|
+
enabled: {
|
|
64
|
+
...boolean("Whether this entity and its descendants are enabled"),
|
|
65
|
+
default: true,
|
|
66
|
+
},
|
|
67
|
+
visible: {
|
|
68
|
+
...boolean("Whether generated geometry is visible; a group gates descendants without overwriting their visibility"),
|
|
69
|
+
default: true,
|
|
70
|
+
},
|
|
71
|
+
transform: BLUEPRINT_TRANSFORM_RULE,
|
|
72
|
+
properties: object("Native entity parameters; unknown metadata is not executable behavior", {}),
|
|
73
|
+
};
|
|
74
|
+
/** Describes existing native parameter routes without narrowing legacy input. */
|
|
75
|
+
export const BLUEPRINT_ENTITY_RULES = {
|
|
76
|
+
model: object("A supplied model asset; bounds and source node IDs must come from host metadata or loaded geometry", {
|
|
77
|
+
...entity,
|
|
78
|
+
kind: choice("Entity kind", ["model"]),
|
|
79
|
+
assetRef: asset,
|
|
80
|
+
sourceNode: string("Imported source-node identity, scoped to the model asset"),
|
|
81
|
+
alignment: object("Asset orientation/scale adapter; separate from entity composition", {
|
|
82
|
+
pivot: choice("Rotation pivot", ["asset-origin", "bounds-center"]),
|
|
83
|
+
placement: choice("Placement after orientation correction", [
|
|
84
|
+
"preserve",
|
|
85
|
+
"center",
|
|
86
|
+
"ground",
|
|
87
|
+
]),
|
|
88
|
+
rotation: { ...vector, unit: "radians" },
|
|
89
|
+
rotationQuaternion: BLUEPRINT_TRANSFORM_RULE.properties.rotationQuaternion,
|
|
90
|
+
embeddedLights: choice("Imported lights", ["preserve", "remove"]),
|
|
91
|
+
materialCompatibility: choice("Imported material adjustments", [
|
|
92
|
+
"preserve",
|
|
93
|
+
"presentation",
|
|
94
|
+
]),
|
|
95
|
+
}),
|
|
96
|
+
}, ["id", "kind", "assetRef"]),
|
|
97
|
+
primitive: object("Built-in procedural surface; dimensions are meters and default to one", {
|
|
98
|
+
...entity,
|
|
99
|
+
kind: choice("Entity kind", ["primitive"]),
|
|
100
|
+
primitive: choice("Geometry", [
|
|
101
|
+
"box",
|
|
102
|
+
"sphere",
|
|
103
|
+
"plane",
|
|
104
|
+
"cylinder",
|
|
105
|
+
"torus",
|
|
106
|
+
]),
|
|
107
|
+
size: positive("Uniform size", "meters"),
|
|
108
|
+
width: positive("Box/plane width", "meters"),
|
|
109
|
+
height: positive("Box/plane/cylinder height", "meters"),
|
|
110
|
+
depth: positive("Box depth", "meters"),
|
|
111
|
+
diameter: positive("Sphere/cylinder/torus diameter", "meters"),
|
|
112
|
+
color,
|
|
113
|
+
}, ["id", "kind", "primitive"]),
|
|
114
|
+
procedural: object("A deterministic bounded geometry graph; the host compiles data and never executes authored JavaScript", {
|
|
115
|
+
...entity,
|
|
116
|
+
kind: choice("Entity kind", ["procedural"]),
|
|
117
|
+
program: {
|
|
118
|
+
type: "object",
|
|
119
|
+
description: "skenora.geometry.program version 1; see the procedural capability schema for supported nodes and budgets",
|
|
120
|
+
additionalProperties: true,
|
|
121
|
+
update: "rebuild",
|
|
122
|
+
},
|
|
123
|
+
color,
|
|
124
|
+
}, ["id", "kind", "program"]),
|
|
125
|
+
shape: object("Paths and filled surfaces. A filled shape may also create a separate line slot; select its surface explicitly for PBR", {
|
|
126
|
+
...entity,
|
|
127
|
+
kind: choice("Entity kind", ["shape"]),
|
|
128
|
+
shape: choice("Shape", [
|
|
129
|
+
"rectangle",
|
|
130
|
+
"circle",
|
|
131
|
+
"polygon",
|
|
132
|
+
"polyline",
|
|
133
|
+
"tube",
|
|
134
|
+
"wall",
|
|
135
|
+
"box",
|
|
136
|
+
]),
|
|
137
|
+
points: array("Ordered local points; polygon fill lies in the XZ plane", vector),
|
|
138
|
+
width: positive("Width", "meters"),
|
|
139
|
+
height: positive("Height", "meters"),
|
|
140
|
+
radius: positive("Radius", "meters"),
|
|
141
|
+
depth: positive("Box depth", "meters"),
|
|
142
|
+
tubeRadius: positive("Tube cross-section radius", "meters"),
|
|
143
|
+
wallHeight: positive("Wall height along local Y", "meters"),
|
|
144
|
+
segments: {
|
|
145
|
+
type: "integer",
|
|
146
|
+
description: "Curve/tube segment count",
|
|
147
|
+
minimum: 3,
|
|
148
|
+
},
|
|
149
|
+
closed: boolean("Close the path"),
|
|
150
|
+
fillColor: color,
|
|
151
|
+
fillAlpha: number("Fill opacity", { minimum: 0, maximum: 1 }),
|
|
152
|
+
strokeColor: color,
|
|
153
|
+
}, ["id", "kind", "shape"]),
|
|
154
|
+
group: object("Transform-only parent. It owns no material slots and does not dispose child entity resources", { ...entity, kind: choice("Entity kind", ["group"]) }, ["id", "kind"]),
|
|
155
|
+
camera: object("Authored perspective/orthographic camera, activated explicitly through Renderer or Flow", {
|
|
156
|
+
...entity,
|
|
157
|
+
kind: choice("Entity kind", ["camera"]),
|
|
158
|
+
properties: object("Camera projection parameters", {
|
|
159
|
+
projection: choice("Projection", ["perspective", "orthographic"]),
|
|
160
|
+
fov: radians("Vertical field of view"),
|
|
161
|
+
minZ: positive("Near plane", "meters"),
|
|
162
|
+
maxZ: positive("Far plane", "meters"),
|
|
163
|
+
speed: positive("Movement speed"),
|
|
164
|
+
orthographicSize: positive("Orthographic span", "meters"),
|
|
165
|
+
}),
|
|
166
|
+
}, ["id", "kind"]),
|
|
167
|
+
annotation: object("Text anchored to an entity transform; layout is controlled by the host annotation presenter", {
|
|
168
|
+
...entity,
|
|
169
|
+
kind: choice("Entity kind", ["annotation"]),
|
|
170
|
+
properties: object("Annotation parameters", {
|
|
171
|
+
text: string("Displayed text"),
|
|
172
|
+
color: string("CSS display color"),
|
|
173
|
+
offset: vector,
|
|
174
|
+
priority: number("Display priority"),
|
|
175
|
+
}),
|
|
176
|
+
}, ["id", "kind"]),
|
|
177
|
+
particle: object("Optional particle system. The full native ParticleEntityProperties contract remains the semantic validator", {
|
|
178
|
+
...entity,
|
|
179
|
+
kind: choice("Entity kind", ["particle"]),
|
|
180
|
+
textureAssetRef: asset,
|
|
181
|
+
properties: object("Particle parameters; values are not executable expressions", {
|
|
182
|
+
emitter: choice("Emitter shape", [
|
|
183
|
+
"point",
|
|
184
|
+
"box",
|
|
185
|
+
"sphere",
|
|
186
|
+
"directed-sphere",
|
|
187
|
+
"hemisphere",
|
|
188
|
+
"cone",
|
|
189
|
+
"directed-cone",
|
|
190
|
+
"cylinder",
|
|
191
|
+
"directed-cylinder",
|
|
192
|
+
]),
|
|
193
|
+
capacity: positive("Maximum particles"),
|
|
194
|
+
emitRate: number("Particles emitted per second", { minimum: 0 }),
|
|
195
|
+
autoStart: boolean("Start automatically in playback only"),
|
|
196
|
+
gravity: vector,
|
|
197
|
+
color1: color,
|
|
198
|
+
color2: color,
|
|
199
|
+
minLifeTime: positive("Minimum lifetime", "seconds"),
|
|
200
|
+
maxLifeTime: positive("Maximum lifetime", "seconds"),
|
|
201
|
+
minSize: positive("Minimum size", "meters"),
|
|
202
|
+
maxSize: positive("Maximum size", "meters"),
|
|
203
|
+
}),
|
|
204
|
+
}, ["id", "kind"]),
|
|
205
|
+
};
|
|
206
|
+
export const BLUEPRINT_RESOURCE_RULE = object("Logical resource declaration. Locators and credentials are supplied by the host, not inferred or fetched by the compiler", {
|
|
207
|
+
id,
|
|
208
|
+
kind: choice("Expected resource kind", [
|
|
209
|
+
"model",
|
|
210
|
+
"texture",
|
|
211
|
+
"environment",
|
|
212
|
+
"audio",
|
|
213
|
+
"data",
|
|
214
|
+
]),
|
|
215
|
+
mediaType: string("Expected media type"),
|
|
216
|
+
label: string("Safe human-readable label"),
|
|
217
|
+
integrity: object("Expected integrity when supplied by the host", {
|
|
218
|
+
algorithm: choice("Digest", ["sha256"]),
|
|
219
|
+
value: string("Digest value"),
|
|
220
|
+
}, ["algorithm", "value"]),
|
|
221
|
+
}, ["id", "kind"]);
|
|
222
|
+
export const BLUEPRINT_BINDING_RULE = object("Assign one material ID to one entity-scoped slot", {
|
|
223
|
+
id,
|
|
224
|
+
materialId: { ...id, reference: "material" },
|
|
225
|
+
entityId: { ...id, reference: "entity" },
|
|
226
|
+
target: MATERIAL_SLOT_TARGET_RULE,
|
|
227
|
+
targetName: string("Legacy imported-material name only; forbidden with owned creation"),
|
|
228
|
+
}, ["id", "materialId", "entityId"]);
|
|
229
|
+
export const BLUEPRINT_LIGHT_RULE = object("Explicit scene light. An empty light list means no direct lights", {
|
|
230
|
+
id,
|
|
231
|
+
type: choice("Light kind", ["directional", "point", "spot", "hemispheric"]),
|
|
232
|
+
enabled: boolean("Enable this light"),
|
|
233
|
+
intensity: number("Intensity in the declared intensityMode", {
|
|
234
|
+
minimum: 0,
|
|
235
|
+
}),
|
|
236
|
+
color,
|
|
237
|
+
position: { ...vector, unit: "meters" },
|
|
238
|
+
rotation: {
|
|
239
|
+
...vector,
|
|
240
|
+
unit: "radians",
|
|
241
|
+
description: "Euler yaw/pitch/roll applied to local +Z; omitting rotation uses downward (0,-1,0)",
|
|
242
|
+
},
|
|
243
|
+
range: positive("Light range", "meters"),
|
|
244
|
+
radius: number("Source radius", { minimum: 0, unit: "meters" }),
|
|
245
|
+
angle: radians("Spot cone angle"),
|
|
246
|
+
exponent: number("Spot exponent", { minimum: 0 }),
|
|
247
|
+
falloff: choice("Distance falloff model", ["default", "physical", "gltf"]),
|
|
248
|
+
intensityMode: choice("Intensity unit selection; automatic delegates to the light type", [
|
|
249
|
+
"automatic",
|
|
250
|
+
"luminous-power",
|
|
251
|
+
"luminous-intensity",
|
|
252
|
+
"illuminance",
|
|
253
|
+
"luminance",
|
|
254
|
+
]),
|
|
255
|
+
shadows: object("Requested shadow settings; host quality policy may reduce them", {
|
|
256
|
+
enabled: boolean("Cast shadows; hemispheric lights cannot cast shadows"),
|
|
257
|
+
bias: number("Depth bias"),
|
|
258
|
+
normalBias: number("Normal bias"),
|
|
259
|
+
mapSize: {
|
|
260
|
+
type: "integer",
|
|
261
|
+
description: "Requested shadow-map side length",
|
|
262
|
+
minimum: 1,
|
|
263
|
+
unit: "pixels",
|
|
264
|
+
},
|
|
265
|
+
darkness: number("Darkness", { minimum: 0, maximum: 1 }),
|
|
266
|
+
frustumEdgeFalloff: number("Frustum edge falloff"),
|
|
267
|
+
filtering: choice("Shadow filter", [
|
|
268
|
+
"none",
|
|
269
|
+
"pcf",
|
|
270
|
+
"pcss",
|
|
271
|
+
"esm",
|
|
272
|
+
"blurred-esm",
|
|
273
|
+
]),
|
|
274
|
+
transparent: boolean("Soft transparent shadow sampling"),
|
|
275
|
+
}, ["enabled", "bias", "mapSize"]),
|
|
276
|
+
}, ["id", "type", "enabled", "intensity", "color"]);
|
|
277
|
+
export const BLUEPRINT_TEXTURE_ANIMATION_RULE = object("Animate one texture coordinate property. Shared textures advance once per controller sample", {
|
|
278
|
+
id,
|
|
279
|
+
materialId: { ...id, reference: "material" },
|
|
280
|
+
slot: choice("Texture slot", MATERIAL_TEXTURE_SLOT_NAMES),
|
|
281
|
+
property: choice("Writable coordinate property", [
|
|
282
|
+
"uOffset",
|
|
283
|
+
"vOffset",
|
|
284
|
+
"uScale",
|
|
285
|
+
"vScale",
|
|
286
|
+
"wAng",
|
|
287
|
+
]),
|
|
288
|
+
from: number("Starting value"),
|
|
289
|
+
to: number("Ending value"),
|
|
290
|
+
durationMs: positive("Cycle duration", "milliseconds"),
|
|
291
|
+
loop: boolean("Repeat cycles"),
|
|
292
|
+
autoStart: boolean("Start in playback; authoring preview is explicit"),
|
|
293
|
+
easing,
|
|
294
|
+
}, [
|
|
295
|
+
"id",
|
|
296
|
+
"materialId",
|
|
297
|
+
"slot",
|
|
298
|
+
"property",
|
|
299
|
+
"from",
|
|
300
|
+
"to",
|
|
301
|
+
"durationMs",
|
|
302
|
+
"loop",
|
|
303
|
+
"autoStart",
|
|
304
|
+
]);
|
|
305
|
+
export const BLUEPRINT_CAMERA_PATH_RULE = object("Ordered camera positions/targets over time", {
|
|
306
|
+
id,
|
|
307
|
+
name: string("Path name"),
|
|
308
|
+
durationMs: positive("Path duration", "milliseconds"),
|
|
309
|
+
loop: boolean("Repeat the path"),
|
|
310
|
+
interpolation: choice("Spatial interpolation", ["linear", "catmull-rom"]),
|
|
311
|
+
restoreCameraOnStop: boolean("Restore the prior camera after stop"),
|
|
312
|
+
keyframes: {
|
|
313
|
+
...array("At least two keyframes; IDs/times must satisfy semantic validation", object("Camera keyframe", {
|
|
314
|
+
id,
|
|
315
|
+
timeMs: number("Time from start", {
|
|
316
|
+
minimum: 0,
|
|
317
|
+
unit: "milliseconds",
|
|
318
|
+
}),
|
|
319
|
+
position: vector,
|
|
320
|
+
target: vector,
|
|
321
|
+
easing,
|
|
322
|
+
}, ["id", "timeMs", "position", "target"])),
|
|
323
|
+
minItems: 2,
|
|
324
|
+
},
|
|
325
|
+
}, ["id", "name", "durationMs", "loop", "keyframes"]);
|
|
326
|
+
/** Defaults come from the actual native normalizer profile, never another copy. */
|
|
327
|
+
function setting(defaults, description, overrides = {}) {
|
|
328
|
+
const properties = Object.fromEntries(Object.entries(defaults).map(([key, value]) => {
|
|
329
|
+
const inferred = typeof value === "object" && value !== null
|
|
330
|
+
? setting(value, key)
|
|
331
|
+
: {
|
|
332
|
+
type: typeof value,
|
|
333
|
+
description: key,
|
|
334
|
+
};
|
|
335
|
+
return [key, { ...inferred, default: structuredClone(value) }];
|
|
336
|
+
}));
|
|
337
|
+
for (const [key, rule] of Object.entries(overrides))
|
|
338
|
+
properties[key] = { ...properties[key], ...rule };
|
|
339
|
+
return object(description, properties);
|
|
340
|
+
}
|
|
341
|
+
const defaults = createEmptySceneDocument();
|
|
342
|
+
const skybox = object("Visible sky only; independent from environment lighting, lights, fog ownership, and time", {
|
|
343
|
+
source: object("One environment map, six cubemap faces, one equirectangular panorama, or the bounded atmosphere model", {
|
|
344
|
+
kind: choice("Skybox source kind", [
|
|
345
|
+
"environment",
|
|
346
|
+
"cubemap",
|
|
347
|
+
"panorama",
|
|
348
|
+
"procedural",
|
|
349
|
+
]),
|
|
350
|
+
assetId: asset,
|
|
351
|
+
format: choice("Environment texture format", [
|
|
352
|
+
"auto",
|
|
353
|
+
"env",
|
|
354
|
+
"dds",
|
|
355
|
+
"hdr",
|
|
356
|
+
"exr",
|
|
357
|
+
]),
|
|
358
|
+
faces: object("Cubemap face assets in px, py, pz, nx, ny, nz order", {
|
|
359
|
+
positiveX: asset,
|
|
360
|
+
positiveY: asset,
|
|
361
|
+
positiveZ: asset,
|
|
362
|
+
negativeX: asset,
|
|
363
|
+
negativeY: asset,
|
|
364
|
+
negativeZ: asset,
|
|
365
|
+
}),
|
|
366
|
+
projection: choice("Panorama projection", ["equirectangular"]),
|
|
367
|
+
resolution: number("Generated panorama cubemap face resolution"),
|
|
368
|
+
model: choice("Trusted procedural sky model", ["atmosphere-v1"]),
|
|
369
|
+
parameters: object("Bounded atmosphere controls", {
|
|
370
|
+
luminance: number("Sky luminance", { minimum: 0, maximum: 10 }),
|
|
371
|
+
turbidity: number("Atmospheric haze", {
|
|
372
|
+
minimum: 0,
|
|
373
|
+
maximum: 100,
|
|
374
|
+
}),
|
|
375
|
+
rayleigh: number("Rayleigh scattering", {
|
|
376
|
+
minimum: 0,
|
|
377
|
+
maximum: 10,
|
|
378
|
+
}),
|
|
379
|
+
mieCoefficient: number("Mie scattering coefficient", {
|
|
380
|
+
minimum: 0,
|
|
381
|
+
maximum: 0.1,
|
|
382
|
+
}),
|
|
383
|
+
mieDirectionalG: number("Mie directional factor", {
|
|
384
|
+
minimum: 0,
|
|
385
|
+
maximum: 1,
|
|
386
|
+
}),
|
|
387
|
+
sunDiskDirection: vector,
|
|
388
|
+
horizonOffset: number("Visual horizon offset", {
|
|
389
|
+
minimum: -1_000,
|
|
390
|
+
maximum: 1_000,
|
|
391
|
+
}),
|
|
392
|
+
up: vector,
|
|
393
|
+
dithering: boolean("Reduce sky gradient banding"),
|
|
394
|
+
}),
|
|
395
|
+
}, ["kind"]),
|
|
396
|
+
rotationY: radians("Visible sky rotation"),
|
|
397
|
+
blur: number("Texture-sky blur", { minimum: 0, maximum: 1 }),
|
|
398
|
+
fogParticipation: choice("Whether scene fog affects the sky mesh", [
|
|
399
|
+
"inherit",
|
|
400
|
+
"disabled",
|
|
401
|
+
]),
|
|
402
|
+
}, ["source"]);
|
|
403
|
+
export const BLUEPRINT_SETTING_RULES = {
|
|
404
|
+
camera: setting(defaults.camera, "Viewport camera; defaults are filled at compilation. The current viewport controller orbits; use a camera entity for another projection", {
|
|
405
|
+
mode: choice("Accepted V1 mode marker; free does not install a free-camera controller", ["orbit", "free"]),
|
|
406
|
+
position: vector,
|
|
407
|
+
target: vector,
|
|
408
|
+
alpha: radians("Orbit azimuth"),
|
|
409
|
+
beta: radians("Orbit inclination"),
|
|
410
|
+
radius: positive("Orbit distance", "meters"),
|
|
411
|
+
minZ: positive("Near plane", "meters"),
|
|
412
|
+
maxZ: positive("Far plane", "meters"),
|
|
413
|
+
fov: radians("Field of view"),
|
|
414
|
+
}),
|
|
415
|
+
environment: setting(defaults.environment, "Environment lighting and background are separate choices; enabling without an asset does not fetch a default map", {
|
|
416
|
+
assetId: asset,
|
|
417
|
+
intensity: number("Environment lighting multiplier", { minimum: 0 }),
|
|
418
|
+
rotationY: radians("Environment rotation"),
|
|
419
|
+
background: setting(defaults.environment.background, "Visible background, independent of light sources", {
|
|
420
|
+
mode: choice("Background mode", [
|
|
421
|
+
"transparent",
|
|
422
|
+
"color",
|
|
423
|
+
"image",
|
|
424
|
+
"environment",
|
|
425
|
+
"skybox",
|
|
426
|
+
]),
|
|
427
|
+
assetId: asset,
|
|
428
|
+
color: string("Legacy CSS hex clear color; see visual convention notes"),
|
|
429
|
+
blur: number("Environment background blur", {
|
|
430
|
+
minimum: 0,
|
|
431
|
+
maximum: 1,
|
|
432
|
+
}),
|
|
433
|
+
skybox,
|
|
434
|
+
}),
|
|
435
|
+
}),
|
|
436
|
+
ground: setting(defaults.ground, "Owned solid plane or shadow catcher; does not alter model coordinates", {
|
|
437
|
+
mode: choice("Ground mode", ["solid", "shadow-catcher"]),
|
|
438
|
+
size: positive("Ground size", "meters"),
|
|
439
|
+
height: number("Height", { unit: "meters" }),
|
|
440
|
+
fitToScene: boolean("Fit using currently loaded visible bounds"),
|
|
441
|
+
padding: positive("Bounds multiplier"),
|
|
442
|
+
color: string("Legacy CSS hex ground color"),
|
|
443
|
+
}),
|
|
444
|
+
fog: setting(defaults.fog, "Scene distance fog", {
|
|
445
|
+
mode: choice("Fog formula", ["linear", "exp", "exp2"]),
|
|
446
|
+
color,
|
|
447
|
+
start: number("Start distance", { unit: "meters" }),
|
|
448
|
+
end: number("End distance", { unit: "meters" }),
|
|
449
|
+
}),
|
|
450
|
+
weather: setting(defaults.weather, "Optional local rain/snow resources", {
|
|
451
|
+
type: choice("Weather", ["rain", "snow"]),
|
|
452
|
+
textureAssetId: asset,
|
|
453
|
+
}),
|
|
454
|
+
postProcess: setting(defaults.postProcess, "Requested camera-bound post-processing. Disabled features do not create their resources; quality is a separate host policy", {
|
|
455
|
+
antialiasing: choice("Pipeline antialiasing", [
|
|
456
|
+
"none",
|
|
457
|
+
"fxaa",
|
|
458
|
+
"samples",
|
|
459
|
+
]),
|
|
460
|
+
toneMappingType: choice("Tone mapping operator", ["standard", "aces"]),
|
|
461
|
+
depthOfFieldBlurLevel: choice("Blur quality", ["low", "medium", "high"]),
|
|
462
|
+
depthOfFieldFocusDistance: number("Focus distance", {
|
|
463
|
+
unit: "millimeters",
|
|
464
|
+
}),
|
|
465
|
+
depthOfFieldFocalLength: number("Focal length", { unit: "millimeters" }),
|
|
466
|
+
depthOfFieldLensSize: number("Lens size", { unit: "millimeters" }),
|
|
467
|
+
chromaticAberrationDirection: radians("Chromatic direction"),
|
|
468
|
+
vignetteCameraFov: radians("Vignette field of view"),
|
|
469
|
+
}),
|
|
470
|
+
};
|
|
471
|
+
//# sourceMappingURL=scene-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-fields.js","sourceRoot":"","sources":["../../src/description/scene-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { SkenoraDiagnostic, SkenoraDiagnosticSeverity } from "@skenora/contracts";
|
|
2
|
+
import type { JsonValue } from "../model/json.js";
|
|
3
|
+
export type ScenePlanDiagnosticSeverity = SkenoraDiagnosticSeverity;
|
|
4
|
+
export type ScenePlanDiagnosticStage = "parse" | "normalize" | "validate" | "compile" | "patch";
|
|
5
|
+
export type ScenePlanDiagnosticCode = "invalid-input" | "invalid-json" | "invalid-schema" | "unsupported-version" | "unknown-field" | "missing-field" | "invalid-value" | "invalid-id" | "duplicate-id" | "missing-reference" | "hierarchy-cycle" | "unsupported-entity-kind" | "invalid-transform" | "invalid-quaternion" | "missing-resource-binding" | "resource-kind-mismatch" | "resource-integrity-mismatch" | "invalid-capability" | "missing-capability" | "unsupported-capability" | "invalid-extension" | "unsupported-extension" | "flow-invalid" | "flow-target-missing" | "native-document-invalid" | "patch-invalid" | "patch-target-conflict" | "patch-unsupported-target" | "reserved-field" | "limit-exceeded" | (string & {});
|
|
6
|
+
export interface ScenePlanDiagnostic extends SkenoraDiagnostic {
|
|
7
|
+
readonly version: 1;
|
|
8
|
+
readonly code: ScenePlanDiagnosticCode;
|
|
9
|
+
readonly severity: ScenePlanDiagnosticSeverity;
|
|
10
|
+
readonly stage: ScenePlanDiagnosticStage;
|
|
11
|
+
readonly path: readonly (string | number)[];
|
|
12
|
+
readonly message: string;
|
|
13
|
+
readonly recoverable: boolean;
|
|
14
|
+
readonly entityId?: string;
|
|
15
|
+
readonly assetId?: string;
|
|
16
|
+
readonly materialId?: string;
|
|
17
|
+
readonly operationIndex?: number;
|
|
18
|
+
readonly details?: JsonValue;
|
|
19
|
+
}
|
|
20
|
+
export interface ScenePlanResult<T> {
|
|
21
|
+
readonly ok: boolean;
|
|
22
|
+
readonly value?: T;
|
|
23
|
+
readonly diagnostics: readonly ScenePlanDiagnostic[];
|
|
24
|
+
}
|
|
25
|
+
export interface ScenePlanParseResult<T> extends ScenePlanResult<T> {
|
|
26
|
+
readonly inputKind: "object" | "json-string";
|
|
27
|
+
}
|
|
28
|
+
export interface ScenePlanSourceMapping {
|
|
29
|
+
readonly planPath: readonly (string | number)[];
|
|
30
|
+
readonly documentPath: readonly (string | number)[];
|
|
31
|
+
readonly kind: "resource" | "entity" | "material" | "binding" | "flow";
|
|
32
|
+
readonly id: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ScenePlanValidationResult {
|
|
35
|
+
readonly valid: boolean;
|
|
36
|
+
readonly normalized?: import("../model/types.js").SceneBlueprint;
|
|
37
|
+
readonly diagnostics: readonly ScenePlanDiagnostic[];
|
|
38
|
+
}
|
|
39
|
+
export interface ScenePatchValidationResult {
|
|
40
|
+
readonly valid: boolean;
|
|
41
|
+
readonly normalized?: import("../model/types.js").ScenePatch;
|
|
42
|
+
readonly diagnostics: readonly ScenePlanDiagnostic[];
|
|
43
|
+
}
|
|
44
|
+
export interface SceneBlueprintCompilationResult {
|
|
45
|
+
readonly ok: boolean;
|
|
46
|
+
readonly document?: import("@skenora/contracts").SceneDocumentData;
|
|
47
|
+
readonly planHash?: string;
|
|
48
|
+
readonly sourceMappings: readonly ScenePlanSourceMapping[];
|
|
49
|
+
readonly diagnostics: readonly ScenePlanDiagnostic[];
|
|
50
|
+
}
|
|
51
|
+
export interface ScenePatchCompilationResult {
|
|
52
|
+
readonly ok: boolean;
|
|
53
|
+
readonly patch?: import("../model/types.js").ScenePatch;
|
|
54
|
+
readonly candidate?: import("../model/types.js").ScenePatchCandidate;
|
|
55
|
+
readonly planHash?: string;
|
|
56
|
+
readonly diagnostics: readonly ScenePlanDiagnostic[];
|
|
57
|
+
}
|
|
58
|
+
export interface ScenePlanDiagnosticInput {
|
|
59
|
+
readonly code: ScenePlanDiagnosticCode;
|
|
60
|
+
readonly severity?: ScenePlanDiagnosticSeverity;
|
|
61
|
+
readonly stage: ScenePlanDiagnosticStage;
|
|
62
|
+
readonly path?: readonly (string | number)[];
|
|
63
|
+
readonly message: string;
|
|
64
|
+
readonly recoverable?: boolean;
|
|
65
|
+
readonly entityId?: string;
|
|
66
|
+
readonly assetId?: string;
|
|
67
|
+
readonly materialId?: string;
|
|
68
|
+
readonly operationIndex?: number;
|
|
69
|
+
readonly details?: JsonValue;
|
|
70
|
+
}
|
|
71
|
+
export declare class ScenePlanValidationError extends Error {
|
|
72
|
+
readonly diagnostics: readonly ScenePlanDiagnostic[];
|
|
73
|
+
constructor(diagnostics: readonly ScenePlanDiagnostic[]);
|
|
74
|
+
}
|
|
75
|
+
export declare function createDiagnostic(input: ScenePlanDiagnosticInput): ScenePlanDiagnostic;
|
|
76
|
+
/** Dedupe and sort diagnostics so callers can safely compare results. */
|
|
77
|
+
export declare function finalizeDiagnostics(diagnostics: readonly ScenePlanDiagnostic[]): readonly ScenePlanDiagnostic[];
|
|
78
|
+
export declare function hasErrors(diagnostics: readonly ScenePlanDiagnostic[]): boolean;
|
|
79
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics/diagnostics.ts"],"names":[],"mappings":"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"}
|