@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.13.9 → 3.13.10

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.
@@ -71,7 +71,7 @@ export declare class MaterialLoader implements ILoader {
71
71
  assignEnvironmentMapRotation(value: quat): void;
72
72
  assignPointSize(p: number): void;
73
73
  cacheSize(): number;
74
- createMaterial(type: GEOMETRY_MATERIAL_TYPE, incomingData: IMaterialAbstractData | GeometryData, materialData: IMaterialAbstractData | null, materialSettings?: MaterialSettings): THREE.Material | THREE.LineBasicMaterial | THREE.MeshBasicMaterial | THREE.PointsMaterial | MultiPointsMaterial;
74
+ createMaterial(type: GEOMETRY_MATERIAL_TYPE, incomingData: IMaterialAbstractData | GeometryData, materialData: IMaterialAbstractData | null, materialSettings?: MaterialSettings): THREE.Material | THREE.MeshBasicMaterial | THREE.PointsMaterial | MultiPointsMaterial | THREE.LineBasicMaterial;
75
75
  emptyMaterialCache(): void;
76
76
  getMaterialProperties(materialData: IMaterialAbstractData | null, type: GEOMETRY_MATERIAL_TYPE, materialSettings?: MaterialSettings): {
77
77
  properties: ThreeJsMaterialParameterTypes;
@@ -0,0 +1,31 @@
1
+ import { Pass, Resolution } from "postprocessing";
2
+ import { Camera, DepthTexture, Scene, Texture, WebGLRenderer, WebGLRenderTarget } from "three";
3
+ /**
4
+ * A pass that renders normals and depth with transparency awareness.
5
+ * Objects with lower opacity will have reduced contribution to the normal and depth buffers.
6
+ */
7
+ export declare class TransparencyAwareNormalPass extends Pass {
8
+ private _scene;
9
+ private _camera;
10
+ private _renderTarget;
11
+ private _resolution;
12
+ private _depthTexture;
13
+ private _originalMaterials;
14
+ constructor(scene: Scene, camera: Camera, { renderTarget, resolutionScale, width, height, resolutionX, resolutionY, }?: {
15
+ renderTarget?: WebGLRenderTarget;
16
+ resolutionScale?: number;
17
+ resolutionX?: number;
18
+ resolutionY?: number;
19
+ width?: number;
20
+ height?: number;
21
+ });
22
+ set mainScene(value: Scene);
23
+ set mainCamera(value: Camera);
24
+ get texture(): Texture | undefined;
25
+ get depthTexture(): DepthTexture | undefined;
26
+ get resolution(): Resolution;
27
+ private createTransparencyAwareNormalMaterial;
28
+ render(renderer: WebGLRenderer): void;
29
+ setSize(width: number, height: number): void;
30
+ }
31
+ //# sourceMappingURL=TransparencyAwareNormalPass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransparencyAwareNormalPass.d.ts","sourceRoot":"","sources":["../../../../src/managers/postprocessing/utils/TransparencyAwareNormalPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,MAAM,EAGN,YAAY,EAKZ,KAAK,EACL,OAAO,EAGP,aAAa,EACb,iBAAiB,EAEjB,MAAM,OAAO,CAAC;AAEf;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,IAAI;IACpD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,kBAAkB,CAA+C;gBAGxE,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,EACC,YAAY,EACZ,eAAqB,EACrB,KAA4B,EAC5B,MAA6B,EAC7B,WAAmB,EACnB,WAAoB,GACpB,GAAE;QACF,YAAY,CAAC,EAAE,iBAAiB,CAAC;QACjC,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACX;IAqCP,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,EAEzB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAI,OAAO,IAAI,OAAO,GAAG,SAAS,CAEjC;IAED,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAE3C;IAED,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,OAAO,CAAC,qCAAqC;IA0C7C,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAkCrC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAK5C"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransparencyAwareNormalPass = void 0;
4
+ const postprocessing_1 = require("postprocessing");
5
+ const three_1 = require("three");
6
+ /**
7
+ * A pass that renders normals and depth with transparency awareness.
8
+ * Objects with lower opacity will have reduced contribution to the normal and depth buffers.
9
+ */
10
+ class TransparencyAwareNormalPass extends postprocessing_1.Pass {
11
+ constructor(scene, camera, { renderTarget, resolutionScale = 1.0, width = postprocessing_1.Resolution.AUTO_SIZE, height = postprocessing_1.Resolution.AUTO_SIZE, resolutionX = width, resolutionY = height, } = {}) {
12
+ super("TransparencyAwareNormalPass");
13
+ this._originalMaterials = new Map();
14
+ this.needsSwap = false;
15
+ this._scene = scene;
16
+ this._camera = camera;
17
+ this._renderTarget = renderTarget || new three_1.WebGLRenderTarget(1, 1, {
18
+ minFilter: three_1.NearestFilter,
19
+ magFilter: three_1.NearestFilter,
20
+ });
21
+ this._renderTarget.texture.name = "TransparencyAwareNormalPass.Target";
22
+ this._depthTexture = new three_1.DepthTexture(1, 1);
23
+ this._renderTarget.depthTexture = this._depthTexture;
24
+ this._renderTarget.dispose();
25
+ if (this._renderTarget.stencilBuffer) {
26
+ this._depthTexture.format = three_1.DepthStencilFormat;
27
+ this._depthTexture.type = three_1.UnsignedInt248Type;
28
+ }
29
+ else {
30
+ this._depthTexture.type = three_1.UnsignedIntType;
31
+ }
32
+ this._resolution = new postprocessing_1.Resolution(this, resolutionX, resolutionY, resolutionScale);
33
+ this._resolution.addEventListener("change", (e) => this.setSize(this._resolution.baseWidth, this._resolution.baseHeight));
34
+ }
35
+ set mainScene(value) {
36
+ this._scene = value;
37
+ }
38
+ set mainCamera(value) {
39
+ this._camera = value;
40
+ }
41
+ get texture() {
42
+ var _a;
43
+ return (_a = this._renderTarget) === null || _a === void 0 ? void 0 : _a.texture;
44
+ }
45
+ get depthTexture() {
46
+ var _a;
47
+ return (_a = this._renderTarget) === null || _a === void 0 ? void 0 : _a.depthTexture;
48
+ }
49
+ get resolution() {
50
+ return this._resolution;
51
+ }
52
+ createTransparencyAwareNormalMaterial(originalMaterial) {
53
+ let materialOpacity = 1.0;
54
+ let isTransparent = false;
55
+ // Extract opacity and transparency from the original material
56
+ if (Array.isArray(originalMaterial)) {
57
+ const materialWithOpacity = originalMaterial.find((mat) => "opacity" in mat && typeof mat.opacity === "number");
58
+ if (materialWithOpacity) {
59
+ materialOpacity = materialWithOpacity.opacity;
60
+ isTransparent = materialWithOpacity.transparent || materialOpacity < 1.0;
61
+ }
62
+ }
63
+ else if ("opacity" in originalMaterial && typeof originalMaterial.opacity === "number") {
64
+ materialOpacity = originalMaterial.opacity;
65
+ isTransparent = originalMaterial.transparent || materialOpacity < 1.0;
66
+ }
67
+ // If the material is not transparent or has full opacity, treat it as opaque
68
+ if (!isTransparent || materialOpacity >= 1.0) {
69
+ materialOpacity = 1.0;
70
+ }
71
+ // Create a normal material that considers opacity
72
+ const normalMaterial = new three_1.MeshNormalMaterial();
73
+ normalMaterial.side = originalMaterial.side || 2; // DoubleSide by default
74
+ normalMaterial.userData.materialOpacity = { value: materialOpacity };
75
+ normalMaterial.onBeforeCompile = (shader) => {
76
+ shader.uniforms.materialOpacity = normalMaterial.userData.materialOpacity;
77
+ shader.fragmentShader = /* glsl */ `
78
+ uniform float materialOpacity;
79
+ ${shader.fragmentShader.replace("gl_FragColor = vec4( packNormalToRGB( normal ), opacity );", "gl_FragColor = vec4( packNormalToRGB( normal ), opacity * materialOpacity );")}
80
+ `;
81
+ };
82
+ return normalMaterial;
83
+ }
84
+ render(renderer) {
85
+ // Store original materials and apply transparency-aware normal materials
86
+ this._originalMaterials.clear();
87
+ this._scene.traverse((object) => {
88
+ if (object instanceof three_1.Mesh && object.material) {
89
+ this._originalMaterials.set(object, object.material);
90
+ object.material = this.createTransparencyAwareNormalMaterial(object.material);
91
+ }
92
+ });
93
+ // Store original background and clear settings
94
+ const originalBackground = this._scene.background;
95
+ const originalClearAlpha = renderer.getClearAlpha();
96
+ // Configure for normal rendering
97
+ this._scene.background = new three_1.Color(0x7777ff); // Background color for normals
98
+ renderer.setClearAlpha(1.0);
99
+ // Render to target
100
+ renderer.setRenderTarget(this._renderTarget);
101
+ renderer.render(this._scene, this._camera);
102
+ // Restore original materials
103
+ this._originalMaterials.forEach((originalMaterial, mesh) => {
104
+ mesh.material = originalMaterial;
105
+ });
106
+ this._originalMaterials.clear();
107
+ // Restore original settings
108
+ renderer.setRenderTarget(null);
109
+ renderer.setClearAlpha(originalClearAlpha);
110
+ this._scene.background = originalBackground;
111
+ }
112
+ setSize(width, height) {
113
+ var _a;
114
+ const resolution = this._resolution;
115
+ resolution.setBaseSize(width, height);
116
+ (_a = this._renderTarget) === null || _a === void 0 ? void 0 : _a.setSize(resolution.width, resolution.height);
117
+ }
118
+ }
119
+ exports.TransparencyAwareNormalPass = TransparencyAwareNormalPass;
120
+ //# sourceMappingURL=TransparencyAwareNormalPass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransparencyAwareNormalPass.js","sourceRoot":"","sources":["../../../../src/managers/postprocessing/utils/TransparencyAwareNormalPass.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ThreeJsDataManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeJsDataManager.d.ts","sourceRoot":"","sources":["../../../src/managers/sceneTree/ThreeJsDataManager.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=ThreeJsDataManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeJsDataManager.js","sourceRoot":"","sources":["../../../src/managers/sceneTree/ThreeJsDataManager.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { quat } from "gl-matrix";
2
+ import * as THREE from "three";
3
+ import { ENVIRONMENT_MAP_TYPE } from "../../loaders/EnvironmentMapLoader";
4
+ import { ThreejsData } from "../../types/ThreejsData";
5
+ export declare const assignEnvironmentMapForThreeJsDataObject: (data: ThreejsData, environmentMap: THREE.Texture | THREE.CubeTexture | null, environmentMapType: ENVIRONMENT_MAP_TYPE, environmentMapIntensity: number, environmentMapRotation: quat) => void;
6
+ export declare const assignEnvironmentMapForThreeJsData: (environmentMap: THREE.Texture | THREE.CubeTexture | null, environmentMapType: ENVIRONMENT_MAP_TYPE, environmentMapIntensity: number, environmentMapRotation: quat) => void;
7
+ //# sourceMappingURL=ThreeJsDataUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeJsDataUtils.d.ts","sourceRoot":"","sources":["../../../src/managers/sceneTree/ThreeJsDataUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,IAAI,EAAC,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAEpD,eAAO,MAAM,wCAAwC,SAC9C,WAAW,kBACD,MAAM,OAAO,GAAG,MAAM,WAAW,GAAG,IAAI,sBACpC,oBAAoB,2BACf,MAAM,0BACP,IAAI,SA8C5B,CAAC;AAEF,eAAO,MAAM,kCAAkC,mBAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,GAAG,IAAI,sBACpC,oBAAoB,2BACf,MAAM,0BACP,IAAI,SAe5B,CAAC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.assignEnvironmentMapForThreeJsData = exports.assignEnvironmentMapForThreeJsDataObject = void 0;
27
+ const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
28
+ const gl_matrix_1 = require("gl-matrix");
29
+ const THREE = __importStar(require("three"));
30
+ const ThreejsData_1 = require("../../types/ThreejsData");
31
+ const assignEnvironmentMapForThreeJsDataObject = (data, environmentMap, environmentMapType, environmentMapIntensity, environmentMapRotation) => {
32
+ const rotationMatrix = new THREE.Matrix4()
33
+ .fromArray(gl_matrix_1.mat4.fromQuat(gl_matrix_1.mat4.create(), gl_matrix_1.quat.fromValues(environmentMapRotation[0], environmentMapRotation[2], -environmentMapRotation[1], environmentMapRotation[3])))
34
+ .transpose();
35
+ const euler = new THREE.Euler().setFromRotationMatrix(rotationMatrix);
36
+ // set the currently used environment map
37
+ data.obj.traverseVisible((child) => {
38
+ if (child instanceof THREE.Mesh &&
39
+ child.material instanceof THREE.Material) {
40
+ const material = child.material;
41
+ // for all materials that support env maps, set the env map
42
+ if ("envMap" in material && "envMapIntensity" in material) {
43
+ material.envMap = environmentMap;
44
+ material.envMapIntensity = environmentMapIntensity;
45
+ material.needsUpdate = true;
46
+ for (const d in material.defines) {
47
+ if (d.startsWith("ENVMAP_TYPE_"))
48
+ delete material.defines[d];
49
+ }
50
+ if (material.defines)
51
+ material.defines["ENVMAP_TYPE_" + environmentMapType.toUpperCase()] = "";
52
+ }
53
+ if ("envMapRotation" in material) {
54
+ material.envMapRotation = euler;
55
+ material.needsUpdate = true;
56
+ }
57
+ }
58
+ });
59
+ };
60
+ exports.assignEnvironmentMapForThreeJsDataObject = assignEnvironmentMapForThreeJsDataObject;
61
+ const assignEnvironmentMapForThreeJsData = (environmentMap, environmentMapType, environmentMapIntensity, environmentMapRotation) => {
62
+ viewer_shared_node_tree_1.Tree.instance.root.traverse((node) => {
63
+ node.data.forEach((data) => {
64
+ if (data instanceof ThreejsData_1.ThreejsData) {
65
+ (0, exports.assignEnvironmentMapForThreeJsDataObject)(data, environmentMap, environmentMapType, environmentMapIntensity, environmentMapRotation);
66
+ }
67
+ });
68
+ });
69
+ };
70
+ exports.assignEnvironmentMapForThreeJsData = assignEnvironmentMapForThreeJsData;
71
+ //# sourceMappingURL=ThreeJsDataUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeJsDataUtils.js","sourceRoot":"","sources":["../../../src/managers/sceneTree/ThreeJsDataUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iFAAyD;AACzD,yCAAqC;AACrC,6CAA+B;AAE/B,yDAAoD;AAE7C,MAAM,wCAAwC,GAAG,CACvD,IAAiB,EACjB,cAAwD,EACxD,kBAAwC,EACxC,uBAA+B,EAC/B,sBAA4B,EAC3B,EAAE;IACH,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;SACxC,SAAS,CACT,gBAAI,CAAC,QAAQ,CACZ,gBAAI,CAAC,MAAM,EAAE,EACb,gBAAI,CAAC,UAAU,CACd,sBAAsB,CAAC,CAAC,CAAC,EACzB,sBAAsB,CAAC,CAAC,CAAC,EACzB,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAC1B,sBAAsB,CAAC,CAAC,CAAC,CACzB,CACD,CACD;SACA,SAAS,EAAE,CAAC;IACd,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAEtE,yCAAyC;IAC3B,IAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE;QACjD,IACC,KAAK,YAAY,KAAK,CAAC,IAAI;YAC3B,KAAK,CAAC,QAAQ,YAAY,KAAK,CAAC,QAAQ,EACvC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAA0B,CAAC;YAClD,2DAA2D;YAC3D,IAAI,QAAQ,IAAI,QAAQ,IAAI,iBAAiB,IAAI,QAAQ,EAAE;gBACzD,QAAgB,CAAC,MAAM,GAAG,cAAc,CAAC;gBACzC,QAAgB,CAAC,eAAe,GAAG,uBAAuB,CAAC;gBAC5D,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;gBAE5B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE;oBACjC,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;wBAC/B,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBAC5B;gBACD,IAAI,QAAQ,CAAC,OAAO;oBACnB,QAAQ,CAAC,OAAO,CACf,cAAc,GAAG,kBAAkB,CAAC,WAAW,EAAE,CACjD,GAAG,EAAE,CAAC;aACR;YAED,IAAI,gBAAgB,IAAI,QAAQ,EAAE;gBAChC,QAAgB,CAAC,cAAc,GAAG,KAAK,CAAC;gBACzC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;aAC5B;SACD;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAnDW,QAAA,wCAAwC,4CAmDnD;AAEK,MAAM,kCAAkC,GAAG,CACjD,cAAwD,EACxD,kBAAwC,EACxC,uBAA+B,EAC/B,sBAA4B,EAC3B,EAAE;IACH,8BAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,YAAY,yBAAW,EAAE;gBAChC,IAAA,gDAAwC,EACvC,IAAI,EACJ,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,CACtB,CAAC;aACF;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,kCAAkC,sCAmB7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapediver/viewer.rendering-engine.rendering-engine-threejs",
3
- "version": "3.13.9",
3
+ "version": "3.13.10",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Michael Oppitz <michael@shapediver.com>",
@@ -38,21 +38,21 @@
38
38
  "testEnvironment": "node"
39
39
  },
40
40
  "dependencies": {
41
- "@shapediver/viewer.data-engine.gltf-converter": "3.13.9",
42
- "@shapediver/viewer.data-engine.shared-types": "3.13.9",
43
- "@shapediver/viewer.data-engine.tag3d-engine": "3.13.9",
44
- "@shapediver/viewer.rendering-engine.animation-engine": "3.13.9",
45
- "@shapediver/viewer.rendering-engine.animation-frame-engine": "3.13.9",
46
- "@shapediver/viewer.rendering-engine.camera-engine": "3.13.9",
47
- "@shapediver/viewer.rendering-engine.canvas-engine": "3.13.9",
48
- "@shapediver/viewer.rendering-engine.intersection-engine": "3.13.9",
49
- "@shapediver/viewer.rendering-engine.light-engine": "3.13.9",
50
- "@shapediver/viewer.rendering-engine.rendering-engine": "3.13.9",
51
- "@shapediver/viewer.shared.global-access-objects": "3.13.9",
52
- "@shapediver/viewer.shared.math": "3.13.9",
53
- "@shapediver/viewer.shared.node-tree": "3.13.9",
54
- "@shapediver/viewer.shared.services": "3.13.9",
55
- "@shapediver/viewer.shared.types": "3.13.9",
41
+ "@shapediver/viewer.data-engine.gltf-converter": "3.13.10",
42
+ "@shapediver/viewer.data-engine.shared-types": "3.13.10",
43
+ "@shapediver/viewer.data-engine.tag3d-engine": "3.13.10",
44
+ "@shapediver/viewer.rendering-engine.animation-engine": "3.13.10",
45
+ "@shapediver/viewer.rendering-engine.animation-frame-engine": "3.13.10",
46
+ "@shapediver/viewer.rendering-engine.camera-engine": "3.13.10",
47
+ "@shapediver/viewer.rendering-engine.canvas-engine": "3.13.10",
48
+ "@shapediver/viewer.rendering-engine.intersection-engine": "3.13.10",
49
+ "@shapediver/viewer.rendering-engine.light-engine": "3.13.10",
50
+ "@shapediver/viewer.rendering-engine.rendering-engine": "3.13.10",
51
+ "@shapediver/viewer.shared.global-access-objects": "3.13.10",
52
+ "@shapediver/viewer.shared.math": "3.13.10",
53
+ "@shapediver/viewer.shared.node-tree": "3.13.10",
54
+ "@shapediver/viewer.shared.services": "3.13.10",
55
+ "@shapediver/viewer.shared.types": "3.13.10",
56
56
  "@tweenjs/tween.js": "^18.6.4",
57
57
  "@types/stats.js": "^0.17.0",
58
58
  "@types/three": "0.162.0",
@@ -61,5 +61,5 @@
61
61
  "stats.js": "^0.17.0",
62
62
  "three": "0.162.0"
63
63
  },
64
- "gitHead": "4ff1d74da48cac1262757051aad6ece5813bdc9f"
64
+ "gitHead": "873d928e9544babeebb711e3ce988c7010ed8c45"
65
65
  }