@shapediver/viewer.data-engine.gltf-converter 1.15.5 → 2.0.0

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.
@@ -1,4 +1,4 @@
1
- import { TreeNode } from '@shapediver/viewer.shared.node-tree';
1
+ import { ITreeNode } from '@shapediver/viewer.shared.node-tree';
2
2
  export declare enum GLTF_EXTENSIONS {
3
3
  KHR_BINARY_GLTF = "KHR_binary_glTF",
4
4
  KHR_MATERIALS_PBRSPECULARGLOSSINESS = "KHR_materials_pbrSpecularGlossiness",
@@ -22,8 +22,9 @@ export declare class GLTFConverter {
22
22
  private _imageCache;
23
23
  private _nodes;
24
24
  private _promises;
25
+ private _viewport?;
25
26
  constructor();
26
- convert(node: TreeNode, convertForAR?: boolean): Promise<ArrayBuffer>;
27
+ convert(node: ITreeNode, convertForAR?: boolean, viewport?: string): Promise<ArrayBuffer>;
27
28
  private combineTextures;
28
29
  private convertAccessor;
29
30
  private convertAnimations;
@@ -1 +1 @@
1
- {"version":3,"file":"GLTFConverter.d.ts","sourceRoot":"","sources":["../src/GLTFConverter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAqC9D,oBAAY,eAAe;IACvB,eAAe,oBAAoB;IACnC,mCAAmC,wCAAwC;IAC3E,mBAAmB,wBAAwB;CAC9C;AAED,qBACa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsD;IACjF,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAI7B;IAChB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkE;IAEjG,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAOf;IAED,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,MAAM,CAGL;IACT,OAAO,CAAC,SAAS,CAAsB;;IA4F1B,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;YAkHlE,eAAe;IA8E7B,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,iBAAiB;IAwFzB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;YAkDX,sBAAsB;IAmBpC,OAAO,CAAC,YAAY;IAmDpB,OAAO,CAAC,eAAe;IAoEvB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,WAAW;IAiDnB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,KAAK;IAoBb,OAAO,CAAC,mBAAmB;CAkB9B"}
1
+ {"version":3,"file":"GLTFConverter.d.ts","sourceRoot":"","sources":["../src/GLTFConverter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAY,MAAM,qCAAqC,CAAA;AAyCzE,oBAAY,eAAe;IACvB,eAAe,oBAAoB;IACnC,mCAAmC,wCAAwC;IAC3E,mBAAmB,wBAAwB;CAC9C;AAED,qBACa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsD;IACjF,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAI7B;IAChB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkE;IAEjG,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAOf;IAED,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,MAAM,CAGL;IACT,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAC,CAAS;;IA4Fd,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,UAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YA6HtF,eAAe;IA8E7B,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,iBAAiB;IAwFzB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;YAkDX,sBAAsB;IAmBpC,OAAO,CAAC,YAAY;IAmDpB,OAAO,CAAC,eAAe;IAoEvB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,KAAK;IAoBb,OAAO,CAAC,mBAAmB;CAkB9B"}
@@ -157,50 +157,58 @@ let GLTFConverter = class GLTFConverter {
157
157
  }
158
158
  // #endregion Constructors (1)
159
159
  // #region Public Methods (1)
160
- convert(node, convertForAR = false) {
161
- var _a;
160
+ convert(node, convertForAR = false, viewport) {
161
+ var _a, _b;
162
162
  return __awaiter(this, void 0, void 0, function* () {
163
163
  this.reset();
164
164
  this._convertForAR = convertForAR;
165
+ this._viewport = viewport;
166
+ const originalParent = node.parent;
165
167
  const sceneNode = new viewer_shared_node_tree_1.TreeNode('ShapeDiverRootNode');
166
168
  sceneNode.addChild(node);
167
169
  const sceneDef = {
168
170
  name: sceneNode.name,
169
171
  nodes: []
170
172
  };
171
- const globalTransformationInverseID = this._uuidGenerator.create();
172
- node.transformations.push({
173
- id: globalTransformationInverseID,
173
+ const nodeMatrix = gl_matrix_1.mat4.clone(node.nodeMatrix);
174
+ const globalTransformationInverseId = this._uuidGenerator.create();
175
+ node.addTransformation({
176
+ id: globalTransformationInverseId,
174
177
  matrix: this._globalTransformationInverse,
175
178
  });
176
- const translationMatrixID = this._uuidGenerator.create();
179
+ const translationMatrixId = this._uuidGenerator.create();
177
180
  if (convertForAR) {
178
181
  // add translation matrix to scene tree node
179
- const bb = node.boundingBox.clone();
180
- const translationVector = gl_matrix_1.vec3.fromValues(-(bb.max[0] + bb.min[0]) / 2.0, -(bb.max[1] + bb.min[1]) / 2.0, -(bb.max[2] + bb.min[2]) / 2.0);
181
- let translationMatrix = gl_matrix_1.mat4.fromTranslation(gl_matrix_1.mat4.create(), translationVector);
182
- node.transformations.push({ id: translationMatrixID, matrix: translationMatrix });
182
+ const bb = node.boundingBox.clone().applyMatrix(gl_matrix_1.mat4.invert(gl_matrix_1.mat4.create(), nodeMatrix));
183
+ const center = bb.boundingSphere.center;
184
+ let translationMatrix = gl_matrix_1.mat4.fromTranslation(gl_matrix_1.mat4.create(), gl_matrix_1.vec3.multiply(gl_matrix_1.vec3.create(), gl_matrix_1.vec3.fromValues(center[0], center[1], center[2]), gl_matrix_1.vec3.fromValues(-1, -1, -1)));
185
+ node.addTransformation({ id: translationMatrixId, matrix: translationMatrix });
186
+ }
187
+ if (this._viewport) {
188
+ if (this._viewport && node.excludeViewports.includes(this._viewport) === false && (node.restrictViewports.length > 0 && !node.restrictViewports.includes(this._viewport)) === false) {
189
+ (_a = sceneDef.nodes) === null || _a === void 0 ? void 0 : _a.push(this.convertNode(node));
190
+ }
191
+ }
192
+ else {
193
+ (_b = sceneDef.nodes) === null || _b === void 0 ? void 0 : _b.push(this.convertNode(node));
183
194
  }
184
- (_a = sceneDef.nodes) === null || _a === void 0 ? void 0 : _a.push(this.convertNode(node));
185
195
  for (let i = 0; i < node.transformations.length; i++)
186
- if (node.transformations[i].id === globalTransformationInverseID)
187
- node.transformations.splice(i, 1);
196
+ if (node.transformations[i].id === globalTransformationInverseId)
197
+ node.removeTransformation(node.transformations[i]);
188
198
  if (convertForAR) {
189
199
  // remove translation the matrix
190
200
  for (let i = 0; i < node.transformations.length; i++)
191
- if (node.transformations[i].id === translationMatrixID)
192
- node.transformations.splice(i, 1);
201
+ if (node.transformations[i].id === translationMatrixId)
202
+ node.removeTransformation(node.transformations[i]);
193
203
  }
194
204
  this._content.scenes = [];
195
205
  this._content.scenes.push(sceneDef);
196
206
  this.convertAnimations();
197
207
  // Declare extensions.
198
- const extensionsUsedList = Object.keys(this._extensionsUsed);
199
- if (extensionsUsedList.length > 0)
200
- this._content.extensionsUsed = extensionsUsedList;
201
- const extensionsRequiredList = Object.keys(this._extensionsRequired);
202
- if (extensionsRequiredList.length > 0)
203
- this._content.extensionsRequired = extensionsRequiredList;
208
+ if (this._extensionsUsed.length > 0)
209
+ this._content.extensionsUsed = this._extensionsUsed;
210
+ if (this._extensionsRequired.length > 0)
211
+ this._content.extensionsRequired = this._extensionsRequired;
204
212
  let promisesLength = 0;
205
213
  while (promisesLength !== this._promises.length) {
206
214
  promisesLength = this._promises.length;
@@ -209,6 +217,8 @@ let GLTFConverter = class GLTFConverter {
209
217
  }
210
218
  // Merge buffers.
211
219
  const blob = new Blob(this._buffers, { type: 'application/octet-stream' });
220
+ if (originalParent)
221
+ originalParent.addChild(node);
212
222
  // Update byte length of the single buffer.
213
223
  if (this._content.buffers && this._content.buffers.length > 0)
214
224
  this._content.buffers[0].byteLength = blob.size;
@@ -666,8 +676,15 @@ let GLTFConverter = class GLTFConverter {
666
676
  if (node.children.length > 0)
667
677
  nodeDef.children = [];
668
678
  for (let i = 0; i < node.children.length; i++) {
669
- if (node.children[i].visible === true)
679
+ if (node.children[i].visible === true) {
680
+ if (this._viewport) {
681
+ if (node.children[i].excludeViewports.includes(this._viewport))
682
+ continue;
683
+ if (node.children[i].restrictViewports.length > 0 && !node.children[i].restrictViewports.includes(this._viewport))
684
+ continue;
685
+ }
670
686
  (_a = nodeDef.children) === null || _a === void 0 ? void 0 : _a.push(this.convertNode(node.children[i]));
687
+ }
671
688
  }
672
689
  this._content.nodes.push(nodeDef);
673
690
  this._nodes.push({
@@ -832,7 +849,7 @@ let GLTFConverter = class GLTFConverter {
832
849
  }
833
850
  };
834
851
  GLTFConverter = __decorate([
835
- tsyringe_1.singleton(),
852
+ (0, tsyringe_1.singleton)(),
836
853
  __metadata("design:paramtypes", [])
837
854
  ], GLTFConverter);
838
855
  exports.GLTFConverter = GLTFConverter;
@@ -1 +1 @@
1
- {"version":3,"file":"GLTFConverter.js","sourceRoot":"","sources":["../src/GLTFConverter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GLTFConverter.js","sourceRoot":"","sources":["../src/GLTFConverter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapediver/viewer.data-engine.gltf-converter",
3
- "version": "1.15.5",
3
+ "version": "2.0.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Michael Oppitz <michael@shapediver.com>",
@@ -10,7 +10,11 @@
10
10
  "test": "__tests__"
11
11
  },
12
12
  "files": [
13
- "dist"
13
+ "dist",
14
+ "src",
15
+ "package.json",
16
+ "README.md",
17
+ "tsconfig.json"
14
18
  ],
15
19
  "publishConfig": {
16
20
  "access": "public"
@@ -20,11 +24,10 @@
20
24
  "url": "git+https://github.com/shapediver/Viewer.git"
21
25
  },
22
26
  "scripts": {
23
- "test": "bash ../../scripts/test.sh",
24
27
  "check": "tsc --noEmit",
25
- "build": "bash ../../scripts/build.sh",
26
- "build-watch": "bash ../../scripts/build-watch.sh",
27
- "build-dep": "bash ../../scripts/build-dep.sh"
28
+ "build": "bash ../../scripts/building/build.sh",
29
+ "build-watch": "bash ../../scripts/building/build-watch.sh",
30
+ "build-dep": "bash ../../scripts/building/build-dep.sh"
28
31
  },
29
32
  "bugs": {
30
33
  "url": "https://github.com/shapediver/Viewer/issues"
@@ -36,15 +39,15 @@
36
39
  "testEnvironment": "node"
37
40
  },
38
41
  "dependencies": {
39
- "@shapediver/viewer.data-engine.shared-types": "1.15.5",
40
- "@shapediver/viewer.shared.build-data": "1.15.5",
41
- "@shapediver/viewer.shared.node-tree": "1.15.5",
42
- "@shapediver/viewer.shared.services": "1.15.5",
43
- "@shapediver/viewer.shared.types": "1.15.5",
42
+ "@shapediver/viewer.data-engine.shared-types": "2.0.0",
43
+ "@shapediver/viewer.shared.build-data": "2.0.0",
44
+ "@shapediver/viewer.shared.node-tree": "2.0.0",
45
+ "@shapediver/viewer.shared.services": "2.0.0",
46
+ "@shapediver/viewer.shared.types": "2.0.0",
44
47
  "axios": "^0.21.1",
45
48
  "gl-matrix": "3.3.0",
46
- "three": "^0.140.2",
49
+ "three": "^0.141.0",
47
50
  "tsyringe": "^4.5.0"
48
51
  },
49
- "gitHead": "120dd5fcfe70c66dcf03648d7a0afe35ad0fa120"
52
+ "gitHead": "bb53f1f23dcf3b1d76e786bdc8eb20e485c029f2"
50
53
  }
@@ -0,0 +1,941 @@
1
+ import { build_data } from '@shapediver/viewer.shared.build-data'
2
+ import { ITreeNode, TreeNode } from '@shapediver/viewer.shared.node-tree'
3
+ import { Converter, UuidGenerator } from '@shapediver/viewer.shared.services'
4
+ import { container, singleton } from 'tsyringe'
5
+ import {
6
+ ACCESSORCOMPONENTTYPE_V2 as ACCESSOR_COMPONENTTYPE,
7
+ ACCESSORTYPE_V2 as ACCESSORTYPE,
8
+ IGLTF_v2,
9
+ IGLTF_v2_Scene,
10
+ IGLTF_v2_Node,
11
+ IGLTF_v2_Material,
12
+ IGLTF_v2_Material_KHR_materials_pbrSpecularGlossiness,
13
+ IGLTF_v2_Primitive,
14
+ IGLTF_v2_Mesh,
15
+ IGLTF_v2_Accessor,
16
+ ACCESSORCOMPONENTSIZE_V2,
17
+ IGLTF_v2_BufferView,
18
+ IGLTF_v2_Texture,
19
+ IGLTF_v2_Image,
20
+ IGLTF_v2_Animation,
21
+ } from '@shapediver/viewer.data-engine.shared-types'
22
+ import { mat4, vec3 } from 'gl-matrix'
23
+ import {
24
+ AttributeData,
25
+ GeometryData,
26
+ MapData,
27
+ MATERIAL_ALPHA,
28
+ MATERIAL_SIDE,
29
+ MaterialStandardData,
30
+ AnimationData,
31
+ PRIMITIVE_MODE,
32
+ MaterialSpecularGlossinessData,
33
+ MaterialUnlitData,
34
+ IMaterialAbstractData,
35
+ IMapData,
36
+ IPrimitiveData,
37
+ IAttributeData,
38
+ IAnimationData,
39
+ IGeometryData,
40
+ } from '@shapediver/viewer.shared.types'
41
+ import * as THREE from 'three'
42
+
43
+ export enum GLTF_EXTENSIONS {
44
+ KHR_BINARY_GLTF = 'KHR_binary_glTF',
45
+ KHR_MATERIALS_PBRSPECULARGLOSSINESS = 'KHR_materials_pbrSpecularGlossiness',
46
+ KHR_MATERIALS_UNLIT = 'KHR_materials_unlit',
47
+ }
48
+
49
+ @singleton()
50
+ export class GLTFConverter {
51
+ // #region Properties (17)
52
+
53
+ private readonly _converter: Converter = <Converter>container.resolve(Converter);
54
+ private readonly _globalTransformationInverse = mat4.fromValues(
55
+ 1, 0, 0, 0,
56
+ 0, 0, -1, 0,
57
+ 0, 1, 0, 0,
58
+ 0, 0, 0, 1);
59
+ private readonly _mergeShader: THREE.ShaderMaterial;
60
+ private readonly _quadCamera: THREE.OrthographicCamera;
61
+ private readonly _quadScene: THREE.Scene;
62
+ private readonly _renderer: THREE.WebGLRenderer;
63
+ private readonly _uuidGenerator: UuidGenerator = <UuidGenerator>container.resolve(UuidGenerator);
64
+
65
+ private _animations: IAnimationData[] = [];
66
+ private _buffers: ArrayBuffer[] = [];
67
+ private _byteOffset: number = 0;
68
+ private _content: IGLTF_v2 = {
69
+ asset: {
70
+ copyright: '2021 (c) ShapeDiver',
71
+ generator: 'ShapeDiverViewer@' + build_data.build_version,
72
+ version: '2.0',
73
+ extensions: {}
74
+ },
75
+ }
76
+
77
+ private _convertForAR = false;
78
+ private _extensionsRequired: string[] = [];
79
+ private _extensionsUsed: string[] = [];
80
+ private _imageCache: { [key: string]: number } = {};
81
+ private _nodes: {
82
+ node: ITreeNode,
83
+ id: number
84
+ }[] = [];
85
+ private _promises: Promise<any>[] = [];
86
+ private _viewport?: string;
87
+
88
+ // #endregion Properties (17)
89
+
90
+ // #region Constructors (1)
91
+
92
+ constructor() {
93
+ this._mergeShader = new THREE.ShaderMaterial({
94
+ uniforms: {
95
+ tRed: { value: null },
96
+ activeRed: { value: false },
97
+ defaultRed: { value: 1.0 },
98
+ tGreen: { value: null },
99
+ activeGreen: { value: false },
100
+ defaultGreen: { value: 1.0 },
101
+ tBlue: { value: null },
102
+ activeBlue: { value: false },
103
+ defaultBlue: { value: 1.0 },
104
+ },
105
+ vertexShader: `// @author Michael Oppitz
106
+
107
+ uniform sampler2D tRed;
108
+ uniform bool activeRed;
109
+ uniform float defaultRed;
110
+
111
+ uniform sampler2D tGreen;
112
+ uniform bool activeGreen;
113
+ uniform float defaultGreen;
114
+
115
+ uniform sampler2D tBlue;
116
+ uniform bool activeBlue;
117
+ uniform float defaultBlue;
118
+
119
+ varying vec2 vUv;
120
+
121
+ void main() {
122
+ vUv = uv;
123
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
124
+ }`,
125
+ fragmentShader: `// @author Michael Oppitz
126
+
127
+ uniform sampler2D tRed;
128
+ uniform bool activeRed;
129
+ uniform float defaultRed;
130
+
131
+ uniform sampler2D tGreen;
132
+ uniform bool activeGreen;
133
+ uniform float defaultGreen;
134
+
135
+ uniform sampler2D tBlue;
136
+ uniform bool activeBlue;
137
+ uniform float defaultBlue;
138
+
139
+ varying vec2 vUv;
140
+
141
+ void main() {
142
+ vec4 outColor = vec4(0.0, 0.0, 0.0, 1.0);
143
+
144
+ if(activeRed == true) {
145
+ outColor.r = texture2D(tRed, vUv).r;
146
+ } else {
147
+ outColor.r = defaultRed;
148
+ }
149
+
150
+ if(activeGreen == true) {
151
+ outColor.g = texture2D(tGreen, vUv).g;
152
+ } else {
153
+ outColor.g = defaultGreen;
154
+ }
155
+
156
+ if(activeBlue == true) {
157
+ outColor.b = texture2D(tBlue, vUv).b;
158
+ } else {
159
+ outColor.b = defaultBlue;
160
+ }
161
+
162
+ gl_FragColor = outColor;
163
+ }`
164
+ });
165
+
166
+ this._quadCamera = new THREE.OrthographicCamera(- 1, 1, 1, - 1, 0, 1);
167
+ this._quadScene = new THREE.Scene();
168
+ const quad = new THREE.Mesh(new THREE.PlaneGeometry(2, 2), this._mergeShader);
169
+ this._quadScene.add(quad);
170
+
171
+ this._renderer = new THREE.WebGLRenderer();
172
+ }
173
+
174
+ // #endregion Constructors (1)
175
+
176
+ // #region Public Methods (1)
177
+
178
+ public async convert(node: ITreeNode, convertForAR = false, viewport?: string): Promise<ArrayBuffer> {
179
+ this.reset();
180
+
181
+ this._convertForAR = convertForAR;
182
+ this._viewport = viewport;
183
+ const originalParent = node.parent;
184
+
185
+ const sceneNode = new TreeNode('ShapeDiverRootNode');
186
+ sceneNode.addChild(node);
187
+
188
+ const sceneDef: IGLTF_v2_Scene = {
189
+ name: sceneNode.name,
190
+ nodes: []
191
+ };
192
+
193
+ const nodeMatrix = mat4.clone(node.nodeMatrix);
194
+ const globalTransformationInverseId = this._uuidGenerator.create();
195
+ node.addTransformation({
196
+ id: globalTransformationInverseId,
197
+ matrix: this._globalTransformationInverse,
198
+ })
199
+
200
+ const translationMatrixId = this._uuidGenerator.create();
201
+ if(convertForAR) {
202
+ // add translation matrix to scene tree node
203
+ const bb = node.boundingBox.clone().applyMatrix(mat4.invert(mat4.create(), nodeMatrix));
204
+ const center = bb.boundingSphere.center;
205
+ let translationMatrix: mat4 = mat4.fromTranslation(mat4.create(), vec3.multiply(vec3.create(), vec3.fromValues(center[0], center[1], center[2]), vec3.fromValues(-1, -1, -1)));
206
+ node.addTransformation({ id: translationMatrixId, matrix: translationMatrix })
207
+ }
208
+
209
+ if (this._viewport) {
210
+ if(this._viewport && node.excludeViewports.includes(this._viewport) === false && (node.restrictViewports.length > 0 && !node.restrictViewports.includes(this._viewport)) === false) {
211
+ sceneDef.nodes?.push(this.convertNode(node));
212
+ }
213
+ } else {
214
+ sceneDef.nodes?.push(this.convertNode(node));
215
+ }
216
+
217
+ for (let i = 0; i < node.transformations.length; i++)
218
+ if (node.transformations[i].id === globalTransformationInverseId)
219
+ node.removeTransformation(node.transformations[i]);
220
+
221
+
222
+ if (convertForAR) {
223
+ // remove translation the matrix
224
+ for (let i = 0; i < node.transformations.length; i++)
225
+ if (node.transformations[i].id === translationMatrixId)
226
+ node.removeTransformation(node.transformations[i]);
227
+ }
228
+
229
+ this._content.scenes = [];
230
+ this._content.scenes.push(sceneDef);
231
+
232
+ this.convertAnimations();
233
+
234
+ // Declare extensions.
235
+ if (this._extensionsUsed.length > 0) this._content.extensionsUsed = this._extensionsUsed;
236
+ if (this._extensionsRequired.length > 0) this._content.extensionsRequired = this._extensionsRequired;
237
+
238
+ let promisesLength = 0;
239
+ while (promisesLength !== this._promises.length) {
240
+ promisesLength = this._promises.length;
241
+ await Promise.all(this._promises);
242
+ await new Promise(resolve => setTimeout(resolve, 0));
243
+ }
244
+ // Merge buffers.
245
+ const blob = new Blob(this._buffers, { type: 'application/octet-stream' });
246
+
247
+ if(originalParent)
248
+ originalParent.addChild(node);
249
+
250
+ // Update byte length of the single buffer.
251
+ if (this._content.buffers && this._content.buffers.length > 0) this._content.buffers[0].byteLength = blob.size;
252
+
253
+ return new Promise<ArrayBuffer>(resolve => {
254
+ // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
255
+
256
+ const reader = new window.FileReader();
257
+ reader.readAsArrayBuffer(blob);
258
+ reader.onloadend = () => {
259
+ // Binary chunk.
260
+ const binaryChunk = this.getPaddedArrayBuffer(<ArrayBuffer>reader.result);
261
+ const binaryChunkPrefix = new DataView(new ArrayBuffer(8));
262
+ binaryChunkPrefix.setUint32(0, binaryChunk.byteLength, true);
263
+ binaryChunkPrefix.setUint32(4, 0x004E4942, true);
264
+
265
+ // JSON chunk.
266
+ const jsonChunk = this.getPaddedArrayBuffer(this.stringToArrayBuffer(JSON.stringify(this._content)), 0x20);
267
+ const jsonChunkPrefix = new DataView(new ArrayBuffer(8));
268
+ jsonChunkPrefix.setUint32(0, jsonChunk.byteLength, true);
269
+ jsonChunkPrefix.setUint32(4, 0x4E4F534A, true);
270
+
271
+ // GLB header.
272
+ const header = new ArrayBuffer(12);
273
+ const headerView = new DataView(header);
274
+ headerView.setUint32(0, 0x46546C67, true);
275
+ headerView.setUint32(4, 2, true);
276
+ const totalByteLength = 12
277
+ + jsonChunkPrefix.byteLength + jsonChunk.byteLength
278
+ + binaryChunkPrefix.byteLength + binaryChunk.byteLength;
279
+ headerView.setUint32(8, totalByteLength, true);
280
+
281
+ const glbBlob = new Blob([
282
+ header,
283
+ jsonChunkPrefix,
284
+ jsonChunk,
285
+ binaryChunkPrefix,
286
+ binaryChunk
287
+ ], { type: 'application/octet-stream' });
288
+
289
+ const glbReader = new window.FileReader();
290
+ glbReader.readAsArrayBuffer(glbBlob);
291
+ glbReader.onloadend = () => {
292
+ resolve(<ArrayBuffer>glbReader.result);
293
+ };
294
+
295
+ };
296
+ })
297
+ }
298
+
299
+ // #endregion Public Methods (1)
300
+
301
+ // #region Private Methods (18)
302
+
303
+ private async combineTextures(red?: IMapData, green?: IMapData, blue?: IMapData): Promise<MapData> {
304
+ if (!red && !green && !blue)
305
+ throw new Error('No maps supplied.')
306
+
307
+ let width = 0, height = 0;
308
+ const textures = [red, green, blue];
309
+ for (let t of textures) {
310
+ if (t) {
311
+ if (width === 0 && height === 0) {
312
+ width = t.image.width;
313
+ height = t.image.height;
314
+ } else if (t.image.width !== width && t.image.height !== height) {
315
+ throw new Error('Maps have different sizes. Combining not supported.')
316
+ }
317
+ }
318
+ }
319
+
320
+ if (red) {
321
+ const redTexture = new THREE.Texture(red.image);
322
+ redTexture.needsUpdate = true;
323
+ this._mergeShader.uniforms.tRed.value = redTexture;
324
+ this._mergeShader.uniforms.activeRed.value = true;
325
+ } else {
326
+ this._mergeShader.uniforms.activeRed.value = false;
327
+ }
328
+
329
+ if (green) {
330
+ const greenTexture = new THREE.Texture(green.image);
331
+ greenTexture.needsUpdate = true;
332
+ this._mergeShader.uniforms.tGreen.value = greenTexture;
333
+ this._mergeShader.uniforms.activeGreen.value = true;
334
+ } else {
335
+ this._mergeShader.uniforms.activeGreen.value = false;
336
+ }
337
+
338
+ if (blue) {
339
+ const blueTexture = new THREE.Texture(blue.image);
340
+ blueTexture.needsUpdate = true;
341
+ this._mergeShader.uniforms.tBlue.value = blueTexture;
342
+ this._mergeShader.uniforms.activeBlue.value = true;
343
+ } else {
344
+ this._mergeShader.uniforms.activeBlue.value = false;
345
+ }
346
+
347
+ // The different render targets that are used by the passes
348
+ const renderTarget = new THREE.WebGLRenderTarget(width, height, {
349
+ minFilter: THREE.LinearFilter,
350
+ magFilter: THREE.LinearFilter,
351
+ format: THREE.RGBAFormat
352
+ });
353
+ renderTarget.texture.name = 'target.rt';
354
+ this._renderer.setRenderTarget(renderTarget)
355
+
356
+ this._renderer.render(this._quadScene, this._quadCamera);
357
+
358
+ const buffer = new Uint8ClampedArray(4 * width * height);
359
+ this._renderer.readRenderTargetPixels(renderTarget, 0, 0, width, height, buffer)
360
+
361
+ let imageData = new ImageData(buffer, width, height);
362
+ var canvas = document.createElement('canvas');
363
+ var ctx = <CanvasRenderingContext2D>canvas.getContext('2d');
364
+ canvas.width = imageData.width;
365
+ canvas.height = imageData.height;
366
+ ctx.putImageData(imageData, 0, 0);
367
+
368
+ const image = new Image();
369
+ const promise = new Promise<void>(resolve => {
370
+ image.onload = () => resolve();
371
+ })
372
+ image.crossOrigin = "anonymous";
373
+ image.src = canvas.toDataURL("image/jpeg", 1.0);
374
+
375
+ await promise;
376
+
377
+ const m = (red || green || blue)!;
378
+ return new MapData(image, m.wrapS, m.wrapT, m.minFilter, m.magFilter, m.center, m.color, m.offset, m.repeat, m.rotation, m.flipY);
379
+ }
380
+
381
+ private convertAccessor(data: IAttributeData): number {
382
+ if (!this._content.accessors) this._content.accessors = [];
383
+
384
+ const bufferView = this.convertBufferView(data);
385
+ const minMax = this.getMinMax(data);
386
+
387
+ const accessorDef: IGLTF_v2_Accessor = {
388
+ bufferView: bufferView,
389
+ byteOffset: 0,
390
+ componentType: this.getComponentType(data.array),
391
+ normalized: data.normalized,
392
+ count: +data.count,
393
+ max: minMax.max,
394
+ min: minMax.min,
395
+ type: this.getType(data.itemSize),
396
+ // sparse: { // TODO
397
+ // count: number,
398
+ // indices: {
399
+ // bufferView: number,
400
+ // byteOffset?: number,
401
+ // componentType: number,
402
+ // extensions?: { [id: string]: any },
403
+ // extras?: any
404
+ // },
405
+ // values: {
406
+ // bufferView: number,
407
+ // byteOffset?: number,
408
+ // extensions?: { [id: string]: any },
409
+ // extras?: any
410
+ // },
411
+ // extensions?: { [id: string]: any },
412
+ // extras?: any
413
+ // },
414
+ };
415
+
416
+ this._content.accessors.push(accessorDef);
417
+ return this._content.accessors.length - 1;
418
+ }
419
+
420
+ private convertAnimations() {
421
+ if (!this._content.animations && this._animations.length > 0) this._content.animations = [];
422
+ for (let i = 0; i < this._animations.length; i++) {
423
+ const animation = this._animations[i];
424
+ const animationDef: IGLTF_v2_Animation = {
425
+ name: animation.name || 'animation_' + i,
426
+ channels: [],
427
+ samplers: []
428
+ }
429
+
430
+ for (let j = 0; j < animation.tracks.length; j++) {
431
+ const track = animation.tracks[j];
432
+ const value = this._nodes.find(a => a.node === track.node);
433
+ if (!value) continue;
434
+
435
+ const inputMin = Math.min(...track.times);
436
+ const inputMax = Math.max(...track.times);
437
+ const inputData = new AttributeData(
438
+ new Float32Array(track.times),
439
+ 1,
440
+ 4,
441
+ 0,
442
+ 4,
443
+ false,
444
+ track.times.length,
445
+ [inputMin],
446
+ [inputMax]);
447
+
448
+ const outputMin = [];
449
+ outputMin.push(Math.min(...track.values.filter((s, i) => i % (track.path === 'rotation' ? 4 : 3) === 0)));
450
+ outputMin.push(Math.min(...track.values.filter((s, i) => i % (track.path === 'rotation' ? 4 : 3) === 1)));
451
+ outputMin.push(Math.min(...track.values.filter((s, i) => i % (track.path === 'rotation' ? 4 : 3) === 2)));
452
+
453
+ if (track.path === 'rotation') {
454
+ outputMin.push(Math.min(...track.values.filter((s, i) => i % 4 === 3)));
455
+ }
456
+
457
+ const outputMax = [];
458
+ outputMax.push(Math.max(...track.values.filter((s, i) => i % (track.path === 'rotation' ? 4 : 3) === 0)));
459
+ outputMax.push(Math.max(...track.values.filter((s, i) => i % (track.path === 'rotation' ? 4 : 3) === 1)));
460
+ outputMax.push(Math.max(...track.values.filter((s, i) => i % (track.path === 'rotation' ? 4 : 3) === 2)));
461
+
462
+ if (track.path === 'rotation') {
463
+ outputMax.push(Math.max(...track.values.filter((s, i) => i % 4 === 3)));
464
+ }
465
+
466
+ const outputData = new AttributeData(
467
+ new Float32Array(track.values),
468
+ track.path === 'rotation' ? 4 : 3, //itemSize
469
+ track.path === 'rotation' ? 16 : 12, //itemBytes
470
+ 0,
471
+ 4,
472
+ false,
473
+ track.times.length,
474
+ outputMin,
475
+ outputMax,
476
+ track.path === 'rotation' ? 16 : 12)
477
+
478
+ const samplerDef: {
479
+ input: number,
480
+ interpolation?: string,
481
+ output: number,
482
+ } = {
483
+ input: this.convertAccessor(inputData),
484
+ output: this.convertAccessor(outputData),
485
+ interpolation: track.interpolation.toUpperCase()
486
+ }
487
+ animationDef.samplers.push(samplerDef);
488
+
489
+ const channelDef: {
490
+ sampler: number,
491
+ target: {
492
+ node: number,
493
+ path: string,
494
+ }
495
+ } = {
496
+ sampler: animationDef.samplers.length - 1,
497
+ target: {
498
+ node: value.id,
499
+ path: track.path
500
+ }
501
+ }
502
+ animationDef.channels.push(channelDef);
503
+ }
504
+ this._content.animations?.push(animationDef)
505
+ }
506
+ }
507
+
508
+ private convertBuffer(buffer: ArrayBuffer): number {
509
+ if (!this._content.buffers) this._content.buffers = [];
510
+ if (this._content.buffers.length === 0) this._content.buffers = [{ byteLength: 0 }];
511
+ this._buffers.push(buffer);
512
+ return 0;
513
+ }
514
+
515
+ private convertBufferView(data: IAttributeData): number {
516
+ if (!this._content.bufferViews) this._content.bufferViews = [];
517
+ let componentTypeNumber = this.getComponentType(data.array)
518
+ let componentSize = ACCESSORCOMPONENTSIZE_V2[<keyof typeof ACCESSORCOMPONENTSIZE_V2>componentTypeNumber];
519
+
520
+ const byteLength = Math.ceil(data.count * data.itemSize * componentSize / 4) * 4;
521
+ const dataView = new DataView(new ArrayBuffer(byteLength));
522
+ let offset = 0;
523
+
524
+ for (let i = 0; i < data.count; i++) {
525
+ for (let a = 0; a < data.itemSize; a++) {
526
+ let value = 0;
527
+ if (data.itemSize > 4) {
528
+ // no support for interleaved data for itemSize > 4
529
+ value = data.array[i * data.itemSize + a];
530
+ } else {
531
+ if (a === 0) value = data.array[i * data.itemSize];
532
+ else if (a === 1) value = data.array[i * data.itemSize + 1];
533
+ else if (a === 2) value = data.array[i * data.itemSize + 2];
534
+ else if (a === 3) value = data.array[i * data.itemSize + 3];
535
+ }
536
+
537
+ if (data.array instanceof Float32Array) {
538
+ dataView.setFloat32(offset, value, true);
539
+ } else if (data.array instanceof Uint32Array) {
540
+ dataView.setUint32(offset, value, true);
541
+ } else if (data.array instanceof Uint16Array) {
542
+ dataView.setUint16(offset, value, true);
543
+ } else if (data.array instanceof Int16Array) {
544
+ dataView.setInt16(offset, value, true);
545
+ } else if (data.array instanceof Uint8Array) {
546
+ dataView.setUint8(offset, value);
547
+ } else if (data.array instanceof Int8Array) {
548
+ dataView.setInt8(offset, value);
549
+ }
550
+ offset += componentSize;
551
+ }
552
+ }
553
+
554
+ const bufferViewDef: IGLTF_v2_BufferView = {
555
+ buffer: this.convertBuffer(dataView.buffer),
556
+ byteOffset: this._byteOffset,
557
+ byteLength: byteLength
558
+ };
559
+ this._byteOffset += byteLength;
560
+
561
+ this._content.bufferViews.push(bufferViewDef);
562
+ return this._content.bufferViews.length - 1;
563
+ }
564
+
565
+ private async convertBufferViewImage(blob: Blob): Promise<number> {
566
+ if (!this._content.bufferViews) this._content.bufferViews = [];
567
+ return new Promise((resolve) => {
568
+ const reader = new window.FileReader();
569
+ reader.readAsArrayBuffer(blob);
570
+ reader.onloadend = () => {
571
+ const buffer = this.getPaddedArrayBuffer(<ArrayBuffer>reader.result);
572
+ const bufferViewDef = {
573
+ buffer: this.convertBuffer(buffer),
574
+ byteOffset: this._byteOffset,
575
+ byteLength: buffer.byteLength
576
+ };
577
+ this._byteOffset += buffer.byteLength;
578
+ this._content.bufferViews!.push(bufferViewDef);
579
+ resolve(this._content.bufferViews!.length - 1);
580
+ };
581
+ });
582
+ }
583
+
584
+ private convertImage(data: IMapData): number {
585
+ if (!this._content.images) this._content.images = [];
586
+ if (this._imageCache[data.image.src]) return this._imageCache[data.image.src];
587
+ const imageDef: IGLTF_v2_Image = {};
588
+ const canvas = document.createElement('canvas');
589
+
590
+ canvas.width = data.image.width;
591
+ canvas.height = data.image.height;
592
+
593
+ const ctx: CanvasRenderingContext2D = canvas.getContext('2d')!;
594
+ if (data.flipY) {
595
+ ctx.translate(0, canvas.height);
596
+ ctx.scale(1, - 1);
597
+ }
598
+
599
+ let mimeType = 'image/png';
600
+ if (data.image.src.endsWith('.jpg') || data.image.src.includes('image/jpeg'))
601
+ mimeType = 'image/jpeg';
602
+
603
+ imageDef.mimeType = mimeType;
604
+
605
+ const DATA_URI_REGEX = /^data:(.*?)(;base64)?,(.*)$/;
606
+ if (DATA_URI_REGEX.test(data.image.src)) {
607
+ const byteString = atob(data.image.src.split(',')[1]);
608
+ const mimeType = data.image.src.split(',')[0].split(':')[1].split(';')[0]
609
+ const ab = new ArrayBuffer(byteString.length);
610
+ const ia = new Uint8Array(ab);
611
+ for (let i = 0; i < byteString.length; i++)
612
+ ia[i] = byteString.charCodeAt(i);
613
+ const blob = new Blob([ab], { type: mimeType });
614
+ this._promises.push(new Promise<void>(async (resolve) => {
615
+ const bufferViewIndex = await this.convertBufferViewImage(blob!);
616
+ imageDef.bufferView = bufferViewIndex;
617
+ resolve();
618
+ }));
619
+ } else {
620
+ ctx.drawImage(data.image, 0, 0, canvas.width, canvas.height);
621
+ this._promises.push(new Promise<void>((resolve) => {
622
+ canvas.toBlob(async (blob) => {
623
+ const bufferViewIndex = await this.convertBufferViewImage(blob!);
624
+ imageDef.bufferView = bufferViewIndex;
625
+ resolve();
626
+ }, mimeType);
627
+ }));
628
+ }
629
+
630
+ this._content.images.push(imageDef);
631
+ this._imageCache[data.image.src] = this._content.images.length - 1;
632
+ return this._content.images.length - 1;
633
+ }
634
+
635
+ private convertMaterial(data: IMaterialAbstractData, includeMaps = true): number {
636
+ if (!this._content.materials) this._content.materials = [];
637
+ const materialDef: IGLTF_v2_Material = {
638
+ name: data.id,
639
+ pbrMetallicRoughness: {}
640
+ };
641
+
642
+ if (data instanceof MaterialSpecularGlossinessData) {
643
+ if (!this._extensionsUsed.includes('KHR_materials_pbrSpecularGlossiness'))
644
+ this._extensionsUsed.push('KHR_materials_pbrSpecularGlossiness')
645
+ if (!this._extensionsRequired.includes('KHR_materials_pbrSpecularGlossiness'))
646
+ this._extensionsRequired.push('KHR_materials_pbrSpecularGlossiness')
647
+
648
+ const ext: IGLTF_v2_Material_KHR_materials_pbrSpecularGlossiness = {};
649
+
650
+ ext.diffuseFactor = this._converter.toColorArray(data.color);
651
+ ext.diffuseFactor[3] = data.opacity;
652
+ if (data.map && includeMaps) ext.diffuseTexture = { index: this.convertTexture(data.map) }
653
+ ext.specularFactor = this._converter.toColorArray(data.specular);
654
+ ext.glossinessFactor = data.glossiness;
655
+ if (data.specularGlossinessMap && includeMaps)
656
+ ext.specularGlossinessTexture = { index: this.convertTexture(data.specularGlossinessMap) };
657
+
658
+ materialDef.extensions = {
659
+ KHR_materials_pbrSpecularGlossiness: ext
660
+ }
661
+ } else if (data instanceof MaterialUnlitData) {
662
+ if (!this._extensionsUsed.includes('KHR_materials_unlit'))
663
+ this._extensionsUsed.push('KHR_materials_unlit')
664
+ if (!this._extensionsRequired.includes('KHR_materials_unlit'))
665
+ this._extensionsRequired.push('KHR_materials_unlit')
666
+ materialDef.pbrMetallicRoughness!.baseColorFactor = this._converter.toColorArray(data.color);
667
+ materialDef.pbrMetallicRoughness!.baseColorFactor[3] = data.opacity;
668
+ if (data.map && includeMaps) materialDef.pbrMetallicRoughness!.baseColorTexture = { index: this.convertTexture(data.map) }
669
+
670
+ materialDef.extensions = {
671
+ KHR_materials_unlit: {}
672
+ };
673
+ } else {
674
+ const standardMaterialData = data as MaterialStandardData;
675
+ materialDef.pbrMetallicRoughness!.baseColorFactor = this._converter.toColorArray(standardMaterialData.color);
676
+ materialDef.pbrMetallicRoughness!.baseColorFactor[3] = standardMaterialData.opacity;
677
+ if (standardMaterialData.map && includeMaps) materialDef.pbrMetallicRoughness!.baseColorTexture = { index: this.convertTexture(standardMaterialData.map) }
678
+ materialDef.pbrMetallicRoughness!.metallicFactor = standardMaterialData.metalnessMap ? 1 : standardMaterialData.metalness;
679
+ materialDef.pbrMetallicRoughness!.roughnessFactor = standardMaterialData.roughnessMap ? 1 : standardMaterialData.roughness;
680
+ if (standardMaterialData.metalnessRoughnessMap && includeMaps) {
681
+ materialDef.pbrMetallicRoughness!.metallicRoughnessTexture = { index: this.convertTexture(standardMaterialData.metalnessRoughnessMap) };
682
+ } else if ((standardMaterialData.metalnessMap || standardMaterialData.roughnessMap) && includeMaps) {
683
+ this._promises.push(new Promise<void>(async resolve => {
684
+ const mapData = await this.combineTextures(undefined, standardMaterialData.roughnessMap, standardMaterialData.metalnessMap);
685
+ materialDef.pbrMetallicRoughness!.metallicRoughnessTexture = { index: this.convertTexture(mapData) }
686
+ resolve();
687
+ }))
688
+ }
689
+ }
690
+
691
+ if (data.normalMap && includeMaps) materialDef.normalTexture = { index: this.convertTexture(data.normalMap) };
692
+ if (data.aoMap && includeMaps) materialDef.occlusionTexture = { index: this.convertTexture(data.aoMap) };
693
+ if (data.emissiveMap && includeMaps) materialDef.emissiveTexture = { index: this.convertTexture(data.emissiveMap) };
694
+ if (data.emissiveness) materialDef.emissiveFactor = this._converter.toColorArray(data.emissiveness);
695
+ materialDef.alphaMode = data.alphaMode.toUpperCase();
696
+ if (data.alphaMode === MATERIAL_ALPHA.MASK) materialDef.alphaCutoff = data.alphaCutoff;
697
+ materialDef.doubleSided = data.side === MATERIAL_SIDE.DOUBLE;
698
+
699
+ this._content.materials.push(materialDef);
700
+ return this._content.materials.length - 1;
701
+ }
702
+
703
+ private convertMesh(data: IGeometryData): number {
704
+ if (!this._content.meshes) this._content.meshes = [];
705
+ const meshDef: IGLTF_v2_Mesh = {
706
+ primitives: [],
707
+ name: data.id
708
+ };
709
+
710
+ meshDef.primitives?.push(this.convertPrimitive(data.primitive))
711
+
712
+ this._content.meshes.push(meshDef);
713
+ return this._content.meshes.length - 1;
714
+ }
715
+
716
+ private convertNode(node: ITreeNode): number {
717
+ if (!this._content.nodes) this._content.nodes = [];
718
+ const nodeDef: IGLTF_v2_Node = {
719
+ name: node.name,
720
+ };
721
+
722
+ if (node.transformations.length > 0) {
723
+ let matrix = node.nodeMatrix;
724
+ if(node.nodeMatrix.filter(v => isNaN(v) || v === Infinity || v === -Infinity).length > 0)
725
+ matrix = mat4.create();
726
+
727
+ nodeDef.matrix = [matrix[0], matrix[1], matrix[2], matrix[3],
728
+ matrix[4], matrix[5], matrix[6], matrix[7],
729
+ matrix[8], matrix[9], matrix[10], matrix[11],
730
+ matrix[12], matrix[13], matrix[14], matrix[15]];
731
+
732
+ }
733
+
734
+ for (let i = 0; i < node.data.length; i++) {
735
+ if (node.data[i] instanceof GeometryData) {
736
+ if (this._convertForAR) {
737
+ if ((<GeometryData>node.data[i]).primitive.mode !== PRIMITIVE_MODE.POINTS &&
738
+ (<GeometryData>node.data[i]).primitive.mode !== PRIMITIVE_MODE.LINES &&
739
+ (<GeometryData>node.data[i]).primitive.mode !== PRIMITIVE_MODE.LINE_LOOP &&
740
+ (<GeometryData>node.data[i]).primitive.mode !== PRIMITIVE_MODE.LINE_STRIP)
741
+ nodeDef.mesh = this.convertMesh(<GeometryData>node.data[i])
742
+ } else {
743
+ nodeDef.mesh = this.convertMesh(<GeometryData>node.data[i])
744
+ }
745
+ }
746
+
747
+ if (node.data[i] instanceof AnimationData)
748
+ this._animations.push(<AnimationData>node.data[i])
749
+ }
750
+
751
+ if (node.children.length > 0) nodeDef.children = [];
752
+ for (let i = 0; i < node.children.length; i++) {
753
+ if(node.children[i].visible === true) {
754
+ if(this._viewport) {
755
+ if(node.children[i].excludeViewports.includes(this._viewport)) continue;
756
+ if(node.children[i].restrictViewports.length > 0 && !node.children[i].restrictViewports.includes(this._viewport)) continue;
757
+ }
758
+ nodeDef.children?.push(this.convertNode(node.children[i]));
759
+ }
760
+ }
761
+
762
+ this._content.nodes.push(nodeDef);
763
+ this._nodes.push({
764
+ node,
765
+ id: this._content.nodes.length - 1
766
+ });
767
+ return this._content.nodes.length - 1;
768
+ }
769
+
770
+ private convertPrimitive(data: IPrimitiveData): IGLTF_v2_Primitive {
771
+ const primitiveDef: IGLTF_v2_Primitive = {
772
+ attributes: {},
773
+ mode: data.mode
774
+ };
775
+
776
+ for (let a in data.attributes) {
777
+ if (data.attributes[a].array.length > 0) {
778
+ if (a.includes('COLOR')) {
779
+ if (data.attributes[a].itemSize % 4 === 0) {
780
+ primitiveDef.attributes[a] = this.convertAccessor(data.attributes[a])
781
+ } else if (data.attributes[a].itemSize % 3 === 0) {
782
+ const oldAttributeData = data.attributes[a];
783
+ const newArray = new Float32Array((oldAttributeData.array.length/3)*4);
784
+
785
+ let counter = 0;
786
+ for(let i = 0; i < newArray.length; i+=4) {
787
+ newArray[i] = oldAttributeData.array[counter] / (oldAttributeData.elementBytes === 1 ? 255.0 : 1.0);
788
+ newArray[i+1] = oldAttributeData.array[counter+1] / (oldAttributeData.elementBytes === 1 ? 255.0 : 1.0);
789
+ newArray[i+2] = oldAttributeData.array[counter+2] / (oldAttributeData.elementBytes === 1 ? 255.0 : 1.0);
790
+ newArray[i+3] = 1.0;
791
+ counter+=3;
792
+ }
793
+ primitiveDef.attributes[a] = this.convertAccessor(new AttributeData(newArray, 4, 4*4, oldAttributeData.byteOffset, 4, oldAttributeData.normalized, oldAttributeData.count, oldAttributeData.min, oldAttributeData.max, oldAttributeData.byteStride));
794
+
795
+ }
796
+ } else {
797
+ primitiveDef.attributes[a] = this.convertAccessor(data.attributes[a])
798
+ }
799
+ }
800
+ }
801
+
802
+ if (data.indices)
803
+ primitiveDef.indices = this.convertAccessor(data.indices);
804
+
805
+ if (data.material) {
806
+ const k = Object.keys(primitiveDef.attributes).find(k => k.includes('TEXCOORD'));
807
+ primitiveDef.material = this.convertMaterial(data.material, !!k);
808
+ }
809
+
810
+ return primitiveDef;
811
+ }
812
+
813
+ private convertTexture(data: IMapData): number {
814
+ if (!this._content.textures) this._content.textures = [];
815
+ const textureDef: IGLTF_v2_Texture = {
816
+ source: this.convertImage(data)
817
+ };
818
+ // TODO samplers
819
+ this._content.textures.push(textureDef);
820
+ return this._content.textures.length - 1;
821
+ }
822
+
823
+ private getComponentType(array: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array) {
824
+ switch (true) {
825
+ case array instanceof Int8Array:
826
+ return 5120;
827
+ case array instanceof Uint8Array:
828
+ return 5121;
829
+ case array instanceof Int16Array:
830
+ return 5122;
831
+ case array instanceof Uint16Array:
832
+ return 5123;
833
+ case array instanceof Uint32Array:
834
+ return 5125;
835
+ default:
836
+ return 5126;
837
+ }
838
+ }
839
+
840
+ private getMinMax(data: IAttributeData): { min: number[], max: number[] } {
841
+ const output = {
842
+ min: new Array(data.itemSize).fill(Number.POSITIVE_INFINITY),
843
+ max: new Array(data.itemSize).fill(Number.NEGATIVE_INFINITY)
844
+ };
845
+
846
+ for (let i = 0; i < data.count; i++) {
847
+ for (let a = 0; a < data.itemSize; a++) {
848
+ let value = 0;
849
+ if (data.itemSize > 4) {
850
+ // no support for interleaved data for itemSize > 4
851
+ value = data.array[i * data.itemSize + a];
852
+ } else {
853
+ if (a === 0) value = data.array[i * data.itemSize];
854
+ else if (a === 1) value = data.array[i * data.itemSize + 1];
855
+ else if (a === 2) value = data.array[i * data.itemSize + 2];
856
+ else if (a === 3) value = data.array[i * data.itemSize + 3];
857
+ }
858
+ output.min[a] = Math.min(output.min[a], value);
859
+ output.max[a] = Math.max(output.max[a], value);
860
+ }
861
+ }
862
+ return output;
863
+ }
864
+
865
+ private getPaddedArrayBuffer(arrayBuffer: ArrayBuffer, paddingByte = 0) {
866
+ const paddedLength = Math.ceil(arrayBuffer.byteLength / 4) * 4;
867
+
868
+ if (paddedLength !== arrayBuffer.byteLength) {
869
+ const array = new Uint8Array(paddedLength);
870
+ array.set(new Uint8Array(arrayBuffer));
871
+
872
+ if (paddingByte !== 0) {
873
+ for (let i = arrayBuffer.byteLength; i < paddedLength; i++) {
874
+ array[i] = paddingByte;
875
+ }
876
+ }
877
+
878
+ return array.buffer;
879
+ }
880
+
881
+ return arrayBuffer;
882
+ }
883
+
884
+ private getType(itemSize: number) {
885
+ switch (itemSize) {
886
+ case 1:
887
+ return 'SCALAR';
888
+ case 2:
889
+ return 'VEC2';
890
+ case 3:
891
+ return 'VEC3';
892
+ case 4:
893
+ return 'VEC4';
894
+ case 9:
895
+ return 'MAT3';
896
+ case 18:
897
+ return 'MAT4';
898
+ default:
899
+ return 'VEC3';
900
+ }
901
+ }
902
+
903
+ private reset() {
904
+ this._animations = [];
905
+ this._buffers = [];
906
+ this._byteOffset = 0;
907
+ this._content = {
908
+ asset: {
909
+ copyright: '2021 (c) ShapeDiver',
910
+ generator: 'ShapeDiverViewer@' + build_data.build_version,
911
+ version: '2.0',
912
+ extensions: {}
913
+ },
914
+ }
915
+
916
+ this._extensionsRequired = [];
917
+ this._extensionsUsed = [];
918
+ this._imageCache = {};
919
+ this._nodes = [];
920
+ this._promises = [];
921
+ }
922
+
923
+ private stringToArrayBuffer(text: string) {
924
+ if (window.TextEncoder !== undefined) {
925
+ return new TextEncoder().encode(text).buffer;
926
+ }
927
+
928
+ const array = new Uint8Array(new ArrayBuffer(text.length));
929
+
930
+ for (let i = 0, il = text.length; i < il; i++) {
931
+ const value = text.charCodeAt(i);
932
+
933
+ // Replacing multi-byte character with space(0x20).
934
+ array[i] = value > 0xFF ? 0x20 : value;
935
+ }
936
+
937
+ return array.buffer;
938
+ }
939
+
940
+ // #endregion Private Methods (18)
941
+ }
package/src/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { GLTFConverter } from './GLTFConverter'
2
+
3
+ export {
4
+ GLTFConverter
5
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "include": [
4
+ "./**/*.ts"
5
+ ],
6
+ "compilerOptions": {
7
+ "rootDir": "src",
8
+ "outDir": "dist"
9
+ },
10
+ "exclude": [
11
+ "__tests__",
12
+ "node_modules",
13
+ "dist",
14
+ "dist-dev",
15
+ "dist-prod"
16
+ ]
17
+ }