@loaders.gl/ply 3.1.0-beta.7 → 3.1.0
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/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +37 -5
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/get-ply-schema.js +3 -3
- package/dist/es5/lib/get-ply-schema.js.map +1 -1
- package/dist/es5/lib/normalize-ply.js +15 -15
- package/dist/es5/lib/normalize-ply.js.map +1 -1
- package/dist/es5/lib/parse-ply-in-batches.js +247 -107
- package/dist/es5/lib/parse-ply-in-batches.js.map +1 -1
- package/dist/es5/lib/parse-ply.js +55 -52
- package/dist/es5/lib/parse-ply.js.map +1 -1
- package/dist/es5/ply-loader.js +3 -3
- package/dist/es5/ply-loader.js.map +1 -1
- package/dist/esm/ply-loader.js +1 -1
- package/dist/esm/ply-loader.js.map +1 -1
- package/package.json +4 -4
package/dist/es5/bundle.js
CHANGED
package/dist/es5/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,
|
|
1
|
+
{"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,IAAMA,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/es5/index.js
CHANGED
|
@@ -7,25 +7,57 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
Object.defineProperty(exports, "PLYWorkerLoader", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () {
|
|
10
|
+
get: function get() {
|
|
11
11
|
return _plyLoader.PLYLoader;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
14
|
exports._typecheckPLYLoader = exports.PLYLoader = void 0;
|
|
15
15
|
|
|
16
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
17
|
+
|
|
18
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
19
|
+
|
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
+
|
|
16
22
|
var _plyLoader = require("./ply-loader");
|
|
17
23
|
|
|
18
24
|
var _parsePly = _interopRequireDefault(require("./lib/parse-ply"));
|
|
19
25
|
|
|
20
26
|
var _parsePlyInBatches = _interopRequireDefault(require("./lib/parse-ply-in-batches"));
|
|
21
27
|
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
29
|
+
|
|
30
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
31
|
+
|
|
32
|
+
var PLYLoader = _objectSpread(_objectSpread({}, _plyLoader.PLYLoader), {}, {
|
|
33
|
+
parse: function () {
|
|
34
|
+
var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
|
|
35
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
36
|
+
while (1) {
|
|
37
|
+
switch (_context.prev = _context.next) {
|
|
38
|
+
case 0:
|
|
39
|
+
return _context.abrupt("return", (0, _parsePly.default)(arrayBuffer, options));
|
|
40
|
+
|
|
41
|
+
case 1:
|
|
42
|
+
case "end":
|
|
43
|
+
return _context.stop();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, _callee);
|
|
47
|
+
}));
|
|
48
|
+
|
|
49
|
+
function parse(_x, _x2) {
|
|
50
|
+
return _parse.apply(this, arguments);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return parse;
|
|
54
|
+
}(),
|
|
24
55
|
parseTextSync: _parsePly.default,
|
|
25
56
|
parseSync: _parsePly.default,
|
|
26
57
|
parseInBatches: _parsePlyInBatches.default
|
|
27
|
-
};
|
|
58
|
+
});
|
|
59
|
+
|
|
28
60
|
exports.PLYLoader = PLYLoader;
|
|
29
|
-
|
|
61
|
+
var _typecheckPLYLoader = PLYLoader;
|
|
30
62
|
exports._typecheckPLYLoader = _typecheckPLYLoader;
|
|
31
63
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":["PLYLoader","PLYWorkerLoader","parse","arrayBuffer","options","parseTextSync","parsePLY","parseSync","parseInBatches","parsePLYInBatches","_typecheckPLYLoader"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["PLYLoader","PLYWorkerLoader","parse","arrayBuffer","options","parseTextSync","parsePLY","parseSync","parseInBatches","parsePLYInBatches","_typecheckPLYLoader"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;AASO,IAAMA,SAAS,mCACjBC,oBADiB;AAGpBC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAgC,uBAASD,WAAT,EAAsBC,OAAtB,CAAhC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAHe;AAIpBC,EAAAA,aAAa,EAAEC,iBAJK;AAKpBC,EAAAA,SAAS,EAAED,iBALS;AAMpBE,EAAAA,cAAc,EAAEC;AANI,EAAf;;;AASA,IAAMC,mBAAqC,GAAGV,SAA9C","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {PLYLoader as PLYWorkerLoader} from './ply-loader';\nimport parsePLY from './lib/parse-ply';\nimport parsePLYInBatches from './lib/parse-ply-in-batches';\n\n// PLYLoader\n\nexport {PLYWorkerLoader};\n\n/**\n * Loader for PLY - Polygon File Format\n */\nexport const PLYLoader = {\n ...PLYWorkerLoader,\n // Note: parsePLY supports both text and binary\n parse: async (arrayBuffer, options) => parsePLY(arrayBuffer, options), // TODO - this may not detect text correctly?\n parseTextSync: parsePLY,\n parseSync: parsePLY,\n parseInBatches: parsePLYInBatches\n};\n\nexport const _typecheckPLYLoader: LoaderWithParser = PLYLoader;\n"],"file":"index.js"}
|
|
@@ -8,13 +8,13 @@ exports.getPLYSchema = getPLYSchema;
|
|
|
8
8
|
var _schema = require("@loaders.gl/schema");
|
|
9
9
|
|
|
10
10
|
function getPLYSchema(plyHeader, attributes) {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
var metadataMap = makeMetadataFromPlyHeader(plyHeader);
|
|
12
|
+
var schema = (0, _schema.deduceMeshSchema)(attributes, metadataMap);
|
|
13
13
|
return schema;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
function makeMetadataFromPlyHeader(plyHeader) {
|
|
17
|
-
|
|
17
|
+
var metadataMap = new Map();
|
|
18
18
|
metadataMap.set('ply_comments', JSON.stringify(plyHeader.comments));
|
|
19
19
|
metadataMap.set('ply_elements', JSON.stringify(plyHeader.elements));
|
|
20
20
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/get-ply-schema.ts"],"names":["getPLYSchema","plyHeader","attributes","metadataMap","makeMetadataFromPlyHeader","schema","Map","set","JSON","stringify","comments","elements","format","undefined","version","headerLength","toString"],"mappings":";;;;;;;AAAA;;AASO,SAASA,YAAT,CAAsBC,SAAtB,EAA4CC,UAA5C,EAAgF;AACrF,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/get-ply-schema.ts"],"names":["getPLYSchema","plyHeader","attributes","metadataMap","makeMetadataFromPlyHeader","schema","Map","set","JSON","stringify","comments","elements","format","undefined","version","headerLength","toString"],"mappings":";;;;;;;AAAA;;AASO,SAASA,YAAT,CAAsBC,SAAtB,EAA4CC,UAA5C,EAAgF;AACrF,MAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAD,CAA7C;AACA,MAAMI,MAAM,GAAG,8BAAiBH,UAAjB,EAA6BC,WAA7B,CAAf;AACA,SAAOE,MAAP;AACD;;AAOD,SAASD,yBAAT,CAAmCH,SAAnC,EAA8E;AAC5E,MAAME,WAAW,GAAG,IAAIG,GAAJ,EAApB;AACAH,EAAAA,WAAW,CAACI,GAAZ,CAAgB,cAAhB,EAAgCC,IAAI,CAACC,SAAL,CAAeR,SAAS,CAACS,QAAzB,CAAhC;AACAP,EAAAA,WAAW,CAACI,GAAZ,CAAgB,cAAhB,EAAgCC,IAAI,CAACC,SAAL,CAAeR,SAAS,CAACU,QAAzB,CAAhC;;AACA,MAAIV,SAAS,CAACW,MAAV,KAAqBC,SAAzB,EAAoC;AAClCV,IAAAA,WAAW,CAACI,GAAZ,CAAgB,YAAhB,EAA8BN,SAAS,CAACW,MAAxC;AACD;;AACD,MAAIX,SAAS,CAACa,OAAV,KAAsBD,SAA1B,EAAqC;AACnCV,IAAAA,WAAW,CAACI,GAAZ,CAAgB,aAAhB,EAA+BN,SAAS,CAACa,OAAzC;AACD;;AACD,MAAIb,SAAS,CAACc,YAAV,KAA2BF,SAA/B,EAA0C;AACxCV,IAAAA,WAAW,CAACI,GAAZ,CAAgB,kBAAhB,EAAoCN,SAAS,CAACc,YAAV,CAAuBC,QAAvB,CAAgC,EAAhC,CAApC;AACD;;AACD,SAAOb,WAAP;AACD","sourcesContent":["import {Schema, MeshAttributes, deduceMeshSchema} from '@loaders.gl/schema';\nimport type {PLYHeader} from './ply-types';\n\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema {\n const metadataMap = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadataMap);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nfunction makeMetadataFromPlyHeader(plyHeader: PLYHeader): Map<string, string> {\n const metadataMap = new Map();\n metadataMap.set('ply_comments', JSON.stringify(plyHeader.comments));\n metadataMap.set('ply_elements', JSON.stringify(plyHeader.elements));\n if (plyHeader.format !== undefined) {\n metadataMap.set('ply_format', plyHeader.format);\n }\n if (plyHeader.version !== undefined) {\n metadataMap.set('ply_version', plyHeader.version);\n }\n if (plyHeader.headerLength !== undefined) {\n metadataMap.set('ply_headerLength', plyHeader.headerLength.toString(10));\n }\n return metadataMap;\n}\n"],"file":"get-ply-schema.js"}
|
|
@@ -10,28 +10,28 @@ var _schema = require("@loaders.gl/schema");
|
|
|
10
10
|
var _getPlySchema = require("./get-ply-schema");
|
|
11
11
|
|
|
12
12
|
function normalizePLY(plyHeader, plyAttributes, options) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
var attributes = getMeshAttributes(plyAttributes);
|
|
14
|
+
var boundingBox = (0, _schema.getMeshBoundingBox)(attributes);
|
|
15
|
+
var vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;
|
|
16
|
+
var isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;
|
|
17
|
+
var mode = isTriangles ? 4 : 0;
|
|
18
|
+
var topology = isTriangles ? 'triangle-list' : 'point-list';
|
|
19
|
+
var schema = (0, _getPlySchema.getPLYSchema)(plyHeader, attributes);
|
|
20
|
+
var plyMesh = {
|
|
21
21
|
loader: 'ply',
|
|
22
22
|
loaderData: plyHeader,
|
|
23
23
|
header: {
|
|
24
|
-
vertexCount,
|
|
25
|
-
boundingBox
|
|
24
|
+
vertexCount: vertexCount,
|
|
25
|
+
boundingBox: boundingBox
|
|
26
26
|
},
|
|
27
|
-
schema,
|
|
28
|
-
attributes,
|
|
27
|
+
schema: schema,
|
|
28
|
+
attributes: attributes,
|
|
29
29
|
indices: {
|
|
30
30
|
value: new Uint32Array(0),
|
|
31
31
|
size: 0
|
|
32
32
|
},
|
|
33
|
-
mode,
|
|
34
|
-
topology
|
|
33
|
+
mode: mode,
|
|
34
|
+
topology: topology
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
if (plyAttributes.indices.length > 0) {
|
|
@@ -45,7 +45,7 @@ function normalizePLY(plyHeader, plyAttributes, options) {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
function getMeshAttributes(attributes) {
|
|
48
|
-
|
|
48
|
+
var accessors = {};
|
|
49
49
|
accessors.POSITION = {
|
|
50
50
|
value: new Float32Array(attributes.vertices),
|
|
51
51
|
size: 3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/normalize-ply.ts"],"names":["normalizePLY","plyHeader","plyAttributes","options","attributes","getMeshAttributes","boundingBox","vertexCount","indices","length","vertices","isTriangles","mode","topology","schema","plyMesh","loader","loaderData","header","value","Uint32Array","size","accessors","POSITION","Float32Array","normals","NORMAL","uvs","TEXCOORD_0","colors","COLOR_0","Uint8Array","normalized"],"mappings":";;;;;;;AACA;;AAEA;;AAOe,SAASA,YAAT,CACbC,SADa,EAEbC,aAFa,EAGbC,OAHa,EAIJ;AACT,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/normalize-ply.ts"],"names":["normalizePLY","plyHeader","plyAttributes","options","attributes","getMeshAttributes","boundingBox","vertexCount","indices","length","vertices","isTriangles","mode","topology","schema","plyMesh","loader","loaderData","header","value","Uint32Array","size","accessors","POSITION","Float32Array","normals","NORMAL","uvs","TEXCOORD_0","colors","COLOR_0","Uint8Array","normalized"],"mappings":";;;;;;;AACA;;AAEA;;AAOe,SAASA,YAAT,CACbC,SADa,EAEbC,aAFa,EAGbC,OAHa,EAIJ;AACT,MAAMC,UAAU,GAAGC,iBAAiB,CAACH,aAAD,CAApC;AACA,MAAMI,WAAW,GAAG,gCAAmBF,UAAnB,CAApB;AACA,MAAMG,WAAW,GAAGL,aAAa,CAACM,OAAd,CAAsBC,MAAtB,IAAgCP,aAAa,CAACQ,QAAd,CAAuBD,MAAvB,GAAgC,CAApF;AAIA,MAAME,WAAW,GAAGT,aAAa,CAACM,OAAd,IAAyBN,aAAa,CAACM,OAAd,CAAsBC,MAAtB,GAA+B,CAA5E;AACA,MAAMG,IAAI,GAAGD,WAAW,GAAG,CAAH,GAAO,CAA/B;AACA,MAAME,QAAQ,GAAGF,WAAW,GAAG,eAAH,GAAqB,YAAjD;AAEA,MAAMG,MAAM,GAAG,gCAAab,SAAb,EAAwBG,UAAxB,CAAf;AAEA,MAAMW,OAAgB,GAAG;AACvBC,IAAAA,MAAM,EAAE,KADe;AAEvBC,IAAAA,UAAU,EAAEhB,SAFW;AAGvBiB,IAAAA,MAAM,EAAE;AACNX,MAAAA,WAAW,EAAXA,WADM;AAEND,MAAAA,WAAW,EAAXA;AAFM,KAHe;AAOvBQ,IAAAA,MAAM,EAANA,MAPuB;AAQvBV,IAAAA,UAAU,EAAVA,UARuB;AASvBI,IAAAA,OAAO,EAAE;AAACW,MAAAA,KAAK,EAAE,IAAIC,WAAJ,CAAgB,CAAhB,CAAR;AAA4BC,MAAAA,IAAI,EAAE;AAAlC,KATc;AAUvBT,IAAAA,IAAI,EAAJA,IAVuB;AAWvBC,IAAAA,QAAQ,EAARA;AAXuB,GAAzB;;AAcA,MAAIX,aAAa,CAACM,OAAd,CAAsBC,MAAtB,GAA+B,CAAnC,EAAsC;AACpCM,IAAAA,OAAO,CAACP,OAAR,GAAkB;AAACW,MAAAA,KAAK,EAAE,IAAIC,WAAJ,CAAgBlB,aAAa,CAACM,OAA9B,CAAR;AAAgDa,MAAAA,IAAI,EAAE;AAAtD,KAAlB;AACD;;AAED,SAAON,OAAP;AACD;;AAMD,SAASV,iBAAT,CAA2BD,UAA3B,EAAsE;AACpE,MAAMkB,SAAyB,GAAG,EAAlC;AAEAA,EAAAA,SAAS,CAACC,QAAV,GAAqB;AAACJ,IAAAA,KAAK,EAAE,IAAIK,YAAJ,CAAiBpB,UAAU,CAACM,QAA5B,CAAR;AAA+CW,IAAAA,IAAI,EAAE;AAArD,GAArB;;AAIA,MAAIjB,UAAU,CAACqB,OAAX,CAAmBhB,MAAnB,GAA4B,CAAhC,EAAmC;AACjCa,IAAAA,SAAS,CAACI,MAAV,GAAmB;AAACP,MAAAA,KAAK,EAAE,IAAIK,YAAJ,CAAiBpB,UAAU,CAACqB,OAA5B,CAAR;AAA8CJ,MAAAA,IAAI,EAAE;AAApD,KAAnB;AACD;;AAED,MAAIjB,UAAU,CAACuB,GAAX,CAAelB,MAAf,GAAwB,CAA5B,EAA+B;AAC7Ba,IAAAA,SAAS,CAACM,UAAV,GAAuB;AAACT,MAAAA,KAAK,EAAE,IAAIK,YAAJ,CAAiBpB,UAAU,CAACuB,GAA5B,CAAR;AAA0CN,MAAAA,IAAI,EAAE;AAAhD,KAAvB;AACD;;AAED,MAAIjB,UAAU,CAACyB,MAAX,CAAkBpB,MAAlB,GAA2B,CAA/B,EAAkC;AAEhCa,IAAAA,SAAS,CAACQ,OAAV,GAAoB;AAACX,MAAAA,KAAK,EAAE,IAAIY,UAAJ,CAAe3B,UAAU,CAACyB,MAA1B,CAAR;AAA2CR,MAAAA,IAAI,EAAE,CAAjD;AAAoDW,MAAAA,UAAU,EAAE;AAAhE,KAApB;AACD;;AAED,SAAOV,SAAP;AACD","sourcesContent":["import type {MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport type {PLYMesh, PLYHeader, PLYAttributes, MeshHeader} from './ply-types';\nimport {getPLYSchema} from './get-ply-schema';\n\n/**\n * @param header\n * @param attributes\n * @returns data and header\n */\nexport default function normalizePLY(\n plyHeader: MeshHeader & PLYHeader,\n plyAttributes: PLYAttributes,\n options?: {}\n): PLYMesh {\n const attributes = getMeshAttributes(plyAttributes);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;\n\n // TODO - how to detect POINT CLOUDS vs MESHES?\n // TODO - For Meshes, PLY quadrangles must be split?\n const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;\n const mode = isTriangles ? 4 : 0; // TRIANGLES vs POINTS\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n\n const schema = getPLYSchema(plyHeader, attributes);\n\n const plyMesh: PLYMesh = {\n loader: 'ply',\n loaderData: plyHeader,\n header: {\n vertexCount,\n boundingBox\n },\n schema,\n attributes,\n indices: {value: new Uint32Array(0), size: 0},\n mode,\n topology\n };\n\n if (plyAttributes.indices.length > 0) {\n plyMesh.indices = {value: new Uint32Array(plyAttributes.indices), size: 1};\n }\n\n return plyMesh;\n}\n\n/**\n * @param attributes\n * @returns accessors []\n */\nfunction getMeshAttributes(attributes: PLYAttributes): MeshAttributes {\n const accessors: MeshAttributes = {};\n\n accessors.POSITION = {value: new Float32Array(attributes.vertices), size: 3};\n\n // optional attributes data\n\n if (attributes.normals.length > 0) {\n accessors.NORMAL = {value: new Float32Array(attributes.normals), size: 3};\n }\n\n if (attributes.uvs.length > 0) {\n accessors.TEXCOORD_0 = {value: new Float32Array(attributes.uvs), size: 2};\n }\n\n if (attributes.colors.length > 0) {\n // TODO - normalized shoud be based on `uchar` flag in source data?\n accessors.COLOR_0 = {value: new Uint8Array(attributes.colors), size: 3, normalized: true};\n }\n\n return accessors;\n}\n"],"file":"normalize-ply.js"}
|
|
@@ -7,95 +7,155 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = parsePLYInBatches;
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var _normalizePly = _interopRequireDefault(require("./normalize-ply"));
|
|
13
|
-
|
|
14
|
-
let currentElement;
|
|
15
|
-
|
|
16
|
-
async function* parsePLYInBatches(iterator, options) {
|
|
17
|
-
const lineIterator = (0, _core.makeLineIterator)((0, _core.makeTextDecoderIterator)(iterator));
|
|
18
|
-
const header = await parsePLYHeader(lineIterator, options);
|
|
19
|
-
let attributes;
|
|
20
|
-
|
|
21
|
-
switch (header.format) {
|
|
22
|
-
case 'ascii':
|
|
23
|
-
attributes = await parseASCII(lineIterator, header);
|
|
24
|
-
break;
|
|
25
|
-
|
|
26
|
-
default:
|
|
27
|
-
throw new Error('Binary PLY can not yet be parsed in streaming mode');
|
|
28
|
-
}
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
29
11
|
|
|
30
|
-
|
|
31
|
-
}
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
32
13
|
|
|
33
|
-
|
|
34
|
-
const header = {
|
|
35
|
-
comments: [],
|
|
36
|
-
elements: []
|
|
37
|
-
};
|
|
38
|
-
await (0, _core.forEach)(lineIterator, line => {
|
|
39
|
-
line = line.trim();
|
|
14
|
+
var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncIterator"));
|
|
40
15
|
|
|
41
|
-
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
16
|
+
var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
|
|
44
17
|
|
|
45
|
-
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
18
|
+
var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
|
|
48
19
|
|
|
49
|
-
|
|
50
|
-
const lineType = lineValues.shift();
|
|
51
|
-
line = lineValues.join(' ');
|
|
20
|
+
var _core = require("@loaders.gl/core");
|
|
52
21
|
|
|
53
|
-
|
|
54
|
-
case 'ply':
|
|
55
|
-
break;
|
|
22
|
+
var _normalizePly = _interopRequireDefault(require("./normalize-ply"));
|
|
56
23
|
|
|
57
|
-
|
|
58
|
-
header.format = lineValues[0];
|
|
59
|
-
header.version = lineValues[1];
|
|
60
|
-
break;
|
|
24
|
+
var currentElement;
|
|
61
25
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
26
|
+
function parsePLYInBatches(_x, _x2) {
|
|
27
|
+
return _parsePLYInBatches.apply(this, arguments);
|
|
28
|
+
}
|
|
65
29
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
30
|
+
function _parsePLYInBatches() {
|
|
31
|
+
_parsePLYInBatches = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee(iterator, options) {
|
|
32
|
+
var lineIterator, header, attributes;
|
|
33
|
+
return _regenerator.default.wrap(function _callee$(_context2) {
|
|
34
|
+
while (1) {
|
|
35
|
+
switch (_context2.prev = _context2.next) {
|
|
36
|
+
case 0:
|
|
37
|
+
lineIterator = (0, _core.makeLineIterator)((0, _core.makeTextDecoderIterator)(iterator));
|
|
38
|
+
_context2.next = 3;
|
|
39
|
+
return (0, _awaitAsyncGenerator2.default)(parsePLYHeader(lineIterator, options));
|
|
40
|
+
|
|
41
|
+
case 3:
|
|
42
|
+
header = _context2.sent;
|
|
43
|
+
_context2.t0 = header.format;
|
|
44
|
+
_context2.next = _context2.t0 === 'ascii' ? 7 : 11;
|
|
45
|
+
break;
|
|
46
|
+
|
|
47
|
+
case 7:
|
|
48
|
+
_context2.next = 9;
|
|
49
|
+
return (0, _awaitAsyncGenerator2.default)(parseASCII(lineIterator, header));
|
|
50
|
+
|
|
51
|
+
case 9:
|
|
52
|
+
attributes = _context2.sent;
|
|
53
|
+
return _context2.abrupt("break", 12);
|
|
54
|
+
|
|
55
|
+
case 11:
|
|
56
|
+
throw new Error('Binary PLY can not yet be parsed in streaming mode');
|
|
57
|
+
|
|
58
|
+
case 12:
|
|
59
|
+
_context2.next = 14;
|
|
60
|
+
return (0, _normalizePly.default)(header, attributes, options);
|
|
61
|
+
|
|
62
|
+
case 14:
|
|
63
|
+
case "end":
|
|
64
|
+
return _context2.stop();
|
|
69
65
|
}
|
|
66
|
+
}
|
|
67
|
+
}, _callee);
|
|
68
|
+
}));
|
|
69
|
+
return _parsePLYInBatches.apply(this, arguments);
|
|
70
|
+
}
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
properties: []
|
|
75
|
-
};
|
|
76
|
-
break;
|
|
77
|
-
|
|
78
|
-
case 'property':
|
|
79
|
-
const property = makePLYElementProperty(lineValues, options.propertyNameMapping);
|
|
80
|
-
currentElement.properties.push(property);
|
|
81
|
-
break;
|
|
82
|
-
|
|
83
|
-
default:
|
|
84
|
-
console.log('unhandled', lineType, lineValues);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return false;
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
if (currentElement) {
|
|
91
|
-
header.elements.push(currentElement);
|
|
92
|
-
}
|
|
72
|
+
function parsePLYHeader(_x3, _x4) {
|
|
73
|
+
return _parsePLYHeader.apply(this, arguments);
|
|
74
|
+
}
|
|
93
75
|
|
|
94
|
-
|
|
76
|
+
function _parsePLYHeader() {
|
|
77
|
+
_parsePLYHeader = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(lineIterator, options) {
|
|
78
|
+
var header;
|
|
79
|
+
return _regenerator.default.wrap(function _callee2$(_context3) {
|
|
80
|
+
while (1) {
|
|
81
|
+
switch (_context3.prev = _context3.next) {
|
|
82
|
+
case 0:
|
|
83
|
+
header = {
|
|
84
|
+
comments: [],
|
|
85
|
+
elements: []
|
|
86
|
+
};
|
|
87
|
+
_context3.next = 3;
|
|
88
|
+
return (0, _core.forEach)(lineIterator, function (line) {
|
|
89
|
+
line = line.trim();
|
|
90
|
+
|
|
91
|
+
if (line === 'end_header') {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (line === '') {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
var lineValues = line.split(/\s+/);
|
|
100
|
+
var lineType = lineValues.shift();
|
|
101
|
+
line = lineValues.join(' ');
|
|
102
|
+
|
|
103
|
+
switch (lineType) {
|
|
104
|
+
case 'ply':
|
|
105
|
+
break;
|
|
106
|
+
|
|
107
|
+
case 'format':
|
|
108
|
+
header.format = lineValues[0];
|
|
109
|
+
header.version = lineValues[1];
|
|
110
|
+
break;
|
|
111
|
+
|
|
112
|
+
case 'comment':
|
|
113
|
+
header.comments.push(line);
|
|
114
|
+
break;
|
|
115
|
+
|
|
116
|
+
case 'element':
|
|
117
|
+
if (currentElement) {
|
|
118
|
+
header.elements.push(currentElement);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
currentElement = {
|
|
122
|
+
name: lineValues[0],
|
|
123
|
+
count: parseInt(lineValues[1], 10),
|
|
124
|
+
properties: []
|
|
125
|
+
};
|
|
126
|
+
break;
|
|
127
|
+
|
|
128
|
+
case 'property':
|
|
129
|
+
var property = makePLYElementProperty(lineValues, options.propertyNameMapping);
|
|
130
|
+
currentElement.properties.push(property);
|
|
131
|
+
break;
|
|
132
|
+
|
|
133
|
+
default:
|
|
134
|
+
console.log('unhandled', lineType, lineValues);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return false;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
case 3:
|
|
141
|
+
if (currentElement) {
|
|
142
|
+
header.elements.push(currentElement);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return _context3.abrupt("return", header);
|
|
146
|
+
|
|
147
|
+
case 5:
|
|
148
|
+
case "end":
|
|
149
|
+
return _context3.stop();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}, _callee2);
|
|
153
|
+
}));
|
|
154
|
+
return _parsePLYHeader.apply(this, arguments);
|
|
95
155
|
}
|
|
96
156
|
|
|
97
157
|
function makePLYElementProperty(propertValues, propertyNameMapping) {
|
|
98
|
-
|
|
158
|
+
var property = {
|
|
99
159
|
type: propertValues[0]
|
|
100
160
|
};
|
|
101
161
|
|
|
@@ -114,33 +174,111 @@ function makePLYElementProperty(propertValues, propertyNameMapping) {
|
|
|
114
174
|
return property;
|
|
115
175
|
}
|
|
116
176
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
177
|
+
function parseASCII(lineIterator, header) {
|
|
178
|
+
var attributes, currentElement, currentElementCount, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, line, element;
|
|
179
|
+
|
|
180
|
+
return _regenerator.default.async(function parseASCII$(_context) {
|
|
181
|
+
while (1) {
|
|
182
|
+
switch (_context.prev = _context.next) {
|
|
183
|
+
case 0:
|
|
184
|
+
attributes = {
|
|
185
|
+
indices: [],
|
|
186
|
+
vertices: [],
|
|
187
|
+
normals: [],
|
|
188
|
+
uvs: [],
|
|
189
|
+
colors: []
|
|
190
|
+
};
|
|
191
|
+
currentElement = 0;
|
|
192
|
+
currentElementCount = 0;
|
|
193
|
+
_iteratorNormalCompletion = true;
|
|
194
|
+
_didIteratorError = false;
|
|
195
|
+
_context.prev = 5;
|
|
196
|
+
_iterator = (0, _asyncIterator2.default)(lineIterator);
|
|
197
|
+
|
|
198
|
+
case 7:
|
|
199
|
+
_context.next = 9;
|
|
200
|
+
return _regenerator.default.awrap(_iterator.next());
|
|
201
|
+
|
|
202
|
+
case 9:
|
|
203
|
+
_step = _context.sent;
|
|
204
|
+
_iteratorNormalCompletion = _step.done;
|
|
205
|
+
_context.next = 13;
|
|
206
|
+
return _regenerator.default.awrap(_step.value);
|
|
207
|
+
|
|
208
|
+
case 13:
|
|
209
|
+
_value = _context.sent;
|
|
210
|
+
|
|
211
|
+
if (_iteratorNormalCompletion) {
|
|
212
|
+
_context.next = 21;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
line = _value;
|
|
217
|
+
line = line.trim();
|
|
218
|
+
|
|
219
|
+
if (line !== '') {
|
|
220
|
+
if (currentElementCount >= header.elements[currentElement].count) {
|
|
221
|
+
currentElement++;
|
|
222
|
+
currentElementCount = 0;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
element = parseASCIIElement(header.elements[currentElement].properties, line);
|
|
226
|
+
handleElement(attributes, header.elements[currentElement].name, element);
|
|
227
|
+
currentElementCount++;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
case 18:
|
|
231
|
+
_iteratorNormalCompletion = true;
|
|
232
|
+
_context.next = 7;
|
|
233
|
+
break;
|
|
234
|
+
|
|
235
|
+
case 21:
|
|
236
|
+
_context.next = 27;
|
|
237
|
+
break;
|
|
238
|
+
|
|
239
|
+
case 23:
|
|
240
|
+
_context.prev = 23;
|
|
241
|
+
_context.t0 = _context["catch"](5);
|
|
242
|
+
_didIteratorError = true;
|
|
243
|
+
_iteratorError = _context.t0;
|
|
244
|
+
|
|
245
|
+
case 27:
|
|
246
|
+
_context.prev = 27;
|
|
247
|
+
_context.prev = 28;
|
|
248
|
+
|
|
249
|
+
if (!(!_iteratorNormalCompletion && _iterator.return != null)) {
|
|
250
|
+
_context.next = 32;
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
_context.next = 32;
|
|
255
|
+
return _regenerator.default.awrap(_iterator.return());
|
|
256
|
+
|
|
257
|
+
case 32:
|
|
258
|
+
_context.prev = 32;
|
|
259
|
+
|
|
260
|
+
if (!_didIteratorError) {
|
|
261
|
+
_context.next = 35;
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
throw _iteratorError;
|
|
266
|
+
|
|
267
|
+
case 35:
|
|
268
|
+
return _context.finish(32);
|
|
269
|
+
|
|
270
|
+
case 36:
|
|
271
|
+
return _context.finish(27);
|
|
272
|
+
|
|
273
|
+
case 37:
|
|
274
|
+
return _context.abrupt("return", attributes);
|
|
275
|
+
|
|
276
|
+
case 38:
|
|
277
|
+
case "end":
|
|
278
|
+
return _context.stop();
|
|
135
279
|
}
|
|
136
|
-
|
|
137
|
-
const element = parseASCIIElement(header.elements[currentElement].properties, line);
|
|
138
|
-
handleElement(attributes, header.elements[currentElement].name, element);
|
|
139
|
-
currentElementCount++;
|
|
140
280
|
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return attributes;
|
|
281
|
+
}, null, null, [[5, 23, 27, 37], [28,, 32, 36]], Promise);
|
|
144
282
|
}
|
|
145
283
|
|
|
146
284
|
function parseASCIINumber(n, type) {
|
|
@@ -171,15 +309,15 @@ function parseASCIINumber(n, type) {
|
|
|
171
309
|
}
|
|
172
310
|
|
|
173
311
|
function parseASCIIElement(properties, line) {
|
|
174
|
-
|
|
175
|
-
|
|
312
|
+
var values = line.split(/\s+/);
|
|
313
|
+
var element = {};
|
|
176
314
|
|
|
177
|
-
for (
|
|
315
|
+
for (var i = 0; i < properties.length; i++) {
|
|
178
316
|
if (properties[i].type === 'list') {
|
|
179
|
-
|
|
180
|
-
|
|
317
|
+
var list = [];
|
|
318
|
+
var n = parseASCIINumber(values.shift(), properties[i].countType);
|
|
181
319
|
|
|
182
|
-
for (
|
|
320
|
+
for (var j = 0; j < n; j++) {
|
|
183
321
|
list.push(parseASCIINumber(values.shift(), properties[i].itemType));
|
|
184
322
|
}
|
|
185
323
|
|
|
@@ -192,7 +330,9 @@ function parseASCIIElement(properties, line) {
|
|
|
192
330
|
return element;
|
|
193
331
|
}
|
|
194
332
|
|
|
195
|
-
function handleElement(buffer, elementName
|
|
333
|
+
function handleElement(buffer, elementName) {
|
|
334
|
+
var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
335
|
+
|
|
196
336
|
switch (elementName) {
|
|
197
337
|
case 'vertex':
|
|
198
338
|
buffer.vertices.push(element.x, element.y, element.z);
|
|
@@ -212,7 +352,7 @@ function handleElement(buffer, elementName, element = {}) {
|
|
|
212
352
|
break;
|
|
213
353
|
|
|
214
354
|
case 'face':
|
|
215
|
-
|
|
355
|
+
var vertexIndices = element.vertex_indices || element.vertex_index;
|
|
216
356
|
|
|
217
357
|
if (vertexIndices.length === 3) {
|
|
218
358
|
buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/parse-ply-in-batches.ts"],"names":["currentElement","parsePLYInBatches","iterator","options","lineIterator","header","parsePLYHeader","attributes","format","parseASCII","Error","comments","elements","line","trim","lineValues","split","lineType","shift","join","version","push","name","count","parseInt","properties","property","makePLYElementProperty","propertyNameMapping","console","log","propertValues","type","countType","itemType","indices","vertices","normals","uvs","colors","currentElementCount","element","parseASCIIElement","handleElement","parseASCIINumber","n","parseFloat","values","i","length","list","j","buffer","elementName","x","y","z","nx","ny","nz","s","t","red","green","blue","vertexIndices","vertex_indices","vertex_index"],"mappings":"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","sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\n// @ts-nocheck\n\nimport {makeLineIterator, makeTextDecoderIterator, forEach} from '@loaders.gl/core';\nimport normalizePLY from './normalize-ply';\nimport {PLYMesh, PLYHeader, ASCIIElement, PLYAttributes} from './ply-types';\n\nlet currentElement: ASCIIElement;\n\n/**\n * PARSER\n * @param iterator\n * @param options\n */\nexport default async function* parsePLYInBatches(\n iterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: any\n): AsyncIterable<PLYMesh> {\n const lineIterator = makeLineIterator(makeTextDecoderIterator(iterator));\n const header = await parsePLYHeader(lineIterator, options);\n\n let attributes: PLYAttributes;\n switch (header.format) {\n case 'ascii':\n attributes = await parseASCII(lineIterator, header);\n break;\n default:\n throw new Error('Binary PLY can not yet be parsed in streaming mode');\n // attributes = await parseBinary(lineIterator, header);\n }\n\n yield normalizePLY(header, attributes, options);\n}\n\n/**\n * Parses header\n * @param lineIterator\n * @param options\n * @returns\n */\nasync function parsePLYHeader(\n lineIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: {[key: string]: any}\n): Promise<PLYHeader> {\n const header: PLYHeader = {\n comments: [],\n elements: []\n // headerLength\n };\n\n // Note: forEach does not reset iterator if exiting loop prematurely\n // so that iteration can continue in a second loop\n await forEach(lineIterator, (line: string) => {\n line = line.trim();\n\n // End of header\n if (line === 'end_header') {\n return true; // Returning true cancels `forEach`\n }\n\n // Ignore empty lines\n if (line === '') {\n // eslint-disable-next-line\n return false; // Returning false does not cancel `forEach`\n }\n\n const lineValues = line.split(/\\s+/);\n const lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'ply':\n // First line magic characters, ignore\n break;\n\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n const property = makePLYElementProperty(lineValues, options.propertyNameMapping);\n currentElement.properties.push(property);\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n\n return false;\n });\n\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\nfunction makePLYElementProperty(propertValues: string[], propertyNameMapping: []) {\n const property: {[index: string]: string} = {\n type: propertValues[0]\n };\n\n if (property.type === 'list') {\n property.name = propertValues[3];\n property.countType = propertValues[1];\n property.itemType = propertValues[2];\n } else {\n property.name = propertValues[1];\n }\n\n if (propertyNameMapping && property.name in propertyNameMapping) {\n property.name = propertyNameMapping[property.name];\n }\n\n return property;\n}\n\n// ASCII PARSING\n/**\n * @param lineIterator\n * @param header\n * @returns\n */\nasync function parseASCII(lineIterator: string, header: PLYHeader) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes: PLYAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n let currentElement = 0;\n let currentElementCount = 0;\n\n for await (let line of lineIterator) {\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parseASCIIElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns ASCII number\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n/**\n * Parses ASCII element\n * @param properties\n * @param line\n * @returns element\n */\nfunction parseASCIIElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// HELPER FUNCTIONS\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n switch (elementName) {\n case 'vertex':\n buffer.vertices.push(element.x, element.y, element.z);\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red / 255.0, element.green / 255.0, element.blue / 255.0);\n }\n break;\n\n case 'face':\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n break;\n\n default:\n break;\n }\n}\n"],"file":"parse-ply-in-batches.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parse-ply-in-batches.ts"],"names":["currentElement","parsePLYInBatches","iterator","options","lineIterator","parsePLYHeader","header","format","parseASCII","attributes","Error","comments","elements","line","trim","lineValues","split","lineType","shift","join","version","push","name","count","parseInt","properties","property","makePLYElementProperty","propertyNameMapping","console","log","propertValues","type","countType","itemType","indices","vertices","normals","uvs","colors","currentElementCount","element","parseASCIIElement","handleElement","parseASCIINumber","n","parseFloat","values","i","length","list","j","buffer","elementName","x","y","z","nx","ny","nz","s","t","red","green","blue","vertexIndices","vertex_indices","vertex_index"],"mappings":"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","sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\n// @ts-nocheck\n\nimport {makeLineIterator, makeTextDecoderIterator, forEach} from '@loaders.gl/core';\nimport normalizePLY from './normalize-ply';\nimport {PLYMesh, PLYHeader, ASCIIElement, PLYAttributes} from './ply-types';\n\nlet currentElement: ASCIIElement;\n\n/**\n * PARSER\n * @param iterator\n * @param options\n */\nexport default async function* parsePLYInBatches(\n iterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: any\n): AsyncIterable<PLYMesh> {\n const lineIterator = makeLineIterator(makeTextDecoderIterator(iterator));\n const header = await parsePLYHeader(lineIterator, options);\n\n let attributes: PLYAttributes;\n switch (header.format) {\n case 'ascii':\n attributes = await parseASCII(lineIterator, header);\n break;\n default:\n throw new Error('Binary PLY can not yet be parsed in streaming mode');\n // attributes = await parseBinary(lineIterator, header);\n }\n\n yield normalizePLY(header, attributes, options);\n}\n\n/**\n * Parses header\n * @param lineIterator\n * @param options\n * @returns\n */\nasync function parsePLYHeader(\n lineIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: {[key: string]: any}\n): Promise<PLYHeader> {\n const header: PLYHeader = {\n comments: [],\n elements: []\n // headerLength\n };\n\n // Note: forEach does not reset iterator if exiting loop prematurely\n // so that iteration can continue in a second loop\n await forEach(lineIterator, (line: string) => {\n line = line.trim();\n\n // End of header\n if (line === 'end_header') {\n return true; // Returning true cancels `forEach`\n }\n\n // Ignore empty lines\n if (line === '') {\n // eslint-disable-next-line\n return false; // Returning false does not cancel `forEach`\n }\n\n const lineValues = line.split(/\\s+/);\n const lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'ply':\n // First line magic characters, ignore\n break;\n\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n const property = makePLYElementProperty(lineValues, options.propertyNameMapping);\n currentElement.properties.push(property);\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n\n return false;\n });\n\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\nfunction makePLYElementProperty(propertValues: string[], propertyNameMapping: []) {\n const property: {[index: string]: string} = {\n type: propertValues[0]\n };\n\n if (property.type === 'list') {\n property.name = propertValues[3];\n property.countType = propertValues[1];\n property.itemType = propertValues[2];\n } else {\n property.name = propertValues[1];\n }\n\n if (propertyNameMapping && property.name in propertyNameMapping) {\n property.name = propertyNameMapping[property.name];\n }\n\n return property;\n}\n\n// ASCII PARSING\n/**\n * @param lineIterator\n * @param header\n * @returns\n */\nasync function parseASCII(lineIterator: string, header: PLYHeader) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes: PLYAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n let currentElement = 0;\n let currentElementCount = 0;\n\n for await (let line of lineIterator) {\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parseASCIIElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns ASCII number\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n/**\n * Parses ASCII element\n * @param properties\n * @param line\n * @returns element\n */\nfunction parseASCIIElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// HELPER FUNCTIONS\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n switch (elementName) {\n case 'vertex':\n buffer.vertices.push(element.x, element.y, element.z);\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red / 255.0, element.green / 255.0, element.blue / 255.0);\n }\n break;\n\n case 'face':\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n break;\n\n default:\n break;\n }\n}\n"],"file":"parse-ply-in-batches.js"}
|
|
@@ -9,12 +9,13 @@ exports.default = parsePLY;
|
|
|
9
9
|
|
|
10
10
|
var _normalizePly = _interopRequireDefault(require("./normalize-ply"));
|
|
11
11
|
|
|
12
|
-
function parsePLY(data
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
function parsePLY(data) {
|
|
13
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
14
|
+
var header;
|
|
15
|
+
var attributes;
|
|
15
16
|
|
|
16
17
|
if (data instanceof ArrayBuffer) {
|
|
17
|
-
|
|
18
|
+
var text = new TextDecoder().decode(data);
|
|
18
19
|
header = parseHeader(text, options);
|
|
19
20
|
attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);
|
|
20
21
|
} else {
|
|
@@ -26,33 +27,33 @@ function parsePLY(data, options = {}) {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
function parseHeader(data, options) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
var PLY_HEADER_PATTERN = /ply([\s\S]*)end_header\s/;
|
|
31
|
+
var headerText = '';
|
|
32
|
+
var headerLength = 0;
|
|
33
|
+
var result = PLY_HEADER_PATTERN.exec(data);
|
|
33
34
|
|
|
34
35
|
if (result !== null) {
|
|
35
36
|
headerText = result[1];
|
|
36
37
|
headerLength = result[0].length;
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
var lines = headerText.split('\n');
|
|
41
|
+
var header = parseHeaderLines(lines, headerLength, options);
|
|
41
42
|
return header;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
function parseHeaderLines(lines, headerLength, options) {
|
|
45
|
-
|
|
46
|
+
var header = {
|
|
46
47
|
comments: [],
|
|
47
48
|
elements: [],
|
|
48
|
-
headerLength
|
|
49
|
+
headerLength: headerLength
|
|
49
50
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
var lineType;
|
|
52
|
+
var lineValues;
|
|
53
|
+
var currentElement = null;
|
|
53
54
|
|
|
54
|
-
for (
|
|
55
|
-
|
|
55
|
+
for (var i = 0; i < lines.length; i++) {
|
|
56
|
+
var line = lines[i];
|
|
56
57
|
line = line.trim();
|
|
57
58
|
|
|
58
59
|
if (line === '') {
|
|
@@ -106,7 +107,7 @@ function parseHeaderLines(lines, headerLength, options) {
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
function makePLYElementProperty(propertValues, propertyNameMapping) {
|
|
109
|
-
|
|
110
|
+
var property = {
|
|
110
111
|
type: propertValues[0]
|
|
111
112
|
};
|
|
112
113
|
|
|
@@ -153,15 +154,15 @@ function parseASCIINumber(n, type) {
|
|
|
153
154
|
}
|
|
154
155
|
|
|
155
156
|
function parseASCIIElement(properties, line) {
|
|
156
|
-
|
|
157
|
-
|
|
157
|
+
var values = line.split(/\s+/);
|
|
158
|
+
var element = {};
|
|
158
159
|
|
|
159
|
-
for (
|
|
160
|
+
for (var i = 0; i < properties.length; i++) {
|
|
160
161
|
if (properties[i].type === 'list') {
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
var list = [];
|
|
163
|
+
var n = parseASCIINumber(values.shift(), properties[i].countType);
|
|
163
164
|
|
|
164
|
-
for (
|
|
165
|
+
for (var j = 0; j < n; j++) {
|
|
165
166
|
list.push(parseASCIINumber(values.shift(), properties[i].itemType));
|
|
166
167
|
}
|
|
167
168
|
|
|
@@ -175,27 +176,27 @@ function parseASCIIElement(properties, line) {
|
|
|
175
176
|
}
|
|
176
177
|
|
|
177
178
|
function parseASCII(data, header) {
|
|
178
|
-
|
|
179
|
+
var attributes = {
|
|
179
180
|
indices: [],
|
|
180
181
|
vertices: [],
|
|
181
182
|
normals: [],
|
|
182
183
|
uvs: [],
|
|
183
184
|
colors: []
|
|
184
185
|
};
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
var result;
|
|
187
|
+
var patternBody = /end_header\s([\s\S]*)$/;
|
|
188
|
+
var body = '';
|
|
188
189
|
|
|
189
190
|
if ((result = patternBody.exec(data)) !== null) {
|
|
190
191
|
body = result[1];
|
|
191
192
|
}
|
|
192
193
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
var lines = body.split('\n');
|
|
195
|
+
var currentElement = 0;
|
|
196
|
+
var currentElementCount = 0;
|
|
196
197
|
|
|
197
|
-
for (
|
|
198
|
-
|
|
198
|
+
for (var i = 0; i < lines.length; i++) {
|
|
199
|
+
var line = lines[i];
|
|
199
200
|
line = line.trim();
|
|
200
201
|
|
|
201
202
|
if (line !== '') {
|
|
@@ -204,7 +205,7 @@ function parseASCII(data, header) {
|
|
|
204
205
|
currentElementCount = 0;
|
|
205
206
|
}
|
|
206
207
|
|
|
207
|
-
|
|
208
|
+
var element = parseASCIIElement(header.elements[currentElement].properties, line);
|
|
208
209
|
handleElement(attributes, header.elements[currentElement].name, element);
|
|
209
210
|
currentElementCount++;
|
|
210
211
|
}
|
|
@@ -213,7 +214,9 @@ function parseASCII(data, header) {
|
|
|
213
214
|
return attributes;
|
|
214
215
|
}
|
|
215
216
|
|
|
216
|
-
function handleElement(buffer, elementName
|
|
217
|
+
function handleElement(buffer, elementName) {
|
|
218
|
+
var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
219
|
+
|
|
217
220
|
if (elementName === 'vertex') {
|
|
218
221
|
buffer.vertices.push(element.x, element.y, element.z);
|
|
219
222
|
|
|
@@ -229,7 +232,7 @@ function handleElement(buffer, elementName, element = {}) {
|
|
|
229
232
|
buffer.colors.push(element.red, element.green, element.blue);
|
|
230
233
|
}
|
|
231
234
|
} else if (elementName === 'face') {
|
|
232
|
-
|
|
235
|
+
var vertexIndices = element.vertex_indices || element.vertex_index;
|
|
233
236
|
|
|
234
237
|
if (vertexIndices.length === 3) {
|
|
235
238
|
buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);
|
|
@@ -280,18 +283,18 @@ function binaryRead(dataview, at, type, littleEndian) {
|
|
|
280
283
|
}
|
|
281
284
|
|
|
282
285
|
function binaryReadElement(dataview, at, properties, littleEndian) {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
+
var element = {};
|
|
287
|
+
var result;
|
|
288
|
+
var read = 0;
|
|
286
289
|
|
|
287
|
-
for (
|
|
290
|
+
for (var i = 0; i < properties.length; i++) {
|
|
288
291
|
if (properties[i].type === 'list') {
|
|
289
|
-
|
|
292
|
+
var list = [];
|
|
290
293
|
result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);
|
|
291
|
-
|
|
294
|
+
var n = result[0];
|
|
292
295
|
read += result[1];
|
|
293
296
|
|
|
294
|
-
for (
|
|
297
|
+
for (var j = 0; j < n; j++) {
|
|
295
298
|
result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);
|
|
296
299
|
list.push(result[0]);
|
|
297
300
|
read += result[1];
|
|
@@ -309,25 +312,25 @@ function binaryReadElement(dataview, at, properties, littleEndian) {
|
|
|
309
312
|
}
|
|
310
313
|
|
|
311
314
|
function parseBinary(data, header) {
|
|
312
|
-
|
|
315
|
+
var attributes = {
|
|
313
316
|
indices: [],
|
|
314
317
|
vertices: [],
|
|
315
318
|
normals: [],
|
|
316
319
|
uvs: [],
|
|
317
320
|
colors: []
|
|
318
321
|
};
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
322
|
+
var littleEndian = header.format === 'binary_little_endian';
|
|
323
|
+
var body = new DataView(data, header.headerLength);
|
|
324
|
+
var result;
|
|
325
|
+
var loc = 0;
|
|
323
326
|
|
|
324
|
-
for (
|
|
325
|
-
|
|
327
|
+
for (var currentElement = 0; currentElement < header.elements.length; currentElement++) {
|
|
328
|
+
var count = header.elements[currentElement].count;
|
|
326
329
|
|
|
327
|
-
for (
|
|
330
|
+
for (var currentElementCount = 0; currentElementCount < count; currentElementCount++) {
|
|
328
331
|
result = binaryReadElement(body, loc, header.elements[currentElement].properties, littleEndian);
|
|
329
332
|
loc += result[1];
|
|
330
|
-
|
|
333
|
+
var element = result[0];
|
|
331
334
|
handleElement(attributes, header.elements[currentElement].name, element);
|
|
332
335
|
}
|
|
333
336
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/parse-ply.ts"],"names":["parsePLY","data","options","header","attributes","ArrayBuffer","text","TextDecoder","decode","parseHeader","format","parseASCII","parseBinary","PLY_HEADER_PATTERN","headerText","headerLength","result","exec","length","lines","split","parseHeaderLines","comments","elements","lineType","lineValues","currentElement","i","line","trim","shift","join","version","push","name","count","parseInt","properties","makePLYElementProperty","propertyNameMapping","console","log","undefined","propertValues","property","type","countType","itemType","parseASCIINumber","n","parseFloat","Error","parseASCIIElement","values","element","list","j","indices","vertices","normals","uvs","colors","patternBody","body","currentElementCount","handleElement","buffer","elementName","x","y","z","nx","ny","nz","s","t","red","green","blue","vertexIndices","vertex_indices","vertex_index","binaryRead","dataview","at","littleEndian","getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","binaryReadElement","read","DataView","loc"],"mappings":"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","sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\nimport type {\n PLYMesh,\n PLYHeader,\n PLYAttributes,\n MeshHeader,\n ASCIIElement,\n PLYProperty\n} from './ply-types';\nimport normalizePLY from './normalize-ply';\n\n/**\n * @param data\n * @param options\n * @returns\n */\nexport default function parsePLY(data: ArrayBuffer | string, options = {}): PLYMesh {\n let header: PLYHeader & MeshHeader;\n let attributes: PLYAttributes;\n\n if (data instanceof ArrayBuffer) {\n const text = new TextDecoder().decode(data);\n header = parseHeader(text, options);\n attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);\n } else {\n header = parseHeader(data, options);\n attributes = parseASCII(data, header);\n }\n\n return normalizePLY(header, attributes);\n}\n\n/**\n * @param data\n * @param options\n * @returns header\n */\nfunction parseHeader(data: any, options: {[index: string]: any}): PLYHeader {\n const PLY_HEADER_PATTERN = /ply([\\s\\S]*)end_header\\s/;\n\n let headerText = '';\n let headerLength = 0;\n\n const result = PLY_HEADER_PATTERN.exec(data);\n\n if (result !== null) {\n headerText = result[1];\n headerLength = result[0].length;\n }\n const lines = headerText.split('\\n');\n const header = parseHeaderLines(lines, headerLength, options);\n\n return header;\n}\n\n/**\n * @param lines\n * @param headerLength\n * @param options\n * @returns header\n */\nfunction parseHeaderLines(\n lines: string[],\n headerLength: number,\n options: {[index: string]: any}\n): PLYHeader {\n const header: PLYHeader = {\n comments: [],\n elements: [],\n headerLength\n };\n\n let lineType: string | undefined;\n let lineValues: string[];\n let currentElement: ASCIIElement | null = null;\n\n for (let i = 0; i < lines.length; i++) {\n let line: string = lines[i];\n line = line.trim();\n\n if (line === '') {\n // eslint-disable-next-line\n continue;\n }\n\n lineValues = line.split(/\\s+/);\n lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n if (!currentElement) {\n break;\n }\n currentElement.properties.push(\n makePLYElementProperty(lineValues, options.propertyNameMapping)\n );\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n }\n\n if (currentElement !== undefined) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\n/**\n * @param propertValues\n * @param propertyNameMapping\n * @returns property of ply element\n */\nfunction makePLYElementProperty(propertValues: string[], propertyNameMapping: []): PLYProperty {\n const property: PLYProperty = {\n type: propertValues[0]\n };\n\n if (property.type === 'list') {\n property.name = propertValues[3];\n property.countType = propertValues[1];\n property.itemType = propertValues[2];\n } else {\n property.name = propertValues[1];\n }\n\n if (propertyNameMapping && property.name in propertyNameMapping) {\n property.name = propertyNameMapping[property.name];\n }\n\n return property;\n}\n\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * @param properties\n * @param line\n * @returns ASCII element\n */\nfunction parseASCIIElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n\n/**\n * @param data\n * @param header\n * @returns [attributes]\n */\nfunction parseASCII(data: any, header: PLYHeader): PLYAttributes {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n\n const attributes: PLYAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n let result: RegExpExecArray | null;\n\n const patternBody = /end_header\\s([\\s\\S]*)$/;\n let body = '';\n if ((result = patternBody.exec(data)) !== null) {\n body = result[1];\n }\n\n const lines = body.split('\\n');\n let currentElement = 0;\n let currentElementCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parseASCIIElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n if (elementName === 'vertex') {\n buffer.vertices.push(element.x, element.y, element.z);\n\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red, element.green, element.blue);\n }\n } else if (elementName === 'face') {\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param type\n * @param littleEndian\n * @returns [number, number]\n */\n// eslint-disable-next-line complexity\nfunction binaryRead(dataview: DataView, at: number, type: any, littleEndian: boolean): number[] {\n switch (type) {\n // corespondences for non-specific length types here match rply:\n case 'int8':\n case 'char':\n return [dataview.getInt8(at), 1];\n case 'uint8':\n case 'uchar':\n return [dataview.getUint8(at), 1];\n case 'int16':\n case 'short':\n return [dataview.getInt16(at, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataview.getUint16(at, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataview.getInt32(at, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataview.getUint32(at, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataview.getFloat32(at, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataview.getFloat64(at, littleEndian), 8];\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param properties\n * @param littleEndian\n * @returns [object, number]\n */\nfunction binaryReadElement(\n dataview: DataView,\n at: number,\n properties: {[index: string]: any},\n littleEndian: boolean\n): {}[] {\n const element = {};\n let result: number[];\n let read = 0;\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n\n result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);\n const n = result[0];\n read += result[1];\n\n for (let j = 0; j < n; j++) {\n result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);\n // @ts-ignore\n list.push(result[0]);\n read += result[1];\n }\n\n element[properties[i].name] = list;\n } else {\n result = binaryRead(dataview, at + read, properties[i].type, littleEndian);\n element[properties[i].name] = result[0];\n read += result[1];\n }\n }\n\n return [element, read];\n}\n\ntype BinaryAttributes = {\n [index: string]: number[];\n};\n\n/**\n * Parses binary data\n * @param data\n * @param header\n * @returns [attributes] of data\n */\nfunction parseBinary(data: ArrayBuffer, header: {[index: string]: any}): BinaryAttributes {\n const attributes: BinaryAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n const littleEndian = header.format === 'binary_little_endian';\n const body = new DataView(data, header.headerLength);\n let result: any[];\n let loc = 0;\n\n for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {\n const count = header.elements[currentElement].count;\n for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {\n result = binaryReadElement(\n body,\n loc,\n header.elements[currentElement].properties,\n littleEndian\n );\n loc += result[1];\n const element = result[0];\n\n handleElement(attributes, header.elements[currentElement].name, element);\n }\n }\n\n return attributes;\n}\n"],"file":"parse-ply.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parse-ply.ts"],"names":["parsePLY","data","options","header","attributes","ArrayBuffer","text","TextDecoder","decode","parseHeader","format","parseASCII","parseBinary","PLY_HEADER_PATTERN","headerText","headerLength","result","exec","length","lines","split","parseHeaderLines","comments","elements","lineType","lineValues","currentElement","i","line","trim","shift","join","version","push","name","count","parseInt","properties","makePLYElementProperty","propertyNameMapping","console","log","undefined","propertValues","property","type","countType","itemType","parseASCIINumber","n","parseFloat","Error","parseASCIIElement","values","element","list","j","indices","vertices","normals","uvs","colors","patternBody","body","currentElementCount","handleElement","buffer","elementName","x","y","z","nx","ny","nz","s","t","red","green","blue","vertexIndices","vertex_indices","vertex_index","binaryRead","dataview","at","littleEndian","getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","binaryReadElement","read","DataView","loc"],"mappings":"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","sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\nimport type {\n PLYMesh,\n PLYHeader,\n PLYAttributes,\n MeshHeader,\n ASCIIElement,\n PLYProperty\n} from './ply-types';\nimport normalizePLY from './normalize-ply';\n\n/**\n * @param data\n * @param options\n * @returns\n */\nexport default function parsePLY(data: ArrayBuffer | string, options = {}): PLYMesh {\n let header: PLYHeader & MeshHeader;\n let attributes: PLYAttributes;\n\n if (data instanceof ArrayBuffer) {\n const text = new TextDecoder().decode(data);\n header = parseHeader(text, options);\n attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);\n } else {\n header = parseHeader(data, options);\n attributes = parseASCII(data, header);\n }\n\n return normalizePLY(header, attributes);\n}\n\n/**\n * @param data\n * @param options\n * @returns header\n */\nfunction parseHeader(data: any, options: {[index: string]: any}): PLYHeader {\n const PLY_HEADER_PATTERN = /ply([\\s\\S]*)end_header\\s/;\n\n let headerText = '';\n let headerLength = 0;\n\n const result = PLY_HEADER_PATTERN.exec(data);\n\n if (result !== null) {\n headerText = result[1];\n headerLength = result[0].length;\n }\n const lines = headerText.split('\\n');\n const header = parseHeaderLines(lines, headerLength, options);\n\n return header;\n}\n\n/**\n * @param lines\n * @param headerLength\n * @param options\n * @returns header\n */\nfunction parseHeaderLines(\n lines: string[],\n headerLength: number,\n options: {[index: string]: any}\n): PLYHeader {\n const header: PLYHeader = {\n comments: [],\n elements: [],\n headerLength\n };\n\n let lineType: string | undefined;\n let lineValues: string[];\n let currentElement: ASCIIElement | null = null;\n\n for (let i = 0; i < lines.length; i++) {\n let line: string = lines[i];\n line = line.trim();\n\n if (line === '') {\n // eslint-disable-next-line\n continue;\n }\n\n lineValues = line.split(/\\s+/);\n lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n if (!currentElement) {\n break;\n }\n currentElement.properties.push(\n makePLYElementProperty(lineValues, options.propertyNameMapping)\n );\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n }\n\n if (currentElement !== undefined) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\n/**\n * @param propertValues\n * @param propertyNameMapping\n * @returns property of ply element\n */\nfunction makePLYElementProperty(propertValues: string[], propertyNameMapping: []): PLYProperty {\n const property: PLYProperty = {\n type: propertValues[0]\n };\n\n if (property.type === 'list') {\n property.name = propertValues[3];\n property.countType = propertValues[1];\n property.itemType = propertValues[2];\n } else {\n property.name = propertValues[1];\n }\n\n if (propertyNameMapping && property.name in propertyNameMapping) {\n property.name = propertyNameMapping[property.name];\n }\n\n return property;\n}\n\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * @param properties\n * @param line\n * @returns ASCII element\n */\nfunction parseASCIIElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n\n/**\n * @param data\n * @param header\n * @returns [attributes]\n */\nfunction parseASCII(data: any, header: PLYHeader): PLYAttributes {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n\n const attributes: PLYAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n let result: RegExpExecArray | null;\n\n const patternBody = /end_header\\s([\\s\\S]*)$/;\n let body = '';\n if ((result = patternBody.exec(data)) !== null) {\n body = result[1];\n }\n\n const lines = body.split('\\n');\n let currentElement = 0;\n let currentElementCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parseASCIIElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n if (elementName === 'vertex') {\n buffer.vertices.push(element.x, element.y, element.z);\n\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red, element.green, element.blue);\n }\n } else if (elementName === 'face') {\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param type\n * @param littleEndian\n * @returns [number, number]\n */\n// eslint-disable-next-line complexity\nfunction binaryRead(dataview: DataView, at: number, type: any, littleEndian: boolean): number[] {\n switch (type) {\n // corespondences for non-specific length types here match rply:\n case 'int8':\n case 'char':\n return [dataview.getInt8(at), 1];\n case 'uint8':\n case 'uchar':\n return [dataview.getUint8(at), 1];\n case 'int16':\n case 'short':\n return [dataview.getInt16(at, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataview.getUint16(at, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataview.getInt32(at, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataview.getUint32(at, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataview.getFloat32(at, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataview.getFloat64(at, littleEndian), 8];\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param properties\n * @param littleEndian\n * @returns [object, number]\n */\nfunction binaryReadElement(\n dataview: DataView,\n at: number,\n properties: {[index: string]: any},\n littleEndian: boolean\n): {}[] {\n const element = {};\n let result: number[];\n let read = 0;\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n\n result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);\n const n = result[0];\n read += result[1];\n\n for (let j = 0; j < n; j++) {\n result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);\n // @ts-ignore\n list.push(result[0]);\n read += result[1];\n }\n\n element[properties[i].name] = list;\n } else {\n result = binaryRead(dataview, at + read, properties[i].type, littleEndian);\n element[properties[i].name] = result[0];\n read += result[1];\n }\n }\n\n return [element, read];\n}\n\ntype BinaryAttributes = {\n [index: string]: number[];\n};\n\n/**\n * Parses binary data\n * @param data\n * @param header\n * @returns [attributes] of data\n */\nfunction parseBinary(data: ArrayBuffer, header: {[index: string]: any}): BinaryAttributes {\n const attributes: BinaryAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n const littleEndian = header.format === 'binary_little_endian';\n const body = new DataView(data, header.headerLength);\n let result: any[];\n let loc = 0;\n\n for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {\n const count = header.elements[currentElement].count;\n for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {\n result = binaryReadElement(\n body,\n loc,\n header.elements[currentElement].properties,\n littleEndian\n );\n loc += result[1];\n const element = result[0];\n\n handleElement(attributes, header.elements[currentElement].name, element);\n }\n }\n\n return attributes;\n}\n"],"file":"parse-ply.js"}
|
package/dist/es5/ply-loader.js
CHANGED
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports._typecheckPLYLoader = exports.PLYLoader = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
var VERSION = typeof "3.1.0" !== 'undefined' ? "3.1.0" : 'latest';
|
|
8
|
+
var PLYLoader = {
|
|
9
9
|
name: 'PLY',
|
|
10
10
|
id: 'ply',
|
|
11
11
|
module: 'ply',
|
|
@@ -22,6 +22,6 @@ const PLYLoader = {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
exports.PLYLoader = PLYLoader;
|
|
25
|
-
|
|
25
|
+
var _typecheckPLYLoader = PLYLoader;
|
|
26
26
|
exports._typecheckPLYLoader = _typecheckPLYLoader;
|
|
27
27
|
//# sourceMappingURL=ply-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ply-loader.ts"],"names":["VERSION","PLYLoader","name","id","module","shapes","version","worker","extensions","mimeTypes","text","binary","tests","options","ply","_typecheckPLYLoader"],"mappings":";;;;;;AAKA,
|
|
1
|
+
{"version":3,"sources":["../../src/ply-loader.ts"],"names":["VERSION","PLYLoader","name","id","module","shapes","version","worker","extensions","mimeTypes","text","binary","tests","options","ply","_typecheckPLYLoader"],"mappings":";;;;;;AAKA,IAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAOO,IAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,KADiB;AAEvBC,EAAAA,EAAE,EAAE,KAFmB;AAGvBC,EAAAA,MAAM,EAAE,KAHe;AAIvBC,EAAAA,MAAM,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,gBAAjB,CAJe;AAKvBC,EAAAA,OAAO,EAAEN,OALc;AAMvBO,EAAAA,MAAM,EAAE,IANe;AAOvBC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAPW;AAQvBC,EAAAA,SAAS,EAAE,CAAC,YAAD,EAAe,0BAAf,CARY;AASvBC,EAAAA,IAAI,EAAE,IATiB;AAUvBC,EAAAA,MAAM,EAAE,IAVe;AAWvBC,EAAAA,KAAK,EAAE,CAAC,KAAD,CAXgB;AAYvBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AADE;AAZc,CAAlB;;AAiBA,IAAMC,mBAA2B,GAAGd,SAApC","sourcesContent":["// PLY Loader\nimport type {Loader} from '@loaders.gl/loader-utils';\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\n/**\n * Worker loader for PLY - Polygon File Format (aka Stanford Triangle Format)'\n * links: ['http://paulbourke.net/dataformats/ply/',\n * 'https://en.wikipedia.org/wiki/PLY_(file_format)']\n */\nexport const PLYLoader = {\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n shapes: ['mesh', 'gltf', 'columnar-table'],\n version: VERSION,\n worker: true,\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply'],\n options: {\n ply: {}\n }\n};\n\nexport const _typecheckPLYLoader: Loader = PLYLoader;\n"],"file":"ply-loader.js"}
|
package/dist/esm/ply-loader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ply-loader.ts"],"names":["VERSION","PLYLoader","name","id","module","shapes","version","worker","extensions","mimeTypes","text","binary","tests","options","ply","_typecheckPLYLoader"],"mappings":"AAKA,MAAMA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/ply-loader.ts"],"names":["VERSION","PLYLoader","name","id","module","shapes","version","worker","extensions","mimeTypes","text","binary","tests","options","ply","_typecheckPLYLoader"],"mappings":"AAKA,MAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE;AAOA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,KADiB;AAEvBC,EAAAA,EAAE,EAAE,KAFmB;AAGvBC,EAAAA,MAAM,EAAE,KAHe;AAIvBC,EAAAA,MAAM,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,gBAAjB,CAJe;AAKvBC,EAAAA,OAAO,EAAEN,OALc;AAMvBO,EAAAA,MAAM,EAAE,IANe;AAOvBC,EAAAA,UAAU,EAAE,CAAC,KAAD,CAPW;AAQvBC,EAAAA,SAAS,EAAE,CAAC,YAAD,EAAe,0BAAf,CARY;AASvBC,EAAAA,IAAI,EAAE,IATiB;AAUvBC,EAAAA,MAAM,EAAE,IAVe;AAWvBC,EAAAA,KAAK,EAAE,CAAC,KAAD,CAXgB;AAYvBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AADE;AAZc,CAAlB;AAiBP,OAAO,MAAMC,mBAA2B,GAAGd,SAApC","sourcesContent":["// PLY Loader\nimport type {Loader} from '@loaders.gl/loader-utils';\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\n/**\n * Worker loader for PLY - Polygon File Format (aka Stanford Triangle Format)'\n * links: ['http://paulbourke.net/dataformats/ply/',\n * 'https://en.wikipedia.org/wiki/PLY_(file_format)']\n */\nexport const PLYLoader = {\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n shapes: ['mesh', 'gltf', 'columnar-table'],\n version: VERSION,\n worker: true,\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply'],\n options: {\n ply: {}\n }\n};\n\nexport const _typecheckPLYLoader: Loader = PLYLoader;\n"],"file":"ply-loader.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/ply",
|
|
3
|
-
"version": "3.1.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Framework-independent loader for the PLY format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@babel/runtime": "^7.3.1",
|
|
37
|
-
"@loaders.gl/loader-utils": "3.1.0
|
|
38
|
-
"@loaders.gl/schema": "3.1.0
|
|
37
|
+
"@loaders.gl/loader-utils": "3.1.0",
|
|
38
|
+
"@loaders.gl/schema": "3.1.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@loaders.gl/core": "3.1.0-beta.1"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "b02a011b5a6d6aa6c5870819045c70db168cb930"
|
|
44
44
|
}
|