@galacean/effects-threejs 1.2.2 → 1.2.4

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: v1.2.2
6
+ * Version: v1.2.4
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -9245,10 +9245,10 @@ var VFXItem = /** @class */ (function () {
9245
9245
  };
9246
9246
  VFXItem.prototype.translateByPixel = function (x, y) {
9247
9247
  if (this.composition) {
9248
+ // @ts-expect-error
9249
+ var _a = this.composition.renderer.canvas.getBoundingClientRect(), width = _a.width, height = _a.height;
9248
9250
  var z = this.transform.getWorldPosition().z;
9249
- var _a = this.composition.camera.getInverseVPRatio(z), rx = _a.x, ry = _a.y;
9250
- var width = this.composition.renderer.getWidth() / 2;
9251
- var height = this.composition.renderer.getHeight() / 2;
9251
+ var _b = this.composition.camera.getInverseVPRatio(z), rx = _b.x, ry = _b.y;
9252
9252
  this.transform.translate(2 * x * rx / width, -2 * y * ry / height, 0);
9253
9253
  }
9254
9254
  };
@@ -21354,8 +21354,9 @@ var Camera = /** @class */ (function () {
21354
21354
  Camera.prototype.getInverseVPRatio = function (z) {
21355
21355
  var pos = new Vector3(0, 0, z);
21356
21356
  var mat = this.getViewProjectionMatrix();
21357
- var nz = pos.applyMatrix(mat).z;
21358
- return new Vector3(1, 1, nz).applyMatrix(mat);
21357
+ var inverseVP = this.getInverseViewProjectionMatrix();
21358
+ var nz = mat.projectPoint(pos).z;
21359
+ return inverseVP.projectPoint(new Vector3(1, 1, nz));
21359
21360
  };
21360
21361
  /**
21361
21362
  * 设置相机的旋转四元数
@@ -21367,7 +21368,6 @@ var Camera = /** @class */ (function () {
21367
21368
  this.dirty = true;
21368
21369
  }
21369
21370
  else {
21370
- this.options.quat;
21371
21371
  if (!this.options.quat.equals(value)) {
21372
21372
  this.options.quat.copyFrom(value);
21373
21373
  this.dirty = true;
@@ -23468,6 +23468,26 @@ var AssetManager = /** @class */ (function () {
23468
23468
  var _a = options.timeout, timeout = _a === void 0 ? 10 : _a;
23469
23469
  this.timeout = timeout;
23470
23470
  };
23471
+ /**
23472
+ * 根据用户传入的参数修改场景数据
23473
+ */
23474
+ AssetManager.prototype.updateSceneData = function (compositions) {
23475
+ var variables = this.options.variables;
23476
+ if (!variables || Object.keys(variables).length <= 0) {
23477
+ return compositions;
23478
+ }
23479
+ compositions.forEach(function (composition) {
23480
+ composition.items.forEach(function (item) {
23481
+ if (item.type === ItemType$1.text) {
23482
+ var textVariable = variables[item.name];
23483
+ if (textVariable) {
23484
+ item.content.options.text = textVariable;
23485
+ }
23486
+ }
23487
+ });
23488
+ });
23489
+ return compositions;
23490
+ };
23471
23491
  /**
23472
23492
  * 场景创建,通过 json 创建出场景对象,并进行提前编译等工作
23473
23493
  * @param url - json 的 URL 链接或者 json 对象
@@ -23559,6 +23579,7 @@ var AssetManager = /** @class */ (function () {
23559
23579
  for (i = 0; i < scene.images.length; i++) {
23560
23580
  scene.textureOptions[i].image = scene.images[i];
23561
23581
  }
23582
+ scene.jsonScene.compositions = this.updateSceneData(scene.jsonScene.compositions);
23562
23583
  _e.label = 5;
23563
23584
  case 5: return [3 /*break*/, 12];
23564
23585
  case 6: return [4 /*yield*/, hookTimeInfo('processJSON', function () { return _this.processJSON(rawJSON); })];
@@ -23578,6 +23599,7 @@ var AssetManager = /** @class */ (function () {
23578
23599
  return [4 /*yield*/, hookTimeInfo('processTextures', function () { return _this.processTextures(loadedImages_1, loadedBins_1, jsonScene_1); })];
23579
23600
  case 10:
23580
23601
  loadedTextures = _e.sent();
23602
+ jsonScene_1.compositions = this.updateSceneData(jsonScene_1.compositions);
23581
23603
  scene = {
23582
23604
  url: url,
23583
23605
  renderLevel: this.options.renderLevel,
@@ -23677,16 +23699,17 @@ var AssetManager = /** @class */ (function () {
23677
23699
  };
23678
23700
  AssetManager.prototype.processBins = function (bins) {
23679
23701
  return __awaiter(this, void 0, void 0, function () {
23680
- var renderLevel, jobs;
23702
+ var renderLevel, baseUrl, jobs;
23681
23703
  var _this = this;
23682
23704
  return __generator(this, function (_a) {
23683
23705
  renderLevel = this.options.renderLevel;
23706
+ baseUrl = this.baseUrl;
23684
23707
  jobs = bins.map(function (bin) {
23685
23708
  if (bin instanceof ArrayBuffer) {
23686
23709
  return bin;
23687
23710
  }
23688
23711
  if (passRenderLevel(bin.renderLevel, renderLevel)) {
23689
- return _this.loadBins(bin.url);
23712
+ return _this.loadBins(new URL(bin.url, baseUrl).href);
23690
23713
  }
23691
23714
  throw new Error("Invalid bins source: ".concat(JSON.stringify(bins)));
23692
23715
  });
@@ -23704,13 +23727,14 @@ var AssetManager = /** @class */ (function () {
23704
23727
  return [2 /*return*/];
23705
23728
  }
23706
23729
  jobs = fonts.map(function (font) { return __awaiter(_this, void 0, void 0, function () {
23707
- var fontFace;
23730
+ var url, fontFace;
23708
23731
  var _a;
23709
23732
  return __generator(this, function (_b) {
23710
23733
  switch (_b.label) {
23711
23734
  case 0:
23712
23735
  if (!(font.fontURL && !AssetManager.fonts.has(font.fontFamily))) return [3 /*break*/, 4];
23713
- fontFace = new FontFace((_a = font.fontFamily) !== null && _a !== void 0 ? _a : '', 'url(' + font.fontURL + ')');
23736
+ url = new URL(font.fontURL, this.baseUrl).href;
23737
+ fontFace = new FontFace((_a = font.fontFamily) !== null && _a !== void 0 ? _a : '', 'url(' + url + ')');
23714
23738
  _b.label = 1;
23715
23739
  case 1:
23716
23740
  _b.trys.push([1, 3, , 4]);
@@ -23723,7 +23747,7 @@ var AssetManager = /** @class */ (function () {
23723
23747
  return [3 /*break*/, 4];
23724
23748
  case 3:
23725
23749
  _b.sent();
23726
- logger.warn("Invalid fonts source: ".concat(JSON.stringify(font.fontURL)));
23750
+ logger.warn("Invalid fonts source: ".concat(JSON.stringify(url)));
23727
23751
  return [3 /*break*/, 4];
23728
23752
  case 4: return [2 /*return*/];
23729
23753
  }
@@ -23955,7 +23979,7 @@ function createTextureOptionsBySource(image, sourceFrom) {
23955
23979
  return image.source;
23956
23980
  }
23957
23981
  else if (image instanceof HTMLImageElement ||
23958
- image instanceof HTMLCanvasElement) {
23982
+ isCanvas(image)) {
23959
23983
  return {
23960
23984
  image: image,
23961
23985
  sourceType: TextureSourceType.image,
@@ -23992,6 +24016,11 @@ function createTextureOptionsBySource(image, sourceFrom) {
23992
24016
  }
23993
24017
  throw new Error('Invalid texture options');
23994
24018
  }
24019
+ function isCanvas(cavnas) {
24020
+ var _a;
24021
+ // 小程序 Canvas 无法使用 instanceof HTMLCanvasElement 判断
24022
+ return typeof cavnas === 'object' && cavnas !== null && ((_a = cavnas.tagName) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === 'CANVAS';
24023
+ }
23995
24024
 
23996
24025
  var CompVFXItem = /** @class */ (function (_super) {
23997
24026
  __extends(CompVFXItem, _super);
@@ -26889,7 +26918,7 @@ Geometry.create = function (engine, options) {
26889
26918
  Mesh.create = function (engine, props) {
26890
26919
  return new ThreeMesh(engine, props);
26891
26920
  };
26892
- var version = "1.2.2";
26921
+ var version = "1.2.4";
26893
26922
  logger.info('THREEJS plugin version: ' + version);
26894
26923
 
26895
26924
  export { AbstractPlugin, AssetManager, BYTES_TYPE_MAP, BezierSegments, COMPRESSED_TEXTURE, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, CalculateItem, CalculateLoader, CalculateVFXItem, Camera, CameraController, CameraVFXItem, CameraVFXItemLoader, Composition, CompositionSourceManager, CurveValue, DEFAULT_FONTS, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, Engine, EventSystem, FILTER_NAME_NONE, FilterMode, FilterSpriteVFXItem, Float16ArrayWrapper, FrameBuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, HELP_LINK, HitTestType, InteractBehavior$1 as InteractBehavior, InteractItem, InteractLoader, InteractMesh, InteractVFXItem, Item, KTXTexture, LineSegments, LinearValue, Material, MaterialDataBlock, MaterialRenderType, Mesh, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleLoader, ParticleMesh, ParticleSystem, ParticleVFXItem, PassTextureCache, PathSegments, PluginSystem, QCanvasViewer, QText, QTextWrapMode, RENDER_PASS_NAME_PREFIX, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RenderBuffer, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTextureFormat, Renderer, 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, SemanticMap, Shader, ShaderCompileResultStatus, ShaderType, SpriteItem, SpriteLoader, SpriteMesh, SpriteVFXItem, StaticValue, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TextItem, TextLoader, TextMesh, TextVFXItem, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeMaterial, ThreeTexture, Ticker, TimelineComponent, Transform, VFXItem, ValueGetter, addByOrder, addItem, addItemWithOrder, alphaFrameFrag, alphaMaskFrag, assertExist, asserts, blend, bloomMixVert, bloomThresholdVert, calculateTranslation, cameraMove_frag as cameraMoveFrag, cameraMoveVert, canvasPool, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, combineImageTemplate1, combineImageTemplate1Async, combineImageTemplate2, combineImageTemplate2Async, combineImageTemplateAsync, compatible_frag as compatibleFrag, compatible_vert as compatibleVert, convertAnchor, copyFrag, createCopyShader, createFilter, createFilterShaders, createGLContext, createKeyFrameMeta, createShaderWithMarcos, createShape, createVFXItem, createValueGetter, deepClone, defaultGlobalVolume, defaultPlugins, delayFrag, deserializeMipmapTexture, distortionFrag, distortionVert, earcut, enlargeBuffer, ensureVec3, filters, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateHalfFloatTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTemplateCanvasPool, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getImageItemRenderInfo, getKTXTextureOptions, getKeyFrameMetaByRawValue, getParticleMeshShader, getPixelRatio, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAndroid, isArray, isFunction, isIOS, isObject, isScene, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isWebGL2, item_define as itemDefine, itemFrag, itemFrameFrag, itemVert, loadBinary, loadBlob, loadImage, loadVideo, loadWebPOptional, logger, index as math, maxSpriteMeshItemCount, maxSpriteTextureCount, modifyMaxKeyframeShader, nearestPowerOfTwo, noop, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap, particleVert, pluginLoaderMap, random, registerFilter, registerFilters, registerPlugin, removeItem, requestAsync, rotateVec2, screenMeshVert, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxFragmentTextures, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, spriteMeshShaderFromFilter, spriteMeshShaderFromRenderInfo, spriteMeshShaderIdFromRenderInfo, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecAssign, vecFill, vecMulCombine, vecNormalize, version };