@3driseai/3drise-core 1.0.25 → 1.0.27
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/data/effectsDefaults.d.ts.map +1 -1
- package/dist/data/effectsDefaults.js +3 -1
- package/dist/data/index.d.ts +1 -0
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +1 -0
- package/dist/data/lightShadowDefaults.d.ts +14 -0
- package/dist/data/lightShadowDefaults.d.ts.map +1 -0
- package/dist/data/lightShadowDefaults.js +92 -0
- package/dist/properties/registry.d.ts.map +1 -1
- package/dist/properties/registry.js +7 -1
- package/dist/properties/tables/effectsProperties.d.ts.map +1 -1
- package/dist/properties/tables/effectsProperties.js +1 -0
- package/dist/types/generativeEffects.d.ts +2 -0
- package/dist/types/generativeEffects.d.ts.map +1 -1
- package/dist/types/scene3d.d.ts +31 -2
- package/dist/types/scene3d.d.ts.map +1 -1
- package/dist/utils/animationTargets.d.ts +57 -0
- package/dist/utils/animationTargets.d.ts.map +1 -0
- package/dist/utils/animationTargets.js +356 -0
- package/dist/utils/cdnUrls.d.ts +5 -0
- package/dist/utils/cdnUrls.d.ts.map +1 -0
- package/dist/utils/cdnUrls.js +8 -0
- package/dist/utils/handleMaterialEffects.d.ts +3 -0
- package/dist/utils/handleMaterialEffects.d.ts.map +1 -1
- package/dist/utils/handleMaterialEffects.js +29 -0
- package/dist/utils/handleTransformEffects.d.ts +14 -0
- package/dist/utils/handleTransformEffects.d.ts.map +1 -1
- package/dist/utils/handleTransformEffects.js +57 -30
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/materialApplicationUtils.d.ts +5 -1
- package/dist/utils/materialApplicationUtils.d.ts.map +1 -1
- package/dist/utils/materialApplicationUtils.js +9 -2
- package/dist/utils/objectEffects.d.ts +13 -0
- package/dist/utils/objectEffects.d.ts.map +1 -1
- package/dist/utils/objectEffects.js +53 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialApplicationUtils.d.ts","sourceRoot":"","sources":["../../src/utils/materialApplicationUtils.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAA4B,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrF,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAClE,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D
|
|
1
|
+
{"version":3,"file":"materialApplicationUtils.d.ts","sourceRoot":"","sources":["../../src/utils/materialApplicationUtils.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAA4B,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrF,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAClE,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,EAAE,aAAa,UAAQ,GAAG,IAAI,CAU/I;AAED,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,GAAI,KAAK,QAAQ,KAAG,OAA2D,CAAC;AAK9G;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAI/G;AACD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAQlH;AACD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAsCrF;AACD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE1F;AACD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEpD;AACD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AACD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAElE;AACD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAElE;AACD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,GAAG,CAAC,MAAM,CAGtC,CAAC;AACH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAC3D,OAAO,EAAE,KAAK,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC;KACd,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;IACH,KAAK,EAAE,KAAK,CAAC;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC;KACd,CAAC,CAAC;CACN,CA6BJ"}
|
|
@@ -32,15 +32,22 @@ export const SELF_OWNED_MATERIAL_KEY = '__ownsItsMaterial';
|
|
|
32
32
|
* with EDGES_GROUP_KEY, GEREATIVE_EFFECTS_KEY or SELF_OWNED_MATERIAL_KEY — unless obj itself
|
|
33
33
|
* carries that mark (so an edges group or generative effects group can still
|
|
34
34
|
* apply its own material via useMaterialApplication).
|
|
35
|
+
* `stopAtObjects`: also stop at the roots of child scene objects — an object's material
|
|
36
|
+
* never reaches the objects parented under it (they apply their own).
|
|
35
37
|
*/
|
|
36
|
-
export function traverseSkippingEdgesAndEffects(obj, isRoot, callback) {
|
|
38
|
+
export function traverseSkippingEdgesAndEffects(obj, isRoot, callback, stopAtObjects = false) {
|
|
37
39
|
if (!isRoot && (obj.userData[EDGES_GROUP_KEY] || obj.userData[GEREATIVE_EFFECTS_KEY] || obj.userData[SELF_OWNED_MATERIAL_KEY] || obj.userData[IMAGE_KEY]))
|
|
38
40
|
return;
|
|
41
|
+
// Another scene object (a child object of this one) owns its own material.
|
|
42
|
+
if (!isRoot && stopAtObjects && isSceneObjectRoot(obj))
|
|
43
|
+
return;
|
|
39
44
|
callback(obj);
|
|
40
45
|
for (const child of obj.children) {
|
|
41
|
-
traverseSkippingEdgesAndEffects(child, false, callback);
|
|
46
|
+
traverseSkippingEdgesAndEffects(child, false, callback, stopAtObjects);
|
|
42
47
|
}
|
|
43
48
|
}
|
|
49
|
+
/** The root of a scene object (the viewer's AnimatedObject tags it with its id and type). */
|
|
50
|
+
export const isSceneObjectRoot = (obj) => !!obj.userData?.id && !!obj.userData?.objectType;
|
|
44
51
|
// Known color property names on Three.js materials
|
|
45
52
|
const COLOR_PROPERTIES = new Set([
|
|
46
53
|
'color', 'emissive', 'specular', 'sheenColor', 'specularColor', 'attenuationColor'
|
|
@@ -9,6 +9,19 @@ export declare function objectTakesVisualEffects(o: {
|
|
|
9
9
|
type?: string;
|
|
10
10
|
config?: unknown;
|
|
11
11
|
} | null | undefined): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* A group's material goes to its children the way its visual effects do: a group has no surface,
|
|
14
|
+
* so applying a material to it applies it to every object inside it (any depth) that takes visual
|
|
15
|
+
* effects — meshes and models; objects drawing their own shaders (particles, grids, text, lights…)
|
|
16
|
+
* keep theirs. `targets` (child ids, any depth) narrows it: a chosen nested group stands for
|
|
17
|
+
* what is inside it. Each child keeps the material in its own settings.
|
|
18
|
+
*/
|
|
19
|
+
export declare function groupMaterialTargets<T extends {
|
|
20
|
+
id: string;
|
|
21
|
+
type?: string;
|
|
22
|
+
parentId?: string | null;
|
|
23
|
+
config?: unknown;
|
|
24
|
+
}>(objects: readonly T[], groupId: string, targets?: readonly string[] | null): T[];
|
|
12
25
|
/** A group's stagger when its clip sets none (see EffectSpread). */
|
|
13
26
|
export declare const DEFAULT_EFFECT_SPREAD: Required<EffectSpread>;
|
|
14
27
|
/** An object's effect clip (`effects`), or an empty one. The stored value itself — identity stays stable. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectEffects.d.ts","sourceRoot":"","sources":["../../src/utils/objectEffects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEzG;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG3G;AAED,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAAiD,CAAC;AAI3G,6GAA6G;AAC7G,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,CAGvG;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,EAAE,CAGlG;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAEjG;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAEtH"}
|
|
1
|
+
{"version":3,"file":"objectEffects.d.ts","sourceRoot":"","sources":["../../src/utils/objectEffects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEzG;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG3G;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACpH,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC3E,CAAC,EAAE,CAwBL;AAED,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAAiD,CAAC;AAI3G,6GAA6G;AAC7G,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,CAGvG;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,EAAE,CAGlG;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAEjG;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAEtH"}
|
|
@@ -8,6 +8,59 @@ export function objectTakesVisualEffects(o) {
|
|
|
8
8
|
// a group never draws an effect itself: its visual effects go to each child that takes them
|
|
9
9
|
return o?.type === 'mesh' || o?.type === 'model' || o?.type === 'group';
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* A group's material goes to its children the way its visual effects do: a group has no surface,
|
|
13
|
+
* so applying a material to it applies it to every object inside it (any depth) that takes visual
|
|
14
|
+
* effects — meshes and models; objects drawing their own shaders (particles, grids, text, lights…)
|
|
15
|
+
* keep theirs. `targets` (child ids, any depth) narrows it: a chosen nested group stands for
|
|
16
|
+
* what is inside it. Each child keeps the material in its own settings.
|
|
17
|
+
*/
|
|
18
|
+
export function groupMaterialTargets(objects, groupId, targets) {
|
|
19
|
+
const byParent = new Map();
|
|
20
|
+
for (const o of objects) {
|
|
21
|
+
if (!o.parentId)
|
|
22
|
+
continue;
|
|
23
|
+
const list = byParent.get(o.parentId);
|
|
24
|
+
if (list)
|
|
25
|
+
list.push(o);
|
|
26
|
+
else
|
|
27
|
+
byParent.set(o.parentId, [o]);
|
|
28
|
+
}
|
|
29
|
+
const out = [];
|
|
30
|
+
const seen = new Set();
|
|
31
|
+
const takes = (o) => o.type !== 'group' && objectTakesVisualEffects(o);
|
|
32
|
+
const add = (o) => { if (!seen.has(o.id) && takes(o)) {
|
|
33
|
+
seen.add(o.id);
|
|
34
|
+
out.push(o);
|
|
35
|
+
} };
|
|
36
|
+
const walk = (id) => { for (const c of byParent.get(id) ?? []) {
|
|
37
|
+
add(c);
|
|
38
|
+
walk(c.id);
|
|
39
|
+
} };
|
|
40
|
+
if (!targets?.length) {
|
|
41
|
+
walk(groupId);
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
// only targets inside this group
|
|
45
|
+
const inside = new Set();
|
|
46
|
+
const mark = (id) => { for (const c of byParent.get(id) ?? []) {
|
|
47
|
+
inside.add(c.id);
|
|
48
|
+
mark(c.id);
|
|
49
|
+
} };
|
|
50
|
+
mark(groupId);
|
|
51
|
+
for (const id of targets) {
|
|
52
|
+
if (!inside.has(id))
|
|
53
|
+
continue;
|
|
54
|
+
const o = objects.find(x => x.id === id);
|
|
55
|
+
if (!o)
|
|
56
|
+
continue;
|
|
57
|
+
if (o.type === 'group')
|
|
58
|
+
walk(o.id);
|
|
59
|
+
else
|
|
60
|
+
add(o);
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
11
64
|
/** A group's stagger when its clip sets none (see EffectSpread). */
|
|
12
65
|
export const DEFAULT_EFFECT_SPREAD = { order: 'tree', total: 0.6, out: 'reverse' };
|
|
13
66
|
const EMPTY = Object.freeze({ effects: [] });
|