@combeenation/3d-viewer 5.0.0-ar1 → 5.0.0-ar2

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.
@@ -25,6 +25,7 @@ export declare class Viewer extends EventBroadcaster {
25
25
  protected _gltfExportManager: GltfExportManager | null;
26
26
  protected _variantInstances: VariantInstanceManager | null;
27
27
  protected _cloneMaterialsOnMutation: boolean;
28
+ protected _isRenderLoopPaused: boolean;
28
29
  static version: string;
29
30
  /**
30
31
  * Constructor
@@ -146,6 +147,14 @@ export declare class Viewer extends EventBroadcaster {
146
147
  * Show coordinate system with given dimension (for debugging purpose).
147
148
  */
148
149
  showWorldCoordinates(dimension: number): void;
150
+ /**
151
+ * Pause render loop.
152
+ */
153
+ pauseRendering(): void;
154
+ /**
155
+ * Resume render loop when paused.
156
+ */
157
+ resumeRendering(): void;
149
158
  /**
150
159
  * @emits {@link Event.SCENE_PROCESSING_START}
151
160
  * @emits {@link Event.SCENE_PROCESSING_END}
@@ -52,6 +52,7 @@ var Viewer = /** @class */ (function (_super) {
52
52
  // default value is `true` ATM for compatibility reasons
53
53
  // in the future material cloning should be the edge case
54
54
  _this._cloneMaterialsOnMutation = true;
55
+ _this._isRenderLoopPaused = false;
55
56
  return _this;
56
57
  }
57
58
  Object.defineProperty(Viewer.prototype, "scene", {
@@ -215,7 +216,7 @@ var Viewer = /** @class */ (function (_super) {
215
216
  case 12:
216
217
  // create gltf export manager
217
218
  _c = this;
218
- return [4 /*yield*/, gltfExportManager_1.GltfExportManager.create(this.scene)];
219
+ return [4 /*yield*/, gltfExportManager_1.GltfExportManager.create(this)];
219
220
  case 13:
220
221
  // create gltf export manager
221
222
  _c._gltfExportManager = _d.sent();
@@ -230,7 +231,8 @@ var Viewer = /** @class */ (function (_super) {
230
231
  this.broadcastEvent(event_1.Event.BOOTSTRAP_END, this);
231
232
  // render loop
232
233
  this.engine.runRenderLoop(function () {
233
- _this.scene.render();
234
+ if (!_this._isRenderLoopPaused)
235
+ _this.scene.render();
234
236
  });
235
237
  return [2 /*return*/, this];
236
238
  }
@@ -525,6 +527,18 @@ var Viewer = /** @class */ (function (_super) {
525
527
  var zChar = makeTextPlane('Z', 'blue', dimension / 10);
526
528
  zChar.position = new math_vector_1.Vector3(0, 0.05 * dimension, 0.9 * dimension);
527
529
  };
530
+ /**
531
+ * Pause render loop.
532
+ */
533
+ Viewer.prototype.pauseRendering = function () {
534
+ this._isRenderLoopPaused = true;
535
+ };
536
+ /**
537
+ * Resume render loop when paused.
538
+ */
539
+ Viewer.prototype.resumeRendering = function () {
540
+ this._isRenderLoopPaused = false;
541
+ };
528
542
  /**
529
543
  * @emits {@link Event.SCENE_PROCESSING_START}
530
544
  * @emits {@link Event.SCENE_PROCESSING_END}
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/api/classes/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../../src/api/classes/viewer.ts"],"names":[],"mappings":";;;;AACA,2EAA0E;AAE1E,qEAAoE;AACpE,yDAAwD;AACxD,wEAAuE;AACvE,+EAA8E;AAC9E,oFAAmF;AACnF,+DAA0D;AAC1D,iEAA4D;AAC5D,oDAAmD;AACnD,wEAAuE;AAEvE,8EAA6E;AAC7E,uCAAqC;AACrC,uDAA+C;AAC/C,qDAAoD;AACpD,gEAA+D;AAC/D,kEAAiE;AACjE,wDAAuD;AACvD,4EAA2E;AAC3E,oDAAmD;AACnD,yDAA4D;AAC5D,iCAAgC;AAChC,uDAAsD;AACtD,yCAAwC;AACxC,qCAAoC;AAGpC;;;;;;;;GAQG;AACH;IAA4B,kCAAgB;IAmB1C;;OAEG;IACH,gBAAmC,MAAyB,EAAY,aAAqC;QAA7G,YACE,iBAAO,SACR;QAFkC,YAAM,GAAN,MAAM,CAAmB;QAAY,mBAAa,GAAb,aAAa,CAAwB;QArBnG,YAAM,GAAiB,IAAI,CAAC;QAE5B,uBAAiB,GAA4B,IAAI,CAAC;QAElD,mBAAa,GAAwB,IAAI,CAAC;QAE1C,wBAAkB,GAA6B,IAAI,CAAC;QAEpD,uBAAiB,GAAkC,IAAI,CAAC;QAElE,wDAAwD;QACxD,yDAAyD;QAC/C,+BAAyB,GAAY,IAAI,CAAC;QAE1C,yBAAmB,GAAY,KAAK,CAAC;;IAS/C,CAAC;IAOD,sBAAI,yBAAK;QALT;;;;WAIG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;aACpD;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;;;OAAA;IAOD,sBAAI,gCAAY;QALhB;;;;WAIG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC3D;YACD,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;;;OAAA;IAOD,sBAAI,qCAAiB;QALrB;;;;WAIG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC5B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAChE;YACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;;;OAAA;IAKD,sBAAI,0BAAM;QAHV;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,CAAC;;;OAAA;IAOD,sBAAI,oCAAgB;QALpB;;;;WAIG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC3B,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;aACpD;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;;;OAAA;IAOD,sBAAI,oCAAgB;QALpB;;;;WAIG;aACH;YACE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC3D;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;;;OAAA;IAKD,sBAAI,4CAAwB;QAH5B;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,yBAAyB,CAAC;QACxC,CAAC;;;OAAA;IAED;;;;;;;;;;;OAWG;IACU,0BAAS,GAAtB;;;;;;;wBACE,IAAI,CAAC,cAAc,CAAC,aAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;6BAE7C,oBAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAA5B,wBAA4B;wBAClB,qBAAM,yBAAQ,CAAgB,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAA7D,SAAS,GAAG,SAAiD,CAAC;;;wBAE9D,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;;;wBAEjC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;4BACpB,MAAM,IAAI,KAAK,CAAC,gDAA8C,CAAC,CAAC;yBACjE;wBACD,kBAAkB;wBAClB,yBAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;6BAElC,oBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAzB,wBAAyB;wBACT,qBAAM,yBAAQ,CAAY,SAAS,CAAC,KAAK,CAAC,EAAA;;wBAAtD,SAAS,GAAG,SAA0C;wBAC5D,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;;;wBAE9B,KAAA,IAAI,CAAA;wBAAU,qBAAM,IAAI,CAAC,SAAS,EAAE,EAAA;;wBAApC,GAAK,MAAM,GAAG,SAAsB,CAAC;wBAEjB,qBAAM,iBAAO,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,EAAA;;wBAAxD,WAAW,GAAG,SAA0C;wBAC9D,KAAA,IAAI,CAAA;wBAAqB,qBAAM,+CAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA;;wBAAzE,GAAK,iBAAiB,GAAG,SAAgD,CAAC;6BAEtE,SAAS,CAAC,KAAK,EAAf,yBAAe;6BACb,oBAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAzB,yBAAyB;wBACT,qBAAM,yBAAQ,CAAY,SAAS,CAAC,KAAK,CAAC,EAAA;;wBAAtD,SAAS,GAAG,SAA0C;wBAC5D,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;;6BAE9B,qBAAM,IAAI,CAAC,sBAAsB,EAAE,EAAA;;wBAAnC,SAAmC,CAAC;;;wBAEtC,6BAA6B;wBAC7B,KAAA,IAAI,CAAA;wBAAsB,qBAAM,qCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAA;;wBAD9D,6BAA6B;wBAC7B,GAAK,kBAAkB,GAAG,SAAoC,CAAC;wBAC/D,iBAAiB;wBACjB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,yBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACzE,uCAAuC;wBACvC,qBAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAA;;wBADjC,uCAAuC;wBACvC,SAAiC,CAAC;wBAClC,qBAAqB;wBACrB,IAAI,CAAC,cAAc,CAAC,aAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;wBAC/C,cAAc;wBACd,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;4BACxB,IAAI,CAAC,KAAI,CAAC,mBAAmB;gCAAE,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBACrD,CAAC,CAAC,CAAC;wBACH,sBAAO,IAAI,EAAC;;;;KACb;IAED;;;OAGG;IACU,iCAAgB,GAA7B,UAA8B,OAA2B;;;;;;oCACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,0CAAE,WAAW,GAAG,QAAQ,CAAC,KAAK;wBACpD,yEAAa,yCAAyC,CAAC,sBAAsB,OAAC;;wBAA9E,SAA8E,CAAC;wBAC/E,qBAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAA;;wBAAzC,SAAyC,CAAC;;;wBAE1C,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;;;;;;KAE9E;IAED;;OAEG;IACI,wCAAuB,GAA9B;QAAA,iBAKC;QAJC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAA,eAAe;YAC/C,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,uBAAM,GAAb;QACE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACU,wBAAO,GAApB,UACE,mBAA2B,EAC3B,iBAAqC,EACrC,cAAkC;;;;;4BAEV,qBAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAA;;wBAAtE,eAAe,GAAG,SAAoD;wBAC5E,sBAAO,eAAe,CAAC,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAC;;;;KACnE;IAED;;;OAGG;IACU,wBAAO,GAApB,UACE,mBAA2B,EAC3B,iBAAqC,EACrC,cAAkC;;;;;4BAEV,qBAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAA;;wBAAtE,eAAe,GAAG,SAAoD;wBAC5E,sBAAO,eAAe,CAAC,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAC;;;;KACnE;IAED;;;;OAIG;IACI,6BAAY,GAAnB,UAAoB,SAAiB,EAAE,KAAqB;QAArB,sBAAA,EAAA,YAAqB;QAC1D,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,MAAM,EAAE;YACV,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAC7C,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAG,CAAC,CAAC;aAC/D;YACD,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,YAAY,EAAE,CAAC;aACvB;YACD,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAG,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,aAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;SACpD;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,oBAAiB,SAAS,kBAAc,CAAC,CAAC;SAC3D;QACD,6DAA6D;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACU,mCAAkB,GAA/B,UACE,SAAuC,EACvC,SAAwC;;;gBAExC,sBAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,EAAC;;;KACvG;IAED;;OAEG;IACI,2BAAU,GAAjB,UAAkB,QAA6B;QAA/C,iBAqBC;QApBC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;;YACjC,IAAI,CAAC,KAAI,CAAC,MAAM,EAAE;gBAChB,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE;gBACf,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC;aAChC;YACD,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,oGAAoG;YACzH,iCAAe,CAAC,iCAAiC,CAC/C,KAAI,CAAC,MAAM,EACX,KAAI,CAAC,YAAY,CAAC,YAAY,QAC9B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,mCAAI,EAAE,KAAK,EAAE,KAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EACtF,OAAO,QACP,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,WAAW,QACjC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,mCAAI,CAAC,QACtB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,mCAAI,KAAK,QAC/B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,mCAAI,gBAAgB,QACtC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,mCAAI,KAAK,CACjC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACU,mCAAkB,GAA/B;;;;4BACS,qBAAM,yCAAmB,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAA;4BAAxE,sBAAO,SAAiE,EAAC;;;;KAC1E;IAED;;OAEG;IACU,qCAAoB,GAAjC;;;;gBACE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;iBAChE;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,iEAAiE;gBAChF,MAAM,GAAG,kBAAkB,CAAC;gBAE5B,KAAe,IAAI,CAAC,KAAK,CAAC,MAAM;qBACnC,MAAM,CAAC,UAAA,IAAI;oBACV,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnC,wEAAwE;oBACxE,IAAM,aAAa,GAAG,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;oBACzC,4CAA4C;oBAC5C,IAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC1E,OAAO,SAAS,IAAI,aAAa,IAAI,gBAAgB,CAAC;gBACxD,CAAC,CAAC;qBACD,MAAM,CACL,UAAC,aAAa,EAAE,OAAO,EAAE,GAAG;oBAC1B,IAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC;oBACnD,iGAAiG;oBACjG,IAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBACnG,IAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBACnG,OAAO,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,CAAC;gBACtB,CAAC,EACD,EAAE,GAAG,EAAE,IAAI,qBAAO,EAAE,EAAE,GAAG,EAAE,IAAI,qBAAO,EAAE,EAAE,CAC3C,EAlBK,GAAG,SAAA,EAAE,GAAG,SAAA,CAkBZ;gBAEA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAS,CAAC;gBAC3D,IAAI,CAAC,WAAW,EAAE;oBAChB,WAAW,GAAG,IAAI,WAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC5C;gBACD,WAAW,CAAC,eAAe,CAAC,IAAI,2BAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxD,sBAAO,WAAW,EAAC;;;KACpB;IAED;;OAEG;IACU,sCAAqB,GAAlC,UAAmC,QAA4B;;;;;;wBAEvD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;wBAC7C,IAAI,CAAC,YAAY,EAAE;4BACjB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;yBACzE;wBACD,IAAI,CAAC,CAAC,YAAY,YAAY,iCAAe,CAAC,EAAE;4BACxC,aAAa,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;4BAClD,MAAM,IAAI,KAAK,CAAC,sBAAmB,aAAa,wDAAoD,CAAC,CAAC;yBACvG;wBAGmB,qBAAM,IAAI,CAAC,oBAAoB,EAAE,EAAA;;wBAA/C,WAAW,GAAG,SAAiC;wBAG/C,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;wBACxE,qBAAM,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAA;;wBAA7E,SAA6E,CAAC;wBAE9E,2BAA2B;wBAC3B,YAAY,CAAC,OAAO,EAAE,CAAC;;;;;KACxB;IAED;;;OAGG;IACU,sBAAK,GAAlB;;;;4BACE,qBAAM,IAAI,CAAC,OAAO,EAAE,EAAA;;wBAApB,SAAoB,CAAC;wBACrB,sBAAO,IAAI,CAAC,SAAS,EAAE,EAAC;;;;KACzB;IAED;;;;;OAKG;IACI,wBAAO,GAAd;QACE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,yBAAW,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,qCAAoB,GAA3B,UAA4B,SAAiB;QAC3C,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,aAAa,GAAG,UAAU,IAAY,EAAE,KAAa,EAAE,IAAY;YACvE,IAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7E,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/B,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACpF,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/D,KAAK,CAAC,QAAQ,GAAG,IAAI,mCAAgB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAClE,KAAK,CAAC,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC;YACvC,aAAa;YACb,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,mBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,aAAa;YACb,KAAK,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAC5B,OAAO,EACP;YACE,qBAAO,CAAC,IAAI,EAAE;YACd,IAAI,qBAAO,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,qBAAO,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;YAClD,IAAI,qBAAO,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,qBAAO,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;SACpD,EACD,KAAK,CACN,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,IAAI,mBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,QAAQ,GAAG,IAAI,qBAAO,CAAC,GAAG,GAAG,SAAS,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;QACpE,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAC5B,OAAO,EACP;YACE,qBAAO,CAAC,IAAI,EAAE;YACd,IAAI,qBAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5B,IAAI,qBAAO,CAAC,CAAC,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC;YACnD,IAAI,qBAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5B,IAAI,qBAAO,CAAC,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC;SACnD,EACD,KAAK,CACN,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,IAAI,mBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC;QAC1D,KAAK,CAAC,QAAQ,GAAG,IAAI,qBAAO,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;QACpE,IAAM,KAAK,GAAG,WAAI,CAAC,WAAW,CAC5B,OAAO,EACP;YACE,qBAAO,CAAC,IAAI,EAAE;YACd,IAAI,qBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;YAC5B,IAAI,qBAAO,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;YACnD,IAAI,qBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;YAC5B,IAAI,qBAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;SACnD,EACD,KAAK,CACN,CAAC;QACF,KAAK,CAAC,KAAK,GAAG,IAAI,mBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,QAAQ,GAAG,IAAI,qBAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACI,+BAAc,GAArB;QACE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,gCAAe,GAAtB;QACE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IACnC,CAAC;IAED;;;OAGG;IACa,0BAAS,GAAzB;;;;;;;;wBACQ,SAAS,GAAG,yBAAW,CAAC,GAAG,CAAY,OAAO,CAAC,CAAC;wBACtD,IAAI,CAAC,cAAc,CAAC,aAAK,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;wBACvD,MAAM,GAAG,IAAI,eAAM,CACvB,IAAI,CAAC,MAA2B,cAChC,SAAS,CAAC,MAAM,0CAAE,YAAY,mCAAI,KAAK,QACvC,SAAS,CAAC,MAAM,0CAAE,OAAO,CAC1B,CAAC;wBACY,qBAAM,uBAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAA;;wBAA3C,KAAK,GAAG,SAAmC;wBACjD,IAAI,SAAS,CAAC,WAAW,EAAE;4BACzB,IAAI,+BAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;4BACrC,KAAK,CAAC,aAAa,GAAG,UAAC,YAA2B,EAAE,QAAqB;gCACvE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oCACjB,OAAO;iCACR;gCACD,IAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC;gCACjC,KAAI,CAAC,cAAc,CAAC,aAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gCAC7F,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,EAAE;oCAC1B,KAAI,CAAC,cAAc,CAAC,aAAK,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iCAClE;gCACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,OAAO,EAAE;oCAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,qBAAS,CAAC,iBAAiB,CAAC,EAAE;wCAC1E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;qCACzC;oCACD,KAAI,CAAC,cAAc,CAAC,aAAK,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iCAClE;4BACH,CAAC,CAAC;yBACH;wBACD,KAAA,IAAI,CAAA;wBAAiB,qBAAM,2BAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;wBAArD,GAAK,aAAa,GAAG,SAAgC,CAAC;wBACtD,KAAA,IAAI,CAAA;wBAAqB,qBAAM,mCAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;wBAA7D,GAAK,iBAAiB,GAAG,SAAoC,CAAC;wBAC9D,IAAI,SAAS,CAAC,wBAAwB,KAAK,SAAS,EAAE;4BACpD,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC,wBAAwB,CAAC;yBACrE;wBACD,IAAI,CAAC,cAAc,CAAC,aAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;wBACvD,sBAAO,KAAK,EAAC;;;;KACd;IAED;;OAEG;IACa,uCAAsB,GAAtC;;;;;;wBACQ,SAAS,GAAG,yBAAW,CAAC,GAAG,CAAY,OAAO,CAAC,CAAC;wBAChD,SAAS,GAAG,EAAE,CAAC;8BAC+B,EAAnB,KAAA,SAAS,CAAC,SAAS;;;6BAAnB,CAAA,cAAmB,CAAA;wBAAzC,kBAAkB;wBAC3B,IAAI,kBAAkB,CAAC,IAAI,EAAE;4BAC3B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;4BACnD,wBAAS;yBACV;wBACD,KAAA,CAAA,KAAA,SAAS,CAAA,CAAC,IAAI,CAAA;wBACZ,qBAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAChC,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,IAAI,EACvB,kBAAkB,CAAC,UAAU,CAC9B,EAAA;;wBALH,cACE,SAIC,EACF,CAAC;;;wBAX6B,IAAmB,CAAA;;4BAapD,sBAAO,SAAS,EAAC;;;;KAClB;IAED;;OAEG;IACK,uCAAsB,GAA9B,UAA+B,WAAiB,EAAE,QAA4B;;QAC5E,iGAAiG;QACjG,IAAM,YAAY,GAAG,IAAI,iCAAe,CACtC,mBAAmB,EACnB,CAAC,EAAE,kEAAkE;QACrE,CAAC,EACD,CAAC,EAAE,qDAAqD;QACxD,qBAAO,CAAC,IAAI,EAAE,EACd,IAAI,CAAC,KAAK,CACX,CAAC;QACF,6GAA6G;QAC7G,wFAAwF;QACxF,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEvC,sEAAsE;QACtE,6CAA6C;QAC7C,2IAA2I;QAC3I,IAAM,MAAM,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;QACnE,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QAE9C,6EAA6E;QAC7E,8EAA8E;QAC9E,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC1C,YAAY,CAAC,KAAK,GAAG,OAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,mCAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAChE,YAAY,CAAC,IAAI,GAAG,OAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,mCAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAE7D,mCAAmC;QACnC,sFAAsF;QACtF,YAAY,CAAC,YAAY,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,KAAI,CAAC,CAAC;QACxD,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;QAEzC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACW,6CAA4B,GAA1C,UACE,YAA6B,EAC7B,YAA6B,EAC7B,QAA4B;;;;;;wBAE5B,SAAS;wBACT,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;wBACtC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;wBACtC,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;wBAC9D,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;wBAE9D,sBAAsB;wBACtB,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,oBAAoB,MAAK,KAAK,EAAE;4BAC5C,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;yBAC3D;wBACD,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,wBAAwB,MAAK,KAAK,EAAE;4BAChD,YAAY,CAAC,kBAAkB,GAAG,YAAY,CAAC,kBAAkB,CAAC;yBACnE;wBACD,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,oBAAoB,MAAK,KAAK,EAAE;4BAC5C,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;yBAC3D;wBAIK,iBAAiB,GAAwB;4BAC7C,KAAK,EAAE,YAAY,CAAC,KAAK;4BACzB,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,MAAM,EAAE,YAAY,CAAC,MAAM;4BAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;yBAC5B,CAAC;wBACF,qBAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC,EAAA;;wBAApG,SAAoG,CAAC;;;;;KACtG;IAhjBM,cAAO,GAAG,wBAAO,CAAC;IAijB3B,aAAC;CAAA,AAlkBD,CAA4B,mCAAgB,GAkkB3C;AAlkBY,wBAAM"}
@@ -1,20 +1,21 @@
1
- import { Scene } from '@babylonjs/core/scene';
1
+ import { PBRMaterial } from '@babylonjs/core/Materials/PBR/pbrMaterial';
2
2
  import { IExportOptions } from '@babylonjs/serializers';
3
3
  export declare class GltfExportManager {
4
- protected scene: Scene;
4
+ protected viewer: Viewer;
5
5
  /**
6
6
  * Constructor.
7
7
  */
8
- protected constructor(scene: Scene);
8
+ protected constructor(viewer: Viewer);
9
9
  /**
10
10
  * Creates an {@link GltfExportManager}.
11
11
  */
12
- static create(scene: Scene): Promise<GltfExportManager>;
12
+ static create(viewer: Viewer): Promise<GltfExportManager>;
13
13
  /**
14
- * Exports selected nodes to a {@link GlbExportResult} blob.
14
+ * Exports selected nodes to a file.
15
+ * @param filename optional name of the exported .GLB file.
15
16
  * @param exportOptions export options to be merged with default options. See {@link gltfExportOptions}.
16
17
  */
17
- exportGlb(exportOptions?: IExportOptions): Promise<GlbExportResult>;
18
+ exportGlb(filename?: string, exportOptions?: IExportOptions): Promise<File | undefined>;
18
19
  /**
19
20
  * Exports selected nodes to GLTF. This may result in more than one file, since textures are exported separately.
20
21
  * @param filename name of the main (text-based) .GLTF file referring to separate texture files.
@@ -32,4 +33,34 @@ export declare class GltfExportManager {
32
33
  * @protected
33
34
  */
34
35
  protected gltfExportOptions(mergeWithOptions?: IExportOptions): IExportOptions;
36
+ /**
37
+ * Stuff to be done before exporting to GLTF
38
+ * @protected
39
+ */
40
+ protected exportPreProcess(): void;
41
+ /**
42
+ * Stuff to be done after the GLTF export
43
+ * @protected
44
+ */
45
+ protected exportPostProcess(): void;
46
+ /**
47
+ * Materials with refraction set are not exported properly.
48
+ * Exchange all such (relevant) materials with a more export-friendly version
49
+ * @param suffix String to be added to the replacement material's name
50
+ * @protected
51
+ */
52
+ protected exchangeRefractionMaterials(suffix: string): void;
53
+ /**
54
+ * Restore original materials with set refraction.
55
+ * @param suffix String added to the replacement material's name
56
+ * @protected
57
+ */
58
+ protected restoreRefractionMaterials(suffix: string): void;
59
+ /**
60
+ * Create an export-friendly replacement material for a material using refraction.
61
+ * @param mat Material to be replaced
62
+ * @param suffix String to be added to the replacement material's name
63
+ * @protected
64
+ */
65
+ protected createRefractionMaterialReplacement(mat: PBRMaterial, suffix: string): PBRMaterial;
35
66
  }
@@ -2,39 +2,59 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GltfExportManager = void 0;
4
4
  var tslib_1 = require("tslib");
5
+ var pbrMaterial_1 = require("@babylonjs/core/Materials/PBR/pbrMaterial");
6
+ var math_color_1 = require("@babylonjs/core/Maths/math.color");
7
+ var abstractMesh_1 = require("@babylonjs/core/Meshes/abstractMesh");
5
8
  var serializers_1 = require("@babylonjs/serializers");
6
9
  var lodash_es_1 = require("lodash-es");
7
10
  var GltfExportManager = /** @class */ (function () {
8
11
  /**
9
12
  * Constructor.
10
13
  */
11
- function GltfExportManager(scene) {
12
- this.scene = scene;
14
+ function GltfExportManager(viewer) {
15
+ this.viewer = viewer;
13
16
  }
14
17
  /**
15
18
  * Creates an {@link GltfExportManager}.
16
19
  */
17
- GltfExportManager.create = function (scene) {
20
+ GltfExportManager.create = function (viewer) {
18
21
  return tslib_1.__awaiter(this, void 0, void 0, function () {
19
22
  return tslib_1.__generator(this, function (_a) {
20
- return [2 /*return*/, new GltfExportManager(scene)];
23
+ return [2 /*return*/, new GltfExportManager(viewer)];
21
24
  });
22
25
  });
23
26
  };
24
27
  /**
25
- * Exports selected nodes to a {@link GlbExportResult} blob.
28
+ * Exports selected nodes to a file.
29
+ * @param filename optional name of the exported .GLB file.
26
30
  * @param exportOptions export options to be merged with default options. See {@link gltfExportOptions}.
27
31
  */
28
- GltfExportManager.prototype.exportGlb = function (exportOptions) {
32
+ GltfExportManager.prototype.exportGlb = function (filename, exportOptions) {
33
+ if (filename === void 0) { filename = 'glb-export.glb'; }
29
34
  if (exportOptions === void 0) { exportOptions = {}; }
30
35
  return tslib_1.__awaiter(this, void 0, void 0, function () {
31
- var glbData;
36
+ var glbData, resBlob;
32
37
  return tslib_1.__generator(this, function (_a) {
33
38
  switch (_a.label) {
34
- case 0: return [4 /*yield*/, serializers_1.GLTF2Export.GLBAsync(this.scene, 'dummy', this.gltfExportOptions(exportOptions))];
39
+ case 0:
40
+ this.exportPreProcess();
41
+ return [4 /*yield*/, serializers_1.GLTF2Export.GLBAsync(this.viewer.scene, 'dummy', this.gltfExportOptions(exportOptions))];
35
42
  case 1:
36
43
  glbData = _a.sent();
37
- return [2 /*return*/, glbData.glTFFiles['dummy.glb']]; // should be only one file for glb
44
+ this.exportPostProcess();
45
+ resBlob = glbData.glTFFiles['dummy.glb'];
46
+ // check if result is valid, according to the typings this could also be a string
47
+ if (resBlob instanceof Blob) {
48
+ if (!filename.endsWith('.glb')) {
49
+ filename += '.glb';
50
+ }
51
+ return [2 /*return*/, new File([resBlob], filename)];
52
+ }
53
+ else {
54
+ // result was not a valid blob
55
+ return [2 /*return*/, undefined];
56
+ }
57
+ return [2 /*return*/];
38
58
  }
39
59
  });
40
60
  });
@@ -49,11 +69,14 @@ var GltfExportManager = /** @class */ (function () {
49
69
  return tslib_1.__awaiter(this, void 0, void 0, function () {
50
70
  return tslib_1.__generator(this, function (_a) {
51
71
  switch (_a.label) {
52
- case 0: return [4 /*yield*/, serializers_1.GLTF2Export.GLTFAsync(this.scene, filename, this.gltfExportOptions(exportOptions)).then(function (glb) {
53
- glb.downloadFiles();
54
- })];
72
+ case 0:
73
+ this.exportPreProcess();
74
+ return [4 /*yield*/, serializers_1.GLTF2Export.GLTFAsync(this.viewer.scene, filename, this.gltfExportOptions(exportOptions)).then(function (glb) {
75
+ glb.downloadFiles();
76
+ })];
55
77
  case 1:
56
78
  _a.sent();
79
+ this.exportPostProcess();
57
80
  return [2 /*return*/];
58
81
  }
59
82
  });
@@ -69,11 +92,14 @@ var GltfExportManager = /** @class */ (function () {
69
92
  return tslib_1.__awaiter(this, void 0, void 0, function () {
70
93
  return tslib_1.__generator(this, function (_a) {
71
94
  switch (_a.label) {
72
- case 0: return [4 /*yield*/, serializers_1.GLTF2Export.GLBAsync(this.scene, filename, this.gltfExportOptions(exportOptions)).then(function (glb) {
73
- glb.downloadFiles();
74
- })];
95
+ case 0:
96
+ this.exportPreProcess();
97
+ return [4 /*yield*/, serializers_1.GLTF2Export.GLBAsync(this.viewer.scene, filename, this.gltfExportOptions(exportOptions)).then(function (glb) {
98
+ glb.downloadFiles();
99
+ })];
75
100
  case 1:
76
101
  _a.sent();
102
+ this.exportPostProcess();
77
103
  return [2 /*return*/];
78
104
  }
79
105
  });
@@ -102,6 +128,94 @@ var GltfExportManager = /** @class */ (function () {
102
128
  };
103
129
  return lodash_es_1.merge({}, defaultOptions, mergeWithOptions);
104
130
  };
131
+ /**
132
+ * Stuff to be done before exporting to GLTF
133
+ * @protected
134
+ */
135
+ GltfExportManager.prototype.exportPreProcess = function () {
136
+ this.viewer.pauseRendering();
137
+ this.exchangeRefractionMaterials('__cloned');
138
+ };
139
+ /**
140
+ * Stuff to be done after the GLTF export
141
+ * @protected
142
+ */
143
+ GltfExportManager.prototype.exportPostProcess = function () {
144
+ this.restoreRefractionMaterials('__cloned');
145
+ this.viewer.resumeRendering();
146
+ };
147
+ /**
148
+ * Materials with refraction set are not exported properly.
149
+ * Exchange all such (relevant) materials with a more export-friendly version
150
+ * @param suffix String to be added to the replacement material's name
151
+ * @protected
152
+ */
153
+ GltfExportManager.prototype.exchangeRefractionMaterials = function (suffix) {
154
+ for (var _i = 0, _a = this.viewer.scene.getNodes(); _i < _a.length; _i++) {
155
+ var n = _a[_i];
156
+ if (!(n instanceof abstractMesh_1.AbstractMesh))
157
+ continue;
158
+ if (!(n.material instanceof pbrMaterial_1.PBRMaterial))
159
+ continue;
160
+ if (n.material.subSurface.isRefractionEnabled !== true)
161
+ continue;
162
+ if (n.material.transparencyMode !== pbrMaterial_1.PBRMaterial.PBRMATERIAL_OPAQUE)
163
+ continue;
164
+ // if we're here, we have a node holding a material with set refraction whose transparencyMode is set to PBRMATERIAL_OPAQUE
165
+ n.material = this.createRefractionMaterialReplacement(n.material, suffix);
166
+ }
167
+ };
168
+ /**
169
+ * Restore original materials with set refraction.
170
+ * @param suffix String added to the replacement material's name
171
+ * @protected
172
+ */
173
+ GltfExportManager.prototype.restoreRefractionMaterials = function (suffix) {
174
+ var _this = this;
175
+ for (var _i = 0, _a = this.viewer.scene.getNodes(); _i < _a.length; _i++) {
176
+ var n = _a[_i];
177
+ if (n instanceof abstractMesh_1.AbstractMesh && n.material instanceof pbrMaterial_1.PBRMaterial) {
178
+ // at this point we have a pbrmaterial that's set on a mesh
179
+ if (n.material.name.endsWith(suffix)) {
180
+ var previousMaterialName = n.material.name.replace(suffix, ''); // strip suffix from name
181
+ n.material = this.viewer.scene.getMaterialByName(previousMaterialName); // set previous material on mesh
182
+ }
183
+ }
184
+ }
185
+ // dispose of all clones.
186
+ var allClonedMaterials = [];
187
+ for (var _b = 0, _c = this.viewer.scene.materials; _b < _c.length; _b++) {
188
+ var mat = _c[_b];
189
+ if (mat.name.endsWith(suffix))
190
+ allClonedMaterials.push(mat.name);
191
+ }
192
+ allClonedMaterials.forEach(function (mat) {
193
+ var _a;
194
+ (_a = _this.viewer.scene.getMaterialByName(mat)) === null || _a === void 0 ? void 0 : _a.dispose(false, true);
195
+ });
196
+ };
197
+ /**
198
+ * Create an export-friendly replacement material for a material using refraction.
199
+ * @param mat Material to be replaced
200
+ * @param suffix String to be added to the replacement material's name
201
+ * @protected
202
+ */
203
+ GltfExportManager.prototype.createRefractionMaterialReplacement = function (mat, suffix) {
204
+ var newMatName = mat.name + suffix;
205
+ // if material of that name already exists - return it instead of cloning
206
+ if (this.viewer.scene.getMaterialByName(newMatName))
207
+ return this.viewer.scene.getMaterialByName(newMatName);
208
+ // change material according to https://www.notion.so/combeenation/Glas-materials-don-t-look-glasy-after-export-d5fda2c6515e4420a8772744d3e6b460
209
+ var clonedMaterial = mat.clone(mat.name + suffix);
210
+ clonedMaterial.refractionTexture = null;
211
+ clonedMaterial.metallicReflectanceTexture = null; // is this the correct one for metallic roughness?
212
+ clonedMaterial.alpha = 0.7;
213
+ clonedMaterial.albedoColor = new math_color_1.Color3(0.3, 0.3, 0.3);
214
+ clonedMaterial.transparencyMode = pbrMaterial_1.PBRMaterial.PBRMATERIAL_ALPHABLEND;
215
+ clonedMaterial.metallic = 0.65;
216
+ clonedMaterial.roughness = 0.15;
217
+ return clonedMaterial;
218
+ };
105
219
  return GltfExportManager;
106
220
  }());
107
221
  exports.GltfExportManager = GltfExportManager;
@@ -1 +1 @@
1
- {"version":3,"file":"gltfExportManager.js","sourceRoot":"","sources":["../../../../src/api/manager/gltfExportManager.ts"],"names":[],"mappings":";;;;AACA,sDAAqE;AACrE,uCAAkC;AAElC;IACE;;OAEG;IACH,2BAAgC,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEhD;;OAEG;IACiB,wBAAM,GAA1B,UAA2B,KAAY;;;gBACrC,sBAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAC;;;KACrC;IAED;;;OAGG;IACU,qCAAS,GAAtB,UAAuB,aAAkC;QAAlC,8BAAA,EAAA,kBAAkC;;;;;4BACvC,qBAAM,yBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,EAAA;;wBAAhG,OAAO,GAAG,SAAsF;wBACtG,sBAAO,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAC,CAAC,kCAAkC;;;;KAC1E;IAED;;;;OAIG;IACU,4CAAgB,GAA7B,UAA8B,QAAgB,EAAE,aAAkC;QAAlC,8BAAA,EAAA,kBAAkC;;;;4BAChF,qBAAM,yBAAW,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG;4BAC/F,GAAG,CAAC,aAAa,EAAE,CAAC;wBACtB,CAAC,CAAC,EAAA;;wBAFF,SAEE,CAAC;;;;;KACJ;IAED;;;;OAIG;IACU,2CAAe,GAA5B,UAA6B,QAAgB,EAAE,aAAkC;QAAlC,8BAAA,EAAA,kBAAkC;;;;4BAC/E,qBAAM,yBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG;4BAC9F,GAAG,CAAC,aAAa,EAAE,CAAC;wBACtB,CAAC,CAAC,EAAA;;wBAFF,SAEE,CAAC;;;;;KACJ;IAED;;;OAGG;IACO,6CAAiB,GAA3B,UAA4B,gBAAqC;QAArC,iCAAA,EAAA,qBAAqC;QAC/D,IAAM,cAAc,GAAG;YACrB,gDAAgD;YAChD,gBAAgB,EAAE,UAAU,IAAS;gBACnC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;oBACrB,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;oBAC5B,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;oBACpC,OAAO,KAAK,CAAC;iBACd;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;QACF,OAAO,iBAAK,CAAC,EAAE,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACrD,CAAC;IACH,wBAAC;AAAD,CAAC,AAlED,IAkEC;AAlEY,8CAAiB"}
1
+ {"version":3,"file":"gltfExportManager.js","sourceRoot":"","sources":["../../../../src/api/manager/gltfExportManager.ts"],"names":[],"mappings":"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"}
@@ -348,4 +348,3 @@ declare type AnimationDefinitions = {
348
348
  declare type AnimationDefinition = GSAPTweenVars & {
349
349
  shortestWay?: boolean;
350
350
  };
351
- declare type GlbExportResult = string | Blob;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@combeenation/3d-viewer",
3
3
  "description": "Combeenation 3D Viewer",
4
- "version": "5.0.0-ar1",
4
+ "version": "5.0.0-ar2",
5
5
  "homepage": "https://github.com/Combeenation/3d-viewer#readme",
6
6
  "keywords": [],
7
7
  "author": "",
@@ -51,6 +51,8 @@ export class Viewer extends EventBroadcaster {
51
51
  // in the future material cloning should be the edge case
52
52
  protected _cloneMaterialsOnMutation: boolean = true;
53
53
 
54
+ protected _isRenderLoopPaused: boolean = false;
55
+
54
56
  static version = version;
55
57
 
56
58
  /**
@@ -177,7 +179,7 @@ export class Viewer extends EventBroadcaster {
177
179
  await this.createVariantInstances();
178
180
  }
179
181
  // create gltf export manager
180
- this._gltfExportManager = await GltfExportManager.create(this.scene);
182
+ this._gltfExportManager = await GltfExportManager.create(this);
181
183
  // resize handler
182
184
  window.addEventListener('resize', debounce(this.resize.bind(this), 100));
183
185
  // wait until scene is completely ready
@@ -186,7 +188,7 @@ export class Viewer extends EventBroadcaster {
186
188
  this.broadcastEvent(Event.BOOTSTRAP_END, this);
187
189
  // render loop
188
190
  this.engine.runRenderLoop(() => {
189
- this.scene.render();
191
+ if (!this._isRenderLoopPaused) this.scene.render();
190
192
  });
191
193
  return this;
192
194
  }
@@ -463,6 +465,20 @@ export class Viewer extends EventBroadcaster {
463
465
  zChar.position = new Vector3(0, 0.05 * dimension, 0.9 * dimension);
464
466
  }
465
467
 
468
+ /**
469
+ * Pause render loop.
470
+ */
471
+ public pauseRendering() {
472
+ this._isRenderLoopPaused = true;
473
+ }
474
+
475
+ /**
476
+ * Resume render loop when paused.
477
+ */
478
+ public resumeRendering() {
479
+ this._isRenderLoopPaused = false;
480
+ }
481
+
466
482
  /**
467
483
  * @emits {@link Event.SCENE_PROCESSING_START}
468
484
  * @emits {@link Event.SCENE_PROCESSING_END}
@@ -1,3 +1,6 @@
1
+ import { PBRMaterial } from '@babylonjs/core/Materials/PBR/pbrMaterial';
2
+ import { Color3 } from '@babylonjs/core/Maths/math.color';
3
+ import { AbstractMesh } from '@babylonjs/core/Meshes/abstractMesh';
1
4
  import { Scene } from '@babylonjs/core/scene';
2
5
  import { GLTF2Export, IExportOptions } from '@babylonjs/serializers';
3
6
  import { merge } from 'lodash-es';
@@ -6,22 +9,36 @@ export class GltfExportManager {
6
9
  /**
7
10
  * Constructor.
8
11
  */
9
- protected constructor(protected scene: Scene) {}
12
+ protected constructor(protected viewer: Viewer) {}
10
13
 
11
14
  /**
12
15
  * Creates an {@link GltfExportManager}.
13
16
  */
14
- public static async create(scene: Scene): Promise<GltfExportManager> {
15
- return new GltfExportManager(scene);
17
+ public static async create(viewer: Viewer): Promise<GltfExportManager> {
18
+ return new GltfExportManager(viewer);
16
19
  }
17
20
 
18
21
  /**
19
- * Exports selected nodes to a {@link GlbExportResult} blob.
22
+ * Exports selected nodes to a file.
23
+ * @param filename optional name of the exported .GLB file.
20
24
  * @param exportOptions export options to be merged with default options. See {@link gltfExportOptions}.
21
25
  */
22
- public async exportGlb(exportOptions: IExportOptions = {}): Promise<GlbExportResult> {
23
- const glbData = await GLTF2Export.GLBAsync(this.scene, 'dummy', this.gltfExportOptions(exportOptions));
24
- return glbData.glTFFiles['dummy.glb']; // should be only one file for glb
26
+ public async exportGlb(filename = 'glb-export.glb', exportOptions: IExportOptions = {}): Promise<File | undefined> {
27
+ this.exportPreProcess();
28
+ const glbData = await GLTF2Export.GLBAsync(this.viewer.scene, 'dummy', this.gltfExportOptions(exportOptions));
29
+ this.exportPostProcess();
30
+ const resBlob = glbData.glTFFiles['dummy.glb']; // should be only one file for glb
31
+
32
+ // check if result is valid, according to the typings this could also be a string
33
+ if (resBlob instanceof Blob) {
34
+ if (!filename.endsWith('.glb')) {
35
+ filename += '.glb';
36
+ }
37
+ return new File([resBlob], filename);
38
+ } else {
39
+ // result was not a valid blob
40
+ return undefined;
41
+ }
25
42
  }
26
43
 
27
44
  /**
@@ -30,9 +47,11 @@ export class GltfExportManager {
30
47
  * @param exportOptions export options to be merged with default options. See {@link gltfExportOptions}.
31
48
  */
32
49
  public async exportGltfToFile(filename: string, exportOptions: IExportOptions = {}) {
33
- await GLTF2Export.GLTFAsync(this.scene, filename, this.gltfExportOptions(exportOptions)).then(glb => {
50
+ this.exportPreProcess();
51
+ await GLTF2Export.GLTFAsync(this.viewer.scene, filename, this.gltfExportOptions(exportOptions)).then(glb => {
34
52
  glb.downloadFiles();
35
53
  });
54
+ this.exportPostProcess();
36
55
  }
37
56
 
38
57
  /**
@@ -41,9 +60,11 @@ export class GltfExportManager {
41
60
  * @param exportOptions export options to be merged with default options. See {@link gltfExportOptions}.
42
61
  */
43
62
  public async exportGlbToFile(filename: string, exportOptions: IExportOptions = {}) {
44
- await GLTF2Export.GLBAsync(this.scene, filename, this.gltfExportOptions(exportOptions)).then(glb => {
63
+ this.exportPreProcess();
64
+ await GLTF2Export.GLBAsync(this.viewer.scene, filename, this.gltfExportOptions(exportOptions)).then(glb => {
45
65
  glb.downloadFiles();
46
66
  });
67
+ this.exportPostProcess();
47
68
  }
48
69
 
49
70
  /**
@@ -68,4 +89,89 @@ export class GltfExportManager {
68
89
  };
69
90
  return merge({}, defaultOptions, mergeWithOptions);
70
91
  }
92
+
93
+ /**
94
+ * Stuff to be done before exporting to GLTF
95
+ * @protected
96
+ */
97
+ protected exportPreProcess() {
98
+ this.viewer.pauseRendering();
99
+ this.exchangeRefractionMaterials('__cloned');
100
+ }
101
+
102
+ /**
103
+ * Stuff to be done after the GLTF export
104
+ * @protected
105
+ */
106
+ protected exportPostProcess() {
107
+ this.restoreRefractionMaterials('__cloned');
108
+ this.viewer.resumeRendering();
109
+ }
110
+
111
+ /**
112
+ * Materials with refraction set are not exported properly.
113
+ * Exchange all such (relevant) materials with a more export-friendly version
114
+ * @param suffix String to be added to the replacement material's name
115
+ * @protected
116
+ */
117
+ protected exchangeRefractionMaterials(suffix: string) {
118
+ for (const n of this.viewer.scene.getNodes()) {
119
+ if (!(n instanceof AbstractMesh)) continue;
120
+ if (!(n.material instanceof PBRMaterial)) continue;
121
+ if ((n.material as PBRMaterial).subSurface.isRefractionEnabled !== true) continue;
122
+ if ((n.material as PBRMaterial).transparencyMode !== PBRMaterial.PBRMATERIAL_OPAQUE) continue;
123
+ // if we're here, we have a node holding a material with set refraction whose transparencyMode is set to PBRMATERIAL_OPAQUE
124
+ n.material = this.createRefractionMaterialReplacement(n.material, suffix);
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Restore original materials with set refraction.
130
+ * @param suffix String added to the replacement material's name
131
+ * @protected
132
+ */
133
+ protected restoreRefractionMaterials(suffix: string) {
134
+ for (const n of this.viewer.scene.getNodes()) {
135
+ if (n instanceof AbstractMesh && n.material instanceof PBRMaterial) {
136
+ // at this point we have a pbrmaterial that's set on a mesh
137
+ if (n.material.name.endsWith(suffix)) {
138
+ const previousMaterialName = n.material.name.replace(suffix, ''); // strip suffix from name
139
+ n.material = this.viewer.scene.getMaterialByName(previousMaterialName); // set previous material on mesh
140
+ }
141
+ }
142
+ }
143
+ // dispose of all clones.
144
+ let allClonedMaterials = [];
145
+ for (const mat of this.viewer.scene.materials) {
146
+ if (mat.name.endsWith(suffix)) allClonedMaterials.push(mat.name);
147
+ }
148
+ allClonedMaterials.forEach(mat => {
149
+ this.viewer.scene.getMaterialByName(mat)?.dispose(false, true);
150
+ });
151
+ }
152
+
153
+ /**
154
+ * Create an export-friendly replacement material for a material using refraction.
155
+ * @param mat Material to be replaced
156
+ * @param suffix String to be added to the replacement material's name
157
+ * @protected
158
+ */
159
+ protected createRefractionMaterialReplacement(mat: PBRMaterial, suffix: string): PBRMaterial {
160
+ const newMatName = mat.name + suffix;
161
+ // if material of that name already exists - return it instead of cloning
162
+ if (this.viewer.scene.getMaterialByName(newMatName))
163
+ return this.viewer.scene.getMaterialByName(newMatName) as PBRMaterial;
164
+
165
+ // change material according to https://www.notion.so/combeenation/Glas-materials-don-t-look-glasy-after-export-d5fda2c6515e4420a8772744d3e6b460
166
+ let clonedMaterial = mat.clone(mat.name + suffix);
167
+ clonedMaterial.refractionTexture = null;
168
+ clonedMaterial.metallicReflectanceTexture = null; // is this the correct one for metallic roughness?
169
+ clonedMaterial.alpha = 0.7;
170
+ clonedMaterial.albedoColor = new Color3(0.3, 0.3, 0.3);
171
+ clonedMaterial.transparencyMode = PBRMaterial.PBRMATERIAL_ALPHABLEND;
172
+ clonedMaterial.metallic = 0.65;
173
+ clonedMaterial.roughness = 0.15;
174
+
175
+ return clonedMaterial;
176
+ }
71
177
  }
@@ -393,5 +393,3 @@ type AnimationDefinitions = {
393
393
  * ```
394
394
  */
395
395
  type AnimationDefinition = GSAPTweenVars & { shortestWay?: boolean };
396
-
397
- type GlbExportResult = string | Blob;