@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.
- package/dist/dist.min.js +269 -164
- package/dist/es5/index.js +42 -4
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/parse-mtl.js +110 -0
- package/dist/es5/lib/parse-mtl.js.map +1 -0
- package/dist/es5/lib/parse-obj-meshes.js +559 -0
- package/dist/es5/lib/parse-obj-meshes.js.map +1 -0
- package/dist/es5/lib/parse-obj.js +84 -526
- package/dist/es5/lib/parse-obj.js.map +1 -1
- package/dist/es5/mtl-loader.js +26 -0
- package/dist/es5/mtl-loader.js.map +1 -0
- package/dist/es5/obj-loader.js +1 -1
- package/dist/es5/obj-loader.js.map +1 -1
- package/dist/esm/index.js +10 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parse-mtl.js +86 -0
- package/dist/esm/lib/parse-mtl.js.map +1 -0
- package/dist/esm/lib/parse-obj-meshes.js +458 -0
- package/dist/esm/lib/parse-obj-meshes.js.map +1 -0
- package/dist/esm/lib/parse-obj.js +71 -437
- package/dist/esm/lib/parse-obj.js.map +1 -1
- package/dist/esm/mtl-loader.js +16 -0
- package/dist/esm/mtl-loader.js.map +1 -0
- package/dist/esm/obj-loader.js +1 -1
- package/dist/esm/obj-loader.js.map +1 -1
- package/dist/index.d.ts +41 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -7
- package/dist/lib/parse-mtl.d.ts +34 -0
- package/dist/lib/parse-mtl.d.ts.map +1 -0
- package/dist/lib/parse-mtl.js +201 -0
- package/dist/lib/parse-obj-meshes.d.ts +5 -0
- package/dist/lib/parse-obj-meshes.d.ts.map +1 -0
- package/dist/lib/parse-obj-meshes.js +440 -0
- package/dist/lib/parse-obj.d.ts +12 -4
- package/dist/lib/parse-obj.d.ts.map +1 -1
- package/dist/lib/parse-obj.js +67 -434
- package/dist/mtl-loader.d.ts +24 -0
- package/dist/mtl-loader.d.ts.map +1 -0
- package/dist/mtl-loader.js +24 -0
- package/dist/obj-loader.d.ts +5 -2
- package/dist/obj-loader.d.ts.map +1 -1
- package/dist/obj-worker.js +99 -9
- package/package.json +5 -5
- package/src/index.ts +21 -3
- package/src/lib/parse-mtl.ts +246 -0
- package/src/lib/parse-obj-meshes.ts +525 -0
- package/src/lib/parse-obj.ts +66 -508
- package/src/mtl-loader.ts +31 -0
- package/src/obj-loader.ts +6 -2
- package/dist/es5/lib/load-obj.js +0 -121
- package/dist/es5/lib/load-obj.js.map +0 -1
- package/dist/esm/lib/load-obj.js +0 -92
- package/dist/esm/lib/load-obj.js.map +0 -1
- package/dist/lib/load-obj.d.ts +0 -14
- package/dist/lib/load-obj.d.ts.map +0 -1
- package/dist/lib/load-obj.js +0 -73
- package/src/lib/load-obj.ts +0 -83
package/dist/es5/lib/load-obj.js
DELETED
|
@@ -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"}
|
package/dist/esm/lib/load-obj.js
DELETED
|
@@ -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":"AACA,SAAQA,kBAAR,QAAiC,oBAAjC;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,SAAQC,YAAR,QAA2B,kBAA3B;AAEA,eAAe,SAASC,OAAT,CAAiBC,IAAjB,EAAuBC,OAAvB,EAAgC;AAC7C,QAAM;AAACC,IAAAA;AAAD,MAAWL,QAAQ,CAACG,IAAD,CAAzB;AAGA,QAAMG,WAAW,GAAGD,MAAM,CAACE,MAAP,CAAc,CAACC,CAAD,EAAIC,IAAJ,KAAaD,CAAC,GAAGC,IAAI,CAACC,MAAL,CAAYJ,WAA3C,EAAwD,CAAxD,CAApB;AAEA,QAAMK,UAAU,GAAGC,eAAe,CAACP,MAAD,EAASC,WAAT,CAAlC;AAEA,QAAMI,MAAM,GAAG;AACbJ,IAAAA,WADa;AAGbO,IAAAA,WAAW,EAAEd,kBAAkB,CAACY,UAAD;AAHlB,GAAf;AAMA,QAAMG,MAAM,GAAGb,YAAY,CAACU,UAAD,EAAa;AACtCI,IAAAA,IAAI,EAAE,CADgC;AAEtCF,IAAAA,WAAW,EAAEH,MAAM,CAACG;AAFkB,GAAb,CAA3B;AAKA,SAAO;AAELG,IAAAA,UAAU,EAAE;AACVN,MAAAA,MAAM,EAAE;AADE,KAFP;AAOLI,IAAAA,MAPK;AAQLJ,IAAAA,MARK;AASLK,IAAAA,IAAI,EAAE,CATD;AAWLJ,IAAAA;AAXK,GAAP;AAaD;;AAGD,SAASC,eAAT,CAAyBP,MAAzB,EAAiCC,WAAjC,EAA8C;AAC5C,QAAMW,SAAS,GAAG,IAAIC,YAAJ,CAAiBZ,WAAW,GAAG,CAA/B,CAAlB;AACA,MAAIa,OAAJ;AACA,MAAIC,MAAJ;AACA,MAAIC,GAAJ;AACA,MAAIC,CAAC,GAAG,CAAR;;AAEA,OAAK,MAAMb,IAAX,IAAmBJ,MAAnB,EAA2B;AACzB,UAAM;AAACkB,MAAAA,QAAD;AAAWC,MAAAA,MAAX;AAAmBC,MAAAA,OAAnB;AAA4BC,MAAAA;AAA5B,QAA0CjB,IAAI,CAACE,UAArD;AAEAM,IAAAA,SAAS,CAACU,GAAV,CAAcJ,QAAQ,CAACK,KAAvB,EAA8BN,CAAC,GAAG,CAAlC;;AAEA,QAAIE,MAAJ,EAAY;AACVL,MAAAA,OAAO,GAAGA,OAAO,IAAI,IAAID,YAAJ,CAAiBZ,WAAW,GAAG,CAA/B,CAArB;AACAa,MAAAA,OAAO,CAACQ,GAAR,CAAYH,MAAM,CAACI,KAAnB,EAA0BN,CAAC,GAAG,CAA9B;AACD;;AACD,QAAIG,OAAJ,EAAa;AACXL,MAAAA,MAAM,GAAGA,MAAM,IAAI,IAAIF,YAAJ,CAAiBZ,WAAW,GAAG,CAA/B,CAAnB;AACAc,MAAAA,MAAM,CAACO,GAAP,CAAWF,OAAO,CAACG,KAAnB,EAA0BN,CAAC,GAAG,CAA9B;AACD;;AACD,QAAII,UAAJ,EAAgB;AACdL,MAAAA,GAAG,GAAGA,GAAG,IAAI,IAAIH,YAAJ,CAAiBZ,WAAW,GAAG,CAA/B,CAAb;AACAe,MAAAA,GAAG,CAACM,GAAJ,CAAQD,UAAU,CAACE,KAAnB,EAA0BN,CAAC,GAAG,CAA9B;AACD;;AAEDA,IAAAA,CAAC,IAAIC,QAAQ,CAACK,KAAT,CAAeC,MAAf,GAAwB,CAA7B;AACD;;AAED,QAAMlB,UAA0B,GAAG,EAAnC;AACAA,EAAAA,UAAU,CAACY,QAAX,GAAsB;AAACK,IAAAA,KAAK,EAAEX,SAAR;AAAmBa,IAAAA,IAAI,EAAE;AAAzB,GAAtB;;AAEA,MAAIX,OAAJ,EAAa;AACXR,IAAAA,UAAU,CAACa,MAAX,GAAoB;AAACI,MAAAA,KAAK,EAAET,OAAR;AAAiBW,MAAAA,IAAI,EAAE;AAAvB,KAApB;AACD;;AACD,MAAIV,MAAJ,EAAY;AACVT,IAAAA,UAAU,CAACc,OAAX,GAAqB;AAACG,MAAAA,KAAK,EAAER,MAAR;AAAgBU,MAAAA,IAAI,EAAE;AAAtB,KAArB;AACD;;AACD,MAAIT,GAAJ,EAAS;AACPV,IAAAA,UAAU,CAACe,UAAX,GAAwB;AAACE,MAAAA,KAAK,EAAEP,GAAR;AAAaS,MAAAA,IAAI,EAAE;AAAnB,KAAxB;AACD;;AAED,SAAOnB,UAAP;AACD","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"}
|
package/dist/lib/load-obj.d.ts
DELETED
|
@@ -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"}
|
package/dist/lib/load-obj.js
DELETED
|
@@ -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
|
-
}
|
package/src/lib/load-obj.ts
DELETED
|
@@ -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
|
-
}
|