@zephyr3d/editor 0.3.7 → 0.3.8
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/assets/{index-ySiLtSxz.js → index-BZ1L8ggE.js} +43 -3
- package/dist/assistant/zephyr-types-index.json +13230 -9488
- package/dist/images/icon1024.png +0 -0
- package/dist/index.html +1 -1
- package/dist/modules/zephyr3d_backend-webgl.js +2 -0
- package/dist/modules/zephyr3d_backend-webgl.js.map +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js +457 -16
- package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
- package/dist/modules/zephyr3d_device.js +27 -0
- package/dist/modules/zephyr3d_device.js.map +1 -1
- package/dist/modules/zephyr3d_loaders.js +208 -1
- package/dist/modules/zephyr3d_loaders.js.map +1 -1
- package/dist/modules/zephyr3d_scene.js +774 -80
- package/dist/modules/zephyr3d_scene.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgl/dist/capabilities_webgl.js +2 -0
- package/dist/vendor/zephyr3d/backend-webgl/dist/capabilities_webgl.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js +2 -0
- package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/commandqueue.js +55 -10
- package/dist/vendor/zephyr3d/backend-webgpu/dist/commandqueue.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/computepass_webgpu.js +4 -0
- package/dist/vendor/zephyr3d/backend-webgpu/dist/computepass_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/device.js +44 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/device.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +58 -5
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/timestamp_query.js +297 -0
- package/dist/vendor/zephyr3d/backend-webgpu/dist/timestamp_query.js.map +1 -0
- package/dist/vendor/zephyr3d/device/dist/base_types.js.map +1 -1
- package/dist/vendor/zephyr3d/device/dist/device.js +27 -0
- package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
- package/dist/vendor/zephyr3d/device/dist/index.d.ts +81 -1
- package/dist/vendor/zephyr3d/loaders/dist/gltf/gltf_importer.js +208 -1
- package/dist/vendor/zephyr3d/loaders/dist/gltf/gltf_importer.js.map +1 -1
- package/dist/vendor/zephyr3d/loaders/dist/index.d.ts +8 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js +334 -63
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/morphtargetgrouptrack.js +66 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/morphtargetgrouptrack.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js +9 -0
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/index.d.ts +260 -4
- package/dist/vendor/zephyr3d/scene/dist/index.js +7 -0
- package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/sao.js +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/sao.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/executor.js +270 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js +19 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/types.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/scene.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/scene.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +2 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +70 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
- package/package.json +6 -6
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/convex_collider.js +0 -320
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/convex_collider.js.map +0 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { InterpolatorScalar } from '@zephyr3d/base';
|
|
2
|
+
import { AnimationTrack } from './animationtrack.js';
|
|
3
|
+
|
|
4
|
+
function clamp01(value) {
|
|
5
|
+
return value < 0 ? 0 : value > 1 ? 1 : value;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Animates a model-level morph target group by name.
|
|
9
|
+
* @public
|
|
10
|
+
*/ class MorphTargetGroupTrack extends AnimationTrack {
|
|
11
|
+
_groupName;
|
|
12
|
+
_interpolator;
|
|
13
|
+
_state;
|
|
14
|
+
/**
|
|
15
|
+
* Create a morph target group animation track.
|
|
16
|
+
* @param groupName - Morph target group name
|
|
17
|
+
* @param interpolator - Scalar interpolator for the group weight
|
|
18
|
+
* @param embedded - Whether this track is embedded
|
|
19
|
+
*/ constructor(groupName, interpolator, embedded){
|
|
20
|
+
super(embedded ?? false);
|
|
21
|
+
this._groupName = groupName ?? '';
|
|
22
|
+
this._interpolator = interpolator ?? InterpolatorScalar.constant(0);
|
|
23
|
+
this._state = [
|
|
24
|
+
0
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
/** Morph target group name controlled by this track. */ get groupName() {
|
|
28
|
+
return this._groupName;
|
|
29
|
+
}
|
|
30
|
+
set groupName(value) {
|
|
31
|
+
this._groupName = value ?? '';
|
|
32
|
+
}
|
|
33
|
+
/** Scalar interpolator for this track. */ get interpolator() {
|
|
34
|
+
return this._interpolator;
|
|
35
|
+
}
|
|
36
|
+
set interpolator(value) {
|
|
37
|
+
if (value && value.target !== 'number') {
|
|
38
|
+
throw new Error(`MorphTargetGroupTrack(): interpolator target must be 'number'`);
|
|
39
|
+
}
|
|
40
|
+
this._interpolator = value ?? InterpolatorScalar.constant(0);
|
|
41
|
+
}
|
|
42
|
+
/** {@inheritDoc AnimationTrack.clone} */ clone() {
|
|
43
|
+
return new MorphTargetGroupTrack(this._groupName, this._interpolator.clone(), false);
|
|
44
|
+
}
|
|
45
|
+
/** {@inheritDoc AnimationTrack.calculateState} */ calculateState(target, currentTime) {
|
|
46
|
+
this._interpolator.interpolate(currentTime, this._state);
|
|
47
|
+
return clamp01(this._state[0]);
|
|
48
|
+
}
|
|
49
|
+
/** {@inheritDoc AnimationTrack.applyState} */ applyState(node, weight) {
|
|
50
|
+
if (this._groupName) {
|
|
51
|
+
node.setMorphTargetGroupWeight(this._groupName, clamp01(weight));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** {@inheritDoc AnimationTrack.mixState} */ mixState(a, b, t) {
|
|
55
|
+
return a + (b - a) * t;
|
|
56
|
+
}
|
|
57
|
+
/** {@inheritDoc AnimationTrack.getBlendId} */ getBlendId() {
|
|
58
|
+
return `morph-target-group:${this._groupName}`;
|
|
59
|
+
}
|
|
60
|
+
/** {@inheritDoc AnimationTrack.getDuration} */ getDuration() {
|
|
61
|
+
return this._interpolator.maxTime;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { MorphTargetGroupTrack };
|
|
66
|
+
//# sourceMappingURL=morphtargetgrouptrack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"morphtargetgrouptrack.js","sources":["../../src/animation/morphtargetgrouptrack.ts"],"sourcesContent":["import { InterpolatorScalar } from '@zephyr3d/base';\r\nimport type { Interpolator } from '@zephyr3d/base';\r\nimport { AnimationTrack } from './animationtrack';\r\nimport type { SceneNode } from '../scene';\r\n\r\nfunction clamp01(value: number): number {\r\n return value < 0 ? 0 : value > 1 ? 1 : value;\r\n}\r\n\r\n/**\r\n * Animates a model-level morph target group by name.\r\n * @public\r\n */\r\nexport class MorphTargetGroupTrack extends AnimationTrack<number> {\r\n private _groupName: string;\r\n private _interpolator: Interpolator;\r\n private readonly _state: number[];\r\n /**\r\n * Create a morph target group animation track.\r\n * @param groupName - Morph target group name\r\n * @param interpolator - Scalar interpolator for the group weight\r\n * @param embedded - Whether this track is embedded\r\n */\r\n constructor(groupName?: string, interpolator?: Interpolator, embedded?: boolean) {\r\n super(embedded ?? false);\r\n this._groupName = groupName ?? '';\r\n this._interpolator = interpolator ?? InterpolatorScalar.constant(0);\r\n this._state = [0];\r\n }\r\n /** Morph target group name controlled by this track. */\r\n get groupName() {\r\n return this._groupName;\r\n }\r\n set groupName(value: string) {\r\n this._groupName = value ?? '';\r\n }\r\n /** Scalar interpolator for this track. */\r\n get interpolator() {\r\n return this._interpolator;\r\n }\r\n set interpolator(value: Interpolator) {\r\n if (value && value.target !== 'number') {\r\n throw new Error(`MorphTargetGroupTrack(): interpolator target must be 'number'`);\r\n }\r\n this._interpolator = value ?? InterpolatorScalar.constant(0);\r\n }\r\n /** {@inheritDoc AnimationTrack.clone} */\r\n clone(): this {\r\n return new MorphTargetGroupTrack(this._groupName, this._interpolator.clone(), false) as this;\r\n }\r\n /** {@inheritDoc AnimationTrack.calculateState} */\r\n calculateState(target: object, currentTime: number) {\r\n this._interpolator.interpolate(currentTime, this._state);\r\n return clamp01(this._state[0]);\r\n }\r\n /** {@inheritDoc AnimationTrack.applyState} */\r\n applyState(node: SceneNode, weight: number) {\r\n if (this._groupName) {\r\n node.setMorphTargetGroupWeight(this._groupName, clamp01(weight));\r\n }\r\n }\r\n /** {@inheritDoc AnimationTrack.mixState} */\r\n mixState(a: number, b: number, t: number) {\r\n return a + (b - a) * t;\r\n }\r\n /** {@inheritDoc AnimationTrack.getBlendId} */\r\n getBlendId() {\r\n return `morph-target-group:${this._groupName}`;\r\n }\r\n /** {@inheritDoc AnimationTrack.getDuration} */\r\n getDuration() {\r\n return this._interpolator.maxTime;\r\n }\r\n}\r\n"],"names":["clamp01","value","MorphTargetGroupTrack","AnimationTrack","_groupName","_interpolator","_state","groupName","interpolator","embedded","InterpolatorScalar","constant","target","Error","clone","calculateState","currentTime","interpolate","applyState","node","weight","setMorphTargetGroupWeight","mixState","a","b","t","getBlendId","getDuration","maxTime"],"mappings":";;;AAKA,SAASA,QAAQC,KAAa,EAAA;AAC5B,IAAA,OAAOA,KAAQ,GAAA,CAAA,GAAI,CAAIA,GAAAA,KAAAA,GAAQ,IAAI,CAAIA,GAAAA,KAAAA;AACzC;AAEA;;;IAIO,MAAMC,qBAA8BC,SAAAA,cAAAA,CAAAA;IACjCC,UAAmB;IACnBC,aAA4B;IACnBC,MAAiB;AAClC;;;;;AAKC,MACD,YAAYC,SAAkB,EAAEC,YAA2B,EAAEC,QAAkB,CAAE;AAC/E,QAAA,KAAK,CAACA,QAAY,IAAA,KAAA,CAAA;QAClB,IAAI,CAACL,UAAU,GAAGG,SAAa,IAAA,EAAA;AAC/B,QAAA,IAAI,CAACF,aAAa,GAAGG,YAAgBE,IAAAA,kBAAAA,CAAmBC,QAAQ,CAAC,CAAA,CAAA;QACjE,IAAI,CAACL,MAAM,GAAG;AAAC,YAAA;AAAE,SAAA;AACnB;6DAEA,IAAIC,SAAY,GAAA;QACd,OAAO,IAAI,CAACH,UAAU;AACxB;IACA,IAAIG,SAAAA,CAAUN,KAAa,EAAE;QAC3B,IAAI,CAACG,UAAU,GAAGH,KAAS,IAAA,EAAA;AAC7B;+CAEA,IAAIO,YAAe,GAAA;QACjB,OAAO,IAAI,CAACH,aAAa;AAC3B;IACA,IAAIG,YAAAA,CAAaP,KAAmB,EAAE;AACpC,QAAA,IAAIA,KAASA,IAAAA,KAAAA,CAAMW,MAAM,KAAK,QAAU,EAAA;AACtC,YAAA,MAAM,IAAIC,KAAAA,CAAM,CAAC,6DAA6D,CAAC,CAAA;AACjF;AACA,QAAA,IAAI,CAACR,aAAa,GAAGJ,KAASS,IAAAA,kBAAAA,CAAmBC,QAAQ,CAAC,CAAA,CAAA;AAC5D;AACA,8CACAG,KAAc,GAAA;QACZ,OAAO,IAAIZ,qBAAsB,CAAA,IAAI,CAACE,UAAU,EAAE,IAAI,CAACC,aAAa,CAACS,KAAK,EAAI,EAAA,KAAA,CAAA;AAChF;AACA,uDACAC,cAAAA,CAAeH,MAAc,EAAEI,WAAmB,EAAE;QAClD,IAAI,CAACX,aAAa,CAACY,WAAW,CAACD,WAAa,EAAA,IAAI,CAACV,MAAM,CAAA;AACvD,QAAA,OAAON,OAAQ,CAAA,IAAI,CAACM,MAAM,CAAC,CAAE,CAAA,CAAA;AAC/B;AACA,mDACAY,UAAAA,CAAWC,IAAe,EAAEC,MAAc,EAAE;QAC1C,IAAI,IAAI,CAAChB,UAAU,EAAE;AACnBe,YAAAA,IAAAA,CAAKE,yBAAyB,CAAC,IAAI,CAACjB,UAAU,EAAEJ,OAAQoB,CAAAA,MAAAA,CAAAA,CAAAA;AAC1D;AACF;AACA,iDACAE,QAASC,CAAAA,CAAS,EAAEC,CAAS,EAAEC,CAAS,EAAE;AACxC,QAAA,OAAOF,CAAI,GAACC,CAAAA,CAAAA,GAAID,CAAAA,IAAKE,CAAAA;AACvB;AACA,mDACAC,UAAa,GAAA;AACX,QAAA,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAACtB,UAAU,CAAE,CAAA;AAChD;AACA,oDACAuB,WAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAACtB,aAAa,CAACuB,OAAO;AACnC;AACF;;;;"}
|
|
@@ -10,6 +10,7 @@ import { NodeRotationTrack } from '../animation/rotationtrack.js';
|
|
|
10
10
|
import '../animation/eulerrotationtrack.js';
|
|
11
11
|
import { NodeScaleTrack } from '../animation/scaletrack.js';
|
|
12
12
|
import { MorphTargetTrack } from '../animation/morphtrack.js';
|
|
13
|
+
import { MorphTargetGroupTrack } from '../animation/morphtargetgrouptrack.js';
|
|
13
14
|
import { FixedGeometryCacheTrack } from '../animation/fixed_geometry_cache_track.js';
|
|
14
15
|
import { getDevice } from '../app/api.js';
|
|
15
16
|
import { PCAGeometryCacheTrack } from '../animation/pca_geometry_cache_track.js';
|
|
@@ -985,6 +986,14 @@ import { MToonMaterial } from '../material/mtoon.js';
|
|
|
985
986
|
animation.addTrack(mesh, morphTrack);
|
|
986
987
|
}
|
|
987
988
|
}
|
|
989
|
+
} else if (track.type === 'morph-target-group') {
|
|
990
|
+
const groupName = track.morphTargetGroupName;
|
|
991
|
+
if (groupName) {
|
|
992
|
+
const morphTargetGroupTrack = new MorphTargetGroupTrack(groupName, track.interpolator, true);
|
|
993
|
+
morphTargetGroupTrack.name = groupName;
|
|
994
|
+
morphTargetGroupTrack.target = group.persistentId;
|
|
995
|
+
animation.addTrack(group, morphTargetGroupTrack);
|
|
996
|
+
}
|
|
988
997
|
} else if (track.type === 'geometry-cache') {
|
|
989
998
|
const subMesh = track.node.mesh?.subMeshes[track.subMeshIndex];
|
|
990
999
|
const mesh = subMesh ? meshMap.get(subMesh) : null;
|