@loaders.gl/obj 4.0.0-alpha.4 → 4.0.0-alpha.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 (89) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/dist.min.js +744 -0
  5. package/dist/es5/bundle.js +6 -0
  6. package/dist/es5/bundle.js.map +1 -0
  7. package/dist/es5/index.js +74 -0
  8. package/dist/es5/index.js.map +1 -0
  9. package/dist/es5/lib/get-obj-schema.js +54 -0
  10. package/dist/es5/lib/get-obj-schema.js.map +1 -0
  11. package/dist/es5/lib/obj-types.js +2 -0
  12. package/dist/es5/lib/obj-types.js.map +1 -0
  13. package/dist/es5/lib/parse-mtl.js +86 -0
  14. package/dist/es5/lib/parse-mtl.js.map +1 -0
  15. package/dist/es5/lib/parse-obj-meshes.js +486 -0
  16. package/dist/es5/lib/parse-obj-meshes.js.map +1 -0
  17. package/dist/es5/lib/parse-obj.js +100 -0
  18. package/dist/es5/lib/parse-obj.js.map +1 -0
  19. package/dist/es5/mtl-loader.js +26 -0
  20. package/dist/es5/mtl-loader.js.map +1 -0
  21. package/dist/es5/obj-loader.js +27 -0
  22. package/dist/es5/obj-loader.js.map +1 -0
  23. package/dist/es5/workers/obj-worker.js +6 -0
  24. package/dist/es5/workers/obj-worker.js.map +1 -0
  25. package/dist/esm/bundle.js +4 -0
  26. package/dist/esm/bundle.js.map +1 -0
  27. package/dist/esm/index.js +18 -0
  28. package/dist/esm/index.js.map +1 -0
  29. package/dist/esm/lib/get-obj-schema.js +49 -0
  30. package/dist/esm/lib/get-obj-schema.js.map +1 -0
  31. package/dist/esm/lib/obj-types.js +2 -0
  32. package/dist/esm/lib/obj-types.js.map +1 -0
  33. package/dist/esm/lib/parse-mtl.js +68 -0
  34. package/dist/esm/lib/parse-mtl.js.map +1 -0
  35. package/dist/esm/lib/parse-obj-meshes.js +385 -0
  36. package/dist/esm/lib/parse-obj-meshes.js.map +1 -0
  37. package/dist/{lib/load-obj.js → esm/lib/parse-obj.js} +5 -15
  38. package/dist/esm/lib/parse-obj.js.map +1 -0
  39. package/dist/esm/mtl-loader.js +16 -0
  40. package/dist/esm/mtl-loader.js.map +1 -0
  41. package/dist/esm/obj-loader.js +19 -0
  42. package/dist/esm/obj-loader.js.map +1 -0
  43. package/dist/esm/workers/obj-worker.js +4 -0
  44. package/dist/esm/workers/obj-worker.js.map +1 -0
  45. package/dist/index.d.ts +18 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +26 -8
  48. package/dist/lib/get-obj-schema.d.ts +4 -0
  49. package/dist/lib/get-obj-schema.d.ts.map +1 -0
  50. package/dist/lib/get-obj-schema.js +33 -33
  51. package/dist/lib/obj-types.d.ts +1 -0
  52. package/dist/lib/obj-types.d.ts.map +1 -0
  53. package/dist/lib/obj-types.js +1 -2
  54. package/dist/lib/parse-mtl.d.ts +34 -0
  55. package/dist/lib/parse-mtl.d.ts.map +1 -0
  56. package/dist/lib/parse-mtl.js +201 -0
  57. package/dist/lib/parse-obj-meshes.d.ts +5 -0
  58. package/dist/lib/parse-obj-meshes.d.ts.map +1 -0
  59. package/dist/lib/parse-obj-meshes.js +440 -0
  60. package/dist/lib/parse-obj.d.ts +3 -0
  61. package/dist/lib/parse-obj.d.ts.map +1 -0
  62. package/dist/lib/parse-obj.js +63 -449
  63. package/dist/mtl-loader.d.ts +12 -0
  64. package/dist/mtl-loader.d.ts.map +1 -0
  65. package/dist/mtl-loader.js +24 -0
  66. package/dist/obj-loader.d.ts +11 -0
  67. package/dist/obj-loader.d.ts.map +1 -0
  68. package/dist/obj-loader.js +24 -18
  69. package/dist/obj-worker.js +213 -507
  70. package/dist/workers/obj-worker.d.ts +2 -0
  71. package/dist/workers/obj-worker.d.ts.map +1 -0
  72. package/dist/workers/obj-worker.js +5 -4
  73. package/package.json +9 -9
  74. package/src/index.ts +25 -4
  75. package/src/lib/get-obj-schema.ts +24 -20
  76. package/src/lib/parse-mtl.ts +246 -0
  77. package/src/lib/parse-obj-meshes.ts +525 -0
  78. package/src/lib/parse-obj.ts +67 -508
  79. package/src/mtl-loader.ts +31 -0
  80. package/src/obj-loader.ts +8 -3
  81. package/dist/bundle.js.map +0 -1
  82. package/dist/index.js.map +0 -1
  83. package/dist/lib/get-obj-schema.js.map +0 -1
  84. package/dist/lib/load-obj.js.map +0 -1
  85. package/dist/lib/obj-types.js.map +0 -1
  86. package/dist/lib/parse-obj.js.map +0 -1
  87. package/dist/obj-loader.js.map +0 -1
  88. package/src/lib/load-obj.ts +0 -83
  89. /package/src/workers/{obj-worker.js → obj-worker.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-obj.js","names":["_schema","require","_parseObjMeshes","_getObjSchema","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","parseOBJ","text","options","_parseOBJMeshes","parseOBJMeshes","meshes","vertexCount","reduce","mesh","header","attributes","mergeAttributes","boundingBox","getMeshBoundingBox","schema","getOBJSchema","mode","loaderData","topology","positions","Float32Array","normals","colors","uvs","_iterator","_step","_mesh$attributes","POSITION","NORMAL","COLOR_0","TEXCOORD_0","set","size"],"sources":["../../../src/lib/parse-obj.ts"],"sourcesContent":["import type {Mesh, MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {parseOBJMeshes} from './parse-obj-meshes';\nimport {getOBJSchema} from './get-obj-schema';\n\nexport function parseOBJ(text, options): Mesh {\n const {meshes} = parseOBJMeshes(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 topology: 'point-list',\n\n attributes\n };\n}\n\n// eslint-disable-next-line max-statements\nfunction mergeAttributes(meshes, vertexCount): MeshAttributes {\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"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports._typecheckMTLLoader = exports.MTLLoader = void 0;
7
+ var VERSION = typeof "4.0.0-alpha.6" !== 'undefined' ? "4.0.0-alpha.6" : 'latest';
8
+ var MTLLoader = {
9
+ name: 'MTL',
10
+ id: 'mtl',
11
+ module: 'mtl',
12
+ version: VERSION,
13
+ worker: true,
14
+ extensions: ['mtl'],
15
+ mimeTypes: ['text/plain'],
16
+ testText: function testText(text) {
17
+ return text.includes('newmtl');
18
+ },
19
+ options: {
20
+ mtl: {}
21
+ }
22
+ };
23
+ exports.MTLLoader = MTLLoader;
24
+ var _typecheckMTLLoader = MTLLoader;
25
+ exports._typecheckMTLLoader = _typecheckMTLLoader;
26
+ //# sourceMappingURL=mtl-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mtl-loader.js","names":["VERSION","MTLLoader","name","id","module","version","worker","extensions","mimeTypes","testText","text","includes","options","mtl","exports","_typecheckMTLLoader"],"sources":["../../src/mtl-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {MTLMaterial, ParseMTLOptions} from './lib/parse-mtl';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type MTLLoaderOptions = LoaderOptions & {\n mtl?: ParseMTLOptions;\n};\n\n/**\n * Loader for the MTL material format\n * Parses a Wavefront .mtl file specifying materials\n */\nexport const MTLLoader: Loader<MTLMaterial[], never, LoaderOptions> = {\n name: 'MTL',\n id: 'mtl',\n module: 'mtl',\n version: VERSION,\n worker: true,\n extensions: ['mtl'],\n mimeTypes: ['text/plain'],\n testText: (text: string): boolean => text.includes('newmtl'),\n options: {\n mtl: {}\n }\n};\n\nexport const _typecheckMTLLoader: Loader = MTLLoader;\n"],"mappings":";;;;;;AAMA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAUpE,IAAMC,SAAsD,GAAG;EACpEC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,CAAC;EACzBC,QAAQ,EAAE,SAAAA,SAACC,IAAY;IAAA,OAAcA,IAAI,CAACC,QAAQ,CAAC,QAAQ,CAAC;EAAA;EAC5DC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAb,SAAA,GAAAA,SAAA;AAEK,IAAMc,mBAA2B,GAAGd,SAAS;AAACa,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports._typecheckOBJLoader = exports.OBJLoader = void 0;
7
+ var VERSION = typeof "4.0.0-alpha.6" !== 'undefined' ? "4.0.0-alpha.6" : 'latest';
8
+ var OBJLoader = {
9
+ name: 'OBJ',
10
+ id: 'obj',
11
+ module: 'obj',
12
+ version: VERSION,
13
+ worker: true,
14
+ extensions: ['obj'],
15
+ mimeTypes: ['text/plain'],
16
+ testText: testOBJFile,
17
+ options: {
18
+ obj: {}
19
+ }
20
+ };
21
+ exports.OBJLoader = OBJLoader;
22
+ function testOBJFile(text) {
23
+ return text[0] === 'v';
24
+ }
25
+ var _typecheckOBJLoader = OBJLoader;
26
+ exports._typecheckOBJLoader = _typecheckOBJLoader;
27
+ //# sourceMappingURL=obj-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj-loader.js","names":["VERSION","OBJLoader","name","id","module","version","worker","extensions","mimeTypes","testText","testOBJFile","options","obj","exports","text","_typecheckOBJLoader"],"sources":["../../src/obj-loader.ts"],"sourcesContent":["import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Mesh} from '@loaders.gl/schema';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type OBJLoaderOptions = LoaderOptions & {\n obj?: {};\n};\n\n/**\n * Worker loader for the OBJ geometry format\n */\nexport const OBJLoader: Loader<Mesh, never, OBJLoaderOptions> = {\n name: 'OBJ',\n id: 'obj',\n module: 'obj',\n version: VERSION,\n worker: true,\n extensions: ['obj'],\n mimeTypes: ['text/plain'],\n testText: testOBJFile,\n options: {\n obj: {}\n }\n};\n\nfunction testOBJFile(text: string): boolean {\n // TODO - There could be comment line first\n return text[0] === 'v';\n}\n\nexport const _typecheckOBJLoader: Loader = OBJLoader;\n"],"mappings":";;;;;;AAKA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AASpE,IAAMC,SAAgD,GAAG;EAC9DC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,CAAC;EACzBC,QAAQ,EAAEC,WAAW;EACrBC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAZ,SAAA,GAAAA,SAAA;AAEF,SAASS,WAAWA,CAACI,IAAY,EAAW;EAE1C,OAAOA,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;AACxB;AAEO,IAAMC,mBAA2B,GAAGd,SAAS;AAACY,OAAA,CAAAE,mBAAA,GAAAA,mBAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ var _loaderUtils = require("@loaders.gl/loader-utils");
4
+ var _index = require("../index");
5
+ (0, _loaderUtils.createLoaderWorker)(_index.OBJLoader);
6
+ //# sourceMappingURL=obj-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","OBJLoader"],"sources":["../../../src/workers/obj-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {OBJLoader} from '../index';\n\ncreateLoaderWorker(OBJLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,gBAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ const moduleExports = require('./index');
2
+ globalThis.loaders = globalThis.loaders || {};
3
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
4
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { parseOBJ } from './lib/parse-obj';
2
+ import { OBJLoader as OBJWorkerLoader } from './obj-loader';
3
+ import { parseMTL } from './lib/parse-mtl';
4
+ import { MTLLoader as MTLWorkerLoader } from './mtl-loader';
5
+ export { OBJWorkerLoader };
6
+ export const OBJLoader = {
7
+ ...OBJWorkerLoader,
8
+ parse: async (arrayBuffer, options) => parseOBJ(new TextDecoder().decode(arrayBuffer), options),
9
+ parseTextSync: (text, options) => parseOBJ(text, options)
10
+ };
11
+ export const MTLLoader = {
12
+ ...MTLWorkerLoader,
13
+ parse: async (arrayBuffer, options) => parseMTL(new TextDecoder().decode(arrayBuffer), options === null || options === void 0 ? void 0 : options.mtl),
14
+ parseTextSync: (text, options) => parseMTL(text, options === null || options === void 0 ? void 0 : options.mtl)
15
+ };
16
+ export const _typecheckOBJLoader = OBJLoader;
17
+ export const _typecheckMTLLoader = MTLLoader;
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["parseOBJ","OBJLoader","OBJWorkerLoader","parseMTL","MTLLoader","MTLWorkerLoader","parse","arrayBuffer","options","TextDecoder","decode","parseTextSync","text","mtl","_typecheckOBJLoader","_typecheckMTLLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {Mesh} from '@loaders.gl/schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport type {OBJLoaderOptions} from './obj-loader';\nimport {OBJLoader as OBJWorkerLoader} from './obj-loader';\n\nimport type {MTLMaterial} from './lib/parse-mtl';\nimport {parseMTL} from './lib/parse-mtl';\nimport type {MTLLoaderOptions} from './mtl-loader';\nimport {MTLLoader as MTLWorkerLoader} from './mtl-loader';\n\n// OBJLoader\n\nexport {OBJWorkerLoader};\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJLoader: LoaderWithParser<Mesh, never, OBJLoaderOptions> = {\n ...OBJWorkerLoader,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n parseOBJ(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) => parseOBJ(text, options)\n};\n\n// MTLLoader\n\n/**\n * Loader for the MTL material format\n */\nexport const MTLLoader: LoaderWithParser<MTLMaterial[], never, MTLLoaderOptions> = {\n ...MTLWorkerLoader,\n parse: async (arrayBuffer: ArrayBuffer, options?: MTLLoaderOptions) =>\n parseMTL(new TextDecoder().decode(arrayBuffer), options?.mtl),\n parseTextSync: (text: string, options?: MTLLoaderOptions) => parseMTL(text, options?.mtl)\n};\n\nexport const _typecheckOBJLoader: LoaderWithParser = OBJLoader;\nexport const _typecheckMTLLoader: LoaderWithParser = MTLLoader;\n"],"mappings":"AAEA,SAAQA,QAAQ,QAAO,iBAAiB;AAExC,SAAQC,SAAS,IAAIC,eAAe,QAAO,cAAc;AAGzD,SAAQC,QAAQ,QAAO,iBAAiB;AAExC,SAAQC,SAAS,IAAIC,eAAe,QAAO,cAAc;AAIzD,SAAQH,eAAe;AAKvB,OAAO,MAAMD,SAA0D,GAAG;EACxE,GAAGC,eAAe;EAClBI,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEC,OAA0B,KAChER,QAAQ,CAAC,IAAIS,WAAW,CAAC,CAAC,CAACC,MAAM,CAACH,WAAW,CAAC,EAAEC,OAAO,CAAC;EAC1DG,aAAa,EAAEA,CAACC,IAAY,EAAEJ,OAA0B,KAAKR,QAAQ,CAACY,IAAI,EAAEJ,OAAO;AACrF,CAAC;AAOD,OAAO,MAAMJ,SAAmE,GAAG;EACjF,GAAGC,eAAe;EAClBC,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEC,OAA0B,KAChEL,QAAQ,CAAC,IAAIM,WAAW,CAAC,CAAC,CAACC,MAAM,CAACH,WAAW,CAAC,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,GAAG,CAAC;EAC/DF,aAAa,EAAEA,CAACC,IAAY,EAAEJ,OAA0B,KAAKL,QAAQ,CAACS,IAAI,EAAEJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,GAAG;AAC1F,CAAC;AAED,OAAO,MAAMC,mBAAqC,GAAGb,SAAS;AAC9D,OAAO,MAAMc,mBAAqC,GAAGX,SAAS"}
@@ -0,0 +1,49 @@
1
+ import { getDataTypeFromArray } from '@loaders.gl/schema';
2
+ export function getOBJSchema(attributes) {
3
+ let metadata = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4
+ const stringMetadata = {};
5
+ for (const key in metadata) {
6
+ if (key !== 'value') {
7
+ stringMetadata[key] = JSON.stringify(metadata[key]);
8
+ }
9
+ }
10
+ const fields = [];
11
+ for (const attributeName in attributes) {
12
+ const attribute = attributes[attributeName];
13
+ const field = getFieldFromAttribute(attributeName, attribute);
14
+ fields.push(field);
15
+ }
16
+ return {
17
+ fields,
18
+ metadata: stringMetadata
19
+ };
20
+ }
21
+ function getFieldFromAttribute(name, attribute) {
22
+ const metadata = {};
23
+ for (const key in attribute) {
24
+ if (key !== 'value') {
25
+ metadata[key] = JSON.stringify(attribute[key]);
26
+ }
27
+ }
28
+ let {
29
+ type
30
+ } = getDataTypeFromArray(attribute.value);
31
+ const isSingleValue = attribute.size === 1 || attribute.size === undefined;
32
+ if (!isSingleValue) {
33
+ type = {
34
+ type: 'fixed-size-list',
35
+ listSize: attribute.size,
36
+ children: [{
37
+ name: 'values',
38
+ type
39
+ }]
40
+ };
41
+ }
42
+ return {
43
+ name,
44
+ type,
45
+ nullable: false,
46
+ metadata
47
+ };
48
+ }
49
+ //# sourceMappingURL=get-obj-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-obj-schema.js","names":["getDataTypeFromArray","getOBJSchema","attributes","metadata","arguments","length","undefined","stringMetadata","key","JSON","stringify","fields","attributeName","attribute","field","getFieldFromAttribute","push","name","type","value","isSingleValue","size","listSize","children","nullable"],"sources":["../../../src/lib/get-obj-schema.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Schema, SchemaMetadata, Field, MeshAttribute} from '@loaders.gl/schema';\nimport {getDataTypeFromArray} from '@loaders.gl/schema';\n\n/** Get Mesh Schema */\nexport function getOBJSchema(\n attributes: Record<string, MeshAttribute>,\n metadata: Record<string, unknown> = {}\n): Schema {\n const stringMetadata: SchemaMetadata = {};\n for (const key in metadata) {\n if (key !== 'value') {\n stringMetadata[key] = JSON.stringify(metadata[key]);\n }\n }\n\n const fields: Field[] = [];\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getFieldFromAttribute(attributeName, attribute);\n fields.push(field);\n }\n\n return {fields, metadata: stringMetadata};\n}\n\n/** Get a Field describing the column from an OBJ attribute */\nfunction getFieldFromAttribute(name: string, attribute: MeshAttribute): Field {\n const metadata: Record<string, string> = {};\n for (const key in attribute) {\n if (key !== 'value') {\n metadata[key] = JSON.stringify(attribute[key]);\n }\n }\n\n let {type} = getDataTypeFromArray(attribute.value);\n const isSingleValue = attribute.size === 1 || attribute.size === undefined;\n if (!isSingleValue) {\n type = {type: 'fixed-size-list', listSize: attribute.size, children: [{name: 'values', type}]};\n }\n return {name, type, nullable: false, metadata};\n}\n"],"mappings":"AAGA,SAAQA,oBAAoB,QAAO,oBAAoB;AAGvD,OAAO,SAASC,YAAYA,CAC1BC,UAAyC,EAEjC;EAAA,IADRC,QAAiC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEtC,MAAMG,cAA8B,GAAG,CAAC,CAAC;EACzC,KAAK,MAAMC,GAAG,IAAIL,QAAQ,EAAE;IAC1B,IAAIK,GAAG,KAAK,OAAO,EAAE;MACnBD,cAAc,CAACC,GAAG,CAAC,GAAGC,IAAI,CAACC,SAAS,CAACP,QAAQ,CAACK,GAAG,CAAC,CAAC;IACrD;EACF;EAEA,MAAMG,MAAe,GAAG,EAAE;EAC1B,KAAK,MAAMC,aAAa,IAAIV,UAAU,EAAE;IACtC,MAAMW,SAAS,GAAGX,UAAU,CAACU,aAAa,CAAC;IAC3C,MAAME,KAAK,GAAGC,qBAAqB,CAACH,aAAa,EAAEC,SAAS,CAAC;IAC7DF,MAAM,CAACK,IAAI,CAACF,KAAK,CAAC;EACpB;EAEA,OAAO;IAACH,MAAM;IAAER,QAAQ,EAAEI;EAAc,CAAC;AAC3C;AAGA,SAASQ,qBAAqBA,CAACE,IAAY,EAAEJ,SAAwB,EAAS;EAC5E,MAAMV,QAAgC,GAAG,CAAC,CAAC;EAC3C,KAAK,MAAMK,GAAG,IAAIK,SAAS,EAAE;IAC3B,IAAIL,GAAG,KAAK,OAAO,EAAE;MACnBL,QAAQ,CAACK,GAAG,CAAC,GAAGC,IAAI,CAACC,SAAS,CAACG,SAAS,CAACL,GAAG,CAAC,CAAC;IAChD;EACF;EAEA,IAAI;IAACU;EAAI,CAAC,GAAGlB,oBAAoB,CAACa,SAAS,CAACM,KAAK,CAAC;EAClD,MAAMC,aAAa,GAAGP,SAAS,CAACQ,IAAI,KAAK,CAAC,IAAIR,SAAS,CAACQ,IAAI,KAAKf,SAAS;EAC1E,IAAI,CAACc,aAAa,EAAE;IAClBF,IAAI,GAAG;MAACA,IAAI,EAAE,iBAAiB;MAAEI,QAAQ,EAAET,SAAS,CAACQ,IAAI;MAAEE,QAAQ,EAAE,CAAC;QAACN,IAAI,EAAE,QAAQ;QAAEC;MAAI,CAAC;IAAC,CAAC;EAChG;EACA,OAAO;IAACD,IAAI;IAAEC,IAAI;IAAEM,QAAQ,EAAE,KAAK;IAAErB;EAAQ,CAAC;AAChD"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=obj-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj-types.js","names":[],"sources":["../../../src/lib/obj-types.ts"],"sourcesContent":[""],"mappings":""}
@@ -0,0 +1,68 @@
1
+ const DELIMITER_PATTERN = /\s+/;
2
+ export function parseMTL(text, options) {
3
+ const materials = [];
4
+ let currentMaterial = {
5
+ name: 'placeholder'
6
+ };
7
+ const lines = text.split('\n');
8
+ for (let line of lines) {
9
+ line = line.trim();
10
+ if (line.length === 0 || line.charAt(0) === '#') {
11
+ continue;
12
+ }
13
+ const pos = line.indexOf(' ');
14
+ let key = pos >= 0 ? line.substring(0, pos) : line;
15
+ key = key.toLowerCase();
16
+ let value = pos >= 0 ? line.substring(pos + 1) : '';
17
+ value = value.trim();
18
+ switch (key) {
19
+ case 'newmtl':
20
+ currentMaterial = {
21
+ name: value
22
+ };
23
+ materials.push(currentMaterial);
24
+ break;
25
+ case 'ka':
26
+ currentMaterial.ambientColor = parseColor(value);
27
+ break;
28
+ case 'kd':
29
+ currentMaterial.diffuseColor = parseColor(value);
30
+ break;
31
+ case 'map_kd':
32
+ currentMaterial.diffuseTextureUrl = value;
33
+ break;
34
+ case 'ks':
35
+ currentMaterial.specularColor = parseColor(value);
36
+ break;
37
+ case 'map_ks':
38
+ currentMaterial.specularTextureUrl = value;
39
+ break;
40
+ case 'ke':
41
+ currentMaterial.emissiveColor = parseColor(value);
42
+ break;
43
+ case 'map_ke':
44
+ currentMaterial.emissiveTextureUrl = value;
45
+ break;
46
+ case 'ns':
47
+ currentMaterial.shininess = parseFloat(value);
48
+ break;
49
+ case 'map_ns':
50
+ break;
51
+ case 'ni':
52
+ currentMaterial.refraction = parseFloat(value);
53
+ break;
54
+ case 'illum':
55
+ currentMaterial.illumination = parseFloat(value);
56
+ break;
57
+ default:
58
+ break;
59
+ }
60
+ }
61
+ return materials;
62
+ }
63
+ function parseColor(value, options) {
64
+ const rgb = value.split(DELIMITER_PATTERN, 3);
65
+ const color = [parseFloat(rgb[0]), parseFloat(rgb[1]), parseFloat(rgb[2])];
66
+ return color;
67
+ }
68
+ //# sourceMappingURL=parse-mtl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-mtl.js","names":["DELIMITER_PATTERN","parseMTL","text","options","materials","currentMaterial","name","lines","split","line","trim","length","charAt","pos","indexOf","key","substring","toLowerCase","value","push","ambientColor","parseColor","diffuseColor","diffuseTextureUrl","specularColor","specularTextureUrl","emissiveColor","emissiveTextureUrl","shininess","parseFloat","refraction","illumination","rgb","color"],"sources":["../../../src/lib/parse-mtl.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from THREE.js under MIT license\n// https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/MTLLoader.js\n\n// import type {DiffuseMaterial} from '@loaders.gl/schema';\n\nexport type MTLMaterial = {\n name: string;\n ambientColor?: [number, number, number];\n diffuseColor?: [number, number, number];\n specularColor?: [number, number, number];\n emissiveColor?: [number, number, number];\n // specular?: number;\n shininess?: number;\n refraction?: number;\n illumination?: number;\n diffuseTextureUrl?: string;\n emissiveTextureUrl?: string;\n specularTextureUrl?: string;\n};\n\nconst DELIMITER_PATTERN = /\\s+/;\n\n/**\n * Set of options on how to construct materials\n * @param normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 (Default: false, assumed to be already normalized)\n * @param ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's Default: false\n * @param baseUrl - Url relative to which textures are loaded\n */\nexport type ParseMTLOptions = {\n normalizeRGB?: boolean;\n ignoreZeroRGBs?: boolean;\n baseUrl?: string;\n};\n\n/**\n * Parses a MTL file.\n * Parses a Wavefront .mtl file specifying materials\n * http://paulbourke.net/dataformats/mtl/\n * https://www.loc.gov/preservation/digital/formats/fdd/fdd000508.shtml\n *\n * @param text - Content of MTL file\n */\n// eslint-disable-next-line complexity\nexport function parseMTL(text: string, options?: ParseMTLOptions): MTLMaterial[] {\n // const materialsInfo: Record<string, MTLMaterial> = {};\n const materials: MTLMaterial[] = [];\n\n let currentMaterial: MTLMaterial = {name: 'placeholder'};\n\n const lines = text.split('\\n');\n for (let line of lines) {\n line = line.trim();\n\n if (line.length === 0 || line.charAt(0) === '#') {\n // Blank line or comment ignore\n continue; // eslint-disable-line no-continue\n }\n\n const pos = line.indexOf(' ');\n\n let key = pos >= 0 ? line.substring(0, pos) : line;\n key = key.toLowerCase();\n\n let value = pos >= 0 ? line.substring(pos + 1) : '';\n value = value.trim();\n\n switch (key) {\n case 'newmtl':\n // New material\n currentMaterial = {name: value};\n // insert into map\n materials.push(currentMaterial);\n break;\n\n case 'ka': // Ka\n currentMaterial.ambientColor = parseColor(value);\n break;\n\n case 'kd':\n // Kd: Diffuse color (color under white light) using RGB values\n currentMaterial.diffuseColor = parseColor(value);\n break;\n case 'map_kd':\n // Diffuse texture map\n currentMaterial.diffuseTextureUrl = value;\n // setMapForType('map', value);\n break;\n\n case 'ks':\n // Specular color (color when light is reflected from shiny surface) using RGB values\n currentMaterial.specularColor = parseColor(value);\n break;\n case 'map_ks':\n // Specular map\n currentMaterial.specularTextureUrl = value;\n // setMapForType('specularMap', value);\n break;\n\n case 'ke':\n // Emissive using RGB values\n currentMaterial.emissiveColor = parseColor(value);\n break;\n case 'map_ke':\n // Emissive map\n currentMaterial.emissiveTextureUrl = value;\n // setMapForType('emissiveMap', value);\n break;\n\n case 'ns':\n // Ns is material specular exponent (defines the focus of the specular highlight)\n // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.\n currentMaterial.shininess = parseFloat(value);\n break;\n case 'map_ns':\n // Ns is material specular exponent\n // TODO?\n // currentMaterial.shininessMap = parseFloat(value);\n break;\n case 'ni':\n currentMaterial.refraction = parseFloat(value);\n break;\n case 'illum':\n currentMaterial.illumination = parseFloat(value);\n break;\n\n default:\n // log unknown message?\n break;\n\n /*\n case 'norm':\n setMapForType('normalMap', value);\n break;\n\n case 'map_bump':\n case 'bump':\n // Bump texture map\n setMapForType('bumpMap', value);\n break;\n\n case 'd':\n n = parseFloat(value);\n if (n < 1) {\n params.opacity = n;\n params.transparent = true;\n }\n break;\n\n case 'map_d':\n // Alpha map\n setMapForType('alphaMap', value);\n params.transparent = true;\n break;\n\n case 'tr':\n n = parseFloat(value);\n if (this.options && this.options.invertTrProperty) n = 1 - n;\n if (n > 0) {\n params.opacity = 1 - n;\n params.transparent = true;\n }\n */\n }\n }\n\n return materials;\n}\n\nfunction parseColor(value: string, options?: ParseMTLOptions): [number, number, number] {\n const rgb = value.split(DELIMITER_PATTERN, 3);\n const color: [number, number, number] = [\n parseFloat(rgb[0]),\n parseFloat(rgb[1]),\n parseFloat(rgb[2])\n ];\n // TODO auto detect big values?\n // if (this.options && this.options.normalizeRGB) {\n // value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ];\n // }\n\n // if (this.options && this.options.ignoreZeroRGBs) {\n // if (value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0) {\n // // ignore\n // save = false;\n // }\n // }\n return color;\n}\n\n/* TODO parse url options\nfunction parseTexture(value, matParams) {\n const texParams = {\n scale: new Vector2(1, 1),\n offset: new Vector2(0, 0)\n };\n\n const items = value.split(/\\s+/);\n let pos;\n\n pos = items.indexOf('-bm');\n if (pos >= 0) {\n matParams.bumpScale = parseFloat(items[ pos + 1 ]);\n items.splice(pos, 2);\n }\n\n pos = items.indexOf('-s');\n if (pos >= 0) {\n texParams.scale.set(parseFloat(items[ pos + 1 ]), parseFloat(items[ pos + 2 ]));\n items.splice(pos, 4); // we expect 3 parameters here!\n\n }\n\n pos = items.indexOf('-o');\n\n if (pos >= 0) {\n texParams.offset.set(parseFloat(items[ pos + 1 ]), parseFloat(items[ pos + 2 ]));\n items.splice(pos, 4); // we expect 3 parameters here!\n }\n\n texParams.url = items.join(' ').trim();\n return texParams;\n}\n\n *function resolveURL(baseUrl, url) {\n * baseUrl?: string;\n // Absolute URL\n if (/^https?:\\/\\//i.test(url)) return url;\n return baseUrl + url;\n }\n\n function setMapForType(mapType, value) {\n if (params[ mapType ]) return; // Keep the first encountered texture\n\n const texParams = scope.getTextureParams(value, params);\n const map = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url));\n\n map.repeat.copy(texParams.scale);\n map.offset.copy(texParams.offset);\n\n map.wrapS = scope.wrap;\n map.wrapT = scope.wrap;\n\n params[ mapType ] = map;\n }\n*/\n"],"mappings":"AAqBA,MAAMA,iBAAiB,GAAG,KAAK;AAuB/B,OAAO,SAASC,QAAQA,CAACC,IAAY,EAAEC,OAAyB,EAAiB;EAE/E,MAAMC,SAAwB,GAAG,EAAE;EAEnC,IAAIC,eAA4B,GAAG;IAACC,IAAI,EAAE;EAAa,CAAC;EAExD,MAAMC,KAAK,GAAGL,IAAI,CAACM,KAAK,CAAC,IAAI,CAAC;EAC9B,KAAK,IAAIC,IAAI,IAAIF,KAAK,EAAE;IACtBE,IAAI,GAAGA,IAAI,CAACC,IAAI,CAAC,CAAC;IAElB,IAAID,IAAI,CAACE,MAAM,KAAK,CAAC,IAAIF,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MAE/C;IACF;IAEA,MAAMC,GAAG,GAAGJ,IAAI,CAACK,OAAO,CAAC,GAAG,CAAC;IAE7B,IAAIC,GAAG,GAAGF,GAAG,IAAI,CAAC,GAAGJ,IAAI,CAACO,SAAS,CAAC,CAAC,EAAEH,GAAG,CAAC,GAAGJ,IAAI;IAClDM,GAAG,GAAGA,GAAG,CAACE,WAAW,CAAC,CAAC;IAEvB,IAAIC,KAAK,GAAGL,GAAG,IAAI,CAAC,GAAGJ,IAAI,CAACO,SAAS,CAACH,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;IACnDK,KAAK,GAAGA,KAAK,CAACR,IAAI,CAAC,CAAC;IAEpB,QAAQK,GAAG;MACT,KAAK,QAAQ;QAEXV,eAAe,GAAG;UAACC,IAAI,EAAEY;QAAK,CAAC;QAE/Bd,SAAS,CAACe,IAAI,CAACd,eAAe,CAAC;QAC/B;MAEF,KAAK,IAAI;QACPA,eAAe,CAACe,YAAY,GAAGC,UAAU,CAACH,KAAK,CAAC;QAChD;MAEF,KAAK,IAAI;QAEPb,eAAe,CAACiB,YAAY,GAAGD,UAAU,CAACH,KAAK,CAAC;QAChD;MACF,KAAK,QAAQ;QAEXb,eAAe,CAACkB,iBAAiB,GAAGL,KAAK;QAEzC;MAEF,KAAK,IAAI;QAEPb,eAAe,CAACmB,aAAa,GAAGH,UAAU,CAACH,KAAK,CAAC;QACjD;MACF,KAAK,QAAQ;QAEXb,eAAe,CAACoB,kBAAkB,GAAGP,KAAK;QAE1C;MAEF,KAAK,IAAI;QAEPb,eAAe,CAACqB,aAAa,GAAGL,UAAU,CAACH,KAAK,CAAC;QACjD;MACF,KAAK,QAAQ;QAEXb,eAAe,CAACsB,kBAAkB,GAAGT,KAAK;QAE1C;MAEF,KAAK,IAAI;QAGPb,eAAe,CAACuB,SAAS,GAAGC,UAAU,CAACX,KAAK,CAAC;QAC7C;MACF,KAAK,QAAQ;QAIX;MACF,KAAK,IAAI;QACPb,eAAe,CAACyB,UAAU,GAAGD,UAAU,CAACX,KAAK,CAAC;QAC9C;MACF,KAAK,OAAO;QACVb,eAAe,CAAC0B,YAAY,GAAGF,UAAU,CAACX,KAAK,CAAC;QAChD;MAEF;QAEE;IAmCJ;EACF;EAEA,OAAOd,SAAS;AAClB;AAEA,SAASiB,UAAUA,CAACH,KAAa,EAAEf,OAAyB,EAA4B;EACtF,MAAM6B,GAAG,GAAGd,KAAK,CAACV,KAAK,CAACR,iBAAiB,EAAE,CAAC,CAAC;EAC7C,MAAMiC,KAA+B,GAAG,CACtCJ,UAAU,CAACG,GAAG,CAAC,CAAC,CAAC,CAAC,EAClBH,UAAU,CAACG,GAAG,CAAC,CAAC,CAAC,CAAC,EAClBH,UAAU,CAACG,GAAG,CAAC,CAAC,CAAC,CAAC,CACnB;EAYD,OAAOC,KAAK;AACd"}