@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.mjs 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-beta.0
6
+ * Version: v2.9.1
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -32767,21 +32767,37 @@ function version36Migration(json) {
32767
32767
  var itemWorldPerPixel = textItem.transform.scale.x / ((_textComponent_options_textWidth = (_textComponent_options = textComponent.options) == null ? void 0 : _textComponent_options.textWidth) != null ? _textComponent_options_textWidth : 1);
32768
32768
  var defaultWorldPerPixel = 0.0123;
32769
32769
  var scaleFactor = itemWorldPerPixel / defaultWorldPerPixel;
32770
+ var oldScaleX = textItem.transform.scale.x;
32771
+ var oldScaleY = textItem.transform.scale.y;
32772
+ var oldScaleZ = textItem.transform.scale.z;
32770
32773
  for(var _iterator = _create_for_of_iterator_helper_loose(json.items), _step1; !(_step1 = _iterator()).done;){
32771
32774
  var item = _step1.value;
32772
32775
  if (item.parentId === textItem.id && item.transform) {
32773
- item.transform.scale.x *= textItem.transform.scale.x / scaleFactor;
32774
- item.transform.scale.y *= textItem.transform.scale.y / scaleFactor;
32775
- item.transform.scale.z *= textItem.transform.scale.z / scaleFactor;
32776
+ item.transform.scale.x *= oldScaleX / scaleFactor;
32777
+ item.transform.scale.y *= oldScaleY / scaleFactor;
32778
+ item.transform.scale.z *= oldScaleZ / scaleFactor;
32776
32779
  }
32777
32780
  }
32778
32781
  textItem.transform.scale.x = scaleFactor;
32779
32782
  textItem.transform.scale.y = scaleFactor;
32780
32783
  textItem.transform.scale.z = scaleFactor;
32784
+ textItemScaleInfos.push({
32785
+ item: textItem,
32786
+ scaleFactor: scaleFactor,
32787
+ oldScaleX: oldScaleX,
32788
+ oldScaleY: oldScaleY,
32789
+ oldScaleZ: oldScaleZ
32790
+ });
32781
32791
  }
32782
32792
  };
32793
+ var _json_animations;
32783
32794
  // 兼容老数据 text item 的 transform scale 问题,老版本 text item 的 scale 实际上是 size,新的版本中 scale 和 size 分离
32795
+ var textItemScaleInfos = [];
32784
32796
  for(var _iterator = _create_for_of_iterator_helper_loose(json.items), _step; !(_step = _iterator()).done;)_loop();
32797
+ // 迁移 AnimationClip 中指向 text item 的 scaleCurves 关键帧
32798
+ if (textItemScaleInfos.length > 0 && ((_json_animations = json.animations) == null ? void 0 : _json_animations.length)) {
32799
+ migrateTextScaleCurves(json, textItemScaleInfos);
32800
+ }
32785
32801
  // 生成 item 的 children 字段,CompositionComponent 的 children 字段
32786
32802
  var itemMap = new Map();
32787
32803
  var compositionMap = new Map();
@@ -33186,6 +33202,181 @@ function convertSpineData(resource, content, jsonScene) {
33186
33202
  })
33187
33203
  };
33188
33204
  }
33205
+ /**
33206
+ * 批量迁移所有指向 textItem(或其子元素)的 scaleCurves 关键帧。
33207
+ * Animator 组件挂在 composition 上,path 从 composition 的顶层 item 开始解析。
33208
+ * 所有 Map 只构建一次,避免每个 text item 重复分配。
33209
+ */ function migrateTextScaleCurves(json, textItemScaleInfos) {
33210
+ // 建立 id → item 和 id → children 映射
33211
+ var idToItem = new Map();
33212
+ var childrenMap = new Map();
33213
+ for(var _iterator = _create_for_of_iterator_helper_loose(json.items), _step; !(_step = _iterator()).done;){
33214
+ var item = _step.value;
33215
+ idToItem.set(item.id, item);
33216
+ if (item.parentId) {
33217
+ var children = childrenMap.get(item.parentId);
33218
+ if (!children) {
33219
+ children = [];
33220
+ childrenMap.set(item.parentId, children);
33221
+ }
33222
+ children.push(item);
33223
+ }
33224
+ }
33225
+ // 为每个 textItem 收集子孙 id 集合,并建立 targetId → scaleInfo 的快速查找
33226
+ var textItemIdToInfo = new Map();
33227
+ var textChildIdToInfo = new Map();
33228
+ for(var _iterator1 = _create_for_of_iterator_helper_loose(textItemScaleInfos), _step1; !(_step1 = _iterator1()).done;){
33229
+ var info = _step1.value;
33230
+ textItemIdToInfo.set(info.item.id, info);
33231
+ // 只收集直接子节点,深层后代已通过直接子节点的静态 scale 调整继承了正确的变换
33232
+ var children1 = childrenMap.get(info.item.id);
33233
+ if (children1) {
33234
+ for(var _iterator2 = _create_for_of_iterator_helper_loose(children1), _step2; !(_step2 = _iterator2()).done;){
33235
+ var child = _step2.value;
33236
+ textChildIdToInfo.set(child.id, info);
33237
+ }
33238
+ }
33239
+ }
33240
+ // 建立 component id → component 映射
33241
+ var componentMap = new Map();
33242
+ for(var _iterator3 = _create_for_of_iterator_helper_loose(json.components), _step3; !(_step3 = _iterator3()).done;){
33243
+ var comp = _step3.value;
33244
+ componentMap.set(comp.id, comp);
33245
+ }
33246
+ // 建立 animation id → data 映射
33247
+ var animationMap = new Map();
33248
+ for(var _iterator4 = _create_for_of_iterator_helper_loose(json.animations), _step4; !(_step4 = _iterator4()).done;){
33249
+ var anim = _step4.value;
33250
+ animationMap.set(anim.id, anim);
33251
+ }
33252
+ // 遍历所有 composition,找 Animator 组件并处理其 scaleCurves
33253
+ for(var _iterator5 = _create_for_of_iterator_helper_loose(json.compositions), _step5; !(_step5 = _iterator5()).done;){
33254
+ var composition = _step5.value;
33255
+ var _animatorData_graphAsset, _graphAsset_graphDataSet;
33256
+ var animatorComp = void 0;
33257
+ var compositionComp = void 0;
33258
+ for(var _iterator6 = _create_for_of_iterator_helper_loose(composition.components), _step6; !(_step6 = _iterator6()).done;){
33259
+ var compRef = _step6.value;
33260
+ var comp1 = componentMap.get(compRef.id);
33261
+ if ((comp1 == null ? void 0 : comp1.dataType) === DataType.Animator) {
33262
+ animatorComp = comp1;
33263
+ } else if ((comp1 == null ? void 0 : comp1.dataType) === DataType.CompositionComponent) {
33264
+ compositionComp = comp1;
33265
+ }
33266
+ if (animatorComp && compositionComp) {
33267
+ break;
33268
+ }
33269
+ }
33270
+ if (!animatorComp) {
33271
+ continue;
33272
+ }
33273
+ // 获取 composition 的顶层 items
33274
+ var topItems = void 0;
33275
+ if (compositionComp) {
33276
+ var ccData = compositionComp;
33277
+ var items = ccData.items;
33278
+ if (items) {
33279
+ topItems = [];
33280
+ for(var _iterator7 = _create_for_of_iterator_helper_loose(items), _step7; !(_step7 = _iterator7()).done;){
33281
+ var ref = _step7.value;
33282
+ var item1 = idToItem.get(ref.id);
33283
+ if (item1 && !item1.parentId) {
33284
+ topItems.push(item1);
33285
+ }
33286
+ }
33287
+ }
33288
+ }
33289
+ if ((!topItems || topItems.length === 0) && composition.children) {
33290
+ topItems = [];
33291
+ for(var _iterator8 = _create_for_of_iterator_helper_loose(composition.children), _step8; !(_step8 = _iterator8()).done;){
33292
+ var ref1 = _step8.value;
33293
+ var item2 = idToItem.get(ref1.id);
33294
+ if (item2) {
33295
+ topItems.push(item2);
33296
+ }
33297
+ }
33298
+ }
33299
+ if (!topItems || topItems.length === 0) {
33300
+ continue;
33301
+ }
33302
+ // 获取 Animator 关联的 AnimationClip
33303
+ var animatorData = animatorComp;
33304
+ var graphAsset = animationMap.get((_animatorData_graphAsset = animatorData.graphAsset) == null ? void 0 : _animatorData_graphAsset.id);
33305
+ if (!(graphAsset == null ? void 0 : (_graphAsset_graphDataSet = graphAsset.graphDataSet) == null ? void 0 : _graphAsset_graphDataSet.resources)) {
33306
+ continue;
33307
+ }
33308
+ for(var _iterator9 = _create_for_of_iterator_helper_loose(graphAsset.graphDataSet.resources), _step9; !(_step9 = _iterator9()).done;){
33309
+ var clipRef = _step9.value;
33310
+ var clip = animationMap.get(clipRef.id);
33311
+ if (!(clip == null ? void 0 : clip.scaleCurves)) {
33312
+ continue;
33313
+ }
33314
+ for(var _iterator10 = _create_for_of_iterator_helper_loose(clip.scaleCurves), _step10; !(_step10 = _iterator10()).done;){
33315
+ var scaleCurve = _step10.value;
33316
+ var target = resolveTargetFromTopItems(topItems, scaleCurve.path, childrenMap);
33317
+ if (!target) {
33318
+ continue;
33319
+ }
33320
+ var selfInfo = textItemIdToInfo.get(target.id);
33321
+ if (selfInfo) {
33322
+ // 曲线指向 textItem 自身:从旧 scale 空间转换到新 scale 空间
33323
+ scaleVector3CurveKeyFrames(scaleCurve.keyFrames, selfInfo.scaleFactor / selfInfo.oldScaleX, selfInfo.scaleFactor / selfInfo.oldScaleY, selfInfo.scaleFactor / selfInfo.oldScaleZ);
33324
+ continue;
33325
+ }
33326
+ var childInfo = textChildIdToInfo.get(target.id);
33327
+ if (childInfo) {
33328
+ // 曲线指向 textItem 的子元素:补偿父元素 scale 变化
33329
+ scaleVector3CurveKeyFrames(scaleCurve.keyFrames, childInfo.oldScaleX / childInfo.scaleFactor, childInfo.oldScaleY / childInfo.scaleFactor, childInfo.oldScaleZ / childInfo.scaleFactor);
33330
+ }
33331
+ }
33332
+ }
33333
+ }
33334
+ }
33335
+ function resolveTargetFromTopItems(topItems, path, childrenMap) {
33336
+ var _loop = function(i) {
33337
+ var _childrenMap_get;
33338
+ current = (_childrenMap_get = childrenMap.get(current.id)) == null ? void 0 : _childrenMap_get.find(function(c) {
33339
+ return c.name === segments[i];
33340
+ });
33341
+ };
33342
+ if (!path) {
33343
+ return undefined;
33344
+ }
33345
+ var segments = path.split("/");
33346
+ var current = topItems.find(function(item) {
33347
+ return item.name === segments[0];
33348
+ });
33349
+ for(var i = 1; i < segments.length && current; i++)_loop(i);
33350
+ return current;
33351
+ }
33352
+ function scaleVector3CurveKeyFrames(keyFrames, factorX, factorY, factorZ) {
33353
+ if (!Array.isArray(keyFrames) || keyFrames[0] !== ValueType.VECTOR3_CURVE) {
33354
+ return;
33355
+ }
33356
+ var value = keyFrames[1];
33357
+ if (!Array.isArray(value) || value.length !== 3) {
33358
+ return;
33359
+ }
33360
+ scaleBezierValue(value[0], factorX);
33361
+ scaleBezierValue(value[1], factorY);
33362
+ scaleBezierValue(value[2], factorZ);
33363
+ }
33364
+ function scaleBezierValue(bezier, factor) {
33365
+ if (!Array.isArray(bezier) || bezier[0] !== ValueType.BEZIER_CURVE || !Array.isArray(bezier[1])) {
33366
+ return;
33367
+ }
33368
+ var keyframes = bezier[1];
33369
+ for(var _iterator = _create_for_of_iterator_helper_loose(keyframes), _step; !(_step = _iterator()).done;){
33370
+ var kf = _step.value;
33371
+ if (!Array.isArray(kf) || kf.length < 2 || !Array.isArray(kf[1])) {
33372
+ continue;
33373
+ }
33374
+ var values = kf[1];
33375
+ for(var i = 1; i < values.length; i += 2){
33376
+ values[i] *= factor;
33377
+ }
33378
+ }
33379
+ }
33189
33380
 
33190
33381
  function getStandardParticleContent(particle) {
33191
33382
  var options = particle.options;
@@ -33462,7 +33653,7 @@ function getStandardSpriteContent(sprite, transform) {
33462
33653
  return ret;
33463
33654
  }
33464
33655
 
33465
- var version$2 = "2.9.1-beta.0";
33656
+ var version$2 = "2.9.1";
33466
33657
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
33467
33658
  var standardVersion = /^(\d+)\.(\d+)$/;
33468
33659
  var reverseParticle = false;
@@ -38516,7 +38707,7 @@ registerPlugin("text", TextLoader);
38516
38707
  registerPlugin("sprite", SpriteLoader);
38517
38708
  registerPlugin("particle", ParticleLoader);
38518
38709
  registerPlugin("interact", InteractLoader);
38519
- var version$1 = "2.9.1-beta.0";
38710
+ var version$1 = "2.9.1";
38520
38711
  logger.info("Core version: " + version$1 + ".");
38521
38712
 
38522
38713
  var _obj;
@@ -40090,7 +40281,7 @@ applyMixins(ThreeTextComponent, [
40090
40281
  */ Mesh.create = function(engine, props) {
40091
40282
  return new ThreeMesh(engine, props);
40092
40283
  };
40093
- var version = "2.9.1-beta.0";
40284
+ var version = "2.9.1";
40094
40285
  logger.info("THREEJS plugin version: " + version + ".");
40095
40286
 
40096
40287
  export { ActivationMixerPlayable, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AndNode, AndNodeData, Animatable, AnimationClip, AnimationClipNode, AnimationClipNodeData, AnimationEvent, AnimationGraphAsset, Animator, ApplyAdditiveNode, ApplyAdditiveNodeData, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BezierDataMap, BezierEasing, BezierLengthData, BezierMap, BezierPath, BezierQuat, BinaryAsset, BlendNode, BlendNodeData, BoolValueNode, BoundingBoxInfo, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPlayable, ColorPropertyMixerPlayable, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, ComponentTimePlayable, ComponentTimePlayableAsset, ComponentTimeTrack, Composition, CompositionComponent, CompressTextureCapabilityType, ConstBoolNode, ConstBoolNodeData, ConstFloatNode, ConstFloatNodeData, ConstraintTarget, ControlParameterBoolNode, ControlParameterBoolNodeData, ControlParameterFloatNode, ControlParameterFloatNodeData, ControlParameterTriggerNode, ControlParameterTriggerNodeData, DEFAULT_FONTS, DEFAULT_FPS, Database, Deferred, DestroyOptions, Downloader, DrawObjectPass, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectComponentTimeTrack, EffectsObject, EffectsPackage, Ellipse, Engine, EqualNodeData, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatComparisonNode, FloatComparisonNodeData, FloatPropertyMixerPlayable, FloatPropertyPlayableAsset, FloatPropertyTrack, FloatValueNode, FrameComponent, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, GraphInstance, GraphNode, GraphNodeData, Graphics, GraphicsPath, GreaterNodeData, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, InvalidIndex, Item, LayerBlendNode, LayerBlendNodeData, LessNodeData, LineSegments, LinearValue, MaskMode, MaskProcessor, MaskableGraphic, Material, MaterialDataBlock, MaterialRenderType, MaterialState, MaterialTrack, Mesh, NodeTransform, NotNode, NotNodeData, NotifyEvent, ObjectBindingTrack, OrNode, OrNodeData, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleMixerPlayable, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PlayState, Playable, PlayableAsset, PlayableOutput, Plugin, PluginSystem, PointerEventData, PointerEventType, PolyStar, Polygon, Pose, PoseNode, PositionConstraint, PostProcessVolume, Precomposition, PrecompositionManager, PropertyClipPlayable, PropertyTrack, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RaycastResult, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTargetPool, RenderTextureFormat, Renderbuffer, Renderer, RendererComponent, RuntimeClip, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0, SEMANTIC_PRE_COLOR_ATTACHMENT_0, SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0, SPRITE_VERTEX_STRIDE, Scene, SceneLoader, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, ShapePath, SourceType, SpriteColorMixerPlayable, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteComponentTimeTrack, SpriteLoader, StarType, StateMachineNode, StateMachineNodeData, StateNode, StateNodeData, StaticValue, SubCompositionClipPlayable, SubCompositionMixerPlayable, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TangentMode, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TexturePaintScaleMode, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelineInstance, TrackAsset, TrackMixerPlayable, TrackType, Transform, TransformMixerPlayable, TransformPlayable, TransformPlayableAsset, TransformTrack, TransitionNode, TransitionNodeData, TransitionState, UpdateModes, VFXItem, ValueGetter, ValueNode, Vector2Curve, Vector2PropertyMixerPlayable, Vector2PropertyPlayableAsset, Vector2PropertyTrack, Vector3Curve, Vector3PropertyMixerPlayable, Vector3PropertyTrack, Vector3ropertyPlayableAsset, Vector4Curve, Vector4PropertyMixerPlayable, Vector4PropertyPlayableAsset, Vector4PropertyTrack, WeightedMode, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, buildBezierData, buildEasingCurve, buildLine, calculateTranslation, canUseBOM, canvasPool, closePointEps, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createGLContext, createKeyFrameMeta, createShape, createValueGetter, curveEps, decimalEqual, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, extractMinAndMax, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTexture, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateWhiteTexture, getBackgroundImage, getClass, getColorFromGradientStops, getConfig, getControlPoints, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getKeyFrameMetaByRawValue, getMergedStore, getNodeDataClass, getParticleMeshShader, getPixelRatio, getPluginUsageInfo, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isOpenHarmony, isPlainObject, isPowerOfTwo, isSafeFontFamily, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, modifyMaxKeyframeShader, nearestPowerOfTwo, nodeDataClass, noop, normalizeColor, numberToFix, oldBezierKeyFramesToNew, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setRayFromCamera, setSideMode, setUniformValue, sortByOrder, index$1 as spec, textureLoaderRegistry, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };