@loaders.gl/obj 4.0.0-alpha.4 → 4.0.0-alpha.5

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 (47) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/dist.min.js +1196 -0
  4. package/dist/index.d.ts +72 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +10 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/get-obj-schema.d.ts +3 -0
  9. package/dist/lib/get-obj-schema.d.ts.map +1 -0
  10. package/dist/lib/obj-types.d.ts +1 -0
  11. package/dist/lib/obj-types.d.ts.map +1 -0
  12. package/dist/lib/parse-mtl.d.ts +34 -0
  13. package/dist/lib/parse-mtl.d.ts.map +1 -0
  14. package/dist/lib/parse-mtl.js +86 -0
  15. package/dist/lib/parse-mtl.js.map +1 -0
  16. package/dist/lib/parse-obj-meshes.d.ts +5 -0
  17. package/dist/lib/parse-obj-meshes.d.ts.map +1 -0
  18. package/dist/lib/parse-obj-meshes.js +458 -0
  19. package/dist/lib/parse-obj-meshes.js.map +1 -0
  20. package/dist/lib/parse-obj.d.ts +14 -0
  21. package/dist/lib/parse-obj.d.ts.map +1 -0
  22. package/dist/lib/parse-obj.js +71 -437
  23. package/dist/lib/parse-obj.js.map +1 -1
  24. package/dist/mtl-loader.d.ts +24 -0
  25. package/dist/mtl-loader.d.ts.map +1 -0
  26. package/dist/mtl-loader.js +16 -0
  27. package/dist/mtl-loader.js.map +1 -0
  28. package/dist/obj-loader.d.ts +24 -0
  29. package/dist/obj-loader.d.ts.map +1 -0
  30. package/dist/obj-loader.js +1 -1
  31. package/dist/obj-loader.js.map +1 -1
  32. package/dist/obj-worker.js +100 -10
  33. package/dist/workers/obj-worker.d.ts +2 -0
  34. package/dist/workers/obj-worker.d.ts.map +1 -0
  35. package/dist/workers/obj-worker.js +3 -3
  36. package/dist/workers/obj-worker.js.map +1 -0
  37. package/package.json +7 -7
  38. package/src/index.ts +21 -3
  39. package/src/lib/parse-mtl.ts +246 -0
  40. package/src/lib/parse-obj-meshes.ts +525 -0
  41. package/src/lib/parse-obj.ts +66 -508
  42. package/src/mtl-loader.ts +31 -0
  43. package/src/obj-loader.ts +6 -2
  44. package/src/workers/{obj-worker.js → obj-worker.ts} +0 -0
  45. package/dist/lib/load-obj.js +0 -92
  46. package/dist/lib/load-obj.js.map +0 -1
  47. package/src/lib/load-obj.ts +0 -83
@@ -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,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
- }