@aura3d/asset-index 1.4.4 → 1.5.0
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/dist/cartoon-profile.d.ts +36 -0
- package/dist/cartoon-profile.d.ts.map +1 -0
- package/dist/cartoon-profile.js +467 -0
- package/dist/cartoon-profile.js.map +1 -0
- package/dist/cartoon-starter-pack.d.ts +29 -0
- package/dist/cartoon-starter-pack.d.ts.map +1 -0
- package/dist/cartoon-starter-pack.js +118 -0
- package/dist/cartoon-starter-pack.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AuraCanonicalAsset } from "./CanonicalAsset.js";
|
|
2
|
+
export type CartoonAssetProfile = "cartoon-character" | "cartoon-prop" | "cartoon-set" | "cartoon-environment";
|
|
3
|
+
export type CartoonAssetCategory = "character" | "prop" | "set" | "environment";
|
|
4
|
+
export interface CartoonAssetProfileEvaluation {
|
|
5
|
+
readonly profile: CartoonAssetProfile;
|
|
6
|
+
readonly category: CartoonAssetCategory;
|
|
7
|
+
readonly suitable: boolean;
|
|
8
|
+
readonly scoreBonus: number;
|
|
9
|
+
readonly rejectionReasons: readonly string[];
|
|
10
|
+
readonly warnings: readonly string[];
|
|
11
|
+
readonly matchedSignals: readonly string[];
|
|
12
|
+
/**
|
|
13
|
+
* Checks that could not be decided from pre-download catalog metadata and must
|
|
14
|
+
* be re-run against the downloaded GLB (e.g. embedded animation clips, rig,
|
|
15
|
+
* triangle budget, walkable bounds). Empty unless `preDownload` was set.
|
|
16
|
+
*/
|
|
17
|
+
readonly validationHooks: readonly CartoonAssetValidationHook[];
|
|
18
|
+
}
|
|
19
|
+
/** A deferred, post-download check the resolver/CLI should run on the GLB. */
|
|
20
|
+
export type CartoonAssetValidationHook = "animation-clips" | "humanoid-rig" | "facial-blendshapes" | "triangle-budget" | "payload-budget" | "walkable-bounds" | "character-scale-bounds" | "prop-scale-bounds";
|
|
21
|
+
export interface CartoonAssetProfileEvaluationOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Pre-download (catalog-only) ranking mode. The hosted catalog exposes title +
|
|
24
|
+
* tags + license but rarely rig/animation/triangle metadata, so in this mode
|
|
25
|
+
* checks that depend on *absent* metadata DOWN-RANK and defer to a post-download
|
|
26
|
+
* `validationHooks` entry instead of hard-rejecting the candidate. Proven-negative
|
|
27
|
+
* signals (a `false` animation flag, photoreal/IP-risk/violence terms, or a
|
|
28
|
+
* known-oversized payload/triangle/extent) still reject. Defaults to `false`
|
|
29
|
+
* (strict post-download evaluation), preserving existing behavior.
|
|
30
|
+
*/
|
|
31
|
+
readonly preDownload?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare const cartoonAssetProfiles: readonly CartoonAssetProfile[];
|
|
34
|
+
export declare function isCartoonAssetProfile(profile: string): profile is CartoonAssetProfile;
|
|
35
|
+
export declare function evaluateCartoonAssetProfile(asset: AuraCanonicalAsset, profile: CartoonAssetProfile, options?: CartoonAssetProfileEvaluationOptions): CartoonAssetProfileEvaluation;
|
|
36
|
+
//# sourceMappingURL=cartoon-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartoon-profile.d.ts","sourceRoot":"","sources":["../../../../packages/asset-index/src/cartoon-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAC3B,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,qBAAqB,CAAC;AAE1B,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAC;AAEhF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACjE;AAED,8EAA8E;AAC9E,MAAM,MAAM,0BAA0B,GAClC,iBAAiB,GACjB,cAAc,GACd,oBAAoB,GACpB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,wBAAwB,GACxB,mBAAmB,CAAC;AAExB,MAAM,WAAW,oCAAoC;IACnD;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,mBAAmB,EAK9D,CAAC;AAkMF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,mBAAmB,CAErF;AAKD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,oCAAyC,GACjD,6BAA6B,CA8E/B"}
|
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
export const cartoonAssetProfiles = [
|
|
2
|
+
"cartoon-character",
|
|
3
|
+
"cartoon-prop",
|
|
4
|
+
"cartoon-set",
|
|
5
|
+
"cartoon-environment",
|
|
6
|
+
];
|
|
7
|
+
const PROFILE_CATEGORY = {
|
|
8
|
+
"cartoon-character": "character",
|
|
9
|
+
"cartoon-prop": "prop",
|
|
10
|
+
"cartoon-set": "set",
|
|
11
|
+
"cartoon-environment": "environment",
|
|
12
|
+
};
|
|
13
|
+
const CARTOON_STYLE_TERMS = [
|
|
14
|
+
"cartoon",
|
|
15
|
+
"toon",
|
|
16
|
+
"stylized",
|
|
17
|
+
"stylised",
|
|
18
|
+
"cel",
|
|
19
|
+
"cell shaded",
|
|
20
|
+
"cel-shaded",
|
|
21
|
+
"low poly",
|
|
22
|
+
"low-poly",
|
|
23
|
+
"cute",
|
|
24
|
+
"kid",
|
|
25
|
+
"kids",
|
|
26
|
+
"child friendly",
|
|
27
|
+
"chibi",
|
|
28
|
+
"flat color",
|
|
29
|
+
"handpainted",
|
|
30
|
+
"hand painted",
|
|
31
|
+
"poly pizza",
|
|
32
|
+
"kenney",
|
|
33
|
+
"quaternius",
|
|
34
|
+
];
|
|
35
|
+
const CHARACTER_TERMS = [
|
|
36
|
+
"character",
|
|
37
|
+
"humanoid",
|
|
38
|
+
"person",
|
|
39
|
+
"people",
|
|
40
|
+
"boy",
|
|
41
|
+
"girl",
|
|
42
|
+
"kid",
|
|
43
|
+
"hero",
|
|
44
|
+
"villain",
|
|
45
|
+
"sidekick",
|
|
46
|
+
"mascot",
|
|
47
|
+
"avatar",
|
|
48
|
+
"actor",
|
|
49
|
+
"narrator",
|
|
50
|
+
"robot",
|
|
51
|
+
"creature",
|
|
52
|
+
];
|
|
53
|
+
const FACIAL_TERMS = [
|
|
54
|
+
"face",
|
|
55
|
+
"facial",
|
|
56
|
+
"expression",
|
|
57
|
+
"expressive",
|
|
58
|
+
"emotion",
|
|
59
|
+
"mouth",
|
|
60
|
+
"viseme",
|
|
61
|
+
"lip sync",
|
|
62
|
+
"lipsync",
|
|
63
|
+
"blendshape",
|
|
64
|
+
"blend shape",
|
|
65
|
+
"morph",
|
|
66
|
+
];
|
|
67
|
+
const HUMANOID_RIG_TERMS = [
|
|
68
|
+
"humanoid",
|
|
69
|
+
"rigged",
|
|
70
|
+
"armature",
|
|
71
|
+
"skeleton",
|
|
72
|
+
"skinned",
|
|
73
|
+
"retarget",
|
|
74
|
+
"mixamo",
|
|
75
|
+
"animation",
|
|
76
|
+
"animated",
|
|
77
|
+
];
|
|
78
|
+
const ANIMATION_TERMS = [
|
|
79
|
+
"animated",
|
|
80
|
+
"animation",
|
|
81
|
+
"idle",
|
|
82
|
+
"walk",
|
|
83
|
+
"run",
|
|
84
|
+
"talk",
|
|
85
|
+
"gesture",
|
|
86
|
+
"wave",
|
|
87
|
+
"emote",
|
|
88
|
+
];
|
|
89
|
+
const PROP_TERMS = [
|
|
90
|
+
"prop",
|
|
91
|
+
"furniture",
|
|
92
|
+
"chair",
|
|
93
|
+
"table",
|
|
94
|
+
"desk",
|
|
95
|
+
"sofa",
|
|
96
|
+
"vehicle",
|
|
97
|
+
"tool",
|
|
98
|
+
"toy",
|
|
99
|
+
"book",
|
|
100
|
+
"tree",
|
|
101
|
+
"plant",
|
|
102
|
+
"rock",
|
|
103
|
+
"sign",
|
|
104
|
+
"crate",
|
|
105
|
+
"food",
|
|
106
|
+
];
|
|
107
|
+
const SET_TERMS = [
|
|
108
|
+
"set",
|
|
109
|
+
"room",
|
|
110
|
+
"house",
|
|
111
|
+
"classroom",
|
|
112
|
+
"school",
|
|
113
|
+
"park",
|
|
114
|
+
"street",
|
|
115
|
+
"interior",
|
|
116
|
+
"exterior",
|
|
117
|
+
"stage",
|
|
118
|
+
"level",
|
|
119
|
+
"playground",
|
|
120
|
+
"space station",
|
|
121
|
+
"underwater",
|
|
122
|
+
"walkable",
|
|
123
|
+
"floor",
|
|
124
|
+
"environment",
|
|
125
|
+
];
|
|
126
|
+
const ENVIRONMENT_TERMS = [
|
|
127
|
+
"environment",
|
|
128
|
+
"skybox",
|
|
129
|
+
"backdrop",
|
|
130
|
+
"background",
|
|
131
|
+
"hdri",
|
|
132
|
+
"sky",
|
|
133
|
+
"landscape",
|
|
134
|
+
"world",
|
|
135
|
+
"terrain",
|
|
136
|
+
"horizon",
|
|
137
|
+
"panorama",
|
|
138
|
+
"diorama",
|
|
139
|
+
"forest",
|
|
140
|
+
"desert",
|
|
141
|
+
"ocean",
|
|
142
|
+
"mountain",
|
|
143
|
+
];
|
|
144
|
+
const PHOTOREAL_TERMS = [
|
|
145
|
+
"photogrammetry",
|
|
146
|
+
"scan",
|
|
147
|
+
"scanned",
|
|
148
|
+
"photoreal",
|
|
149
|
+
"photo real",
|
|
150
|
+
"realistic",
|
|
151
|
+
"pbr scan",
|
|
152
|
+
"raw scan",
|
|
153
|
+
"statue",
|
|
154
|
+
"bust",
|
|
155
|
+
"sculpture",
|
|
156
|
+
];
|
|
157
|
+
const IP_RISK_TERMS = [
|
|
158
|
+
"fan art",
|
|
159
|
+
"fanart",
|
|
160
|
+
"copyright",
|
|
161
|
+
"copyrighted",
|
|
162
|
+
"ripped",
|
|
163
|
+
"rip",
|
|
164
|
+
"pokemon",
|
|
165
|
+
"mario",
|
|
166
|
+
"sonic",
|
|
167
|
+
"naruto",
|
|
168
|
+
"dragon ball",
|
|
169
|
+
"fortnite",
|
|
170
|
+
"marvel",
|
|
171
|
+
"dc comics",
|
|
172
|
+
"star wars",
|
|
173
|
+
"disney",
|
|
174
|
+
"pixar",
|
|
175
|
+
"spongebob",
|
|
176
|
+
];
|
|
177
|
+
const VIOLENCE_TERMS = [
|
|
178
|
+
"gore",
|
|
179
|
+
"blood",
|
|
180
|
+
"horror",
|
|
181
|
+
"corpse",
|
|
182
|
+
"weapon pack",
|
|
183
|
+
"gun",
|
|
184
|
+
"rifle",
|
|
185
|
+
"pistol",
|
|
186
|
+
];
|
|
187
|
+
export function isCartoonAssetProfile(profile) {
|
|
188
|
+
return cartoonAssetProfiles.includes(profile);
|
|
189
|
+
}
|
|
190
|
+
/** Hard cap on any single bounds dimension; beyond this an asset is mis-scaled. */
|
|
191
|
+
const INSANE_EXTENT_UNITS = 50;
|
|
192
|
+
export function evaluateCartoonAssetProfile(asset, profile, options = {}) {
|
|
193
|
+
const preDownload = options.preDownload === true;
|
|
194
|
+
const category = PROFILE_CATEGORY[profile];
|
|
195
|
+
const rejectionReasons = [];
|
|
196
|
+
const warnings = [];
|
|
197
|
+
const matchedSignals = [];
|
|
198
|
+
const validationHooks = [];
|
|
199
|
+
const text = searchableText(asset);
|
|
200
|
+
const tags = asset.tags.map((tag) => tag.toLowerCase());
|
|
201
|
+
if (asset.access !== "direct-download") {
|
|
202
|
+
rejectionReasons.push(`asset is marketplace/deep-link only; ${profile} auto-resolve requires direct-download access.`);
|
|
203
|
+
}
|
|
204
|
+
if (!asset.license.verified || !asset.license.redistributable) {
|
|
205
|
+
rejectionReasons.push(`asset license is not verified redistributable (${asset.license.spdx}); ${profile} requires license-safe catalog provenance.`);
|
|
206
|
+
}
|
|
207
|
+
if (asset.format !== "glb") {
|
|
208
|
+
rejectionReasons.push(`expected GLB format for cartoon-library auto-resolve; found ${asset.format}.`);
|
|
209
|
+
}
|
|
210
|
+
// An insanely large extent is a proven-negative signal in every mode: even
|
|
211
|
+
// pre-download we know the bounds are wrong if the catalog reported them.
|
|
212
|
+
if (asset.bounds) {
|
|
213
|
+
const largest = Math.max(...asset.bounds.size);
|
|
214
|
+
if (largest > INSANE_EXTENT_UNITS) {
|
|
215
|
+
rejectionReasons.push(`bounds largest dimension ${formatNumber(largest)}m is implausible (> ${INSANE_EXTENT_UNITS}m); asset is mis-scaled.`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
collectSignals(text, tags, CARTOON_STYLE_TERMS, matchedSignals);
|
|
219
|
+
const hasCartoonStyle = hasAny(text, tags, CARTOON_STYLE_TERMS);
|
|
220
|
+
if (!hasCartoonStyle) {
|
|
221
|
+
warnings.push("catalog metadata does not explicitly prove cartoon/stylized art direction; inspect preview before publishing.");
|
|
222
|
+
}
|
|
223
|
+
const photoreal = firstTerm(text, PHOTOREAL_TERMS);
|
|
224
|
+
if (photoreal && !hasCartoonStyle) {
|
|
225
|
+
rejectionReasons.push(`catalog metadata looks photorealistic or scan-derived ("${photoreal}"), not cartoon-ready.`);
|
|
226
|
+
}
|
|
227
|
+
else if (photoreal) {
|
|
228
|
+
warnings.push(`catalog metadata includes "${photoreal}"; verify the asset is stylized enough for cartoon use.`);
|
|
229
|
+
}
|
|
230
|
+
const ipRisk = firstTerm(text, IP_RISK_TERMS);
|
|
231
|
+
if (ipRisk) {
|
|
232
|
+
rejectionReasons.push(`catalog metadata contains IP-risk term "${ipRisk}"; cartoon profiles only accept license-safe original/generic assets.`);
|
|
233
|
+
}
|
|
234
|
+
const violenceRisk = firstTerm(text, VIOLENCE_TERMS);
|
|
235
|
+
if (violenceRisk) {
|
|
236
|
+
rejectionReasons.push(`catalog metadata contains child-safety risk term "${violenceRisk}".`);
|
|
237
|
+
}
|
|
238
|
+
applyProfileRules(asset, profile, text, tags, rejectionReasons, warnings, matchedSignals, validationHooks, preDownload);
|
|
239
|
+
let scoreBonus = 0;
|
|
240
|
+
if (hasCartoonStyle)
|
|
241
|
+
scoreBonus += 24;
|
|
242
|
+
if (asset.license.verified && asset.license.redistributable)
|
|
243
|
+
scoreBonus += 8;
|
|
244
|
+
if (asset.access === "direct-download")
|
|
245
|
+
scoreBonus += 6;
|
|
246
|
+
if (asset.format === "glb")
|
|
247
|
+
scoreBonus += 6;
|
|
248
|
+
if (asset.sourcePage || asset.license.sourcePage)
|
|
249
|
+
scoreBonus += 2;
|
|
250
|
+
if (asset.thumbnailUrl)
|
|
251
|
+
scoreBonus += 2;
|
|
252
|
+
if (asset.bounds)
|
|
253
|
+
scoreBonus += 2;
|
|
254
|
+
if (typeof asset.fileSizeBytes === "number" && asset.fileSizeBytes <= payloadBudget(profile) / 2)
|
|
255
|
+
scoreBonus += 2;
|
|
256
|
+
scoreBonus += profileScoreBonus(asset, profile, text, tags, matchedSignals);
|
|
257
|
+
if (rejectionReasons.length > 0)
|
|
258
|
+
scoreBonus -= 100;
|
|
259
|
+
return {
|
|
260
|
+
profile,
|
|
261
|
+
category,
|
|
262
|
+
suitable: rejectionReasons.length === 0,
|
|
263
|
+
scoreBonus,
|
|
264
|
+
rejectionReasons,
|
|
265
|
+
warnings,
|
|
266
|
+
matchedSignals: [...new Set(matchedSignals)],
|
|
267
|
+
validationHooks: [...new Set(validationHooks)],
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
function applyProfileRules(asset, profile, text, tags, rejectionReasons, warnings, matchedSignals, validationHooks, preDownload) {
|
|
271
|
+
// Triangle/payload caps are proven-negatives only when the catalog actually
|
|
272
|
+
// reported a count over budget; an absent count defers to a post-download hook
|
|
273
|
+
// in pre-download mode (it always did fall through silently before).
|
|
274
|
+
const maxTriangles = triangleBudget(profile);
|
|
275
|
+
if (typeof asset.triangles === "number") {
|
|
276
|
+
if (asset.triangles > maxTriangles) {
|
|
277
|
+
rejectionReasons.push(`triangle count ${asset.triangles} exceeds ${profile} budget of ${maxTriangles}.`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else if (preDownload) {
|
|
281
|
+
validationHooks.push("triangle-budget");
|
|
282
|
+
}
|
|
283
|
+
const maxPayload = payloadBudget(profile);
|
|
284
|
+
if (typeof asset.fileSizeBytes === "number") {
|
|
285
|
+
if (asset.fileSizeBytes > maxPayload) {
|
|
286
|
+
rejectionReasons.push(`payload ${asset.fileSizeBytes} bytes exceeds ${profile} browser budget of ${maxPayload}.`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else if (preDownload) {
|
|
290
|
+
validationHooks.push("payload-budget");
|
|
291
|
+
}
|
|
292
|
+
if (profile === "cartoon-character") {
|
|
293
|
+
collectSignals(text, tags, CHARACTER_TERMS, matchedSignals);
|
|
294
|
+
collectSignals(text, tags, HUMANOID_RIG_TERMS, matchedSignals);
|
|
295
|
+
collectSignals(text, tags, FACIAL_TERMS, matchedSignals);
|
|
296
|
+
collectSignals(text, tags, ANIMATION_TERMS, matchedSignals);
|
|
297
|
+
if (!hasAny(text, tags, CHARACTER_TERMS)) {
|
|
298
|
+
rejectionReasons.push("catalog metadata is not character-like enough for a cartoon-character.");
|
|
299
|
+
}
|
|
300
|
+
// Rig evidence rarely appears in catalog titles/tags. Pre-download we defer
|
|
301
|
+
// it to a post-download rig check rather than rejecting every catalog hit.
|
|
302
|
+
if (!hasAny(text, tags, HUMANOID_RIG_TERMS)) {
|
|
303
|
+
if (preDownload) {
|
|
304
|
+
warnings.push("catalog metadata does not prove a rig/skeleton; validate humanoid rig after download.");
|
|
305
|
+
validationHooks.push("humanoid-rig");
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
rejectionReasons.push("catalog metadata does not show rigged/skinned/humanoid compatibility for a cartoon-character.");
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// A `false` flag is a proven static asset -> always reject. An *absent* flag
|
|
312
|
+
// is unknown: pre-download we defer to an embedded-clip check; strict mode
|
|
313
|
+
// keeps requiring proven clips.
|
|
314
|
+
if (asset.hasAnimations === false) {
|
|
315
|
+
rejectionReasons.push("asset is marked static; cartoon-character requires embedded animation clips.");
|
|
316
|
+
}
|
|
317
|
+
else if (asset.hasAnimations !== true) {
|
|
318
|
+
if (preDownload) {
|
|
319
|
+
warnings.push("missing animation metadata; validate embedded animation clips after download.");
|
|
320
|
+
validationHooks.push("animation-clips");
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
rejectionReasons.push("missing animation metadata; cartoon-character requires proven embedded animation clips.");
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (!hasAny(text, tags, FACIAL_TERMS)) {
|
|
327
|
+
warnings.push("facial expression, mouth, morph, or viseme metadata is missing; validate lip-sync readiness after resolve.");
|
|
328
|
+
if (preDownload)
|
|
329
|
+
validationHooks.push("facial-blendshapes");
|
|
330
|
+
}
|
|
331
|
+
validateBounds(asset, 0.45, 4.5, profile, warnings, rejectionReasons, preDownload, validationHooks, "character-scale-bounds");
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
if (profile === "cartoon-prop") {
|
|
335
|
+
collectSignals(text, tags, PROP_TERMS, matchedSignals);
|
|
336
|
+
if (!hasAny(text, tags, PROP_TERMS)) {
|
|
337
|
+
rejectionReasons.push("catalog metadata is not prop-like enough for a cartoon-prop.");
|
|
338
|
+
}
|
|
339
|
+
if (hasAny(text, tags, CHARACTER_TERMS) && !hasAny(text, tags, PROP_TERMS)) {
|
|
340
|
+
rejectionReasons.push("catalog metadata looks like a character, not a standalone cartoon prop.");
|
|
341
|
+
}
|
|
342
|
+
validateBounds(asset, 0.02, 18, profile, warnings, rejectionReasons, preDownload, validationHooks, "prop-scale-bounds");
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
if (profile === "cartoon-set") {
|
|
346
|
+
collectSignals(text, tags, SET_TERMS, matchedSignals);
|
|
347
|
+
if (!hasAny(text, tags, SET_TERMS)) {
|
|
348
|
+
rejectionReasons.push("catalog metadata is not set/location-like enough for a cartoon-set.");
|
|
349
|
+
}
|
|
350
|
+
if (asset.bounds) {
|
|
351
|
+
const largest = Math.max(...asset.bounds.size);
|
|
352
|
+
if (largest < 1.5) {
|
|
353
|
+
rejectionReasons.push(`bounds largest dimension ${formatNumber(largest)}m is too small for a walkable cartoon set.`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
warnings.push("bounds metadata unavailable; validate-cartoon must confirm walkable scale after resolve.");
|
|
358
|
+
if (preDownload)
|
|
359
|
+
validationHooks.push("walkable-bounds");
|
|
360
|
+
}
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
collectSignals(text, tags, ENVIRONMENT_TERMS, matchedSignals);
|
|
364
|
+
if (!hasAny(text, tags, ENVIRONMENT_TERMS)) {
|
|
365
|
+
rejectionReasons.push("catalog metadata is not backdrop/sky/world-like enough for a cartoon-environment.");
|
|
366
|
+
}
|
|
367
|
+
if (asset.hasAnimations === true) {
|
|
368
|
+
warnings.push("environment candidate includes animations; verify it behaves as a static backdrop or world layer.");
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
function profileScoreBonus(asset, profile, text, tags, matchedSignals) {
|
|
372
|
+
let bonus = Math.min(12, matchedSignals.length * 2);
|
|
373
|
+
if (profile === "cartoon-character") {
|
|
374
|
+
if (hasAny(text, tags, CHARACTER_TERMS))
|
|
375
|
+
bonus += 16;
|
|
376
|
+
if (hasAny(text, tags, HUMANOID_RIG_TERMS))
|
|
377
|
+
bonus += 12;
|
|
378
|
+
if (hasAny(text, tags, FACIAL_TERMS))
|
|
379
|
+
bonus += 10;
|
|
380
|
+
if (hasAny(text, tags, ANIMATION_TERMS) || asset.hasAnimations === true)
|
|
381
|
+
bonus += 14;
|
|
382
|
+
return bonus;
|
|
383
|
+
}
|
|
384
|
+
if (profile === "cartoon-prop") {
|
|
385
|
+
if (hasAny(text, tags, PROP_TERMS))
|
|
386
|
+
bonus += 18;
|
|
387
|
+
if (asset.hasAnimations === false || asset.hasAnimations === undefined)
|
|
388
|
+
bonus += 4;
|
|
389
|
+
return bonus;
|
|
390
|
+
}
|
|
391
|
+
if (profile === "cartoon-set") {
|
|
392
|
+
if (hasAny(text, tags, SET_TERMS))
|
|
393
|
+
bonus += 18;
|
|
394
|
+
if (asset.bounds && Math.max(...asset.bounds.size) >= 1.5)
|
|
395
|
+
bonus += 8;
|
|
396
|
+
return bonus;
|
|
397
|
+
}
|
|
398
|
+
if (hasAny(text, tags, ENVIRONMENT_TERMS))
|
|
399
|
+
bonus += 18;
|
|
400
|
+
if (asset.bounds && Math.max(...asset.bounds.size) >= 8)
|
|
401
|
+
bonus += 6;
|
|
402
|
+
return bonus;
|
|
403
|
+
}
|
|
404
|
+
function validateBounds(asset, minLargest, maxLargest, profile, warnings, rejectionReasons, preDownload, validationHooks, hook) {
|
|
405
|
+
if (!asset.bounds) {
|
|
406
|
+
warnings.push("bounds metadata unavailable; validate-cartoon must confirm scale after resolve.");
|
|
407
|
+
if (preDownload)
|
|
408
|
+
validationHooks.push(hook);
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
const largest = Math.max(...asset.bounds.size);
|
|
412
|
+
if (largest < minLargest) {
|
|
413
|
+
rejectionReasons.push(`bounds largest dimension ${formatNumber(largest)}m is too small for ${profile}.`);
|
|
414
|
+
}
|
|
415
|
+
if (largest > maxLargest) {
|
|
416
|
+
rejectionReasons.push(`bounds largest dimension ${formatNumber(largest)}m exceeds ${profile} scale budget of ${formatNumber(maxLargest)}m.`);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
function triangleBudget(profile) {
|
|
420
|
+
switch (profile) {
|
|
421
|
+
case "cartoon-character":
|
|
422
|
+
return 160_000;
|
|
423
|
+
case "cartoon-prop":
|
|
424
|
+
return 100_000;
|
|
425
|
+
case "cartoon-set":
|
|
426
|
+
return 350_000;
|
|
427
|
+
case "cartoon-environment":
|
|
428
|
+
return 250_000;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
function payloadBudget(profile) {
|
|
432
|
+
switch (profile) {
|
|
433
|
+
case "cartoon-character":
|
|
434
|
+
return 45 * 1024 * 1024;
|
|
435
|
+
case "cartoon-prop":
|
|
436
|
+
return 30 * 1024 * 1024;
|
|
437
|
+
case "cartoon-set":
|
|
438
|
+
return 90 * 1024 * 1024;
|
|
439
|
+
case "cartoon-environment":
|
|
440
|
+
return 80 * 1024 * 1024;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
function searchableText(asset) {
|
|
444
|
+
return [
|
|
445
|
+
asset.id,
|
|
446
|
+
asset.title,
|
|
447
|
+
asset.description ?? "",
|
|
448
|
+
asset.source,
|
|
449
|
+
...asset.tags,
|
|
450
|
+
].join(" ").toLowerCase();
|
|
451
|
+
}
|
|
452
|
+
function hasAny(text, tags, terms) {
|
|
453
|
+
return terms.some((term) => text.includes(term) || tags.includes(term));
|
|
454
|
+
}
|
|
455
|
+
function collectSignals(text, tags, terms, matchedSignals) {
|
|
456
|
+
for (const term of terms) {
|
|
457
|
+
if (text.includes(term) || tags.includes(term))
|
|
458
|
+
matchedSignals.push(term);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
function firstTerm(text, terms) {
|
|
462
|
+
return terms.find((term) => text.includes(term));
|
|
463
|
+
}
|
|
464
|
+
function formatNumber(value) {
|
|
465
|
+
return Number.isInteger(value) ? String(value) : value.toFixed(2);
|
|
466
|
+
}
|
|
467
|
+
//# sourceMappingURL=cartoon-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartoon-profile.js","sourceRoot":"","sources":["../../../../packages/asset-index/src/cartoon-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AuraCanonicalAsset } from "./CanonicalAsset.js";
|
|
2
|
+
import type { SourceAdapter } from "./SourceAdapter.js";
|
|
3
|
+
export type CartoonStarterPackRole = "hero" | "sidekick" | "villain" | "narrator" | "background" | "miko" | "luma" | "furniture" | "vehicle" | "nature" | "tool" | "indoor-room" | "outdoor-park" | "school" | "space-station" | "underwater" | "moon-garden";
|
|
4
|
+
export type CartoonStarterPackKind = "character" | "prop" | "set";
|
|
5
|
+
export interface CartoonStarterPackEntry {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly kind: CartoonStarterPackKind;
|
|
8
|
+
readonly role: CartoonStarterPackRole;
|
|
9
|
+
readonly title: string;
|
|
10
|
+
readonly mirrorPath: string;
|
|
11
|
+
readonly source: "kenney";
|
|
12
|
+
readonly pack: string;
|
|
13
|
+
readonly license: "CC0";
|
|
14
|
+
readonly sourcePage: string;
|
|
15
|
+
readonly tags: readonly string[];
|
|
16
|
+
readonly bounds: readonly [number, number, number];
|
|
17
|
+
readonly hasAnimations?: boolean | undefined;
|
|
18
|
+
readonly triangles?: number | undefined;
|
|
19
|
+
}
|
|
20
|
+
export declare const cartoonStarterPack: readonly CartoonStarterPackEntry[];
|
|
21
|
+
export declare function cartoonStarterPackSummary(): {
|
|
22
|
+
readonly characterCount: number;
|
|
23
|
+
readonly propCount: number;
|
|
24
|
+
readonly setCount: number;
|
|
25
|
+
readonly allLicenseVerified: boolean;
|
|
26
|
+
};
|
|
27
|
+
export declare function cartoonStarterPackAssets(): readonly AuraCanonicalAsset[];
|
|
28
|
+
export declare function createCartoonStarterPackAdapter(): SourceAdapter;
|
|
29
|
+
//# sourceMappingURL=cartoon-starter-pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartoon-starter-pack.d.ts","sourceRoot":"","sources":["../../../../packages/asset-index/src/cartoon-starter-pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,EAAgC,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEtF,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,UAAU,GACV,SAAS,GACT,UAAU,GACV,YAAY,GACZ,MAAM,GACN,MAAM,GACN,WAAW,GACX,SAAS,GACT,QAAQ,GACR,MAAM,GACN,aAAa,GACb,cAAc,GACd,QAAQ,GACR,eAAe,GACf,YAAY,GACZ,aAAa,CAAC;AAElB,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAKD,eAAO,MAAM,kBAAkB,EAAE,SAAS,uBAAuB,EAwBvD,CAAC;AAEX,wBAAgB,yBAAyB,IAAI;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;CACtC,CAOA;AAED,wBAAgB,wBAAwB,IAAI,SAAS,kBAAkB,EAAE,CAExE;AAED,wBAAgB,+BAA+B,IAAI,aAAa,CAQ/D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { normalizeLicense } from "./CanonicalAsset.js";
|
|
2
|
+
const CDN_BASE = "https://cdn.jsdelivr.net/gh/gchahal1982/aura3d-cc0-assets@main";
|
|
3
|
+
const KENNEY_LICENSE_PAGE = "https://kenney.nl/assets";
|
|
4
|
+
export const cartoonStarterPack = [
|
|
5
|
+
starterCharacter("cartoon-starter:miko", "miko", "Miko Moon Garden Helper", "kenney/blocky-characters/character-a.glb"),
|
|
6
|
+
starterCharacter("cartoon-starter:luma", "luma", "Luma Moon Garden Helper", "kenney/blocky-characters/character-b.glb"),
|
|
7
|
+
starterCharacter("cartoon-starter:hero", "hero", "Hero Character", "kenney/blocky-characters/character-a.glb"),
|
|
8
|
+
starterCharacter("cartoon-starter:sidekick", "sidekick", "Sidekick Character", "kenney/blocky-characters/character-b.glb"),
|
|
9
|
+
starterCharacter("cartoon-starter:villain", "villain", "Villain Character", "kenney/blocky-characters/character-c.glb"),
|
|
10
|
+
starterCharacter("cartoon-starter:narrator", "narrator", "Narrator Character", "kenney/blocky-characters/character-d.glb"),
|
|
11
|
+
starterCharacter("cartoon-starter:background-kid", "background", "Background Character", "kenney/blocky-characters/character-e.glb"),
|
|
12
|
+
starterProp("cartoon-starter:prop-stool", "furniture", "Classroom Stool Prop", "kenney/fantasy-town-kit/stall-stool.glb", ["stool", "chair", "furniture", "classroom"]),
|
|
13
|
+
starterProp("cartoon-starter:prop-bench-table", "furniture", "Activity Bench Table Prop", "kenney/fantasy-town-kit/stall-bench.glb", ["bench", "table", "desk", "furniture"]),
|
|
14
|
+
starterProp("cartoon-starter:prop-delivery-car", "vehicle", "Tiny Delivery Vehicle Prop", "kenney/car-kit/delivery.glb", ["vehicle", "car", "street"]),
|
|
15
|
+
starterProp("cartoon-starter:prop-tree", "nature", "Rounded Park Tree Prop", "kenney/city-kit-suburban/tree-small.glb", ["tree", "nature", "park"]),
|
|
16
|
+
starterProp("cartoon-starter:prop-flower", "nature", "Garden Flower Prop", "kenney/platformer-kit/flowers.glb", ["flower", "nature", "garden"]),
|
|
17
|
+
starterProp("cartoon-starter:prop-key", "tool", "Story Key Prop", "kenney/platformer-kit/key.glb", ["key", "tool", "story"]),
|
|
18
|
+
starterProp("cartoon-starter:prop-crate", "tool", "Utility Crate Prop", "kenney/platformer-kit/crate.glb", ["crate", "tool", "storage"]),
|
|
19
|
+
starterProp("cartoon-starter:prop-sign", "tool", "Direction Sign Prop", "kenney/platformer-kit/sign.glb", ["sign", "tool", "label"]),
|
|
20
|
+
starterProp("cartoon-starter:prop-bench", "furniture", "Park Bench Prop", "kenney/graveyard-kit/bench.glb", ["bench", "furniture", "park"]),
|
|
21
|
+
starterProp("cartoon-starter:prop-boat", "vehicle", "Toy Boat Vehicle Prop", "kenney/pirate-kit/boat-row-small.glb", ["boat", "vehicle", "water"]),
|
|
22
|
+
starterSet("cartoon-starter:set-indoor-room", "indoor-room", "Indoor Room Set", "kenney/modular-dungeon-kit/room-large.glb", ["room", "indoor", "set", "walkable"]),
|
|
23
|
+
starterSet("cartoon-starter:set-outdoor-park", "outdoor-park", "Outdoor Park Set", "kenney/platformer-kit/block-grass-large.glb", ["park", "outdoor", "set", "walkable"]),
|
|
24
|
+
starterSet("cartoon-starter:set-school", "school", "School Room Set", "kenney/modular-dungeon-kit/room-wide.glb", ["school", "classroom", "set", "walkable"]),
|
|
25
|
+
starterSet("cartoon-starter:set-space-station", "space-station", "Space Station Set", "kenney/modular-space-kit/room-large.glb", ["space", "station", "set", "walkable"]),
|
|
26
|
+
starterSet("cartoon-starter:set-underwater", "underwater", "Underwater Cove Set", "kenney/pirate-kit/ship-wreck.glb", ["underwater", "ocean", "set", "walkable"]),
|
|
27
|
+
starterSet("cartoon-starter:set-moon-garden", "moon-garden", "Moon Garden Set", "kenney/platformer-kit/block-grass-large.glb", ["moon", "garden", "outdoor", "set", "walkable"]),
|
|
28
|
+
];
|
|
29
|
+
export function cartoonStarterPackSummary() {
|
|
30
|
+
return {
|
|
31
|
+
characterCount: cartoonStarterPack.filter((entry) => entry.kind === "character").length,
|
|
32
|
+
propCount: cartoonStarterPack.filter((entry) => entry.kind === "prop").length,
|
|
33
|
+
setCount: cartoonStarterPack.filter((entry) => entry.kind === "set").length,
|
|
34
|
+
allLicenseVerified: cartoonStarterPack.every((entry) => entry.license === "CC0" && entry.sourcePage.length > 0),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function cartoonStarterPackAssets() {
|
|
38
|
+
return cartoonStarterPack.map(toCanonical);
|
|
39
|
+
}
|
|
40
|
+
export function createCartoonStarterPackAdapter() {
|
|
41
|
+
return {
|
|
42
|
+
id: "cartoon-starter-pack",
|
|
43
|
+
label: "Aura3D curated cartoon starter pack",
|
|
44
|
+
async search(_query, _ctx) {
|
|
45
|
+
return cartoonStarterPackAssets();
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function starterCharacter(id, role, title, mirrorPath) {
|
|
50
|
+
return {
|
|
51
|
+
id,
|
|
52
|
+
kind: "character",
|
|
53
|
+
role,
|
|
54
|
+
title,
|
|
55
|
+
mirrorPath,
|
|
56
|
+
source: "kenney",
|
|
57
|
+
pack: "blocky-characters",
|
|
58
|
+
license: "CC0",
|
|
59
|
+
sourcePage: KENNEY_LICENSE_PAGE,
|
|
60
|
+
tags: ["cartoon", "stylized", "low-poly", "character", "humanoid", "starter", role, "rigged", "animated", "mouth", "viseme", "expression", "primitive mouth-card fallback"],
|
|
61
|
+
bounds: [0.8, 1.7, 0.8],
|
|
62
|
+
hasAnimations: true,
|
|
63
|
+
triangles: 8_000,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function starterProp(id, role, title, mirrorPath, tags) {
|
|
67
|
+
return {
|
|
68
|
+
id,
|
|
69
|
+
kind: "prop",
|
|
70
|
+
role,
|
|
71
|
+
title,
|
|
72
|
+
mirrorPath,
|
|
73
|
+
source: "kenney",
|
|
74
|
+
pack: "cartoon-starter-props",
|
|
75
|
+
license: "CC0",
|
|
76
|
+
sourcePage: KENNEY_LICENSE_PAGE,
|
|
77
|
+
tags: ["cartoon", "stylized", "low-poly", "prop", "starter", role, ...tags],
|
|
78
|
+
bounds: [1, 1, 1],
|
|
79
|
+
hasAnimations: false,
|
|
80
|
+
triangles: 12_000,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function starterSet(id, role, title, mirrorPath, tags) {
|
|
84
|
+
return {
|
|
85
|
+
id,
|
|
86
|
+
kind: "set",
|
|
87
|
+
role,
|
|
88
|
+
title,
|
|
89
|
+
mirrorPath,
|
|
90
|
+
source: "kenney",
|
|
91
|
+
pack: "cartoon-starter-sets",
|
|
92
|
+
license: "CC0",
|
|
93
|
+
sourcePage: KENNEY_LICENSE_PAGE,
|
|
94
|
+
tags: ["cartoon", "stylized", "low-poly", "set", "environment", "starter", role, ...tags],
|
|
95
|
+
bounds: [6, 2, 6],
|
|
96
|
+
hasAnimations: false,
|
|
97
|
+
triangles: 40_000,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function toCanonical(entry) {
|
|
101
|
+
return {
|
|
102
|
+
id: entry.id,
|
|
103
|
+
source: `starter:${entry.source}`,
|
|
104
|
+
title: entry.title,
|
|
105
|
+
description: `Curated ${entry.kind} for the Aura3D cartoon starter pack. Role: ${entry.role}. Source pack: ${entry.pack}.`,
|
|
106
|
+
url: `${CDN_BASE}/${entry.mirrorPath}`,
|
|
107
|
+
access: "direct-download",
|
|
108
|
+
format: "glb",
|
|
109
|
+
license: normalizeLicense(entry.license, entry.sourcePage),
|
|
110
|
+
sourcePage: entry.sourcePage,
|
|
111
|
+
attribution: "Kenney",
|
|
112
|
+
tags: entry.tags,
|
|
113
|
+
bounds: { size: entry.bounds },
|
|
114
|
+
hasAnimations: entry.hasAnimations,
|
|
115
|
+
triangles: entry.triangles,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=cartoon-starter-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartoon-starter-pack.js","sourceRoot":"","sources":["../../../../packages/asset-index/src/cartoon-starter-pack.ts"],"names":[],"mappings":"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"}
|