@loaders.gl/obj 3.1.2 → 3.1.6

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.
Files changed (58) hide show
  1. package/dist/dist.min.js +269 -164
  2. package/dist/es5/index.js +42 -4
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/lib/parse-mtl.js +110 -0
  5. package/dist/es5/lib/parse-mtl.js.map +1 -0
  6. package/dist/es5/lib/parse-obj-meshes.js +559 -0
  7. package/dist/es5/lib/parse-obj-meshes.js.map +1 -0
  8. package/dist/es5/lib/parse-obj.js +84 -526
  9. package/dist/es5/lib/parse-obj.js.map +1 -1
  10. package/dist/es5/mtl-loader.js +26 -0
  11. package/dist/es5/mtl-loader.js.map +1 -0
  12. package/dist/es5/obj-loader.js +1 -1
  13. package/dist/es5/obj-loader.js.map +1 -1
  14. package/dist/esm/index.js +10 -3
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/lib/parse-mtl.js +86 -0
  17. package/dist/esm/lib/parse-mtl.js.map +1 -0
  18. package/dist/esm/lib/parse-obj-meshes.js +458 -0
  19. package/dist/esm/lib/parse-obj-meshes.js.map +1 -0
  20. package/dist/esm/lib/parse-obj.js +71 -437
  21. package/dist/esm/lib/parse-obj.js.map +1 -1
  22. package/dist/esm/mtl-loader.js +16 -0
  23. package/dist/esm/mtl-loader.js.map +1 -0
  24. package/dist/esm/obj-loader.js +1 -1
  25. package/dist/esm/obj-loader.js.map +1 -1
  26. package/dist/index.d.ts +41 -4
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +16 -7
  29. package/dist/lib/parse-mtl.d.ts +34 -0
  30. package/dist/lib/parse-mtl.d.ts.map +1 -0
  31. package/dist/lib/parse-mtl.js +201 -0
  32. package/dist/lib/parse-obj-meshes.d.ts +5 -0
  33. package/dist/lib/parse-obj-meshes.d.ts.map +1 -0
  34. package/dist/lib/parse-obj-meshes.js +440 -0
  35. package/dist/lib/parse-obj.d.ts +12 -4
  36. package/dist/lib/parse-obj.d.ts.map +1 -1
  37. package/dist/lib/parse-obj.js +67 -434
  38. package/dist/mtl-loader.d.ts +24 -0
  39. package/dist/mtl-loader.d.ts.map +1 -0
  40. package/dist/mtl-loader.js +24 -0
  41. package/dist/obj-loader.d.ts +5 -2
  42. package/dist/obj-loader.d.ts.map +1 -1
  43. package/dist/obj-worker.js +99 -9
  44. package/package.json +5 -5
  45. package/src/index.ts +21 -3
  46. package/src/lib/parse-mtl.ts +246 -0
  47. package/src/lib/parse-obj-meshes.ts +525 -0
  48. package/src/lib/parse-obj.ts +66 -508
  49. package/src/mtl-loader.ts +31 -0
  50. package/src/obj-loader.ts +6 -2
  51. package/dist/es5/lib/load-obj.js +0 -121
  52. package/dist/es5/lib/load-obj.js.map +0 -1
  53. package/dist/esm/lib/load-obj.js +0 -92
  54. package/dist/esm/lib/load-obj.js.map +0 -1
  55. package/dist/lib/load-obj.d.ts +0 -14
  56. package/dist/lib/load-obj.d.ts.map +0 -1
  57. package/dist/lib/load-obj.js +0 -73
  58. package/src/lib/load-obj.ts +0 -83
@@ -1,121 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = loadOBJ;
9
-
10
- var _schema = require("@loaders.gl/schema");
11
-
12
- var _parseObj = _interopRequireDefault(require("./parse-obj"));
13
-
14
- var _getObjSchema = require("./get-obj-schema");
15
-
16
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
17
-
18
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
-
20
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
21
-
22
- function loadOBJ(text, options) {
23
- var _parseOBJ = (0, _parseObj.default)(text),
24
- meshes = _parseOBJ.meshes;
25
-
26
- var vertexCount = meshes.reduce(function (s, mesh) {
27
- return s + mesh.header.vertexCount;
28
- }, 0);
29
- var attributes = mergeAttributes(meshes, vertexCount);
30
- var header = {
31
- vertexCount: vertexCount,
32
- boundingBox: (0, _schema.getMeshBoundingBox)(attributes)
33
- };
34
- var schema = (0, _getObjSchema.getOBJSchema)(attributes, {
35
- mode: 4,
36
- boundingBox: header.boundingBox
37
- });
38
- return {
39
- loaderData: {
40
- header: {}
41
- },
42
- schema: schema,
43
- header: header,
44
- mode: 4,
45
- attributes: attributes
46
- };
47
- }
48
-
49
- function mergeAttributes(meshes, vertexCount) {
50
- var positions = new Float32Array(vertexCount * 3);
51
- var normals;
52
- var colors;
53
- var uvs;
54
- var i = 0;
55
-
56
- var _iterator = _createForOfIteratorHelper(meshes),
57
- _step;
58
-
59
- try {
60
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
61
- var mesh = _step.value;
62
- var _mesh$attributes = mesh.attributes,
63
- POSITION = _mesh$attributes.POSITION,
64
- NORMAL = _mesh$attributes.NORMAL,
65
- COLOR_0 = _mesh$attributes.COLOR_0,
66
- TEXCOORD_0 = _mesh$attributes.TEXCOORD_0;
67
- positions.set(POSITION.value, i * 3);
68
-
69
- if (NORMAL) {
70
- normals = normals || new Float32Array(vertexCount * 3);
71
- normals.set(NORMAL.value, i * 3);
72
- }
73
-
74
- if (COLOR_0) {
75
- colors = colors || new Float32Array(vertexCount * 3);
76
- colors.set(COLOR_0.value, i * 3);
77
- }
78
-
79
- if (TEXCOORD_0) {
80
- uvs = uvs || new Float32Array(vertexCount * 2);
81
- uvs.set(TEXCOORD_0.value, i * 2);
82
- }
83
-
84
- i += POSITION.value.length / 3;
85
- }
86
- } catch (err) {
87
- _iterator.e(err);
88
- } finally {
89
- _iterator.f();
90
- }
91
-
92
- var attributes = {};
93
- attributes.POSITION = {
94
- value: positions,
95
- size: 3
96
- };
97
-
98
- if (normals) {
99
- attributes.NORMAL = {
100
- value: normals,
101
- size: 3
102
- };
103
- }
104
-
105
- if (colors) {
106
- attributes.COLOR_0 = {
107
- value: colors,
108
- size: 3
109
- };
110
- }
111
-
112
- if (uvs) {
113
- attributes.TEXCOORD_0 = {
114
- value: uvs,
115
- size: 2
116
- };
117
- }
118
-
119
- return attributes;
120
- }
121
- //# sourceMappingURL=load-obj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/load-obj.ts"],"names":["loadOBJ","text","options","meshes","vertexCount","reduce","s","mesh","header","attributes","mergeAttributes","boundingBox","schema","mode","loaderData","positions","Float32Array","normals","colors","uvs","i","POSITION","NORMAL","COLOR_0","TEXCOORD_0","set","value","length","size"],"mappings":"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","sourcesContent":["import type {MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport parseOBJ from './parse-obj';\nimport {getOBJSchema} from './get-obj-schema';\n\nexport default function loadOBJ(text, options) {\n const {meshes} = parseOBJ(text);\n\n // @ts-expect-error\n const vertexCount = meshes.reduce((s, mesh) => s + mesh.header.vertexCount, 0);\n // TODO - render objects separately\n const attributes = mergeAttributes(meshes, vertexCount);\n\n const header = {\n vertexCount,\n // @ts-ignore Need to export Attributes type\n boundingBox: getMeshBoundingBox(attributes)\n };\n\n const schema = getOBJSchema(attributes, {\n mode: 4,\n boundingBox: header.boundingBox\n });\n\n return {\n // Data return by this loader implementation\n loaderData: {\n header: {}\n },\n\n // Normalised data\n schema,\n header,\n mode: 4, // TRIANGLES\n\n attributes\n };\n}\n\n// eslint-disable-next-line max-statements\nfunction mergeAttributes(meshes, vertexCount) {\n const positions = new Float32Array(vertexCount * 3);\n let normals;\n let colors;\n let uvs;\n let i = 0;\n\n for (const mesh of meshes) {\n const {POSITION, NORMAL, COLOR_0, TEXCOORD_0} = mesh.attributes;\n\n positions.set(POSITION.value, i * 3);\n\n if (NORMAL) {\n normals = normals || new Float32Array(vertexCount * 3);\n normals.set(NORMAL.value, i * 3);\n }\n if (COLOR_0) {\n colors = colors || new Float32Array(vertexCount * 3);\n colors.set(COLOR_0.value, i * 3);\n }\n if (TEXCOORD_0) {\n uvs = uvs || new Float32Array(vertexCount * 2);\n uvs.set(TEXCOORD_0.value, i * 2);\n }\n\n i += POSITION.value.length / 3;\n }\n\n const attributes: MeshAttributes = {};\n attributes.POSITION = {value: positions, size: 3};\n\n if (normals) {\n attributes.NORMAL = {value: normals, size: 3};\n }\n if (colors) {\n attributes.COLOR_0 = {value: colors, size: 3};\n }\n if (uvs) {\n attributes.TEXCOORD_0 = {value: uvs, size: 2};\n }\n\n return attributes;\n}\n"],"file":"load-obj.js"}
@@ -1,92 +0,0 @@
1
- import { getMeshBoundingBox } from '@loaders.gl/schema';
2
- import parseOBJ from './parse-obj';
3
- import { getOBJSchema } from './get-obj-schema';
4
- export default function loadOBJ(text, options) {
5
- const {
6
- meshes
7
- } = parseOBJ(text);
8
- const vertexCount = meshes.reduce((s, mesh) => s + mesh.header.vertexCount, 0);
9
- const attributes = mergeAttributes(meshes, vertexCount);
10
- const header = {
11
- vertexCount,
12
- boundingBox: getMeshBoundingBox(attributes)
13
- };
14
- const schema = getOBJSchema(attributes, {
15
- mode: 4,
16
- boundingBox: header.boundingBox
17
- });
18
- return {
19
- loaderData: {
20
- header: {}
21
- },
22
- schema,
23
- header,
24
- mode: 4,
25
- attributes
26
- };
27
- }
28
-
29
- function mergeAttributes(meshes, vertexCount) {
30
- const positions = new Float32Array(vertexCount * 3);
31
- let normals;
32
- let colors;
33
- let uvs;
34
- let i = 0;
35
-
36
- for (const mesh of meshes) {
37
- const {
38
- POSITION,
39
- NORMAL,
40
- COLOR_0,
41
- TEXCOORD_0
42
- } = mesh.attributes;
43
- positions.set(POSITION.value, i * 3);
44
-
45
- if (NORMAL) {
46
- normals = normals || new Float32Array(vertexCount * 3);
47
- normals.set(NORMAL.value, i * 3);
48
- }
49
-
50
- if (COLOR_0) {
51
- colors = colors || new Float32Array(vertexCount * 3);
52
- colors.set(COLOR_0.value, i * 3);
53
- }
54
-
55
- if (TEXCOORD_0) {
56
- uvs = uvs || new Float32Array(vertexCount * 2);
57
- uvs.set(TEXCOORD_0.value, i * 2);
58
- }
59
-
60
- i += POSITION.value.length / 3;
61
- }
62
-
63
- const attributes = {};
64
- attributes.POSITION = {
65
- value: positions,
66
- size: 3
67
- };
68
-
69
- if (normals) {
70
- attributes.NORMAL = {
71
- value: normals,
72
- size: 3
73
- };
74
- }
75
-
76
- if (colors) {
77
- attributes.COLOR_0 = {
78
- value: colors,
79
- size: 3
80
- };
81
- }
82
-
83
- if (uvs) {
84
- attributes.TEXCOORD_0 = {
85
- value: uvs,
86
- size: 2
87
- };
88
- }
89
-
90
- return attributes;
91
- }
92
- //# sourceMappingURL=load-obj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/load-obj.ts"],"names":["getMeshBoundingBox","parseOBJ","getOBJSchema","loadOBJ","text","options","meshes","vertexCount","reduce","s","mesh","header","attributes","mergeAttributes","boundingBox","schema","mode","loaderData","positions","Float32Array","normals","colors","uvs","i","POSITION","NORMAL","COLOR_0","TEXCOORD_0","set","value","length","size"],"mappings":"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","sourcesContent":["import type {MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport parseOBJ from './parse-obj';\nimport {getOBJSchema} from './get-obj-schema';\n\nexport default function loadOBJ(text, options) {\n const {meshes} = parseOBJ(text);\n\n // @ts-expect-error\n const vertexCount = meshes.reduce((s, mesh) => s + mesh.header.vertexCount, 0);\n // TODO - render objects separately\n const attributes = mergeAttributes(meshes, vertexCount);\n\n const header = {\n vertexCount,\n // @ts-ignore Need to export Attributes type\n boundingBox: getMeshBoundingBox(attributes)\n };\n\n const schema = getOBJSchema(attributes, {\n mode: 4,\n boundingBox: header.boundingBox\n });\n\n return {\n // Data return by this loader implementation\n loaderData: {\n header: {}\n },\n\n // Normalised data\n schema,\n header,\n mode: 4, // TRIANGLES\n\n attributes\n };\n}\n\n// eslint-disable-next-line max-statements\nfunction mergeAttributes(meshes, vertexCount) {\n const positions = new Float32Array(vertexCount * 3);\n let normals;\n let colors;\n let uvs;\n let i = 0;\n\n for (const mesh of meshes) {\n const {POSITION, NORMAL, COLOR_0, TEXCOORD_0} = mesh.attributes;\n\n positions.set(POSITION.value, i * 3);\n\n if (NORMAL) {\n normals = normals || new Float32Array(vertexCount * 3);\n normals.set(NORMAL.value, i * 3);\n }\n if (COLOR_0) {\n colors = colors || new Float32Array(vertexCount * 3);\n colors.set(COLOR_0.value, i * 3);\n }\n if (TEXCOORD_0) {\n uvs = uvs || new Float32Array(vertexCount * 2);\n uvs.set(TEXCOORD_0.value, i * 2);\n }\n\n i += POSITION.value.length / 3;\n }\n\n const attributes: MeshAttributes = {};\n attributes.POSITION = {value: positions, size: 3};\n\n if (normals) {\n attributes.NORMAL = {value: normals, size: 3};\n }\n if (colors) {\n attributes.COLOR_0 = {value: colors, size: 3};\n }\n if (uvs) {\n attributes.TEXCOORD_0 = {value: uvs, size: 2};\n }\n\n return attributes;\n}\n"],"file":"load-obj.js"}
@@ -1,14 +0,0 @@
1
- import type { MeshAttributes } from '@loaders.gl/schema';
2
- export default function loadOBJ(text: any, options: any): {
3
- loaderData: {
4
- header: {};
5
- };
6
- schema: import("@loaders.gl/schema").Schema;
7
- header: {
8
- vertexCount: number;
9
- boundingBox: [[number, number, number], [number, number, number]];
10
- };
11
- mode: number;
12
- attributes: MeshAttributes;
13
- };
14
- //# sourceMappingURL=load-obj.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-obj.d.ts","sourceRoot":"","sources":["../../src/lib/load-obj.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAKvD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA;;;;;;;;;;;EAgC5C"}
@@ -1,73 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const schema_1 = require("@loaders.gl/schema");
7
- const parse_obj_1 = __importDefault(require("./parse-obj"));
8
- const get_obj_schema_1 = require("./get-obj-schema");
9
- function loadOBJ(text, options) {
10
- const { meshes } = (0, parse_obj_1.default)(text);
11
- // @ts-expect-error
12
- const vertexCount = meshes.reduce((s, mesh) => s + mesh.header.vertexCount, 0);
13
- // TODO - render objects separately
14
- const attributes = mergeAttributes(meshes, vertexCount);
15
- const header = {
16
- vertexCount,
17
- // @ts-ignore Need to export Attributes type
18
- boundingBox: (0, schema_1.getMeshBoundingBox)(attributes)
19
- };
20
- const schema = (0, get_obj_schema_1.getOBJSchema)(attributes, {
21
- mode: 4,
22
- boundingBox: header.boundingBox
23
- });
24
- return {
25
- // Data return by this loader implementation
26
- loaderData: {
27
- header: {}
28
- },
29
- // Normalised data
30
- schema,
31
- header,
32
- mode: 4,
33
- attributes
34
- };
35
- }
36
- exports.default = loadOBJ;
37
- // eslint-disable-next-line max-statements
38
- function mergeAttributes(meshes, vertexCount) {
39
- const positions = new Float32Array(vertexCount * 3);
40
- let normals;
41
- let colors;
42
- let uvs;
43
- let i = 0;
44
- for (const mesh of meshes) {
45
- const { POSITION, NORMAL, COLOR_0, TEXCOORD_0 } = mesh.attributes;
46
- positions.set(POSITION.value, i * 3);
47
- if (NORMAL) {
48
- normals = normals || new Float32Array(vertexCount * 3);
49
- normals.set(NORMAL.value, i * 3);
50
- }
51
- if (COLOR_0) {
52
- colors = colors || new Float32Array(vertexCount * 3);
53
- colors.set(COLOR_0.value, i * 3);
54
- }
55
- if (TEXCOORD_0) {
56
- uvs = uvs || new Float32Array(vertexCount * 2);
57
- uvs.set(TEXCOORD_0.value, i * 2);
58
- }
59
- i += POSITION.value.length / 3;
60
- }
61
- const attributes = {};
62
- attributes.POSITION = { value: positions, size: 3 };
63
- if (normals) {
64
- attributes.NORMAL = { value: normals, size: 3 };
65
- }
66
- if (colors) {
67
- attributes.COLOR_0 = { value: colors, size: 3 };
68
- }
69
- if (uvs) {
70
- attributes.TEXCOORD_0 = { value: uvs, size: 2 };
71
- }
72
- return attributes;
73
- }
@@ -1,83 +0,0 @@
1
- import type {MeshAttributes} from '@loaders.gl/schema';
2
- import {getMeshBoundingBox} from '@loaders.gl/schema';
3
- import parseOBJ from './parse-obj';
4
- import {getOBJSchema} from './get-obj-schema';
5
-
6
- export default function loadOBJ(text, options) {
7
- const {meshes} = parseOBJ(text);
8
-
9
- // @ts-expect-error
10
- const vertexCount = meshes.reduce((s, mesh) => s + mesh.header.vertexCount, 0);
11
- // TODO - render objects separately
12
- const attributes = mergeAttributes(meshes, vertexCount);
13
-
14
- const header = {
15
- vertexCount,
16
- // @ts-ignore Need to export Attributes type
17
- boundingBox: getMeshBoundingBox(attributes)
18
- };
19
-
20
- const schema = getOBJSchema(attributes, {
21
- mode: 4,
22
- boundingBox: header.boundingBox
23
- });
24
-
25
- return {
26
- // Data return by this loader implementation
27
- loaderData: {
28
- header: {}
29
- },
30
-
31
- // Normalised data
32
- schema,
33
- header,
34
- mode: 4, // TRIANGLES
35
-
36
- attributes
37
- };
38
- }
39
-
40
- // eslint-disable-next-line max-statements
41
- function mergeAttributes(meshes, vertexCount) {
42
- const positions = new Float32Array(vertexCount * 3);
43
- let normals;
44
- let colors;
45
- let uvs;
46
- let i = 0;
47
-
48
- for (const mesh of meshes) {
49
- const {POSITION, NORMAL, COLOR_0, TEXCOORD_0} = mesh.attributes;
50
-
51
- positions.set(POSITION.value, i * 3);
52
-
53
- if (NORMAL) {
54
- normals = normals || new Float32Array(vertexCount * 3);
55
- normals.set(NORMAL.value, i * 3);
56
- }
57
- if (COLOR_0) {
58
- colors = colors || new Float32Array(vertexCount * 3);
59
- colors.set(COLOR_0.value, i * 3);
60
- }
61
- if (TEXCOORD_0) {
62
- uvs = uvs || new Float32Array(vertexCount * 2);
63
- uvs.set(TEXCOORD_0.value, i * 2);
64
- }
65
-
66
- i += POSITION.value.length / 3;
67
- }
68
-
69
- const attributes: MeshAttributes = {};
70
- attributes.POSITION = {value: positions, size: 3};
71
-
72
- if (normals) {
73
- attributes.NORMAL = {value: normals, size: 3};
74
- }
75
- if (colors) {
76
- attributes.COLOR_0 = {value: colors, size: 3};
77
- }
78
- if (uvs) {
79
- attributes.TEXCOORD_0 = {value: uvs, size: 2};
80
- }
81
-
82
- return attributes;
83
- }