@needle-tools/gltf-build-pipeline 2.2.1-alpha.2 → 2.2.1-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.temp/Go2.bin +0 -0
  2. package/.temp/textures/0_1.exr +0 -0
  3. package/.temp/textures/1_1.jpg +0 -0
  4. package/CHANGELOG.md +395 -394
  5. package/README.md +35 -35
  6. package/dist/cache/cache.d.ts +54 -54
  7. package/dist/cache/cache.js +257 -257
  8. package/dist/cache/index.d.ts +1 -1
  9. package/dist/cache/index.js +1 -1
  10. package/dist/cli/index.d.ts +2 -2
  11. package/dist/cli/index.js +154 -154
  12. package/dist/config/index.d.ts +53 -53
  13. package/dist/config/index.js +152 -152
  14. package/dist/constants.d.ts +5 -5
  15. package/dist/constants.js +5 -5
  16. package/dist/extensions/NEEDLE_compression_texture/NEEDLE_compression_texture.d.ts +24 -24
  17. package/dist/extensions/NEEDLE_compression_texture/NEEDLE_compression_texture.js +54 -54
  18. package/dist/extensions/NEEDLE_compression_texture/index.d.ts +1 -1
  19. package/dist/extensions/NEEDLE_compression_texture/index.js +1 -1
  20. package/dist/extensions/NEEDLE_mesh_compression/NEEDLE_mesh_compression.d.ts +26 -26
  21. package/dist/extensions/NEEDLE_mesh_compression/NEEDLE_mesh_compression.js +85 -85
  22. package/dist/extensions/NEEDLE_mesh_compression/index.d.ts +1 -1
  23. package/dist/extensions/NEEDLE_mesh_compression/index.js +1 -1
  24. package/dist/extensions/NEEDLE_opaque/NEEDLE_opaque.d.ts +27 -27
  25. package/dist/extensions/NEEDLE_opaque/NEEDLE_opaque.js +897 -897
  26. package/dist/extensions/NEEDLE_opaque/index.d.ts +3 -3
  27. package/dist/extensions/NEEDLE_opaque/index.js +28 -28
  28. package/dist/extensions/NEEDLE_progressive/NEEDLE_progressive.d.ts +48 -48
  29. package/dist/extensions/NEEDLE_progressive/NEEDLE_progressive.js +69 -69
  30. package/dist/extensions/NEEDLE_progressive/index.d.ts +1 -1
  31. package/dist/extensions/NEEDLE_progressive/index.js +1 -1
  32. package/dist/extensions/NEEDLE_progressive_mesh_settings/index.d.ts +23 -23
  33. package/dist/extensions/NEEDLE_progressive_mesh_settings/index.js +41 -41
  34. package/dist/extensions/NEEDLE_progressive_texture_settings/index.d.ts +25 -25
  35. package/dist/extensions/NEEDLE_progressive_texture_settings/index.js +67 -67
  36. package/dist/extensions/index.d.ts +7 -7
  37. package/dist/extensions/index.js +17 -17
  38. package/dist/extensions/utils.d.ts +6 -6
  39. package/dist/extensions/utils.js +72 -72
  40. package/dist/functions/weld.3.d.ts +76 -76
  41. package/dist/functions/weld.3.js +414 -414
  42. package/dist/index.d.ts +8 -8
  43. package/dist/index.js +8 -8
  44. package/dist/scripts/index.d.ts +2 -2
  45. package/dist/scripts/index.js +2 -2
  46. package/dist/scripts/pack-gltf.d.ts +16 -16
  47. package/dist/scripts/pack-gltf.js +120 -120
  48. package/dist/scripts/stats.d.ts +2 -2
  49. package/dist/scripts/stats.js +18 -18
  50. package/dist/transforms/index.d.ts +9 -9
  51. package/dist/transforms/index.js +9 -9
  52. package/dist/transforms/needle_animation_transform.d.ts +2 -2
  53. package/dist/transforms/needle_animation_transform.js +5 -5
  54. package/dist/transforms/needle_asset.d.ts +3 -3
  55. package/dist/transforms/needle_asset.js +35 -35
  56. package/dist/transforms/needle_common.d.ts +16 -16
  57. package/dist/transforms/needle_common.js +1 -1
  58. package/dist/transforms/needle_mesh_transform.d.ts +10 -10
  59. package/dist/transforms/needle_mesh_transform.js +140 -140
  60. package/dist/transforms/needle_progressive.d.ts +42 -42
  61. package/dist/transforms/needle_progressive.js +933 -921
  62. package/dist/transforms/needle_texture_transform.d.ts +13 -13
  63. package/dist/transforms/needle_texture_transform.js +202 -196
  64. package/dist/transforms/needle_toktx.d.ts +25 -25
  65. package/dist/transforms/needle_toktx.js +230 -230
  66. package/dist/transforms/needle_webp.d.ts +13 -13
  67. package/dist/transforms/needle_webp.js +37 -37
  68. package/dist/transforms/toktx.d.ts +52 -52
  69. package/dist/transforms/toktx.js +221 -221
  70. package/dist/transforms/toktx_types.d.ts +78 -78
  71. package/dist/transforms/toktx_types.js +62 -62
  72. package/dist/transforms/util.d.ts +21 -21
  73. package/dist/transforms/util.js +90 -90
  74. package/dist/utils/compression_utils.d.ts +2 -2
  75. package/dist/utils/compression_utils.js +6 -6
  76. package/dist/utils/fileutils.d.ts +6 -6
  77. package/dist/utils/fileutils.js +141 -141
  78. package/dist/utils/guid.d.ts +1 -1
  79. package/dist/utils/guid.js +5 -5
  80. package/dist/utils/index.d.ts +10 -9
  81. package/dist/utils/index.js +10 -9
  82. package/dist/utils/merge.d.ts +12 -12
  83. package/dist/utils/merge.js +31 -31
  84. package/dist/utils/mesh.d.ts +13 -13
  85. package/dist/utils/mesh.js +107 -107
  86. package/dist/utils/nodeio.d.ts +5 -5
  87. package/dist/utils/nodeio.js +14 -14
  88. package/dist/utils/stats.d.ts +54 -53
  89. package/dist/utils/stats.js +191 -166
  90. package/dist/utils/texture.d.ts +2 -2
  91. package/dist/utils/texture.js +8 -8
  92. package/dist/utils/validate.d.ts +5 -0
  93. package/dist/utils/validate.js +16 -0
  94. package/dist/utils/version.d.ts +1 -1
  95. package/dist/utils/version.js +5 -5
  96. package/package.json +77 -76
  97. package/scripts/clear-caches.mjs +3 -3
  98. package/scripts/defaults.mjs +11 -11
  99. package/scripts/fileutils.mjs +5 -5
  100. package/scripts/index.mjs +41 -41
  101. package/scripts/limit-caches.mjs +3 -3
  102. package/scripts/make-progressive.mjs +16 -16
  103. package/scripts/pack-gltf.mjs +107 -107
  104. package/tsconfig.json +19 -19
@@ -1,3 +1,3 @@
1
- import { Extension } from "@gltf-transform/core";
2
- export * from "./NEEDLE_opaque.js";
3
- export declare const ALL_EXTENSIONS: (typeof Extension)[];
1
+ import { Extension } from "@gltf-transform/core";
2
+ export * from "./NEEDLE_opaque.js";
3
+ export declare const ALL_EXTENSIONS: (typeof Extension)[];
@@ -1,28 +1,28 @@
1
- import { PropertyType } from "@gltf-transform/core";
2
- import { createOpaqueExtension } from "./NEEDLE_opaque.js";
3
- export * from "./NEEDLE_opaque.js";
4
- const opaqueOptions = {
5
- debug: process.argv.includes("debug"),
6
- };
7
- export const ALL_EXTENSIONS = [
8
- createOpaqueExtension("KHR_animation_pointer", [PropertyType.ANIMATION, PropertyType.ANIMATION_CHANNEL], { ...opaqueOptions }),
9
- createOpaqueExtension("NEEDLE_techniques_webgl", [PropertyType.NODE, PropertyType.MATERIAL, PropertyType.ROOT], { ...opaqueOptions }),
10
- createOpaqueExtension("NEEDLE_gameobject_data", PropertyType.NODE, { ...opaqueOptions }),
11
- createOpaqueExtension("NEEDLE_components", PropertyType.NODE, { ...opaqueOptions }),
12
- createOpaqueExtension("NEEDLE_persistent_assets", PropertyType.ROOT, { ...opaqueOptions }),
13
- createOpaqueExtension("NEEDLE_lightmaps", PropertyType.ROOT, { ...opaqueOptions }),
14
- createOpaqueExtension("NEEDLE_lighting_settings", PropertyType.ROOT, { ...opaqueOptions }),
15
- createOpaqueExtension("NEEDLE_render_objects", PropertyType.ROOT, { ...opaqueOptions }),
16
- createOpaqueExtension("NEEDLE_progressive", [PropertyType.TEXTURE, PropertyType.MATERIAL, PropertyType.MESH], { ...opaqueOptions }),
17
- createOpaqueExtension("EXT_texture_exr", [PropertyType.TEXTURE], { ...opaqueOptions }),
18
- createOpaqueExtension("NEEDLE_editor", [PropertyType.NODE, PropertyType.MATERIAL], { ...opaqueOptions }),
19
- createOpaqueExtension("NEEDLE_gltf_dependencies", [PropertyType.ROOT], { ...opaqueOptions }),
20
- // VRM 0.0
21
- createOpaqueExtension("VRM", [PropertyType.ROOT], { ...opaqueOptions }),
22
- // VRM 1.0 https://vrm.dev/en/vrm1/changed/
23
- createOpaqueExtension("VRMC_vrm", [PropertyType.ROOT], { ...opaqueOptions }),
24
- createOpaqueExtension("VRMC_springBone", [PropertyType.ROOT], { ...opaqueOptions }),
25
- createOpaqueExtension("VRMC_node_constraint", [PropertyType.NODE], { ...opaqueOptions }),
26
- // TODO: mtoon materials don't work yet
27
- // createOpaqueExtension("VRMC_materials_mtoon", [PropertyType.MATERIAL], { ...opaqueOptions, debug: true, breakpoint: "pointer:read" },),
28
- ];
1
+ import { PropertyType } from "@gltf-transform/core";
2
+ import { createOpaqueExtension } from "./NEEDLE_opaque.js";
3
+ export * from "./NEEDLE_opaque.js";
4
+ const opaqueOptions = {
5
+ debug: process.argv.includes("debug"),
6
+ };
7
+ export const ALL_EXTENSIONS = [
8
+ createOpaqueExtension("KHR_animation_pointer", [PropertyType.ANIMATION, PropertyType.ANIMATION_CHANNEL], { ...opaqueOptions }),
9
+ createOpaqueExtension("NEEDLE_techniques_webgl", [PropertyType.NODE, PropertyType.MATERIAL, PropertyType.ROOT], { ...opaqueOptions }),
10
+ createOpaqueExtension("NEEDLE_gameobject_data", PropertyType.NODE, { ...opaqueOptions }),
11
+ createOpaqueExtension("NEEDLE_components", PropertyType.NODE, { ...opaqueOptions }),
12
+ createOpaqueExtension("NEEDLE_persistent_assets", PropertyType.ROOT, { ...opaqueOptions }),
13
+ createOpaqueExtension("NEEDLE_lightmaps", PropertyType.ROOT, { ...opaqueOptions }),
14
+ createOpaqueExtension("NEEDLE_lighting_settings", PropertyType.ROOT, { ...opaqueOptions }),
15
+ createOpaqueExtension("NEEDLE_render_objects", PropertyType.ROOT, { ...opaqueOptions }),
16
+ createOpaqueExtension("NEEDLE_progressive", [PropertyType.TEXTURE, PropertyType.MATERIAL, PropertyType.MESH], { ...opaqueOptions }),
17
+ createOpaqueExtension("EXT_texture_exr", [PropertyType.TEXTURE], { ...opaqueOptions }),
18
+ createOpaqueExtension("NEEDLE_editor", [PropertyType.NODE, PropertyType.MATERIAL], { ...opaqueOptions }),
19
+ createOpaqueExtension("NEEDLE_gltf_dependencies", [PropertyType.ROOT], { ...opaqueOptions }),
20
+ // VRM 0.0
21
+ createOpaqueExtension("VRM", [PropertyType.ROOT], { ...opaqueOptions }),
22
+ // VRM 1.0 https://vrm.dev/en/vrm1/changed/
23
+ createOpaqueExtension("VRMC_vrm", [PropertyType.ROOT], { ...opaqueOptions }),
24
+ createOpaqueExtension("VRMC_springBone", [PropertyType.ROOT], { ...opaqueOptions }),
25
+ createOpaqueExtension("VRMC_node_constraint", [PropertyType.NODE], { ...opaqueOptions }),
26
+ // TODO: mtoon materials don't work yet
27
+ // createOpaqueExtension("VRMC_materials_mtoon", [PropertyType.MATERIAL], { ...opaqueOptions, debug: true, breakpoint: "pointer:read" },),
28
+ ];
@@ -1,48 +1,48 @@
1
- import { Extension, ExtensionProperty, PropertyType, ReaderContext, WriterContext } from "@gltf-transform/core";
2
- export declare const NEEDLE_PROGRESSIVE_EXTENSION_NAME = "NEEDLE_progressive";
3
- export type ProgressiveLoadingInfo = {
4
- /** guid of the asset the LODs belong to */
5
- guid: string;
6
- /** lod infos and paths */
7
- lods?: Array<LodInfo>;
8
- };
9
- type LodInfo = {
10
- /** Relative path to the LOD file */
11
- path: string;
12
- /** Hash of the LOD file. It has been generated using the file content and settings */
13
- hash: string;
14
- };
15
- export type ProgressiveTextureLodEntry = LodInfo & {
16
- width: number;
17
- height: number;
18
- };
19
- export type ProgressiveTextureModel = ProgressiveLoadingInfo & {
20
- lods?: Array<ProgressiveTextureLodEntry>;
21
- };
22
- export type ProgressiveMeshModel = ProgressiveLoadingInfo & {
23
- /** LOD0 vertex density. TODO: remove this since we now have a LODs array. This is just for supporting older engine versions */
24
- density: number;
25
- lods?: Array<LodInfo & {
26
- /** Mesh vertex density */
27
- density: number;
28
- vertexCount: number;
29
- indexCount: number;
30
- }>;
31
- };
32
- export declare class NEEDLE_progressive extends Extension {
33
- static EXTENSION_NAME: string;
34
- extensionName: string;
35
- createTexture(data: ProgressiveTextureModel): NEEDLE_progressive_property;
36
- createMesh(data: ProgressiveMeshModel): NEEDLE_progressive_property;
37
- read(_context: ReaderContext): this;
38
- write(context: WriterContext): this;
39
- }
40
- export declare class NEEDLE_progressive_property extends ExtensionProperty {
41
- static EXTENSION_NAME: string;
42
- readonly extensionName: string;
43
- parentTypes: PropertyType[];
44
- propertyType: string;
45
- init(): void;
46
- model: ProgressiveLoadingInfo;
47
- }
48
- export {};
1
+ import { Extension, ExtensionProperty, PropertyType, ReaderContext, WriterContext } from "@gltf-transform/core";
2
+ export declare const NEEDLE_PROGRESSIVE_EXTENSION_NAME = "NEEDLE_progressive";
3
+ export type ProgressiveLoadingInfo = {
4
+ /** guid of the asset the LODs belong to */
5
+ guid: string;
6
+ /** lod infos and paths */
7
+ lods?: Array<LodInfo>;
8
+ };
9
+ type LodInfo = {
10
+ /** Relative path to the LOD file */
11
+ path: string;
12
+ /** Hash of the LOD file. It has been generated using the file content and settings */
13
+ hash: string;
14
+ };
15
+ export type ProgressiveTextureLodEntry = LodInfo & {
16
+ width: number;
17
+ height: number;
18
+ };
19
+ export type ProgressiveTextureModel = ProgressiveLoadingInfo & {
20
+ lods?: Array<ProgressiveTextureLodEntry>;
21
+ };
22
+ export type ProgressiveMeshModel = ProgressiveLoadingInfo & {
23
+ /** LOD0 vertex density. TODO: remove this since we now have a LODs array. This is just for supporting older engine versions */
24
+ density: number;
25
+ lods?: Array<LodInfo & {
26
+ /** Mesh vertex density */
27
+ density: number;
28
+ vertexCount: number;
29
+ indexCount: number;
30
+ }>;
31
+ };
32
+ export declare class NEEDLE_progressive extends Extension {
33
+ static EXTENSION_NAME: string;
34
+ extensionName: string;
35
+ createTexture(data: ProgressiveTextureModel): NEEDLE_progressive_property;
36
+ createMesh(data: ProgressiveMeshModel): NEEDLE_progressive_property;
37
+ read(_context: ReaderContext): this;
38
+ write(context: WriterContext): this;
39
+ }
40
+ export declare class NEEDLE_progressive_property extends ExtensionProperty {
41
+ static EXTENSION_NAME: string;
42
+ readonly extensionName: string;
43
+ parentTypes: PropertyType[];
44
+ propertyType: string;
45
+ init(): void;
46
+ model: ProgressiveLoadingInfo;
47
+ }
48
+ export {};
@@ -1,69 +1,69 @@
1
- import { Extension, ExtensionProperty, PropertyType } from "@gltf-transform/core";
2
- // TODO: rename to NEEDLE_progressive_texture
3
- export const NEEDLE_PROGRESSIVE_EXTENSION_NAME = "NEEDLE_progressive";
4
- export class NEEDLE_progressive extends Extension {
5
- static EXTENSION_NAME = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
6
- extensionName = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
7
- createTexture(data) {
8
- const ext = new NEEDLE_progressive_property(this.document.getGraph());
9
- ext.model = data;
10
- return ext;
11
- }
12
- createMesh(data) {
13
- const ext = new NEEDLE_progressive_property(this.document.getGraph());
14
- ext.model = data;
15
- return ext;
16
- }
17
- read(_context) {
18
- // console.log("READ " + NEEDLE_PROGRESSIVE_TEXTURE_EXTENSION_NAME);
19
- return this;
20
- }
21
- write(context) {
22
- // console.log("WRITE " + NEEDLE_PROGRESSIVE_TEXTURE_EXTENSION_NAME);
23
- const root = this.document.getRoot();
24
- const textureDefinitions = context.jsonDoc.json.textures;
25
- if (textureDefinitions.length) {
26
- const textures = root.listTextures();
27
- // we use the texture image map to find the texture definition to write the extension to
28
- const textureImageIndexMap = context.imageIndexMap;
29
- for (const tex of textures) {
30
- const prop = tex.getExtension(NEEDLE_PROGRESSIVE_EXTENSION_NAME);
31
- if (prop && prop.model) {
32
- // get the image this texture is using
33
- const imageIndex = textureImageIndexMap.get(tex);
34
- // find the texture definition that uses this image and add the extension
35
- for (const def of textureDefinitions) {
36
- if (def.source === imageIndex) {
37
- def.extensions = def.extensions || {};
38
- def.extensions[NEEDLE_PROGRESSIVE_EXTENSION_NAME] = prop.model;
39
- }
40
- }
41
- }
42
- }
43
- }
44
- const meshDefinitions = context.jsonDoc.json.meshes;
45
- if (meshDefinitions?.length) {
46
- const meshIndexMap = context.meshIndexMap;
47
- const meshes = root.listMeshes();
48
- for (let i = 0; i < meshes.length; i++) {
49
- const mesh = meshes[i];
50
- const meshIndex = meshIndexMap.get(mesh);
51
- const meshExt = mesh.getExtension(NEEDLE_PROGRESSIVE_EXTENSION_NAME);
52
- if (meshExt && meshExt.model) {
53
- const meshDef = meshDefinitions[meshIndex];
54
- meshDef.extensions = meshDef.extensions || {};
55
- meshDef.extensions[NEEDLE_PROGRESSIVE_EXTENSION_NAME] = meshExt.model;
56
- }
57
- }
58
- }
59
- return this;
60
- }
61
- }
62
- export class NEEDLE_progressive_property extends ExtensionProperty {
63
- static EXTENSION_NAME = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
64
- extensionName = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
65
- parentTypes = [PropertyType.TEXTURE, PropertyType.MESH];
66
- propertyType = "progressive_texture";
67
- init() { }
68
- model;
69
- }
1
+ import { Extension, ExtensionProperty, PropertyType } from "@gltf-transform/core";
2
+ // TODO: rename to NEEDLE_progressive_texture
3
+ export const NEEDLE_PROGRESSIVE_EXTENSION_NAME = "NEEDLE_progressive";
4
+ export class NEEDLE_progressive extends Extension {
5
+ static EXTENSION_NAME = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
6
+ extensionName = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
7
+ createTexture(data) {
8
+ const ext = new NEEDLE_progressive_property(this.document.getGraph());
9
+ ext.model = data;
10
+ return ext;
11
+ }
12
+ createMesh(data) {
13
+ const ext = new NEEDLE_progressive_property(this.document.getGraph());
14
+ ext.model = data;
15
+ return ext;
16
+ }
17
+ read(_context) {
18
+ // console.log("READ " + NEEDLE_PROGRESSIVE_TEXTURE_EXTENSION_NAME);
19
+ return this;
20
+ }
21
+ write(context) {
22
+ // console.log("WRITE " + NEEDLE_PROGRESSIVE_TEXTURE_EXTENSION_NAME);
23
+ const root = this.document.getRoot();
24
+ const textureDefinitions = context.jsonDoc.json.textures;
25
+ if (textureDefinitions.length) {
26
+ const textures = root.listTextures();
27
+ // we use the texture image map to find the texture definition to write the extension to
28
+ const textureImageIndexMap = context.imageIndexMap;
29
+ for (const tex of textures) {
30
+ const prop = tex.getExtension(NEEDLE_PROGRESSIVE_EXTENSION_NAME);
31
+ if (prop && prop.model) {
32
+ // get the image this texture is using
33
+ const imageIndex = textureImageIndexMap.get(tex);
34
+ // find the texture definition that uses this image and add the extension
35
+ for (const def of textureDefinitions) {
36
+ if (def.source === imageIndex) {
37
+ def.extensions = def.extensions || {};
38
+ def.extensions[NEEDLE_PROGRESSIVE_EXTENSION_NAME] = prop.model;
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ const meshDefinitions = context.jsonDoc.json.meshes;
45
+ if (meshDefinitions?.length) {
46
+ const meshIndexMap = context.meshIndexMap;
47
+ const meshes = root.listMeshes();
48
+ for (let i = 0; i < meshes.length; i++) {
49
+ const mesh = meshes[i];
50
+ const meshIndex = meshIndexMap.get(mesh);
51
+ const meshExt = mesh.getExtension(NEEDLE_PROGRESSIVE_EXTENSION_NAME);
52
+ if (meshExt && meshExt.model) {
53
+ const meshDef = meshDefinitions[meshIndex];
54
+ meshDef.extensions = meshDef.extensions || {};
55
+ meshDef.extensions[NEEDLE_PROGRESSIVE_EXTENSION_NAME] = meshExt.model;
56
+ }
57
+ }
58
+ }
59
+ return this;
60
+ }
61
+ }
62
+ export class NEEDLE_progressive_property extends ExtensionProperty {
63
+ static EXTENSION_NAME = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
64
+ extensionName = NEEDLE_PROGRESSIVE_EXTENSION_NAME;
65
+ parentTypes = [PropertyType.TEXTURE, PropertyType.MESH];
66
+ propertyType = "progressive_texture";
67
+ init() { }
68
+ model;
69
+ }
@@ -1 +1 @@
1
- export * from "./NEEDLE_progressive.js";
1
+ export * from "./NEEDLE_progressive.js";
@@ -1 +1 @@
1
- export * from "./NEEDLE_progressive.js";
1
+ export * from "./NEEDLE_progressive.js";
@@ -1,23 +1,23 @@
1
- import { Extension, ExtensionProperty, PropertyType, ReaderContext, WriterContext } from "@gltf-transform/core";
2
- export declare interface IProgressiveMeshSettings {
3
- /**
4
- * When false no LODs will be generated for this mesh
5
- */
6
- generateLods: boolean;
7
- guid: string;
8
- }
9
- export declare class NEEDLE_progressive_mesh_settings extends Extension {
10
- static EXTENSION_NAME: string;
11
- extensionName: string;
12
- read(context: ReaderContext): this;
13
- write(context: WriterContext): this;
14
- }
15
- export declare class NEEDLE_progressive_mesh_settings_property extends ExtensionProperty implements IProgressiveMeshSettings {
16
- static EXTENSION_NAME: string;
17
- readonly extensionName: string;
18
- parentTypes: PropertyType[];
19
- propertyType: string;
20
- init(): void;
21
- generateLods: boolean;
22
- guid: string;
23
- }
1
+ import { Extension, ExtensionProperty, PropertyType, ReaderContext, WriterContext } from "@gltf-transform/core";
2
+ export declare interface IProgressiveMeshSettings {
3
+ /**
4
+ * When false no LODs will be generated for this mesh
5
+ */
6
+ generateLods: boolean;
7
+ guid: string;
8
+ }
9
+ export declare class NEEDLE_progressive_mesh_settings extends Extension {
10
+ static EXTENSION_NAME: string;
11
+ extensionName: string;
12
+ read(context: ReaderContext): this;
13
+ write(context: WriterContext): this;
14
+ }
15
+ export declare class NEEDLE_progressive_mesh_settings_property extends ExtensionProperty implements IProgressiveMeshSettings {
16
+ static EXTENSION_NAME: string;
17
+ readonly extensionName: string;
18
+ parentTypes: PropertyType[];
19
+ propertyType: string;
20
+ init(): void;
21
+ generateLods: boolean;
22
+ guid: string;
23
+ }
@@ -1,41 +1,41 @@
1
- import { Extension, ExtensionProperty, PropertyType } from "@gltf-transform/core";
2
- const EXTENSION_NAME = "NEEDLE_progressive_mesh_settings";
3
- export class NEEDLE_progressive_mesh_settings extends Extension {
4
- static EXTENSION_NAME = EXTENSION_NAME;
5
- extensionName = EXTENSION_NAME;
6
- read(context) {
7
- const definitions = context.jsonDoc.json.meshes;
8
- if (!definitions)
9
- return this;
10
- const root = this.document.getRoot();
11
- const meshes = root.listMeshes();
12
- for (let i = 0; i < definitions.length; i++) {
13
- const def = definitions[i];
14
- if (def.extensions && def.extensions[EXTENSION_NAME]) {
15
- const ext = def.extensions[EXTENSION_NAME];
16
- const prop = new NEEDLE_progressive_mesh_settings_property(this.document.getGraph(), "");
17
- Object.assign(prop, ext);
18
- let index = i;
19
- const mesh = meshes[index];
20
- if (mesh)
21
- mesh.setExtension(EXTENSION_NAME, prop);
22
- else {
23
- console.warn(`WARN: Progressive mesh at index ${i} was not found in the glTF file. This might result in falsely loaded textures for ${ext.guid} / name \"${def.name}\"`);
24
- }
25
- }
26
- }
27
- return this;
28
- }
29
- write(context) {
30
- return this;
31
- }
32
- }
33
- export class NEEDLE_progressive_mesh_settings_property extends ExtensionProperty {
34
- static EXTENSION_NAME = EXTENSION_NAME;
35
- extensionName = EXTENSION_NAME;
36
- parentTypes = [PropertyType.MESH];
37
- propertyType = EXTENSION_NAME;
38
- init() { }
39
- generateLods;
40
- guid;
41
- }
1
+ import { Extension, ExtensionProperty, PropertyType } from "@gltf-transform/core";
2
+ const EXTENSION_NAME = "NEEDLE_progressive_mesh_settings";
3
+ export class NEEDLE_progressive_mesh_settings extends Extension {
4
+ static EXTENSION_NAME = EXTENSION_NAME;
5
+ extensionName = EXTENSION_NAME;
6
+ read(context) {
7
+ const definitions = context.jsonDoc.json.meshes;
8
+ if (!definitions)
9
+ return this;
10
+ const root = this.document.getRoot();
11
+ const meshes = root.listMeshes();
12
+ for (let i = 0; i < definitions.length; i++) {
13
+ const def = definitions[i];
14
+ if (def.extensions && def.extensions[EXTENSION_NAME]) {
15
+ const ext = def.extensions[EXTENSION_NAME];
16
+ const prop = new NEEDLE_progressive_mesh_settings_property(this.document.getGraph(), "");
17
+ Object.assign(prop, ext);
18
+ let index = i;
19
+ const mesh = meshes[index];
20
+ if (mesh)
21
+ mesh.setExtension(EXTENSION_NAME, prop);
22
+ else {
23
+ console.warn(`WARN: Progressive mesh at index ${i} was not found in the glTF file. This might result in falsely loaded textures for ${ext.guid} / name \"${def.name}\"`);
24
+ }
25
+ }
26
+ }
27
+ return this;
28
+ }
29
+ write(context) {
30
+ return this;
31
+ }
32
+ }
33
+ export class NEEDLE_progressive_mesh_settings_property extends ExtensionProperty {
34
+ static EXTENSION_NAME = EXTENSION_NAME;
35
+ extensionName = EXTENSION_NAME;
36
+ parentTypes = [PropertyType.MESH];
37
+ propertyType = EXTENSION_NAME;
38
+ init() { }
39
+ generateLods;
40
+ guid;
41
+ }
@@ -1,25 +1,25 @@
1
- import { Extension, ExtensionProperty, PropertyType, ReaderContext, WriterContext } from "@gltf-transform/core";
2
- export declare interface IProgressiveTextureSettings {
3
- /**
4
- * When false the texture no progressive texture will be generated
5
- */
6
- generateLods?: boolean;
7
- maxSize: number;
8
- guid: string;
9
- }
10
- export declare class NEEDLE_progressive_texture_settings extends Extension {
11
- static EXTENSION_NAME: string;
12
- extensionName: string;
13
- read(context: ReaderContext): this;
14
- write(context: WriterContext): this;
15
- }
16
- export declare class NEEDLE_progressive_texture_settings_property extends ExtensionProperty implements IProgressiveTextureSettings {
17
- static EXTENSION_NAME: string;
18
- readonly extensionName: string;
19
- parentTypes: PropertyType[];
20
- propertyType: string;
21
- init(): void;
22
- get isValid(): boolean;
23
- maxSize: number;
24
- guid: string;
25
- }
1
+ import { Extension, ExtensionProperty, PropertyType, ReaderContext, WriterContext } from "@gltf-transform/core";
2
+ export declare interface IProgressiveTextureSettings {
3
+ /**
4
+ * When false the texture no progressive texture will be generated
5
+ */
6
+ generateLods?: boolean;
7
+ maxSize: number;
8
+ guid: string;
9
+ }
10
+ export declare class NEEDLE_progressive_texture_settings extends Extension {
11
+ static EXTENSION_NAME: string;
12
+ extensionName: string;
13
+ read(context: ReaderContext): this;
14
+ write(context: WriterContext): this;
15
+ }
16
+ export declare class NEEDLE_progressive_texture_settings_property extends ExtensionProperty implements IProgressiveTextureSettings {
17
+ static EXTENSION_NAME: string;
18
+ readonly extensionName: string;
19
+ parentTypes: PropertyType[];
20
+ propertyType: string;
21
+ init(): void;
22
+ get isValid(): boolean;
23
+ maxSize: number;
24
+ guid: string;
25
+ }
@@ -1,67 +1,67 @@
1
- import { Extension, ExtensionProperty, PropertyType } from "@gltf-transform/core";
2
- // TODO: rename to NEEDLE_progressive_texture
3
- const EXTENSION_NAME = "NEEDLE_progressive_texture_settings";
4
- export class NEEDLE_progressive_texture_settings extends Extension {
5
- static EXTENSION_NAME = EXTENSION_NAME;
6
- extensionName = EXTENSION_NAME;
7
- read(context) {
8
- const textureDefinitions = context.jsonDoc.json.textures;
9
- if (!textureDefinitions)
10
- return this;
11
- const root = this.document.getRoot();
12
- const textures = root.listTextures();
13
- /**
14
- * If a texture is used in multiple slots it only appears once in the gltf-transform list
15
- * So we have to store the key and the index of the texture in the list
16
- */
17
- const textureMap = new Map();
18
- let offset = 0;
19
- for (let i = 0; i < textureDefinitions.length; i++) {
20
- const texDef = textureDefinitions[i];
21
- if (texDef.extensions && texDef.extensions[EXTENSION_NAME]) {
22
- const ext = texDef.extensions[EXTENSION_NAME];
23
- const prop = new NEEDLE_progressive_texture_settings_property(this.document.getGraph(), "");
24
- Object.assign(prop, ext);
25
- let textureIndex = i - offset;
26
- const key = ext.guid;
27
- if (textureMap.has(key)) {
28
- // we keep a track of the index offset assuming gltf-transform textures order is the same as the texture definition order. This is by no means *not* bullet-proof but I'm not sure how to do it properly right now
29
- // Perhaps we could try to find the texture with the same image source binary array as defined in the texture definition but this would also not be perfect I think...
30
- // TODO: find a better way to handle texture definition count and texture count mismatch due to a texture being used in multiple slots (where gltf-transform optimizes the texture list and removes duplicates)
31
- offset += 1;
32
- // textureIndex = textureMap.get(key);
33
- console.log(`INFO: Progressive texture extension was ${i} already found...`);
34
- continue;
35
- }
36
- else {
37
- textureMap.set(key, textureIndex);
38
- }
39
- const tex = textures[textureIndex];
40
- if (tex)
41
- tex.setExtension(EXTENSION_NAME, prop);
42
- else {
43
- // console.log(textureDefinitions)
44
- console.warn(`WARN: Progressive texture at index ${i} was not found in the glTF file. This might result in falsely loaded textures for ${ext.guid} / name \"${texDef.name}\"`);
45
- // if(debug)
46
- // throw new Error(`Progressive texture at index ${i} was not found in the glTF file.`)
47
- }
48
- }
49
- }
50
- return this;
51
- }
52
- write(context) {
53
- return this;
54
- }
55
- }
56
- export class NEEDLE_progressive_texture_settings_property extends ExtensionProperty {
57
- static EXTENSION_NAME = EXTENSION_NAME;
58
- extensionName = EXTENSION_NAME;
59
- parentTypes = [PropertyType.TEXTURE];
60
- propertyType = EXTENSION_NAME;
61
- init() { }
62
- get isValid() {
63
- return this.maxSize !== undefined && this.maxSize > 0;
64
- }
65
- maxSize;
66
- guid;
67
- }
1
+ import { Extension, ExtensionProperty, PropertyType } from "@gltf-transform/core";
2
+ // TODO: rename to NEEDLE_progressive_texture
3
+ const EXTENSION_NAME = "NEEDLE_progressive_texture_settings";
4
+ export class NEEDLE_progressive_texture_settings extends Extension {
5
+ static EXTENSION_NAME = EXTENSION_NAME;
6
+ extensionName = EXTENSION_NAME;
7
+ read(context) {
8
+ const textureDefinitions = context.jsonDoc.json.textures;
9
+ if (!textureDefinitions)
10
+ return this;
11
+ const root = this.document.getRoot();
12
+ const textures = root.listTextures();
13
+ /**
14
+ * If a texture is used in multiple slots it only appears once in the gltf-transform list
15
+ * So we have to store the key and the index of the texture in the list
16
+ */
17
+ const textureMap = new Map();
18
+ let offset = 0;
19
+ for (let i = 0; i < textureDefinitions.length; i++) {
20
+ const texDef = textureDefinitions[i];
21
+ if (texDef.extensions && texDef.extensions[EXTENSION_NAME]) {
22
+ const ext = texDef.extensions[EXTENSION_NAME];
23
+ const prop = new NEEDLE_progressive_texture_settings_property(this.document.getGraph(), "");
24
+ Object.assign(prop, ext);
25
+ let textureIndex = i - offset;
26
+ const key = ext.guid;
27
+ if (textureMap.has(key)) {
28
+ // we keep a track of the index offset assuming gltf-transform textures order is the same as the texture definition order. This is by no means *not* bullet-proof but I'm not sure how to do it properly right now
29
+ // Perhaps we could try to find the texture with the same image source binary array as defined in the texture definition but this would also not be perfect I think...
30
+ // TODO: find a better way to handle texture definition count and texture count mismatch due to a texture being used in multiple slots (where gltf-transform optimizes the texture list and removes duplicates)
31
+ offset += 1;
32
+ // textureIndex = textureMap.get(key);
33
+ console.log(`INFO: Progressive texture extension was ${i} already found...`);
34
+ continue;
35
+ }
36
+ else {
37
+ textureMap.set(key, textureIndex);
38
+ }
39
+ const tex = textures[textureIndex];
40
+ if (tex)
41
+ tex.setExtension(EXTENSION_NAME, prop);
42
+ else {
43
+ // console.log(textureDefinitions)
44
+ console.warn(`WARN: Progressive texture at index ${i} was not found in the glTF file. This might result in falsely loaded textures for ${ext.guid} / name \"${texDef.name}\"`);
45
+ // if(debug)
46
+ // throw new Error(`Progressive texture at index ${i} was not found in the glTF file.`)
47
+ }
48
+ }
49
+ }
50
+ return this;
51
+ }
52
+ write(context) {
53
+ return this;
54
+ }
55
+ }
56
+ export class NEEDLE_progressive_texture_settings_property extends ExtensionProperty {
57
+ static EXTENSION_NAME = EXTENSION_NAME;
58
+ extensionName = EXTENSION_NAME;
59
+ parentTypes = [PropertyType.TEXTURE];
60
+ propertyType = EXTENSION_NAME;
61
+ init() { }
62
+ get isValid() {
63
+ return this.maxSize !== undefined && this.maxSize > 0;
64
+ }
65
+ maxSize;
66
+ guid;
67
+ }
@@ -1,7 +1,7 @@
1
- export * from "./NEEDLE_opaque/index.js";
2
- export * from "./NEEDLE_mesh_compression/index.js";
3
- export * from "./NEEDLE_compression_texture/index.js";
4
- export * from "./NEEDLE_progressive/index.js";
5
- export * from "./NEEDLE_progressive_texture_settings/index.js";
6
- export * from "./NEEDLE_progressive_mesh_settings/index.js";
7
- export declare function registerExtensions(node: any): void;
1
+ export * from "./NEEDLE_opaque/index.js";
2
+ export * from "./NEEDLE_mesh_compression/index.js";
3
+ export * from "./NEEDLE_compression_texture/index.js";
4
+ export * from "./NEEDLE_progressive/index.js";
5
+ export * from "./NEEDLE_progressive_texture_settings/index.js";
6
+ export * from "./NEEDLE_progressive_mesh_settings/index.js";
7
+ export declare function registerExtensions(node: any): void;