@loaders.gl/obj 3.1.3 → 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 (75) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/dist.min.js +269 -164
  4. package/dist/index.d.ts +41 -4
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +14 -16
  7. package/dist/index.js.map +1 -0
  8. package/dist/lib/get-obj-schema.js +32 -29
  9. package/dist/lib/get-obj-schema.js.map +1 -0
  10. package/dist/lib/obj-types.js +2 -1
  11. package/dist/{es5/lib → lib}/obj-types.js.map +0 -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/{esm/lib/parse-obj.js → lib/parse-obj-meshes.js} +3 -3
  19. package/dist/lib/parse-obj-meshes.js.map +1 -0
  20. package/dist/lib/parse-obj.d.ts +12 -4
  21. package/dist/lib/parse-obj.d.ts.map +1 -1
  22. package/dist/lib/parse-obj.js +90 -436
  23. package/dist/lib/parse-obj.js.map +1 -0
  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 +5 -2
  29. package/dist/obj-loader.d.ts.map +1 -1
  30. package/dist/obj-loader.js +18 -24
  31. package/dist/obj-loader.js.map +1 -0
  32. package/dist/obj-worker.js +99 -9
  33. package/dist/workers/obj-worker.js +4 -5
  34. package/dist/workers/obj-worker.js.map +1 -0
  35. package/package.json +7 -7
  36. package/src/index.ts +21 -3
  37. package/src/lib/parse-mtl.ts +246 -0
  38. package/src/lib/parse-obj-meshes.ts +525 -0
  39. package/src/lib/parse-obj.ts +66 -508
  40. package/src/mtl-loader.ts +31 -0
  41. package/src/obj-loader.ts +6 -2
  42. package/dist/es5/bundle.js +0 -7
  43. package/dist/es5/bundle.js.map +0 -1
  44. package/dist/es5/index.js +0 -59
  45. package/dist/es5/index.js.map +0 -1
  46. package/dist/es5/lib/get-obj-schema.js +0 -46
  47. package/dist/es5/lib/get-obj-schema.js.map +0 -1
  48. package/dist/es5/lib/load-obj.js +0 -121
  49. package/dist/es5/lib/load-obj.js.map +0 -1
  50. package/dist/es5/lib/obj-types.js +0 -2
  51. package/dist/es5/lib/parse-obj.js +0 -561
  52. package/dist/es5/lib/parse-obj.js.map +0 -1
  53. package/dist/es5/obj-loader.js +0 -29
  54. package/dist/es5/obj-loader.js.map +0 -1
  55. package/dist/es5/workers/obj-worker.js +0 -8
  56. package/dist/es5/workers/obj-worker.js.map +0 -1
  57. package/dist/esm/bundle.js +0 -5
  58. package/dist/esm/bundle.js.map +0 -1
  59. package/dist/esm/index.js +0 -9
  60. package/dist/esm/index.js.map +0 -1
  61. package/dist/esm/lib/get-obj-schema.js +0 -37
  62. package/dist/esm/lib/get-obj-schema.js.map +0 -1
  63. package/dist/esm/lib/load-obj.js +0 -92
  64. package/dist/esm/lib/load-obj.js.map +0 -1
  65. package/dist/esm/lib/obj-types.js +0 -2
  66. package/dist/esm/lib/obj-types.js.map +0 -1
  67. package/dist/esm/lib/parse-obj.js.map +0 -1
  68. package/dist/esm/obj-loader.js +0 -21
  69. package/dist/esm/obj-loader.js.map +0 -1
  70. package/dist/esm/workers/obj-worker.js +0 -4
  71. package/dist/esm/workers/obj-worker.js.map +0 -1
  72. package/dist/lib/load-obj.d.ts +0 -14
  73. package/dist/lib/load-obj.d.ts.map +0 -1
  74. package/dist/lib/load-obj.js +0 -73
  75. package/src/lib/load-obj.ts +0 -83
package/dist/bundle.js CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";
2
- // @ts-nocheck
3
1
  const moduleExports = require('./index');
2
+
4
3
  globalThis.loaders = globalThis.loaders || {};
5
4
  module.exports = Object.assign(globalThis.loaders, moduleExports);
5
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
package/dist/dist.min.js CHANGED
@@ -562,10 +562,160 @@
562
562
  }
563
563
  });
564
564
 
565
- // src/lib/parse-obj.ts
566
- var OBJECT_RE, MATERIAL_RE, MATERIAL_USE_RE, MeshMaterial, MeshObject, ParserState, parse_obj_default;
567
- var init_parse_obj = __esm({
568
- "src/lib/parse-obj.ts"() {
565
+ // src/lib/parse-obj-meshes.ts
566
+ function parseOBJMeshes(text) {
567
+ const state = new ParserState();
568
+ if (text.indexOf("\r\n") !== -1) {
569
+ text = text.replace(/\r\n/g, "\n");
570
+ }
571
+ if (text.indexOf("\\\n") !== -1) {
572
+ text = text.replace(/\\\n/g, "");
573
+ }
574
+ const lines = text.split("\n");
575
+ let line = "";
576
+ let lineFirstChar = "";
577
+ let lineLength = 0;
578
+ let result = [];
579
+ const trimLeft = typeof "".trimLeft === "function";
580
+ for (let i = 0, l = lines.length; i < l; i++) {
581
+ line = lines[i];
582
+ line = trimLeft ? line.trimLeft() : line.trim();
583
+ lineLength = line.length;
584
+ if (lineLength === 0)
585
+ continue;
586
+ lineFirstChar = line.charAt(0);
587
+ if (lineFirstChar === "#")
588
+ continue;
589
+ if (lineFirstChar === "v") {
590
+ const data = line.split(/\s+/);
591
+ switch (data[0]) {
592
+ case "v":
593
+ state.vertices.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));
594
+ if (data.length === 8) {
595
+ state.colors.push(parseFloat(data[4]), parseFloat(data[5]), parseFloat(data[6]));
596
+ }
597
+ break;
598
+ case "vn":
599
+ state.normals.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));
600
+ break;
601
+ case "vt":
602
+ state.uvs.push(parseFloat(data[1]), parseFloat(data[2]));
603
+ break;
604
+ default:
605
+ }
606
+ } else if (lineFirstChar === "f") {
607
+ const lineData = line.substr(1).trim();
608
+ const vertexData = lineData.split(/\s+/);
609
+ const faceVertices = [];
610
+ for (let j = 0, jl = vertexData.length; j < jl; j++) {
611
+ const vertex = vertexData[j];
612
+ if (vertex.length > 0) {
613
+ const vertexParts = vertex.split("/");
614
+ faceVertices.push(vertexParts);
615
+ }
616
+ }
617
+ const v1 = faceVertices[0];
618
+ for (let j = 1, jl = faceVertices.length - 1; j < jl; j++) {
619
+ const v2 = faceVertices[j];
620
+ const v3 = faceVertices[j + 1];
621
+ state.addFace(v1[0], v2[0], v3[0], v1[1], v2[1], v3[1], v1[2], v2[2], v3[2]);
622
+ }
623
+ } else if (lineFirstChar === "l") {
624
+ const lineParts = line.substring(1).trim().split(" ");
625
+ let lineVertices;
626
+ const lineUVs = [];
627
+ if (line.indexOf("/") === -1) {
628
+ lineVertices = lineParts;
629
+ } else {
630
+ lineVertices = [];
631
+ for (let li = 0, llen = lineParts.length; li < llen; li++) {
632
+ const parts = lineParts[li].split("/");
633
+ if (parts[0] !== "")
634
+ lineVertices.push(parts[0]);
635
+ if (parts[1] !== "")
636
+ lineUVs.push(parts[1]);
637
+ }
638
+ }
639
+ state.addLineGeometry(lineVertices, lineUVs);
640
+ } else if (lineFirstChar === "p") {
641
+ const lineData = line.substr(1).trim();
642
+ const pointData = lineData.split(" ");
643
+ state.addPointGeometry(pointData);
644
+ } else if ((result = OBJECT_RE.exec(line)) !== null) {
645
+ const name = (" " + result[0].substr(1).trim()).substr(1);
646
+ state.startObject(name);
647
+ } else if (MATERIAL_USE_RE.test(line)) {
648
+ state.object.startMaterial(line.substring(7).trim(), state.materialLibraries);
649
+ } else if (MATERIAL_RE.test(line)) {
650
+ state.materialLibraries.push(line.substring(7).trim());
651
+ } else if (lineFirstChar === "s") {
652
+ result = line.split(" ");
653
+ if (result.length > 1) {
654
+ const value = result[1].trim().toLowerCase();
655
+ state.object.smooth = value !== "0" && value !== "off";
656
+ } else {
657
+ state.object.smooth = true;
658
+ }
659
+ const material = state.object.currentMaterial();
660
+ if (material)
661
+ material.smooth = state.object.smooth;
662
+ } else {
663
+ if (line === "\0")
664
+ continue;
665
+ throw new Error(`Unexpected line: "${line}"`);
666
+ }
667
+ }
668
+ state.finalize();
669
+ const meshes = [];
670
+ const materials = [];
671
+ for (const object of state.objects) {
672
+ const { geometry } = object;
673
+ if (geometry.vertices.length === 0)
674
+ continue;
675
+ const mesh = {
676
+ header: {
677
+ vertexCount: geometry.vertices.length / 3
678
+ },
679
+ attributes: {}
680
+ };
681
+ switch (geometry.type) {
682
+ case "Points":
683
+ mesh.mode = 0;
684
+ break;
685
+ case "Line":
686
+ mesh.mode = 1;
687
+ break;
688
+ default:
689
+ mesh.mode = 4;
690
+ break;
691
+ }
692
+ mesh.attributes.POSITION = { value: new Float32Array(geometry.vertices), size: 3 };
693
+ if (geometry.normals.length > 0) {
694
+ mesh.attributes.NORMAL = { value: new Float32Array(geometry.normals), size: 3 };
695
+ }
696
+ if (geometry.colors.length > 0) {
697
+ mesh.attributes.COLOR_0 = { value: new Float32Array(geometry.colors), size: 3 };
698
+ }
699
+ if (geometry.uvs.length > 0) {
700
+ mesh.attributes.TEXCOORD_0 = { value: new Float32Array(geometry.uvs), size: 2 };
701
+ }
702
+ mesh.materials = [];
703
+ for (const sourceMaterial of object.materials) {
704
+ const _material = {
705
+ name: sourceMaterial.name,
706
+ flatShading: !sourceMaterial.smooth
707
+ };
708
+ mesh.materials.push(_material);
709
+ materials.push(_material);
710
+ }
711
+ mesh.name = object.name;
712
+ meshes.push(mesh);
713
+ }
714
+ return { meshes, materials };
715
+ }
716
+ var OBJECT_RE, MATERIAL_RE, MATERIAL_USE_RE, MeshMaterial, MeshObject, ParserState;
717
+ var init_parse_obj_meshes = __esm({
718
+ "src/lib/parse-obj-meshes.ts"() {
569
719
  OBJECT_RE = /^[og]\s*(.+)?/;
570
720
  MATERIAL_RE = /^mtllib /;
571
721
  MATERIAL_USE_RE = /^usemtl /;
@@ -780,156 +930,6 @@
780
930
  }
781
931
  }
782
932
  };
783
- parse_obj_default = (text) => {
784
- const state = new ParserState();
785
- if (text.indexOf("\r\n") !== -1) {
786
- text = text.replace(/\r\n/g, "\n");
787
- }
788
- if (text.indexOf("\\\n") !== -1) {
789
- text = text.replace(/\\\n/g, "");
790
- }
791
- const lines = text.split("\n");
792
- let line = "";
793
- let lineFirstChar = "";
794
- let lineLength = 0;
795
- let result = [];
796
- const trimLeft = typeof "".trimLeft === "function";
797
- for (let i = 0, l = lines.length; i < l; i++) {
798
- line = lines[i];
799
- line = trimLeft ? line.trimLeft() : line.trim();
800
- lineLength = line.length;
801
- if (lineLength === 0)
802
- continue;
803
- lineFirstChar = line.charAt(0);
804
- if (lineFirstChar === "#")
805
- continue;
806
- if (lineFirstChar === "v") {
807
- const data = line.split(/\s+/);
808
- switch (data[0]) {
809
- case "v":
810
- state.vertices.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));
811
- if (data.length === 8) {
812
- state.colors.push(parseFloat(data[4]), parseFloat(data[5]), parseFloat(data[6]));
813
- }
814
- break;
815
- case "vn":
816
- state.normals.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));
817
- break;
818
- case "vt":
819
- state.uvs.push(parseFloat(data[1]), parseFloat(data[2]));
820
- break;
821
- default:
822
- }
823
- } else if (lineFirstChar === "f") {
824
- const lineData = line.substr(1).trim();
825
- const vertexData = lineData.split(/\s+/);
826
- const faceVertices = [];
827
- for (let j = 0, jl = vertexData.length; j < jl; j++) {
828
- const vertex = vertexData[j];
829
- if (vertex.length > 0) {
830
- const vertexParts = vertex.split("/");
831
- faceVertices.push(vertexParts);
832
- }
833
- }
834
- const v1 = faceVertices[0];
835
- for (let j = 1, jl = faceVertices.length - 1; j < jl; j++) {
836
- const v2 = faceVertices[j];
837
- const v3 = faceVertices[j + 1];
838
- state.addFace(v1[0], v2[0], v3[0], v1[1], v2[1], v3[1], v1[2], v2[2], v3[2]);
839
- }
840
- } else if (lineFirstChar === "l") {
841
- const lineParts = line.substring(1).trim().split(" ");
842
- let lineVertices;
843
- const lineUVs = [];
844
- if (line.indexOf("/") === -1) {
845
- lineVertices = lineParts;
846
- } else {
847
- lineVertices = [];
848
- for (let li = 0, llen = lineParts.length; li < llen; li++) {
849
- const parts = lineParts[li].split("/");
850
- if (parts[0] !== "")
851
- lineVertices.push(parts[0]);
852
- if (parts[1] !== "")
853
- lineUVs.push(parts[1]);
854
- }
855
- }
856
- state.addLineGeometry(lineVertices, lineUVs);
857
- } else if (lineFirstChar === "p") {
858
- const lineData = line.substr(1).trim();
859
- const pointData = lineData.split(" ");
860
- state.addPointGeometry(pointData);
861
- } else if ((result = OBJECT_RE.exec(line)) !== null) {
862
- const name = (" " + result[0].substr(1).trim()).substr(1);
863
- state.startObject(name);
864
- } else if (MATERIAL_USE_RE.test(line)) {
865
- state.object.startMaterial(line.substring(7).trim(), state.materialLibraries);
866
- } else if (MATERIAL_RE.test(line)) {
867
- state.materialLibraries.push(line.substring(7).trim());
868
- } else if (lineFirstChar === "s") {
869
- result = line.split(" ");
870
- if (result.length > 1) {
871
- const value = result[1].trim().toLowerCase();
872
- state.object.smooth = value !== "0" && value !== "off";
873
- } else {
874
- state.object.smooth = true;
875
- }
876
- const material = state.object.currentMaterial();
877
- if (material)
878
- material.smooth = state.object.smooth;
879
- } else {
880
- if (line === "\0")
881
- continue;
882
- throw new Error(`Unexpected line: "${line}"`);
883
- }
884
- }
885
- state.finalize();
886
- const meshes = [];
887
- const materials = [];
888
- for (const object of state.objects) {
889
- const { geometry } = object;
890
- if (geometry.vertices.length === 0)
891
- continue;
892
- const mesh = {
893
- header: {
894
- vertexCount: geometry.vertices.length / 3
895
- },
896
- attributes: {}
897
- };
898
- switch (geometry.type) {
899
- case "Points":
900
- mesh.mode = 0;
901
- break;
902
- case "Line":
903
- mesh.mode = 1;
904
- break;
905
- default:
906
- mesh.mode = 4;
907
- break;
908
- }
909
- mesh.attributes.POSITION = { value: new Float32Array(geometry.vertices), size: 3 };
910
- if (geometry.normals.length > 0) {
911
- mesh.attributes.NORMAL = { value: new Float32Array(geometry.normals), size: 3 };
912
- }
913
- if (geometry.colors.length > 0) {
914
- mesh.attributes.COLOR_0 = { value: new Float32Array(geometry.colors), size: 3 };
915
- }
916
- if (geometry.uvs.length > 0) {
917
- mesh.attributes.TEXCOORD_0 = { value: new Float32Array(geometry.uvs), size: 2 };
918
- }
919
- mesh.materials = [];
920
- for (const sourceMaterial of object.materials) {
921
- const _material = {
922
- name: sourceMaterial.name,
923
- flatShading: !sourceMaterial.smooth
924
- };
925
- mesh.materials.push(_material);
926
- materials.push(_material);
927
- }
928
- mesh.name = object.name;
929
- meshes.push(mesh);
930
- }
931
- return { meshes, materials };
932
- };
933
933
  }
934
934
  });
935
935
 
@@ -967,9 +967,9 @@
967
967
  }
968
968
  });
969
969
 
970
- // src/lib/load-obj.ts
971
- function loadOBJ(text, options) {
972
- const { meshes } = parse_obj_default(text);
970
+ // src/lib/parse-obj.ts
971
+ function parseOBJ(text, options) {
972
+ const { meshes } = parseOBJMeshes(text);
973
973
  const vertexCount = meshes.reduce((s, mesh) => s + mesh.header.vertexCount, 0);
974
974
  const attributes = mergeAttributes(meshes, vertexCount);
975
975
  const header = {
@@ -1026,14 +1026,88 @@
1026
1026
  }
1027
1027
  return attributes;
1028
1028
  }
1029
- var init_load_obj = __esm({
1030
- "src/lib/load-obj.ts"() {
1029
+ var init_parse_obj = __esm({
1030
+ "src/lib/parse-obj.ts"() {
1031
1031
  init_src();
1032
- init_parse_obj();
1032
+ init_parse_obj_meshes();
1033
1033
  init_get_obj_schema();
1034
1034
  }
1035
1035
  });
1036
1036
 
1037
+ // src/lib/parse-mtl.ts
1038
+ function parseMTL(text, options) {
1039
+ const materials = [];
1040
+ let currentMaterial = { name: "placeholder" };
1041
+ const lines = text.split("\n");
1042
+ for (let line of lines) {
1043
+ line = line.trim();
1044
+ if (line.length === 0 || line.charAt(0) === "#") {
1045
+ continue;
1046
+ }
1047
+ const pos = line.indexOf(" ");
1048
+ let key = pos >= 0 ? line.substring(0, pos) : line;
1049
+ key = key.toLowerCase();
1050
+ let value = pos >= 0 ? line.substring(pos + 1) : "";
1051
+ value = value.trim();
1052
+ switch (key) {
1053
+ case "newmtl":
1054
+ currentMaterial = { name: value };
1055
+ materials.push(currentMaterial);
1056
+ break;
1057
+ case "ka":
1058
+ currentMaterial.ambientColor = parseColor(value);
1059
+ break;
1060
+ case "kd":
1061
+ currentMaterial.diffuseColor = parseColor(value);
1062
+ break;
1063
+ case "map_kd":
1064
+ currentMaterial.diffuseTextureUrl = value;
1065
+ break;
1066
+ case "ks":
1067
+ currentMaterial.specularColor = parseColor(value);
1068
+ break;
1069
+ case "map_ks":
1070
+ currentMaterial.specularTextureUrl = value;
1071
+ break;
1072
+ case "ke":
1073
+ currentMaterial.emissiveColor = parseColor(value);
1074
+ break;
1075
+ case "map_ke":
1076
+ currentMaterial.emissiveTextureUrl = value;
1077
+ break;
1078
+ case "ns":
1079
+ currentMaterial.shininess = parseFloat(value);
1080
+ break;
1081
+ case "map_ns":
1082
+ break;
1083
+ case "ni":
1084
+ currentMaterial.refraction = parseFloat(value);
1085
+ break;
1086
+ case "illum":
1087
+ currentMaterial.illumination = parseFloat(value);
1088
+ break;
1089
+ default:
1090
+ break;
1091
+ }
1092
+ }
1093
+ return materials;
1094
+ }
1095
+ function parseColor(value, options) {
1096
+ const rgb = value.split(DELIMITER_PATTERN, 3);
1097
+ const color = [
1098
+ parseFloat(rgb[0]),
1099
+ parseFloat(rgb[1]),
1100
+ parseFloat(rgb[2])
1101
+ ];
1102
+ return color;
1103
+ }
1104
+ var DELIMITER_PATTERN;
1105
+ var init_parse_mtl = __esm({
1106
+ "src/lib/parse-mtl.ts"() {
1107
+ DELIMITER_PATTERN = /\s+/;
1108
+ }
1109
+ });
1110
+
1037
1111
  // src/obj-loader.ts
1038
1112
  function testOBJFile(text) {
1039
1113
  return text[0] === "v";
@@ -1058,24 +1132,55 @@
1058
1132
  }
1059
1133
  });
1060
1134
 
1135
+ // src/mtl-loader.ts
1136
+ var VERSION2, MTLLoader;
1137
+ var init_mtl_loader = __esm({
1138
+ "src/mtl-loader.ts"() {
1139
+ VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
1140
+ MTLLoader = {
1141
+ name: "MTL",
1142
+ id: "mtl",
1143
+ module: "mtl",
1144
+ version: VERSION2,
1145
+ worker: true,
1146
+ extensions: ["mtl"],
1147
+ mimeTypes: ["text/plain"],
1148
+ testText: (text) => text.includes("newmtl"),
1149
+ options: {
1150
+ mtl: {}
1151
+ }
1152
+ };
1153
+ }
1154
+ });
1155
+
1061
1156
  // src/index.ts
1062
1157
  var src_exports = {};
1063
1158
  __export(src_exports, {
1159
+ MTLLoader: () => MTLLoader2,
1064
1160
  OBJLoader: () => OBJLoader2,
1065
1161
  OBJWorkerLoader: () => OBJLoader,
1162
+ _typecheckMTLLoader: () => _typecheckMTLLoader,
1066
1163
  _typecheckOBJLoader: () => _typecheckOBJLoader
1067
1164
  });
1068
- var OBJLoader2, _typecheckOBJLoader;
1165
+ var OBJLoader2, MTLLoader2, _typecheckOBJLoader, _typecheckMTLLoader;
1069
1166
  var init_src2 = __esm({
1070
1167
  "src/index.ts"() {
1071
- init_load_obj();
1168
+ init_parse_obj();
1169
+ init_parse_mtl();
1072
1170
  init_obj_loader();
1171
+ init_mtl_loader();
1073
1172
  OBJLoader2 = {
1074
1173
  ...OBJLoader,
1075
- parse: async (arrayBuffer, options) => loadOBJ(new TextDecoder().decode(arrayBuffer), options),
1076
- parseTextSync: loadOBJ
1174
+ parse: async (arrayBuffer, options) => parseOBJ(new TextDecoder().decode(arrayBuffer), options),
1175
+ parseTextSync: (text, options) => parseOBJ(text, options)
1176
+ };
1177
+ MTLLoader2 = {
1178
+ ...MTLLoader,
1179
+ parse: async (arrayBuffer, options) => parseMTL(new TextDecoder().decode(arrayBuffer), options?.mtl),
1180
+ parseTextSync: (text, options) => parseMTL(text, options?.mtl)
1077
1181
  };
1078
1182
  _typecheckOBJLoader = OBJLoader2;
1183
+ _typecheckMTLLoader = MTLLoader2;
1079
1184
  }
1080
1185
  });
1081
1186
 
package/dist/index.d.ts CHANGED
@@ -1,12 +1,16 @@
1
1
  import type { LoaderWithParser } from '@loaders.gl/loader-utils';
2
- import loadOBJ from './lib/load-obj';
2
+ import type { OBJLoaderOptions } from './obj-loader';
3
3
  import { OBJLoader as OBJWorkerLoader } from './obj-loader';
4
+ import type { MTLLoaderOptions } from './mtl-loader';
4
5
  export { OBJWorkerLoader };
5
6
  /**
6
7
  * Loader for the OBJ geometry format
7
8
  */
8
9
  export declare const OBJLoader: {
9
- parse: (arrayBuffer: any, options: any) => Promise<{
10
+ parse: (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions | undefined) => Promise<{
11
+ /**
12
+ * Loader for the MTL material format
13
+ */
10
14
  loaderData: {
11
15
  header: {};
12
16
  };
@@ -18,7 +22,21 @@ export declare const OBJLoader: {
18
22
  mode: number;
19
23
  attributes: import("@loaders.gl/schema").MeshAttributes;
20
24
  }>;
21
- parseTextSync: typeof loadOBJ;
25
+ parseTextSync: (text: string, options?: OBJLoaderOptions | undefined) => {
26
+ /**
27
+ * Loader for the MTL material format
28
+ */
29
+ loaderData: {
30
+ header: {};
31
+ };
32
+ schema: import("@loaders.gl/schema").Schema;
33
+ header: {
34
+ vertexCount: number;
35
+ boundingBox: [[number, number, number], [number, number, number]];
36
+ };
37
+ mode: number;
38
+ attributes: import("@loaders.gl/schema").MeshAttributes;
39
+ };
22
40
  name: string;
23
41
  id: string;
24
42
  module: string;
@@ -26,10 +44,29 @@ export declare const OBJLoader: {
26
44
  worker: boolean;
27
45
  extensions: string[];
28
46
  mimeTypes: string[];
29
- testText: (text: any) => boolean;
47
+ testText: (text: string) => boolean;
30
48
  options: {
31
49
  obj: {};
32
50
  };
33
51
  };
52
+ /**
53
+ * Loader for the MTL material format
54
+ */
55
+ export declare const MTLLoader: {
56
+ parse: (arrayBuffer: ArrayBuffer, options?: MTLLoaderOptions | undefined) => Promise<import("./lib/parse-mtl").MTLMaterial[]>;
57
+ parseTextSync: (text: string, options?: MTLLoaderOptions | undefined) => import("./lib/parse-mtl").MTLMaterial[];
58
+ name: string;
59
+ id: string;
60
+ module: string;
61
+ version: any;
62
+ worker: boolean;
63
+ extensions: string[];
64
+ mimeTypes: string[];
65
+ testText: (text: string) => boolean;
66
+ options: {
67
+ mtl: {};
68
+ };
69
+ };
34
70
  export declare const _typecheckOBJLoader: LoaderWithParser;
71
+ export declare const _typecheckMTLLoader: LoaderWithParser;
35
72
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,SAAS,IAAI,eAAe,EAAC,MAAM,cAAc,CAAC;AAI1D,OAAO,EAAC,eAAe,EAAC,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;CAIrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,gBAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAG/D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AACnD,OAAO,EAAC,SAAS,IAAI,eAAe,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAKnD,OAAO,EAAC,eAAe,EAAC,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,SAAS;yBAEO,WAAW;QAOxC;;WAEG;;;;;;;;;;;;0BAPqB,MAAM;QAK9B;;WAEG;;;;;;;;;;;;;;;;;;;;;;;CANF,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,SAAS;yBAEO,WAAW;0BAEhB,MAAM;;;;;;;;;;;;CAC7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,gBAA4B,CAAC;AAC/D,eAAO,MAAM,mBAAmB,EAAE,gBAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -1,18 +1,16 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
1
+ import { parseOBJ } from './lib/parse-obj';
2
+ import { parseMTL } from './lib/parse-mtl';
3
+ import { OBJLoader as OBJWorkerLoader } from './obj-loader';
4
+ import { MTLLoader as MTLWorkerLoader } from './mtl-loader';
5
+ export { OBJWorkerLoader };
6
+ export const OBJLoader = { ...OBJWorkerLoader,
7
+ parse: async (arrayBuffer, options) => parseOBJ(new TextDecoder().decode(arrayBuffer), options),
8
+ parseTextSync: (text, options) => parseOBJ(text, options)
4
9
  };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports._typecheckOBJLoader = exports.OBJLoader = exports.OBJWorkerLoader = void 0;
7
- const load_obj_1 = __importDefault(require("./lib/load-obj"));
8
- const obj_loader_1 = require("./obj-loader");
9
- Object.defineProperty(exports, "OBJWorkerLoader", { enumerable: true, get: function () { return obj_loader_1.OBJLoader; } });
10
- /**
11
- * Loader for the OBJ geometry format
12
- */
13
- exports.OBJLoader = {
14
- ...obj_loader_1.OBJLoader,
15
- parse: async (arrayBuffer, options) => (0, load_obj_1.default)(new TextDecoder().decode(arrayBuffer), options),
16
- parseTextSync: load_obj_1.default
10
+ export const MTLLoader = { ...MTLWorkerLoader,
11
+ parse: async (arrayBuffer, options) => parseMTL(new TextDecoder().decode(arrayBuffer), options === null || options === void 0 ? void 0 : options.mtl),
12
+ parseTextSync: (text, options) => parseMTL(text, options === null || options === void 0 ? void 0 : options.mtl)
17
13
  };
18
- exports._typecheckOBJLoader = exports.OBJLoader;
14
+ export const _typecheckOBJLoader = OBJLoader;
15
+ export const _typecheckMTLLoader = MTLLoader;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["parseOBJ","parseMTL","OBJLoader","OBJWorkerLoader","MTLLoader","MTLWorkerLoader","parse","arrayBuffer","options","TextDecoder","decode","parseTextSync","text","mtl","_typecheckOBJLoader","_typecheckMTLLoader"],"mappings":"AACA,SAAQA,QAAR,QAAuB,iBAAvB;AACA,SAAQC,QAAR,QAAuB,iBAAvB;AAEA,SAAQC,SAAS,IAAIC,eAArB,QAA2C,cAA3C;AAEA,SAAQC,SAAS,IAAIC,eAArB,QAA2C,cAA3C;AAIA,SAAQF,eAAR;AAKA,OAAO,MAAMD,SAAS,GAAG,EACvB,GAAGC,eADoB;AAEvBG,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAiCC,OAAjC,KACLR,QAAQ,CAAC,IAAIS,WAAJ,GAAkBC,MAAlB,CAAyBH,WAAzB,CAAD,EAAwCC,OAAxC,CAHa;AAIvBG,EAAAA,aAAa,EAAE,CAACC,IAAD,EAAeJ,OAAf,KAA8CR,QAAQ,CAACY,IAAD,EAAOJ,OAAP;AAJ9C,CAAlB;AAYP,OAAO,MAAMJ,SAAS,GAAG,EACvB,GAAGC,eADoB;AAEvBC,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAiCC,OAAjC,KACLP,QAAQ,CAAC,IAAIQ,WAAJ,GAAkBC,MAAlB,CAAyBH,WAAzB,CAAD,EAAwCC,OAAxC,aAAwCA,OAAxC,uBAAwCA,OAAO,CAAEK,GAAjD,CAHa;AAIvBF,EAAAA,aAAa,EAAE,CAACC,IAAD,EAAeJ,OAAf,KAA8CP,QAAQ,CAACW,IAAD,EAAOJ,OAAP,aAAOA,OAAP,uBAAOA,OAAO,CAAEK,GAAhB;AAJ9C,CAAlB;AAOP,OAAO,MAAMC,mBAAqC,GAAGZ,SAA9C;AACP,OAAO,MAAMa,mBAAqC,GAAGX,SAA9C","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parseOBJ} from './lib/parse-obj';\nimport {parseMTL} from './lib/parse-mtl';\nimport type {OBJLoaderOptions} from './obj-loader';\nimport {OBJLoader as OBJWorkerLoader} from './obj-loader';\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 = {\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 = {\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"],"file":"index.js"}