@shapediver/viewer.data-engine.tag3d-engine 3.16.7 → 3.16.9

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,41 +1,41 @@
1
- import { ResOutputContent } from "@shapediver/sdk.geometry-api-sdk-v2";
2
- import { ITreeNode } from "@shapediver/viewer.shared.node-tree";
3
- /**
4
- * The font info object contains the glb file path and the dimensions of the font.
5
- *
6
- * There can either be a single glb file for both ascii and non-ascii characters or separate glb files for each.
7
- * The advantage of having separate glb files is that the ascii glb can be loaded once and the non-ascii glb can be loaded only when needed.
8
- */
9
- export declare type FontInfo = string | {
10
- ascii: string;
11
- other: string;
12
- };
13
- export declare class Tag3dEngine {
14
- private readonly _logger;
15
- private static _asciiGlb;
16
- private static _fontInfo;
17
- private static _instance;
18
- private static _mainGlb;
19
- private static _nonAsciiGlb;
20
- static get instance(): Tag3dEngine;
21
- static setFontInfo(fontInfo: FontInfo): void;
22
- /**
23
- * Load the tag3d content into a scene graph node.
24
- *
25
- * @param content the tag3d content
26
- * @returns the scene graph node
27
- */
28
- loadContent(content: ResOutputContent): Promise<ITreeNode>;
29
- /**
30
- * Load the tag 3d content into separate characters.
31
- * For each character, a node is created and the character is added as a geometry data object.
32
- * The nodes are then added to a dictionary with the character as the key.
33
- *
34
- * Instance matrices are provided depending on the number of instances of the character.
35
- *
36
- * @param tag3dInfo
37
- * @returns
38
- */
39
- private loadTag;
40
- }
1
+ import { ResOutputContent } from "@shapediver/sdk.geometry-api-sdk-v2";
2
+ import { ITreeNode } from "@shapediver/viewer.shared.node-tree";
3
+ /**
4
+ * The font info object contains the glb file path and the dimensions of the font.
5
+ *
6
+ * There can either be a single glb file for both ascii and non-ascii characters or separate glb files for each.
7
+ * The advantage of having separate glb files is that the ascii glb can be loaded once and the non-ascii glb can be loaded only when needed.
8
+ */
9
+ export type FontInfo = string | {
10
+ ascii: string;
11
+ other: string;
12
+ };
13
+ export declare class Tag3dEngine {
14
+ private readonly _logger;
15
+ private static _asciiGlb;
16
+ private static _fontInfo;
17
+ private static _instance;
18
+ private static _mainGlb;
19
+ private static _nonAsciiGlb;
20
+ static get instance(): Tag3dEngine;
21
+ static setFontInfo(fontInfo: FontInfo): void;
22
+ /**
23
+ * Load the tag3d content into a scene graph node.
24
+ *
25
+ * @param content the tag3d content
26
+ * @returns the scene graph node
27
+ */
28
+ loadContent(content: ResOutputContent): Promise<ITreeNode>;
29
+ /**
30
+ * Load the tag 3d content into separate characters.
31
+ * For each character, a node is created and the character is added as a geometry data object.
32
+ * The nodes are then added to a dictionary with the character as the key.
33
+ *
34
+ * Instance matrices are provided depending on the number of instances of the character.
35
+ *
36
+ * @param tag3dInfo
37
+ * @returns
38
+ */
39
+ private loadTag;
40
+ }
41
41
  //# sourceMappingURL=Tag3dEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tag3dEngine.d.ts","sourceRoot":"","sources":["../src/Tag3dEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAGrE,OAAO,EAIN,SAAS,EAGT,MAAM,qCAAqC,CAAC;AAU7C;;;;;GAKG;AACH,oBAAY,QAAQ,GAAG,MAAM,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AAM/D,qBAAa,WAAW;IAGvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAwB;IAChD,OAAO,CAAC,MAAM,CAAC,SAAS,CAGtB;IACF,OAAO,CAAC,MAAM,CAAC,SAAS,CAAc;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAwB;IAMnD,WAAkB,QAAQ,gBAEzB;WAMa,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAW5C;;;;;OAKG;IACU,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAgIvE;;;;;;;;;OASG;YACW,OAAO;CA4SrB"}
1
+ {"version":3,"file":"Tag3dEngine.d.ts","sourceRoot":"","sources":["../src/Tag3dEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAGrE,OAAO,EAIN,SAAS,EAGT,MAAM,qCAAqC,CAAC;AAU7C;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AAM/D,qBAAa,WAAW;IAGvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAwB;IAChD,OAAO,CAAC,MAAM,CAAC,SAAS,CAGtB;IACF,OAAO,CAAC,MAAM,CAAC,SAAS,CAAc;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAwB;IAMnD,WAAkB,QAAQ,gBAEzB;WAMa,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAW5C;;;;;OAKG;IACU,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAgIvE;;;;;;;;;OASG;YACW,OAAO;CA4SrB"}
@@ -1,338 +1,338 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Tag3dEngine = void 0;
13
- const viewer_data_engine_geometry_engine_1 = require("@shapediver/viewer.data-engine.geometry-engine");
14
- const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
15
- const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
16
- const gl_matrix_1 = require("gl-matrix");
17
- // #endregion Type aliases (1)
18
- // #region Classes (1)
19
- class Tag3dEngine {
20
- constructor() {
21
- // #region Properties (6)
22
- this._logger = viewer_shared_services_1.Logger.instance;
23
- // #endregion Private Methods (1)
24
- }
25
- // #endregion Properties (6)
26
- // #region Public Static Getters And Setters (1)
27
- static get instance() {
28
- return this._instance || (this._instance = new this());
29
- }
30
- // #endregion Public Static Getters And Setters (1)
31
- // #region Public Static Methods (1)
32
- static setFontInfo(fontInfo) {
33
- this._fontInfo = fontInfo;
34
- this._mainGlb = undefined;
35
- this._asciiGlb = undefined;
36
- this._nonAsciiGlb = undefined;
37
- }
38
- // #endregion Public Static Methods (1)
39
- // #region Public Methods (1)
40
- /**
41
- * Load the tag3d content into a scene graph node.
42
- *
43
- * @param content the tag3d content
44
- * @returns the scene graph node
45
- */
46
- loadContent(content) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- const node = new viewer_shared_node_tree_1.TreeNode("tag3d");
49
- if (!content)
50
- throw new viewer_shared_services_1.ShapeDiverViewerDataProcessingError("Tag3dEngine.loadContent: Invalid content was provided to tag3d engine.");
51
- if (typeof Tag3dEngine._fontInfo === "string") {
52
- // if there is a single glb for both ascii and non-ascii characters defined
53
- // but the glb has not been loaded yet, we load it now
54
- if (!Tag3dEngine._mainGlb) {
55
- const geometryEngine = viewer_data_engine_geometry_engine_1.GeometryEngine.instance;
56
- Tag3dEngine._mainGlb = yield geometryEngine.loadContent({
57
- href: Tag3dEngine._fontInfo,
58
- format: "glb",
59
- }, "Tag3dEngine.loadContent");
60
- }
61
- }
62
- else {
63
- // if there are separate glbs for ascii and non-ascii characters defined
64
- // but the glb for ascii has not been loaded yet, we load it now
65
- // the glb for non-ascii characters is loaded when the character is encountered
66
- if (!Tag3dEngine._asciiGlb) {
67
- const geometryEngine = viewer_data_engine_geometry_engine_1.GeometryEngine.instance;
68
- Tag3dEngine._asciiGlb = yield geometryEngine.loadContent({
69
- href: Tag3dEngine._fontInfo.ascii,
70
- format: "glb",
71
- }, "Tag3dEngine.loadContent");
72
- }
73
- }
74
- if (content.data && Array.isArray(content.data)) {
75
- const textTagDictionary = {};
76
- const dictionaryPromises = [];
77
- for (let i = 0; i < content.data.length; i++) {
78
- const tag3dInfo = content.data[i];
79
- const dictionary = this.loadTag(tag3dInfo);
80
- if (dictionary)
81
- dictionaryPromises.push(dictionary);
82
- }
83
- yield Promise.all(dictionaryPromises).then((dictionaries) => {
84
- for (const dictionary of dictionaries) {
85
- for (const key in dictionary) {
86
- if (textTagDictionary[key] === undefined) {
87
- textTagDictionary[key] = dictionary[key];
88
- }
89
- else {
90
- textTagDictionary[key].transformations.push(...dictionary[key].transformations);
91
- textTagDictionary[key].colors.push(...dictionary[key].colors);
92
- }
93
- }
94
- }
95
- });
96
- for (const key in textTagDictionary) {
97
- const { characterNode, transformations, colors } = textTagDictionary[key];
98
- const meshNode = new viewer_shared_node_tree_1.TreeNode("mesh_" + key);
99
- meshNode.addChild(characterNode);
100
- if (transformations.length === 1) {
101
- // there is only once instance of the character
102
- // we add it as usual
103
- meshNode.addTransformation({
104
- id: "tag3d_transformation",
105
- matrix: transformations[0],
106
- });
107
- const material = new viewer_shared_node_tree_1.MaterialStandardData({
108
- color: colors[0],
109
- metalness: 0,
110
- roughness: 1,
111
- });
112
- // apply the color to the material
113
- // if we do that before, the color will be applied to all instances and will be multiplied
114
- // with the color of the instance
115
- characterNode.traverseData((data) => {
116
- if (data instanceof viewer_shared_node_tree_1.GeometryData)
117
- data.material = material;
118
- });
119
- }
120
- else {
121
- // there are multiple instances of the character
122
- // we therefore create an instance matrices data object
123
- const instanceData = new viewer_shared_node_tree_1.InstanceData(transformations, colors);
124
- meshNode.addData(instanceData);
125
- }
126
- node.addChild(meshNode);
127
- }
128
- }
129
- else {
130
- throw new viewer_shared_services_1.ShapeDiverViewerDataProcessingError("Tag3dEngine.loadContent: No tag3d data was provided to tag3d engine.");
131
- }
132
- return node;
133
- });
134
- }
135
- // #endregion Public Methods (1)
136
- // #region Private Methods (1)
137
- /**
138
- * Load the tag 3d content into separate characters.
139
- * For each character, a node is created and the character is added as a geometry data object.
140
- * The nodes are then added to a dictionary with the character as the key.
141
- *
142
- * Instance matrices are provided depending on the number of instances of the character.
143
- *
144
- * @param tag3dInfo
145
- * @returns
146
- */
147
- loadTag(tag3dInfo) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- const characterGlb = Tag3dEngine._fontInfo === "string"
150
- ? Tag3dEngine._mainGlb
151
- : Tag3dEngine._asciiGlb;
152
- const material = new viewer_shared_node_tree_1.MaterialStandardData({
153
- color: "#ffffff",
154
- metalness: 0,
155
- roughness: 1,
156
- });
157
- const fontSize = tag3dInfo.size ? +tag3dInfo.size : 1;
158
- // as there seems to be some magic scaling value applied in Rhino
159
- // we tried to match it as best as possible
160
- const scaledFontSize = fontSize * 1.03;
161
- if (tag3dInfo.text === undefined ||
162
- tag3dInfo.text === "" ||
163
- /^[ \t\n\r]*$/.test(tag3dInfo.text))
164
- return;
165
- let fontInfo = {
166
- ascender: 1499,
167
- descender: -349,
168
- underlinePosition: -121,
169
- underlineThickness: 81,
170
- boundingBox: { yMin: -571, xMin: -795, yMax: 1803, xMax: 2776 },
171
- resolution: 1000,
172
- };
173
- characterGlb.traverseData((data) => {
174
- if (data instanceof viewer_shared_node_tree_1.CustomData) {
175
- if (data.data.font)
176
- fontInfo = data.data.font;
177
- }
178
- });
179
- // split into lines
180
- const lines = tag3dInfo.text.split(/\r\n|\r|\n/g);
181
- // split into characters per line
182
- const charactersPerLine = lines.map((line) => line.split(""));
183
- const characterHeight = ((fontInfo.ascender - fontInfo.descender) / fontInfo.resolution) *
184
- scaledFontSize;
185
- let maxLineWidth = 0;
186
- const maxLineHeight = characterHeight * charactersPerLine.length;
187
- let lineHeight = 0;
188
- const characterDictionary = {};
189
- for (let i = 0; i < charactersPerLine.length; ++i) {
190
- const characters = charactersPerLine[i];
191
- if (characters.length === 0)
192
- continue;
193
- let lineWidth = 0;
194
- // loop through characters in line
195
- for (let j = 0; j < characters.length; ++j) {
196
- const char = characters[j];
197
- let nodesWithName = characterGlb.getNodesByName(char);
198
- if (nodesWithName.length === 0) {
199
- if (typeof Tag3dEngine._fontInfo !== "string") {
200
- // if the character is not found in the ascii glb, try to load the non-ascii glb
201
- // and search for the character there
202
- if (!Tag3dEngine._nonAsciiGlb) {
203
- const geometryEngine = viewer_data_engine_geometry_engine_1.GeometryEngine.instance;
204
- Tag3dEngine._nonAsciiGlb =
205
- yield geometryEngine.loadContent({
206
- href: Tag3dEngine._fontInfo.other,
207
- format: "glb",
208
- }, "Tag3dEngine.loadContent");
209
- }
210
- nodesWithName =
211
- Tag3dEngine._nonAsciiGlb.getNodesByName(char);
212
- }
213
- }
214
- if (nodesWithName.length !== 0) {
215
- const transformationMatrix = gl_matrix_1.mat4.fromTranslation(gl_matrix_1.mat4.create(), gl_matrix_1.vec3.fromValues(lineWidth, lineHeight, 0));
216
- if (characterDictionary[char] === undefined) {
217
- // if the character does not exist yet, create it
218
- const characterNode = new viewer_shared_node_tree_1.TreeNode(char);
219
- let glyphInfo = { ha: 0, x_min: 0, x_max: 0 };
220
- nodesWithName[0].traverseData((data) => {
221
- if (data instanceof viewer_shared_node_tree_1.CustomData) {
222
- glyphInfo = data.data.glyph;
223
- lineWidth +=
224
- (glyphInfo.ha / fontInfo.resolution) *
225
- scaledFontSize;
226
- }
227
- if (data instanceof viewer_shared_node_tree_1.GeometryData) {
228
- const clone = data.clone();
229
- clone.material = material;
230
- characterNode.addData(clone);
231
- }
232
- });
233
- characterDictionary[char] = {
234
- characterNode,
235
- transformations: [transformationMatrix],
236
- colors: [tag3dInfo.color],
237
- glyphInfo,
238
- };
239
- }
240
- else {
241
- // if the character already exists, add the transformation matrix to the list
242
- characterDictionary[char].transformations.push(transformationMatrix);
243
- characterDictionary[char].colors.push(tag3dInfo.color);
244
- lineWidth +=
245
- (characterDictionary[char].glyphInfo.ha /
246
- fontInfo.resolution) *
247
- scaledFontSize;
248
- }
249
- }
250
- else {
251
- if (char !== " ")
252
- this._logger.warn(`Tag3dEngine.loadContent: Character ${char} not found in font.`);
253
- }
254
- }
255
- maxLineWidth = Math.max(maxLineWidth, lineWidth);
256
- lineHeight -= characterHeight;
257
- }
258
- const tagJustTranslation = gl_matrix_1.vec3.create();
259
- const characterHeightWithoutDescender = (fontInfo.ascender / fontInfo.resolution) * scaledFontSize;
260
- const characterDescender = (fontInfo.descender / fontInfo.resolution) * scaledFontSize;
261
- // some magic offsets to make the text appear correctly
262
- const initialMagicOffset = 0.1;
263
- const magicOffsetTop = initialMagicOffset - 0.06 * (charactersPerLine.length - 1);
264
- const top = -maxLineHeight +
265
- characterHeightWithoutDescender / 2 +
266
- (charactersPerLine.length - 1) * -characterDescender +
267
- magicOffsetTop * scaledFontSize;
268
- const magicOffsetRight = 0.1;
269
- const right = -maxLineWidth + magicOffsetRight * scaledFontSize;
270
- switch (tag3dInfo.justification) {
271
- case "TL":
272
- tagJustTranslation[1] = top;
273
- break;
274
- case "TC":
275
- tagJustTranslation[0] = right * 0.5;
276
- tagJustTranslation[1] = top;
277
- break;
278
- case "TR":
279
- tagJustTranslation[0] = right;
280
- tagJustTranslation[1] = top;
281
- break;
282
- case "ML":
283
- tagJustTranslation[1] = top * 0.5;
284
- break;
285
- case "MC":
286
- tagJustTranslation[0] = right * 0.5;
287
- tagJustTranslation[1] = top * 0.5;
288
- break;
289
- case "MR":
290
- tagJustTranslation[0] = right;
291
- tagJustTranslation[1] = top * 0.5;
292
- break;
293
- case "BL":
294
- tagJustTranslation[1] = 0;
295
- break;
296
- case "BC":
297
- tagJustTranslation[0] = right * 0.5;
298
- tagJustTranslation[1] = 0;
299
- break;
300
- case "BR":
301
- tagJustTranslation[0] = right;
302
- tagJustTranslation[1] = 0;
303
- break;
304
- }
305
- const fontSizeVec3 = gl_matrix_1.vec3.fromValues(scaledFontSize, scaledFontSize, scaledFontSize);
306
- gl_matrix_1.vec3.divide(tagJustTranslation, tagJustTranslation, fontSizeVec3);
307
- const tagJustTranslationMatrix = gl_matrix_1.mat4.fromTranslation(gl_matrix_1.mat4.create(), tagJustTranslation);
308
- const scalingMatrix = gl_matrix_1.mat4.fromScaling(gl_matrix_1.mat4.create(), fontSizeVec3);
309
- const rotationMatrix = gl_matrix_1.mat4.create();
310
- const translationMatrix = gl_matrix_1.mat4.create();
311
- if (tag3dInfo.location.xAxis !== undefined) {
312
- gl_matrix_1.mat4.set(rotationMatrix, tag3dInfo.location.xAxis.X, tag3dInfo.location.xAxis.Y, tag3dInfo.location.xAxis.Z, 0, tag3dInfo.location.yAxis.X, tag3dInfo.location.yAxis.Y, tag3dInfo.location.yAxis.Z, 0, tag3dInfo.location.normal.X, tag3dInfo.location.normal.Y, tag3dInfo.location.normal.Z, 0, 0, 0, 0, 1);
313
- gl_matrix_1.mat4.fromTranslation(translationMatrix, gl_matrix_1.vec3.fromValues(tag3dInfo.location.origin.X, tag3dInfo.location.origin.Y, tag3dInfo.location.origin.Z));
314
- }
315
- // add the justifications to the characters
316
- Object.values(characterDictionary).forEach((character) => {
317
- character.transformations.forEach((transformation) => {
318
- // apply the scaling matrix
319
- gl_matrix_1.mat4.multiply(transformation, transformation, scalingMatrix);
320
- // apply the justification translation
321
- gl_matrix_1.mat4.multiply(transformation, transformation, tagJustTranslationMatrix);
322
- // apply the global rotation matrix
323
- gl_matrix_1.mat4.multiply(transformation, rotationMatrix, transformation);
324
- // apply the global translation matrix
325
- gl_matrix_1.mat4.multiply(transformation, translationMatrix, transformation);
326
- });
327
- });
328
- return characterDictionary;
329
- });
330
- }
331
- }
332
- exports.Tag3dEngine = Tag3dEngine;
333
- Tag3dEngine._fontInfo = {
334
- ascii: "https://viewer.shapediver.com/v3/gltf/tagsAsciiSegoeUi.glb",
335
- other: "https://viewer.shapediver.com/v3/gltf/tagsNonAsciiSegoeUi.glb",
336
- };
337
- // #endregion Classes (1)
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Tag3dEngine = void 0;
13
+ const viewer_data_engine_geometry_engine_1 = require("@shapediver/viewer.data-engine.geometry-engine");
14
+ const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
15
+ const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
16
+ const gl_matrix_1 = require("gl-matrix");
17
+ // #endregion Type aliases (1)
18
+ // #region Classes (1)
19
+ class Tag3dEngine {
20
+ constructor() {
21
+ // #region Properties (6)
22
+ this._logger = viewer_shared_services_1.Logger.instance;
23
+ // #endregion Private Methods (1)
24
+ }
25
+ // #endregion Properties (6)
26
+ // #region Public Static Getters And Setters (1)
27
+ static get instance() {
28
+ return this._instance || (this._instance = new this());
29
+ }
30
+ // #endregion Public Static Getters And Setters (1)
31
+ // #region Public Static Methods (1)
32
+ static setFontInfo(fontInfo) {
33
+ this._fontInfo = fontInfo;
34
+ this._mainGlb = undefined;
35
+ this._asciiGlb = undefined;
36
+ this._nonAsciiGlb = undefined;
37
+ }
38
+ // #endregion Public Static Methods (1)
39
+ // #region Public Methods (1)
40
+ /**
41
+ * Load the tag3d content into a scene graph node.
42
+ *
43
+ * @param content the tag3d content
44
+ * @returns the scene graph node
45
+ */
46
+ loadContent(content) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const node = new viewer_shared_node_tree_1.TreeNode("tag3d");
49
+ if (!content)
50
+ throw new viewer_shared_services_1.ShapeDiverViewerDataProcessingError("Tag3dEngine.loadContent: Invalid content was provided to tag3d engine.");
51
+ if (typeof Tag3dEngine._fontInfo === "string") {
52
+ // if there is a single glb for both ascii and non-ascii characters defined
53
+ // but the glb has not been loaded yet, we load it now
54
+ if (!Tag3dEngine._mainGlb) {
55
+ const geometryEngine = viewer_data_engine_geometry_engine_1.GeometryEngine.instance;
56
+ Tag3dEngine._mainGlb = yield geometryEngine.loadContent({
57
+ href: Tag3dEngine._fontInfo,
58
+ format: "glb",
59
+ }, "Tag3dEngine.loadContent");
60
+ }
61
+ }
62
+ else {
63
+ // if there are separate glbs for ascii and non-ascii characters defined
64
+ // but the glb for ascii has not been loaded yet, we load it now
65
+ // the glb for non-ascii characters is loaded when the character is encountered
66
+ if (!Tag3dEngine._asciiGlb) {
67
+ const geometryEngine = viewer_data_engine_geometry_engine_1.GeometryEngine.instance;
68
+ Tag3dEngine._asciiGlb = yield geometryEngine.loadContent({
69
+ href: Tag3dEngine._fontInfo.ascii,
70
+ format: "glb",
71
+ }, "Tag3dEngine.loadContent");
72
+ }
73
+ }
74
+ if (content.data && Array.isArray(content.data)) {
75
+ const textTagDictionary = {};
76
+ const dictionaryPromises = [];
77
+ for (let i = 0; i < content.data.length; i++) {
78
+ const tag3dInfo = content.data[i];
79
+ const dictionary = this.loadTag(tag3dInfo);
80
+ if (dictionary)
81
+ dictionaryPromises.push(dictionary);
82
+ }
83
+ yield Promise.all(dictionaryPromises).then((dictionaries) => {
84
+ for (const dictionary of dictionaries) {
85
+ for (const key in dictionary) {
86
+ if (textTagDictionary[key] === undefined) {
87
+ textTagDictionary[key] = dictionary[key];
88
+ }
89
+ else {
90
+ textTagDictionary[key].transformations.push(...dictionary[key].transformations);
91
+ textTagDictionary[key].colors.push(...dictionary[key].colors);
92
+ }
93
+ }
94
+ }
95
+ });
96
+ for (const key in textTagDictionary) {
97
+ const { characterNode, transformations, colors } = textTagDictionary[key];
98
+ const meshNode = new viewer_shared_node_tree_1.TreeNode("mesh_" + key);
99
+ meshNode.addChild(characterNode);
100
+ if (transformations.length === 1) {
101
+ // there is only once instance of the character
102
+ // we add it as usual
103
+ meshNode.addTransformation({
104
+ id: "tag3d_transformation",
105
+ matrix: transformations[0],
106
+ });
107
+ const material = new viewer_shared_node_tree_1.MaterialStandardData({
108
+ color: colors[0],
109
+ metalness: 0,
110
+ roughness: 1,
111
+ });
112
+ // apply the color to the material
113
+ // if we do that before, the color will be applied to all instances and will be multiplied
114
+ // with the color of the instance
115
+ characterNode.traverseData((data) => {
116
+ if (data instanceof viewer_shared_node_tree_1.GeometryData)
117
+ data.material = material;
118
+ });
119
+ }
120
+ else {
121
+ // there are multiple instances of the character
122
+ // we therefore create an instance matrices data object
123
+ const instanceData = new viewer_shared_node_tree_1.InstanceData(transformations, colors);
124
+ meshNode.addData(instanceData);
125
+ }
126
+ node.addChild(meshNode);
127
+ }
128
+ }
129
+ else {
130
+ throw new viewer_shared_services_1.ShapeDiverViewerDataProcessingError("Tag3dEngine.loadContent: No tag3d data was provided to tag3d engine.");
131
+ }
132
+ return node;
133
+ });
134
+ }
135
+ // #endregion Public Methods (1)
136
+ // #region Private Methods (1)
137
+ /**
138
+ * Load the tag 3d content into separate characters.
139
+ * For each character, a node is created and the character is added as a geometry data object.
140
+ * The nodes are then added to a dictionary with the character as the key.
141
+ *
142
+ * Instance matrices are provided depending on the number of instances of the character.
143
+ *
144
+ * @param tag3dInfo
145
+ * @returns
146
+ */
147
+ loadTag(tag3dInfo) {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ const characterGlb = Tag3dEngine._fontInfo === "string"
150
+ ? Tag3dEngine._mainGlb
151
+ : Tag3dEngine._asciiGlb;
152
+ const material = new viewer_shared_node_tree_1.MaterialStandardData({
153
+ color: "#ffffff",
154
+ metalness: 0,
155
+ roughness: 1,
156
+ });
157
+ const fontSize = tag3dInfo.size ? +tag3dInfo.size : 1;
158
+ // as there seems to be some magic scaling value applied in Rhino
159
+ // we tried to match it as best as possible
160
+ const scaledFontSize = fontSize * 1.03;
161
+ if (tag3dInfo.text === undefined ||
162
+ tag3dInfo.text === "" ||
163
+ /^[ \t\n\r]*$/.test(tag3dInfo.text))
164
+ return;
165
+ let fontInfo = {
166
+ ascender: 1499,
167
+ descender: -349,
168
+ underlinePosition: -121,
169
+ underlineThickness: 81,
170
+ boundingBox: { yMin: -571, xMin: -795, yMax: 1803, xMax: 2776 },
171
+ resolution: 1000,
172
+ };
173
+ characterGlb.traverseData((data) => {
174
+ if (data instanceof viewer_shared_node_tree_1.CustomData) {
175
+ if (data.data.font)
176
+ fontInfo = data.data.font;
177
+ }
178
+ });
179
+ // split into lines
180
+ const lines = tag3dInfo.text.split(/\r\n|\r|\n/g);
181
+ // split into characters per line
182
+ const charactersPerLine = lines.map((line) => line.split(""));
183
+ const characterHeight = ((fontInfo.ascender - fontInfo.descender) / fontInfo.resolution) *
184
+ scaledFontSize;
185
+ let maxLineWidth = 0;
186
+ const maxLineHeight = characterHeight * charactersPerLine.length;
187
+ let lineHeight = 0;
188
+ const characterDictionary = {};
189
+ for (let i = 0; i < charactersPerLine.length; ++i) {
190
+ const characters = charactersPerLine[i];
191
+ if (characters.length === 0)
192
+ continue;
193
+ let lineWidth = 0;
194
+ // loop through characters in line
195
+ for (let j = 0; j < characters.length; ++j) {
196
+ const char = characters[j];
197
+ let nodesWithName = characterGlb.getNodesByName(char);
198
+ if (nodesWithName.length === 0) {
199
+ if (typeof Tag3dEngine._fontInfo !== "string") {
200
+ // if the character is not found in the ascii glb, try to load the non-ascii glb
201
+ // and search for the character there
202
+ if (!Tag3dEngine._nonAsciiGlb) {
203
+ const geometryEngine = viewer_data_engine_geometry_engine_1.GeometryEngine.instance;
204
+ Tag3dEngine._nonAsciiGlb =
205
+ yield geometryEngine.loadContent({
206
+ href: Tag3dEngine._fontInfo.other,
207
+ format: "glb",
208
+ }, "Tag3dEngine.loadContent");
209
+ }
210
+ nodesWithName =
211
+ Tag3dEngine._nonAsciiGlb.getNodesByName(char);
212
+ }
213
+ }
214
+ if (nodesWithName.length !== 0) {
215
+ const transformationMatrix = gl_matrix_1.mat4.fromTranslation(gl_matrix_1.mat4.create(), gl_matrix_1.vec3.fromValues(lineWidth, lineHeight, 0));
216
+ if (characterDictionary[char] === undefined) {
217
+ // if the character does not exist yet, create it
218
+ const characterNode = new viewer_shared_node_tree_1.TreeNode(char);
219
+ let glyphInfo = { ha: 0, x_min: 0, x_max: 0 };
220
+ nodesWithName[0].traverseData((data) => {
221
+ if (data instanceof viewer_shared_node_tree_1.CustomData) {
222
+ glyphInfo = data.data.glyph;
223
+ lineWidth +=
224
+ (glyphInfo.ha / fontInfo.resolution) *
225
+ scaledFontSize;
226
+ }
227
+ if (data instanceof viewer_shared_node_tree_1.GeometryData) {
228
+ const clone = data.clone();
229
+ clone.material = material;
230
+ characterNode.addData(clone);
231
+ }
232
+ });
233
+ characterDictionary[char] = {
234
+ characterNode,
235
+ transformations: [transformationMatrix],
236
+ colors: [tag3dInfo.color],
237
+ glyphInfo,
238
+ };
239
+ }
240
+ else {
241
+ // if the character already exists, add the transformation matrix to the list
242
+ characterDictionary[char].transformations.push(transformationMatrix);
243
+ characterDictionary[char].colors.push(tag3dInfo.color);
244
+ lineWidth +=
245
+ (characterDictionary[char].glyphInfo.ha /
246
+ fontInfo.resolution) *
247
+ scaledFontSize;
248
+ }
249
+ }
250
+ else {
251
+ if (char !== " ")
252
+ this._logger.warn(`Tag3dEngine.loadContent: Character ${char} not found in font.`);
253
+ }
254
+ }
255
+ maxLineWidth = Math.max(maxLineWidth, lineWidth);
256
+ lineHeight -= characterHeight;
257
+ }
258
+ const tagJustTranslation = gl_matrix_1.vec3.create();
259
+ const characterHeightWithoutDescender = (fontInfo.ascender / fontInfo.resolution) * scaledFontSize;
260
+ const characterDescender = (fontInfo.descender / fontInfo.resolution) * scaledFontSize;
261
+ // some magic offsets to make the text appear correctly
262
+ const initialMagicOffset = 0.1;
263
+ const magicOffsetTop = initialMagicOffset - 0.06 * (charactersPerLine.length - 1);
264
+ const top = -maxLineHeight +
265
+ characterHeightWithoutDescender / 2 +
266
+ (charactersPerLine.length - 1) * -characterDescender +
267
+ magicOffsetTop * scaledFontSize;
268
+ const magicOffsetRight = 0.1;
269
+ const right = -maxLineWidth + magicOffsetRight * scaledFontSize;
270
+ switch (tag3dInfo.justification) {
271
+ case "TL":
272
+ tagJustTranslation[1] = top;
273
+ break;
274
+ case "TC":
275
+ tagJustTranslation[0] = right * 0.5;
276
+ tagJustTranslation[1] = top;
277
+ break;
278
+ case "TR":
279
+ tagJustTranslation[0] = right;
280
+ tagJustTranslation[1] = top;
281
+ break;
282
+ case "ML":
283
+ tagJustTranslation[1] = top * 0.5;
284
+ break;
285
+ case "MC":
286
+ tagJustTranslation[0] = right * 0.5;
287
+ tagJustTranslation[1] = top * 0.5;
288
+ break;
289
+ case "MR":
290
+ tagJustTranslation[0] = right;
291
+ tagJustTranslation[1] = top * 0.5;
292
+ break;
293
+ case "BL":
294
+ tagJustTranslation[1] = 0;
295
+ break;
296
+ case "BC":
297
+ tagJustTranslation[0] = right * 0.5;
298
+ tagJustTranslation[1] = 0;
299
+ break;
300
+ case "BR":
301
+ tagJustTranslation[0] = right;
302
+ tagJustTranslation[1] = 0;
303
+ break;
304
+ }
305
+ const fontSizeVec3 = gl_matrix_1.vec3.fromValues(scaledFontSize, scaledFontSize, scaledFontSize);
306
+ gl_matrix_1.vec3.divide(tagJustTranslation, tagJustTranslation, fontSizeVec3);
307
+ const tagJustTranslationMatrix = gl_matrix_1.mat4.fromTranslation(gl_matrix_1.mat4.create(), tagJustTranslation);
308
+ const scalingMatrix = gl_matrix_1.mat4.fromScaling(gl_matrix_1.mat4.create(), fontSizeVec3);
309
+ const rotationMatrix = gl_matrix_1.mat4.create();
310
+ const translationMatrix = gl_matrix_1.mat4.create();
311
+ if (tag3dInfo.location.xAxis !== undefined) {
312
+ gl_matrix_1.mat4.set(rotationMatrix, tag3dInfo.location.xAxis.X, tag3dInfo.location.xAxis.Y, tag3dInfo.location.xAxis.Z, 0, tag3dInfo.location.yAxis.X, tag3dInfo.location.yAxis.Y, tag3dInfo.location.yAxis.Z, 0, tag3dInfo.location.normal.X, tag3dInfo.location.normal.Y, tag3dInfo.location.normal.Z, 0, 0, 0, 0, 1);
313
+ gl_matrix_1.mat4.fromTranslation(translationMatrix, gl_matrix_1.vec3.fromValues(tag3dInfo.location.origin.X, tag3dInfo.location.origin.Y, tag3dInfo.location.origin.Z));
314
+ }
315
+ // add the justifications to the characters
316
+ Object.values(characterDictionary).forEach((character) => {
317
+ character.transformations.forEach((transformation) => {
318
+ // apply the scaling matrix
319
+ gl_matrix_1.mat4.multiply(transformation, transformation, scalingMatrix);
320
+ // apply the justification translation
321
+ gl_matrix_1.mat4.multiply(transformation, transformation, tagJustTranslationMatrix);
322
+ // apply the global rotation matrix
323
+ gl_matrix_1.mat4.multiply(transformation, rotationMatrix, transformation);
324
+ // apply the global translation matrix
325
+ gl_matrix_1.mat4.multiply(transformation, translationMatrix, transformation);
326
+ });
327
+ });
328
+ return characterDictionary;
329
+ });
330
+ }
331
+ }
332
+ exports.Tag3dEngine = Tag3dEngine;
333
+ Tag3dEngine._fontInfo = {
334
+ ascii: "https://viewer.shapediver.com/v3/gltf/tagsAsciiSegoeUi.glb",
335
+ other: "https://viewer.shapediver.com/v3/gltf/tagsNonAsciiSegoeUi.glb",
336
+ };
337
+ // #endregion Classes (1)
338
338
  //# sourceMappingURL=Tag3dEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tag3dEngine.js","sourceRoot":"","sources":["../src/Tag3dEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tag3dEngine.js","sourceRoot":"","sources":["../src/Tag3dEngine.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { Tag3dEngine } from "./Tag3dEngine";
2
- export { Tag3dEngine };
1
+ import { Tag3dEngine } from "./Tag3dEngine";
2
+ export { Tag3dEngine };
3
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Tag3dEngine = void 0;
4
- const Tag3dEngine_1 = require("./Tag3dEngine");
5
- Object.defineProperty(exports, "Tag3dEngine", { enumerable: true, get: function () { return Tag3dEngine_1.Tag3dEngine; } });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tag3dEngine = void 0;
4
+ const Tag3dEngine_1 = require("./Tag3dEngine");
5
+ Object.defineProperty(exports, "Tag3dEngine", { enumerable: true, get: function () { return Tag3dEngine_1.Tag3dEngine; } });
6
6
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapediver/viewer.data-engine.tag3d-engine",
3
- "version": "3.16.7",
3
+ "version": "3.16.9",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Michael Oppitz <michael@shapediver.com>",
@@ -39,12 +39,12 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@shapediver/sdk.geometry-api-sdk-v2": "3.4.0",
42
- "@shapediver/viewer.data-engine.geometry-engine": "3.16.7",
43
- "@shapediver/viewer.data-engine.shared-types": "3.16.7",
44
- "@shapediver/viewer.shared.global-access-objects": "3.16.7",
45
- "@shapediver/viewer.shared.node-tree": "3.16.7",
46
- "@shapediver/viewer.shared.services": "3.16.7",
47
- "@shapediver/viewer.shared.types": "3.16.7"
42
+ "@shapediver/viewer.data-engine.geometry-engine": "3.16.9",
43
+ "@shapediver/viewer.data-engine.shared-types": "3.16.9",
44
+ "@shapediver/viewer.shared.global-access-objects": "3.16.9",
45
+ "@shapediver/viewer.shared.node-tree": "3.16.9",
46
+ "@shapediver/viewer.shared.services": "3.16.9",
47
+ "@shapediver/viewer.shared.types": "3.16.9"
48
48
  },
49
- "gitHead": "48be1e09ddf89c8d346335e81399064cd4ae00a7"
49
+ "gitHead": "a0c09ebab3b0b75f36130a56d9ed81436846e3c7"
50
50
  }