@galacean/effects-threejs 2.9.1-beta.0 → 2.9.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/dist/index.js +198 -7
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +198 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects runtime threejs plugin for the web
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
|
|
6
|
-
* Version: v2.9.1
|
|
6
|
+
* Version: v2.9.1
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -32791,21 +32791,37 @@ function version36Migration(json) {
|
|
|
32791
32791
|
var itemWorldPerPixel = textItem.transform.scale.x / ((_textComponent_options_textWidth = (_textComponent_options = textComponent.options) == null ? void 0 : _textComponent_options.textWidth) != null ? _textComponent_options_textWidth : 1);
|
|
32792
32792
|
var defaultWorldPerPixel = 0.0123;
|
|
32793
32793
|
var scaleFactor = itemWorldPerPixel / defaultWorldPerPixel;
|
|
32794
|
+
var oldScaleX = textItem.transform.scale.x;
|
|
32795
|
+
var oldScaleY = textItem.transform.scale.y;
|
|
32796
|
+
var oldScaleZ = textItem.transform.scale.z;
|
|
32794
32797
|
for(var _iterator = _create_for_of_iterator_helper_loose(json.items), _step1; !(_step1 = _iterator()).done;){
|
|
32795
32798
|
var item = _step1.value;
|
|
32796
32799
|
if (item.parentId === textItem.id && item.transform) {
|
|
32797
|
-
item.transform.scale.x *=
|
|
32798
|
-
item.transform.scale.y *=
|
|
32799
|
-
item.transform.scale.z *=
|
|
32800
|
+
item.transform.scale.x *= oldScaleX / scaleFactor;
|
|
32801
|
+
item.transform.scale.y *= oldScaleY / scaleFactor;
|
|
32802
|
+
item.transform.scale.z *= oldScaleZ / scaleFactor;
|
|
32800
32803
|
}
|
|
32801
32804
|
}
|
|
32802
32805
|
textItem.transform.scale.x = scaleFactor;
|
|
32803
32806
|
textItem.transform.scale.y = scaleFactor;
|
|
32804
32807
|
textItem.transform.scale.z = scaleFactor;
|
|
32808
|
+
textItemScaleInfos.push({
|
|
32809
|
+
item: textItem,
|
|
32810
|
+
scaleFactor: scaleFactor,
|
|
32811
|
+
oldScaleX: oldScaleX,
|
|
32812
|
+
oldScaleY: oldScaleY,
|
|
32813
|
+
oldScaleZ: oldScaleZ
|
|
32814
|
+
});
|
|
32805
32815
|
}
|
|
32806
32816
|
};
|
|
32817
|
+
var _json_animations;
|
|
32807
32818
|
// 兼容老数据 text item 的 transform scale 问题,老版本 text item 的 scale 实际上是 size,新的版本中 scale 和 size 分离
|
|
32819
|
+
var textItemScaleInfos = [];
|
|
32808
32820
|
for(var _iterator = _create_for_of_iterator_helper_loose(json.items), _step; !(_step = _iterator()).done;)_loop();
|
|
32821
|
+
// 迁移 AnimationClip 中指向 text item 的 scaleCurves 关键帧
|
|
32822
|
+
if (textItemScaleInfos.length > 0 && ((_json_animations = json.animations) == null ? void 0 : _json_animations.length)) {
|
|
32823
|
+
migrateTextScaleCurves(json, textItemScaleInfos);
|
|
32824
|
+
}
|
|
32809
32825
|
// 生成 item 的 children 字段,CompositionComponent 的 children 字段
|
|
32810
32826
|
var itemMap = new Map();
|
|
32811
32827
|
var compositionMap = new Map();
|
|
@@ -33210,6 +33226,181 @@ function convertSpineData(resource, content, jsonScene) {
|
|
|
33210
33226
|
})
|
|
33211
33227
|
};
|
|
33212
33228
|
}
|
|
33229
|
+
/**
|
|
33230
|
+
* 批量迁移所有指向 textItem(或其子元素)的 scaleCurves 关键帧。
|
|
33231
|
+
* Animator 组件挂在 composition 上,path 从 composition 的顶层 item 开始解析。
|
|
33232
|
+
* 所有 Map 只构建一次,避免每个 text item 重复分配。
|
|
33233
|
+
*/ function migrateTextScaleCurves(json, textItemScaleInfos) {
|
|
33234
|
+
// 建立 id → item 和 id → children 映射
|
|
33235
|
+
var idToItem = new Map();
|
|
33236
|
+
var childrenMap = new Map();
|
|
33237
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(json.items), _step; !(_step = _iterator()).done;){
|
|
33238
|
+
var item = _step.value;
|
|
33239
|
+
idToItem.set(item.id, item);
|
|
33240
|
+
if (item.parentId) {
|
|
33241
|
+
var children = childrenMap.get(item.parentId);
|
|
33242
|
+
if (!children) {
|
|
33243
|
+
children = [];
|
|
33244
|
+
childrenMap.set(item.parentId, children);
|
|
33245
|
+
}
|
|
33246
|
+
children.push(item);
|
|
33247
|
+
}
|
|
33248
|
+
}
|
|
33249
|
+
// 为每个 textItem 收集子孙 id 集合,并建立 targetId → scaleInfo 的快速查找
|
|
33250
|
+
var textItemIdToInfo = new Map();
|
|
33251
|
+
var textChildIdToInfo = new Map();
|
|
33252
|
+
for(var _iterator1 = _create_for_of_iterator_helper_loose(textItemScaleInfos), _step1; !(_step1 = _iterator1()).done;){
|
|
33253
|
+
var info = _step1.value;
|
|
33254
|
+
textItemIdToInfo.set(info.item.id, info);
|
|
33255
|
+
// 只收集直接子节点,深层后代已通过直接子节点的静态 scale 调整继承了正确的变换
|
|
33256
|
+
var children1 = childrenMap.get(info.item.id);
|
|
33257
|
+
if (children1) {
|
|
33258
|
+
for(var _iterator2 = _create_for_of_iterator_helper_loose(children1), _step2; !(_step2 = _iterator2()).done;){
|
|
33259
|
+
var child = _step2.value;
|
|
33260
|
+
textChildIdToInfo.set(child.id, info);
|
|
33261
|
+
}
|
|
33262
|
+
}
|
|
33263
|
+
}
|
|
33264
|
+
// 建立 component id → component 映射
|
|
33265
|
+
var componentMap = new Map();
|
|
33266
|
+
for(var _iterator3 = _create_for_of_iterator_helper_loose(json.components), _step3; !(_step3 = _iterator3()).done;){
|
|
33267
|
+
var comp = _step3.value;
|
|
33268
|
+
componentMap.set(comp.id, comp);
|
|
33269
|
+
}
|
|
33270
|
+
// 建立 animation id → data 映射
|
|
33271
|
+
var animationMap = new Map();
|
|
33272
|
+
for(var _iterator4 = _create_for_of_iterator_helper_loose(json.animations), _step4; !(_step4 = _iterator4()).done;){
|
|
33273
|
+
var anim = _step4.value;
|
|
33274
|
+
animationMap.set(anim.id, anim);
|
|
33275
|
+
}
|
|
33276
|
+
// 遍历所有 composition,找 Animator 组件并处理其 scaleCurves
|
|
33277
|
+
for(var _iterator5 = _create_for_of_iterator_helper_loose(json.compositions), _step5; !(_step5 = _iterator5()).done;){
|
|
33278
|
+
var composition = _step5.value;
|
|
33279
|
+
var _animatorData_graphAsset, _graphAsset_graphDataSet;
|
|
33280
|
+
var animatorComp = void 0;
|
|
33281
|
+
var compositionComp = void 0;
|
|
33282
|
+
for(var _iterator6 = _create_for_of_iterator_helper_loose(composition.components), _step6; !(_step6 = _iterator6()).done;){
|
|
33283
|
+
var compRef = _step6.value;
|
|
33284
|
+
var comp1 = componentMap.get(compRef.id);
|
|
33285
|
+
if ((comp1 == null ? void 0 : comp1.dataType) === DataType.Animator) {
|
|
33286
|
+
animatorComp = comp1;
|
|
33287
|
+
} else if ((comp1 == null ? void 0 : comp1.dataType) === DataType.CompositionComponent) {
|
|
33288
|
+
compositionComp = comp1;
|
|
33289
|
+
}
|
|
33290
|
+
if (animatorComp && compositionComp) {
|
|
33291
|
+
break;
|
|
33292
|
+
}
|
|
33293
|
+
}
|
|
33294
|
+
if (!animatorComp) {
|
|
33295
|
+
continue;
|
|
33296
|
+
}
|
|
33297
|
+
// 获取 composition 的顶层 items
|
|
33298
|
+
var topItems = void 0;
|
|
33299
|
+
if (compositionComp) {
|
|
33300
|
+
var ccData = compositionComp;
|
|
33301
|
+
var items = ccData.items;
|
|
33302
|
+
if (items) {
|
|
33303
|
+
topItems = [];
|
|
33304
|
+
for(var _iterator7 = _create_for_of_iterator_helper_loose(items), _step7; !(_step7 = _iterator7()).done;){
|
|
33305
|
+
var ref = _step7.value;
|
|
33306
|
+
var item1 = idToItem.get(ref.id);
|
|
33307
|
+
if (item1 && !item1.parentId) {
|
|
33308
|
+
topItems.push(item1);
|
|
33309
|
+
}
|
|
33310
|
+
}
|
|
33311
|
+
}
|
|
33312
|
+
}
|
|
33313
|
+
if ((!topItems || topItems.length === 0) && composition.children) {
|
|
33314
|
+
topItems = [];
|
|
33315
|
+
for(var _iterator8 = _create_for_of_iterator_helper_loose(composition.children), _step8; !(_step8 = _iterator8()).done;){
|
|
33316
|
+
var ref1 = _step8.value;
|
|
33317
|
+
var item2 = idToItem.get(ref1.id);
|
|
33318
|
+
if (item2) {
|
|
33319
|
+
topItems.push(item2);
|
|
33320
|
+
}
|
|
33321
|
+
}
|
|
33322
|
+
}
|
|
33323
|
+
if (!topItems || topItems.length === 0) {
|
|
33324
|
+
continue;
|
|
33325
|
+
}
|
|
33326
|
+
// 获取 Animator 关联的 AnimationClip
|
|
33327
|
+
var animatorData = animatorComp;
|
|
33328
|
+
var graphAsset = animationMap.get((_animatorData_graphAsset = animatorData.graphAsset) == null ? void 0 : _animatorData_graphAsset.id);
|
|
33329
|
+
if (!(graphAsset == null ? void 0 : (_graphAsset_graphDataSet = graphAsset.graphDataSet) == null ? void 0 : _graphAsset_graphDataSet.resources)) {
|
|
33330
|
+
continue;
|
|
33331
|
+
}
|
|
33332
|
+
for(var _iterator9 = _create_for_of_iterator_helper_loose(graphAsset.graphDataSet.resources), _step9; !(_step9 = _iterator9()).done;){
|
|
33333
|
+
var clipRef = _step9.value;
|
|
33334
|
+
var clip = animationMap.get(clipRef.id);
|
|
33335
|
+
if (!(clip == null ? void 0 : clip.scaleCurves)) {
|
|
33336
|
+
continue;
|
|
33337
|
+
}
|
|
33338
|
+
for(var _iterator10 = _create_for_of_iterator_helper_loose(clip.scaleCurves), _step10; !(_step10 = _iterator10()).done;){
|
|
33339
|
+
var scaleCurve = _step10.value;
|
|
33340
|
+
var target = resolveTargetFromTopItems(topItems, scaleCurve.path, childrenMap);
|
|
33341
|
+
if (!target) {
|
|
33342
|
+
continue;
|
|
33343
|
+
}
|
|
33344
|
+
var selfInfo = textItemIdToInfo.get(target.id);
|
|
33345
|
+
if (selfInfo) {
|
|
33346
|
+
// 曲线指向 textItem 自身:从旧 scale 空间转换到新 scale 空间
|
|
33347
|
+
scaleVector3CurveKeyFrames(scaleCurve.keyFrames, selfInfo.scaleFactor / selfInfo.oldScaleX, selfInfo.scaleFactor / selfInfo.oldScaleY, selfInfo.scaleFactor / selfInfo.oldScaleZ);
|
|
33348
|
+
continue;
|
|
33349
|
+
}
|
|
33350
|
+
var childInfo = textChildIdToInfo.get(target.id);
|
|
33351
|
+
if (childInfo) {
|
|
33352
|
+
// 曲线指向 textItem 的子元素:补偿父元素 scale 变化
|
|
33353
|
+
scaleVector3CurveKeyFrames(scaleCurve.keyFrames, childInfo.oldScaleX / childInfo.scaleFactor, childInfo.oldScaleY / childInfo.scaleFactor, childInfo.oldScaleZ / childInfo.scaleFactor);
|
|
33354
|
+
}
|
|
33355
|
+
}
|
|
33356
|
+
}
|
|
33357
|
+
}
|
|
33358
|
+
}
|
|
33359
|
+
function resolveTargetFromTopItems(topItems, path, childrenMap) {
|
|
33360
|
+
var _loop = function(i) {
|
|
33361
|
+
var _childrenMap_get;
|
|
33362
|
+
current = (_childrenMap_get = childrenMap.get(current.id)) == null ? void 0 : _childrenMap_get.find(function(c) {
|
|
33363
|
+
return c.name === segments[i];
|
|
33364
|
+
});
|
|
33365
|
+
};
|
|
33366
|
+
if (!path) {
|
|
33367
|
+
return undefined;
|
|
33368
|
+
}
|
|
33369
|
+
var segments = path.split("/");
|
|
33370
|
+
var current = topItems.find(function(item) {
|
|
33371
|
+
return item.name === segments[0];
|
|
33372
|
+
});
|
|
33373
|
+
for(var i = 1; i < segments.length && current; i++)_loop(i);
|
|
33374
|
+
return current;
|
|
33375
|
+
}
|
|
33376
|
+
function scaleVector3CurveKeyFrames(keyFrames, factorX, factorY, factorZ) {
|
|
33377
|
+
if (!Array.isArray(keyFrames) || keyFrames[0] !== ValueType.VECTOR3_CURVE) {
|
|
33378
|
+
return;
|
|
33379
|
+
}
|
|
33380
|
+
var value = keyFrames[1];
|
|
33381
|
+
if (!Array.isArray(value) || value.length !== 3) {
|
|
33382
|
+
return;
|
|
33383
|
+
}
|
|
33384
|
+
scaleBezierValue(value[0], factorX);
|
|
33385
|
+
scaleBezierValue(value[1], factorY);
|
|
33386
|
+
scaleBezierValue(value[2], factorZ);
|
|
33387
|
+
}
|
|
33388
|
+
function scaleBezierValue(bezier, factor) {
|
|
33389
|
+
if (!Array.isArray(bezier) || bezier[0] !== ValueType.BEZIER_CURVE || !Array.isArray(bezier[1])) {
|
|
33390
|
+
return;
|
|
33391
|
+
}
|
|
33392
|
+
var keyframes = bezier[1];
|
|
33393
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(keyframes), _step; !(_step = _iterator()).done;){
|
|
33394
|
+
var kf = _step.value;
|
|
33395
|
+
if (!Array.isArray(kf) || kf.length < 2 || !Array.isArray(kf[1])) {
|
|
33396
|
+
continue;
|
|
33397
|
+
}
|
|
33398
|
+
var values = kf[1];
|
|
33399
|
+
for(var i = 1; i < values.length; i += 2){
|
|
33400
|
+
values[i] *= factor;
|
|
33401
|
+
}
|
|
33402
|
+
}
|
|
33403
|
+
}
|
|
33213
33404
|
|
|
33214
33405
|
function getStandardParticleContent(particle) {
|
|
33215
33406
|
var options = particle.options;
|
|
@@ -33486,7 +33677,7 @@ function getStandardSpriteContent(sprite, transform) {
|
|
|
33486
33677
|
return ret;
|
|
33487
33678
|
}
|
|
33488
33679
|
|
|
33489
|
-
var version$2 = "2.9.1
|
|
33680
|
+
var version$2 = "2.9.1";
|
|
33490
33681
|
var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
|
|
33491
33682
|
var standardVersion = /^(\d+)\.(\d+)$/;
|
|
33492
33683
|
var reverseParticle = false;
|
|
@@ -38540,7 +38731,7 @@ registerPlugin("text", TextLoader);
|
|
|
38540
38731
|
registerPlugin("sprite", SpriteLoader);
|
|
38541
38732
|
registerPlugin("particle", ParticleLoader);
|
|
38542
38733
|
registerPlugin("interact", InteractLoader);
|
|
38543
|
-
var version$1 = "2.9.1
|
|
38734
|
+
var version$1 = "2.9.1";
|
|
38544
38735
|
logger.info("Core version: " + version$1 + ".");
|
|
38545
38736
|
|
|
38546
38737
|
var _obj;
|
|
@@ -40114,7 +40305,7 @@ applyMixins(exports.ThreeTextComponent, [
|
|
|
40114
40305
|
*/ Mesh.create = function(engine, props) {
|
|
40115
40306
|
return new ThreeMesh(engine, props);
|
|
40116
40307
|
};
|
|
40117
|
-
var version = "2.9.1
|
|
40308
|
+
var version = "2.9.1";
|
|
40118
40309
|
logger.info("THREEJS plugin version: " + version + ".");
|
|
40119
40310
|
|
|
40120
40311
|
exports.ActivationMixerPlayable = ActivationMixerPlayable;
|