threenative-asset-mcp 0.9.3 → 0.9.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.
- package/README.md +3 -1
- package/dist/bundle/client.d.ts +2 -0
- package/dist/bundle/client.d.ts.map +1 -1
- package/dist/bundle/client.js +6 -0
- package/dist/bundle/client.js.map +1 -1
- package/dist/download/direct-asset-downloader.d.ts +3 -0
- package/dist/download/direct-asset-downloader.d.ts.map +1 -1
- package/dist/download/direct-asset-downloader.js +4 -1
- package/dist/download/direct-asset-downloader.js.map +1 -1
- package/dist/fab/api-download.d.ts.map +1 -1
- package/dist/fab/api-download.js +5 -1
- package/dist/fab/api-download.js.map +1 -1
- package/dist/fab/client.d.ts.map +1 -1
- package/dist/fab/client.js +5 -10
- package/dist/fab/client.js.map +1 -1
- package/dist/fab/direct-transport.d.ts +3 -0
- package/dist/fab/direct-transport.d.ts.map +1 -1
- package/dist/fab/direct-transport.js.map +1 -1
- package/dist/fab/download-store.d.ts.map +1 -1
- package/dist/fab/download-store.js +6 -0
- package/dist/fab/download-store.js.map +1 -1
- package/dist/fab/fabcli.d.ts +1 -1
- package/dist/fab/fabcli.d.ts.map +1 -1
- package/dist/fab/fabcli.js +12 -3
- package/dist/fab/fabcli.js.map +1 -1
- package/dist/gltf-size.d.ts +19 -0
- package/dist/gltf-size.d.ts.map +1 -0
- package/dist/gltf-size.js +33 -0
- package/dist/gltf-size.js.map +1 -0
- package/dist/server.js +5 -5
- package/dist/server.js.map +1 -1
- package/dist/tools/bundle.d.ts +10 -0
- package/dist/tools/bundle.d.ts.map +1 -1
- package/dist/tools/bundle.js +6 -0
- package/dist/tools/bundle.js.map +1 -1
- package/dist/tools/direct-download.d.ts +10 -0
- package/dist/tools/direct-download.d.ts.map +1 -1
- package/dist/tools/direct-download.js +7 -0
- package/dist/tools/direct-download.js.map +1 -1
- package/dist/tools/download-free-asset.d.ts +10 -0
- package/dist/tools/download-free-asset.d.ts.map +1 -1
- package/dist/tools/download-free-asset.js +6 -0
- package/dist/tools/download-free-asset.js.map +1 -1
- package/dist/tools/import-unreal.d.ts +40 -0
- package/dist/tools/import-unreal.d.ts.map +1 -1
- package/dist/tools/import-unreal.js +13 -0
- package/dist/tools/import-unreal.js.map +1 -1
- package/dist/tools/list-filters.d.ts +1 -15
- package/dist/tools/list-filters.d.ts.map +1 -1
- package/dist/tools/list-filters.js +1 -3
- package/dist/tools/list-filters.js.map +1 -1
- package/dist/tools/search-assets.d.ts +2 -4
- package/dist/tools/search-assets.d.ts.map +1 -1
- package/dist/tools/search-assets.js +1 -2
- package/dist/tools/search-assets.js.map +1 -1
- package/dist/unreal/cooking.d.ts +7 -0
- package/dist/unreal/cooking.d.ts.map +1 -1
- package/dist/unreal/cooking.js +101 -62
- package/dist/unreal/cooking.js.map +1 -1
- package/dist/unreal/importer.d.ts +3 -1
- package/dist/unreal/importer.d.ts.map +1 -1
- package/dist/unreal/importer.js +129 -59
- package/dist/unreal/importer.js.map +1 -1
- package/dist/unreal/scenes.d.ts +7 -0
- package/dist/unreal/scenes.d.ts.map +1 -1
- package/dist/unreal/scenes.js +13 -1
- package/dist/unreal/scenes.js.map +1 -1
- package/dist/unreal/toolchain.d.ts.map +1 -1
- package/dist/unreal/toolchain.js +11 -1
- package/dist/unreal/toolchain.js.map +1 -1
- package/package.json +1 -1
- package/dist/polyhaven/pack.d.ts +0 -53
- package/dist/polyhaven/pack.d.ts.map +0 -1
- package/dist/polyhaven/pack.js +0 -104
- package/dist/polyhaven/pack.js.map +0 -1
- package/dist/tools/polyhaven-import.d.ts +0 -58
- package/dist/tools/polyhaven-import.d.ts.map +0 -1
- package/dist/tools/polyhaven-import.js +0 -121
- package/dist/tools/polyhaven-import.js.map +0 -1
package/dist/unreal/cooking.js
CHANGED
|
@@ -17,82 +17,121 @@ const EDITOR_ONLY_MARKERS = Object.freeze([
|
|
|
17
17
|
"RawMeshBulkData",
|
|
18
18
|
"MeshDescriptionBulkData",
|
|
19
19
|
]);
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
/** What a file that is not a readable package reports: no signal, never a negative one. */
|
|
21
|
+
const UNKNOWN = Object.freeze({
|
|
22
|
+
state: "unknown",
|
|
23
|
+
markers: [],
|
|
24
|
+
legacyFileVersion: undefined,
|
|
25
|
+
fileVersionUE4: undefined,
|
|
26
|
+
fileVersionUE5: undefined,
|
|
27
|
+
naniteHint: false,
|
|
28
|
+
meshKindHint: undefined,
|
|
29
|
+
textureHint: false,
|
|
30
|
+
cubemapHint: false,
|
|
31
|
+
soundHint: false,
|
|
32
|
+
dataClassHint: undefined,
|
|
33
|
+
textureStackClassHint: undefined,
|
|
34
|
+
fontHint: false,
|
|
35
|
+
materialHint: false,
|
|
36
|
+
levelHint: false,
|
|
37
|
+
blueprintPrefabHint: false,
|
|
38
|
+
});
|
|
39
|
+
/** Reads the bounded prefix of one package, or undefined when it cannot be read. */
|
|
40
|
+
async function readHead(file) {
|
|
27
41
|
let handle;
|
|
28
42
|
try {
|
|
29
43
|
handle = await open(file, "r");
|
|
30
44
|
}
|
|
31
45
|
catch {
|
|
32
|
-
return
|
|
46
|
+
return undefined;
|
|
33
47
|
}
|
|
34
48
|
try {
|
|
35
49
|
const buffer = Buffer.alloc(PREFIX_BYTES);
|
|
36
50
|
const { bytesRead } = await handle.read(buffer, 0, PREFIX_BYTES, 0);
|
|
37
|
-
|
|
38
|
-
return { state: "unknown", markers: [], legacyFileVersion: undefined, fileVersionUE4: undefined, meshKindHint: undefined, textureHint: false, cubemapHint: false, soundHint: false, dataClassHint: undefined, textureStackClassHint: undefined, fontHint: false, materialHint: false, levelHint: false, blueprintPrefabHint: false };
|
|
39
|
-
const head = buffer.subarray(0, bytesRead);
|
|
40
|
-
if (head.readUInt32LE(0) !== PACKAGE_MAGIC) {
|
|
41
|
-
return { state: "unknown", markers: [], legacyFileVersion: undefined, fileVersionUE4: undefined, meshKindHint: undefined, textureHint: false, cubemapHint: false, soundHint: false, dataClassHint: undefined, textureStackClassHint: undefined, fontHint: false, materialHint: false, levelHint: false, blueprintPrefabHint: false };
|
|
42
|
-
}
|
|
43
|
-
// Names are stored as length-prefixed ASCII, so a byte search finds them without walking the
|
|
44
|
-
// name table — whose layout varies by engine version in ways this check must not depend on.
|
|
45
|
-
const markers = EDITOR_ONLY_MARKERS.filter((marker) => head.includes(marker, 0, "latin1"));
|
|
46
|
-
const legacyFileVersion = head.readInt32LE(4);
|
|
47
|
-
const hasSkeletalClass = head.includes("SkeletalMesh", 0, "latin1");
|
|
48
|
-
const hasSkeletalEditorData = head.includes("SkeletalMeshEditorData", 0, "latin1") ||
|
|
49
|
-
head.includes("MeshEditorDataObject", 0, "latin1");
|
|
50
|
-
const hasStaticClass = head.includes("StaticMesh", 0, "latin1");
|
|
51
|
-
const hasDefaultSkeletalClass = head.includes("Default__SkeletalMesh", 0, "latin1");
|
|
52
|
-
const hasDefaultStaticClass = head.includes("Default__StaticMesh", 0, "latin1");
|
|
53
|
-
const hasTextureClass = head.includes("Texture2D", 0, "latin1");
|
|
54
|
-
const hasCubemapClass = head.includes("TextureCube", 0, "latin1");
|
|
55
|
-
const hasSoundClass = head.includes("SoundWave", 0, "latin1");
|
|
56
|
-
const dataClassHint = ["DataTable", "CurveTable", "StringTable", "CurveFloat", "CurveVector", "CurveLinearColor"]
|
|
57
|
-
.find((className) => head.includes(`Default__${className}`, 0, "latin1"));
|
|
58
|
-
const textureStackClassHint = ["Texture2DArray", "TextureCubeArray", "VolumeTexture"]
|
|
59
|
-
.find((className) => head.includes(`Default__${className}`, 0, "latin1"));
|
|
60
|
-
const fontHint = head.includes("Default__FontFace", 0, "latin1") ||
|
|
61
|
-
(head.includes("FontBulkData", 0, "latin1") && head.includes("CompositeFont", 0, "latin1"));
|
|
62
|
-
const materialHint = head.includes("MaterialEditorOnlyData", 0, "latin1") ||
|
|
63
|
-
(head.includes("MaterialInstanceBasePropertyOverrides", 0, "latin1") && head.includes("MaterialInstanceConstant", 0, "latin1"));
|
|
64
|
-
const levelHint = file.toLowerCase().endsWith(".umap") &&
|
|
65
|
-
head.includes("PersistentLevel", 0, "latin1") && head.includes("WorldSettings", 0, "latin1");
|
|
66
|
-
const blueprintPrefabHint = file.toLowerCase().endsWith(".uasset") &&
|
|
67
|
-
head.includes("BlueprintGeneratedClass", 0, "latin1") && head.includes("SimpleConstructionScript", 0, "latin1");
|
|
68
|
-
return {
|
|
69
|
-
state: markers.length > 0 ? "uncooked" : "unknown",
|
|
70
|
-
markers,
|
|
71
|
-
legacyFileVersion,
|
|
72
|
-
fileVersionUE4: head.readInt32LE(12),
|
|
73
|
-
meshKindHint: hasSkeletalClass && (hasSkeletalEditorData || (legacyFileVersion <= -8 && hasDefaultSkeletalClass))
|
|
74
|
-
? "skeletal"
|
|
75
|
-
: hasStaticClass &&
|
|
76
|
-
(markers.some((marker) => marker === "SourceModels" || marker === "MeshDescriptionBulkData") ||
|
|
77
|
-
(legacyFileVersion <= -8 && hasDefaultStaticClass))
|
|
78
|
-
? "static"
|
|
79
|
-
: undefined,
|
|
80
|
-
textureHint: hasTextureClass && markers.includes("AssetImportData"),
|
|
81
|
-
cubemapHint: hasCubemapClass && markers.includes("AssetImportData"),
|
|
82
|
-
soundHint: hasSoundClass && markers.includes("AssetImportData"),
|
|
83
|
-
dataClassHint,
|
|
84
|
-
textureStackClassHint,
|
|
85
|
-
fontHint,
|
|
86
|
-
materialHint,
|
|
87
|
-
levelHint,
|
|
88
|
-
blueprintPrefabHint,
|
|
89
|
-
};
|
|
51
|
+
return bytesRead >= 16 ? buffer.subarray(0, bytesRead) : undefined;
|
|
90
52
|
}
|
|
91
53
|
catch {
|
|
92
|
-
return
|
|
54
|
+
return undefined;
|
|
93
55
|
}
|
|
94
56
|
finally {
|
|
95
57
|
await handle.close();
|
|
96
58
|
}
|
|
97
59
|
}
|
|
60
|
+
/** Object names a package names in the name and import tables at its head: the packages it
|
|
61
|
+
* references, such as a static mesh's materials and textures. Those are separate files on disk. */
|
|
62
|
+
export async function readPackageObjectNames(file) {
|
|
63
|
+
const head = await readHead(file);
|
|
64
|
+
const names = new Set();
|
|
65
|
+
if (!head)
|
|
66
|
+
return names;
|
|
67
|
+
for (const match of head.toString("latin1").matchAll(/[\x20-\x7e]{4,}/g)) {
|
|
68
|
+
for (const token of match[0].split(/[^\w]+/)) {
|
|
69
|
+
if (token.length >= 4 && token.length <= 200)
|
|
70
|
+
names.add(token);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return names;
|
|
74
|
+
}
|
|
75
|
+
/** Reads a bounded prefix of one Unreal package and reports whether it is uncooked editor source.
|
|
76
|
+
*
|
|
77
|
+
* This exists because the failure it detects is otherwise invisible until far too late: `umodel
|
|
78
|
+
* -list` happily reports `StaticMesh` for an uncooked package, so classification passes, and only
|
|
79
|
+
* the export produces nothing — after the whole pack has been downloaded and every package walked.
|
|
80
|
+
* A Fab marketplace pack is Unreal *source*, so this is the common case, not the exotic one. */
|
|
81
|
+
export async function readPackageCooking(file) {
|
|
82
|
+
const head = await readHead(file);
|
|
83
|
+
if (!head || head.readUInt32LE(0) !== PACKAGE_MAGIC)
|
|
84
|
+
return UNKNOWN;
|
|
85
|
+
// Names are stored as length-prefixed ASCII, so a byte search finds them without walking the
|
|
86
|
+
// name table — whose layout varies by engine version in ways this check must not depend on.
|
|
87
|
+
const markers = EDITOR_ONLY_MARKERS.filter((marker) => head.includes(marker, 0, "latin1"));
|
|
88
|
+
const legacyFileVersion = head.readInt32LE(4);
|
|
89
|
+
const hasSkeletalClass = head.includes("SkeletalMesh", 0, "latin1");
|
|
90
|
+
const hasSkeletalEditorData = head.includes("SkeletalMeshEditorData", 0, "latin1") ||
|
|
91
|
+
head.includes("MeshEditorDataObject", 0, "latin1");
|
|
92
|
+
const hasStaticClass = head.includes("StaticMesh", 0, "latin1");
|
|
93
|
+
const hasDefaultSkeletalClass = head.includes("Default__SkeletalMesh", 0, "latin1");
|
|
94
|
+
const hasDefaultStaticClass = head.includes("Default__StaticMesh", 0, "latin1");
|
|
95
|
+
const hasTextureClass = head.includes("Texture2D", 0, "latin1");
|
|
96
|
+
const hasCubemapClass = head.includes("TextureCube", 0, "latin1");
|
|
97
|
+
const hasSoundClass = head.includes("SoundWave", 0, "latin1");
|
|
98
|
+
const dataClassHint = ["DataTable", "CurveTable", "StringTable", "CurveFloat", "CurveVector", "CurveLinearColor"]
|
|
99
|
+
.find((className) => head.includes(`Default__${className}`, 0, "latin1"));
|
|
100
|
+
const textureStackClassHint = ["Texture2DArray", "TextureCubeArray", "VolumeTexture"]
|
|
101
|
+
.find((className) => head.includes(`Default__${className}`, 0, "latin1"));
|
|
102
|
+
const fontHint = head.includes("Default__FontFace", 0, "latin1") ||
|
|
103
|
+
(head.includes("FontBulkData", 0, "latin1") && head.includes("CompositeFont", 0, "latin1"));
|
|
104
|
+
const materialHint = head.includes("MaterialEditorOnlyData", 0, "latin1") ||
|
|
105
|
+
(head.includes("MaterialInstanceBasePropertyOverrides", 0, "latin1") && head.includes("MaterialInstanceConstant", 0, "latin1"));
|
|
106
|
+
const levelHint = file.toLowerCase().endsWith(".umap") &&
|
|
107
|
+
head.includes("PersistentLevel", 0, "latin1") && head.includes("WorldSettings", 0, "latin1");
|
|
108
|
+
const blueprintPrefabHint = file.toLowerCase().endsWith(".uasset") &&
|
|
109
|
+
head.includes("BlueprintGeneratedClass", 0, "latin1") && head.includes("SimpleConstructionScript", 0, "latin1");
|
|
110
|
+
return {
|
|
111
|
+
state: markers.length > 0 ? "uncooked" : "unknown",
|
|
112
|
+
markers,
|
|
113
|
+
legacyFileVersion,
|
|
114
|
+
fileVersionUE4: head.readInt32LE(12),
|
|
115
|
+
// A UE4 header carries no UE5 version at this offset: it holds FileVersionLicenseeUE4, which is
|
|
116
|
+
// a licensee build number. Only a negative legacy version marks the UE5 header layout.
|
|
117
|
+
fileVersionUE5: legacyFileVersion <= -8 ? head.readInt32LE(16) : undefined,
|
|
118
|
+
naniteHint: head.includes("NaniteSettings", 0, "latin1"),
|
|
119
|
+
meshKindHint: hasSkeletalClass && (hasSkeletalEditorData || (legacyFileVersion <= -8 && hasDefaultSkeletalClass))
|
|
120
|
+
? "skeletal"
|
|
121
|
+
: hasStaticClass &&
|
|
122
|
+
(markers.some((marker) => marker === "SourceModels" || marker === "MeshDescriptionBulkData") ||
|
|
123
|
+
(legacyFileVersion <= -8 && hasDefaultStaticClass))
|
|
124
|
+
? "static"
|
|
125
|
+
: undefined,
|
|
126
|
+
textureHint: hasTextureClass && markers.includes("AssetImportData"),
|
|
127
|
+
cubemapHint: hasCubemapClass && markers.includes("AssetImportData"),
|
|
128
|
+
soundHint: hasSoundClass && markers.includes("AssetImportData"),
|
|
129
|
+
dataClassHint,
|
|
130
|
+
textureStackClassHint,
|
|
131
|
+
fontHint,
|
|
132
|
+
materialHint,
|
|
133
|
+
levelHint,
|
|
134
|
+
blueprintPrefabHint,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
98
137
|
//# sourceMappingURL=cooking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cooking.js","sourceRoot":"","sources":["../../src/unreal/cooking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,kGAAkG;AAClG,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC;;gEAEgE;AAChE,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC;AAEhC;;;;+DAI+D;AAC/D,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,kBAAkB;IAClB,iBAAiB;IACjB,cAAc;IACd,iBAAiB;IACjB,yBAAyB;CAC1B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cooking.js","sourceRoot":"","sources":["../../src/unreal/cooking.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { type TextureTransform } from "./materials.js";
|
|
|
3
3
|
import { type ImportedScene } from "./scenes.js";
|
|
4
4
|
import { type ExternalTool } from "./toolchain.js";
|
|
5
5
|
/** Bumped whenever the conversion contract changes; it participates in the reuse cache key. */
|
|
6
|
-
export declare const IMPORTER_VERSION =
|
|
6
|
+
export declare const IMPORTER_VERSION = 46;
|
|
7
7
|
/** Which tool decodes an uncooked mesh package, or undefined when it must be refused. */
|
|
8
8
|
export declare function uncookedMeshRoute(meshKind: "static" | "skeletal", fileVersionUE4: number | undefined): "umodel" | "mesh-description" | "modern" | undefined;
|
|
9
9
|
export type ImportErrorCode = "UNREAL_SOURCE_NOT_FOUND" | "UNREAL_SOURCE_EMPTY" | "UNREAL_OUTPUT_INVALID" | "UNREAL_OUTPUT_COLLISION" | "UNREAL_DISK_SPACE" | "UNREAL_EXPORT_EMPTY" | "UNREAL_SOURCE_UNCOOKED" | "UNREAL_SOURCE_UNSUPPORTED" | "UNREAL_GLB_INVALID";
|
|
@@ -276,6 +276,8 @@ export interface ImportUnrealRequest {
|
|
|
276
276
|
readonly concurrency?: number;
|
|
277
277
|
readonly keepStaging?: boolean;
|
|
278
278
|
readonly environment?: NodeJS.ProcessEnv;
|
|
279
|
+
/** Free bytes reported for every volume the pre-flight measures. Injected by tests. */
|
|
280
|
+
readonly freeSpaceBytes?: number | undefined;
|
|
279
281
|
readonly log?: (message: string) => void;
|
|
280
282
|
readonly umodel?: ExternalTool;
|
|
281
283
|
/** Injected by tests or advanced installations; production provisions the pinned converter. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../src/unreal/importer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../src/unreal/importer.ts"],"names":[],"mappings":"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"}
|
package/dist/unreal/importer.js
CHANGED
|
@@ -8,7 +8,7 @@ import { Document, NodeIO, VertexLayout } from "@gltf-transform/core";
|
|
|
8
8
|
import { EXTMeshGPUInstancing, KHRLightsPunctual, KHRMaterialsUnlit } from "@gltf-transform/extensions";
|
|
9
9
|
import { attachPsaAnimations, parsePsa } from "./psa.js";
|
|
10
10
|
import { resolveMaterial, } from "./materials.js";
|
|
11
|
-
import { readPackageCooking } from "./cooking.js";
|
|
11
|
+
import { readPackageCooking, readPackageObjectNames } from "./cooking.js";
|
|
12
12
|
import { extractUnrealFonts } from "./fonts.js";
|
|
13
13
|
import { parseOfflineFontDescriptor, writeOfflineFont } from "./bitmap-fonts.js";
|
|
14
14
|
import { paperObjectPathToPackage, parsePaperFlipbookDescriptor, parsePaperSpriteDescriptor, writePaperSpriteGlb, } from "./paper2d.js";
|
|
@@ -18,7 +18,7 @@ import { assembleSceneGlb, parseUnrealSceneSource, } from "./scenes.js";
|
|
|
18
18
|
import { ToolchainError, assertSupportedHost, runBounded } from "./toolchain.js";
|
|
19
19
|
const statfsAsync = promisify(statfs);
|
|
20
20
|
/** Bumped whenever the conversion contract changes; it participates in the reuse cache key. */
|
|
21
|
-
export const IMPORTER_VERSION =
|
|
21
|
+
export const IMPORTER_VERSION = 46;
|
|
22
22
|
/** First and last UE4 object versions whose uncooked StaticMesh source models are FMeshDescription
|
|
23
23
|
* bulk data (UE4.25–4.27), which only the engine-free converter reads. Below that window UE Viewer
|
|
24
24
|
* reads uncooked source geometry itself, static and skeletal alike: verified on FAB packs saved at
|
|
@@ -846,7 +846,9 @@ export function inspectWebAudio(data) {
|
|
|
846
846
|
}
|
|
847
847
|
return undefined;
|
|
848
848
|
}
|
|
849
|
-
async function freeBytes(path) {
|
|
849
|
+
async function freeBytes(path, override) {
|
|
850
|
+
if (override !== undefined)
|
|
851
|
+
return override;
|
|
850
852
|
try {
|
|
851
853
|
const info = await statfsAsync(path);
|
|
852
854
|
return Number(info.bavail) * Number(info.bsize);
|
|
@@ -855,6 +857,66 @@ async function freeBytes(path) {
|
|
|
855
857
|
return Number.POSITIVE_INFINITY;
|
|
856
858
|
}
|
|
857
859
|
}
|
|
860
|
+
/** `Foo.uasset` is accompanied by `Foo.uexp`, `Foo.ubulk`, and `Foo.uptnl`; a partial import
|
|
861
|
+
* reads every file of the stem it converts, and only files of that stem. */
|
|
862
|
+
function packageStem(file) {
|
|
863
|
+
return join(dirname(file), basename(file, extname(file)));
|
|
864
|
+
}
|
|
865
|
+
/** Source bytes a filtered import will actually read: the requested packages, their sidecars, and
|
|
866
|
+
* the packages they name in their import tables — a mesh's materials and textures are separate
|
|
867
|
+
* packages and hold most of a pack's bytes. Counting the whole tree instead refuses every
|
|
868
|
+
* partial import on a full volume, and counting only the requested `.uasset` would let an import
|
|
869
|
+
* start that cannot finish. */
|
|
870
|
+
async function importedPackageBytes(files, wanted) {
|
|
871
|
+
const groups = new Map();
|
|
872
|
+
for (const file of files) {
|
|
873
|
+
const stem = packageStem(file.path);
|
|
874
|
+
const group = groups.get(stem) ?? { primary: file.path, bytes: 0 };
|
|
875
|
+
group.bytes += file.size;
|
|
876
|
+
if ([".uasset", ".umap"].includes(extname(file.path).toLowerCase()))
|
|
877
|
+
group.primary = file.path;
|
|
878
|
+
groups.set(stem, group);
|
|
879
|
+
}
|
|
880
|
+
const stemsByName = new Map();
|
|
881
|
+
for (const stem of groups.keys()) {
|
|
882
|
+
const name = basename(stem);
|
|
883
|
+
stemsByName.set(name, [...(stemsByName.get(name) ?? []), stem]);
|
|
884
|
+
}
|
|
885
|
+
let total = 0;
|
|
886
|
+
const counted = new Set();
|
|
887
|
+
let frontier = [...groups.keys()].filter((stem) => wanted.has(basename(stem)));
|
|
888
|
+
while (frontier.length > 0) {
|
|
889
|
+
const next = [];
|
|
890
|
+
for (const stem of frontier) {
|
|
891
|
+
counted.add(stem);
|
|
892
|
+
total += groups.get(stem).bytes;
|
|
893
|
+
// ponytail: a bounded byte scan for names, not a parsed import table. A name that merely
|
|
894
|
+
// shares a string with the package counts its bytes; a name in another encoding does not.
|
|
895
|
+
for (const name of await readPackageObjectNames(groups.get(stem).primary)) {
|
|
896
|
+
for (const referenced of stemsByName.get(name) ?? []) {
|
|
897
|
+
if (counted.has(referenced))
|
|
898
|
+
continue;
|
|
899
|
+
next.push(referenced);
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
frontier = next;
|
|
904
|
+
}
|
|
905
|
+
return total;
|
|
906
|
+
}
|
|
907
|
+
/**
|
|
908
|
+
* Why the modern converter produced nothing, in the terms that decide the next move: what it
|
|
909
|
+
* printed (its last lines, not only the one it exits on), which engine wrote the package, and
|
|
910
|
+
* whether the mesh is Nanite — the commonest reason a UE5 editor mesh has no render data.
|
|
911
|
+
*/
|
|
912
|
+
function describeModernFailure(stderr, packages) {
|
|
913
|
+
const lines = stderr.trim().split(/\r?\n/).filter((line) => line.trim()).slice(-20);
|
|
914
|
+
const versions = packages.map(({ entry, legacyFileVersion, fileVersionUE4, fileVersionUE5, naniteHint }) => `${entry.package} is ${legacyFileVersion !== undefined && legacyFileVersion <= -8 ? "UE5" : "UE4"} (legacy file version ${legacyFileVersion ?? "unknown"}), UE4 object version ${fileVersionUE4 ?? "unknown"}, UE5 object version ${fileVersionUE5 ?? "unknown"}; Nanite: ${naniteHint ? "likely (NaniteSettings present)" : "not detected"}`);
|
|
915
|
+
return [
|
|
916
|
+
...versions,
|
|
917
|
+
...(lines.length > 0 ? [`Converter output (last ${lines.length} lines):`, ...lines.map((line) => ` ${line.trim()}`)] : []),
|
|
918
|
+
].join(" ");
|
|
919
|
+
}
|
|
858
920
|
/**
|
|
859
921
|
* Converts a local Unreal asset directory into self-contained source GLBs plus a provenance
|
|
860
922
|
* report. Provider-independent: a pack downloaded by FabCLI and one unzipped by hand take the
|
|
@@ -885,6 +947,11 @@ export async function importUnrealDirectory(request) {
|
|
|
885
947
|
throw new ImportError("UNREAL_SOURCE_EMPTY", `"${sourceDir}" contains no .uasset or .umap files.`);
|
|
886
948
|
}
|
|
887
949
|
const totalBytes = files.reduce((sum, file) => sum + file.size, 0);
|
|
950
|
+
// Only a single-package request is actually filtered: both converters take `--filter` for one
|
|
951
|
+
// package alone and convert the whole tree otherwise, so two or more still need the whole tree.
|
|
952
|
+
const neededBytes = request.onlyPackages?.length === 1 && request.onlyPackages[0]
|
|
953
|
+
? await importedPackageBytes(files, new Set(request.onlyPackages))
|
|
954
|
+
: totalBytes;
|
|
888
955
|
const sourceHash = await hashSourceTree(sourceDir, files);
|
|
889
956
|
const umodel = request.umodel ?? (await ensureUmodel(environment, log));
|
|
890
957
|
const cacheKey = createHash("sha256")
|
|
@@ -931,17 +998,17 @@ export async function importUnrealDirectory(request) {
|
|
|
931
998
|
// Unbounded scene assembly can temporarily hold model GLBs plus a source-sized aggregate GLB.
|
|
932
999
|
// Staging and output may be different volumes, so checking only the cache volume is insufficient.
|
|
933
1000
|
const minimum = 2 * 1024 ** 3;
|
|
934
|
-
const stagingRequired =
|
|
935
|
-
const outputRequired =
|
|
1001
|
+
const stagingRequired = neededBytes;
|
|
1002
|
+
const outputRequired = neededBytes * (request.maxTextureSize === undefined ? 2 : 1);
|
|
936
1003
|
const stagingDevice = (await stat(staging)).dev;
|
|
937
1004
|
const outputDevice = (await stat(promotionParent)).dev;
|
|
938
1005
|
const required = Math.max(stagingDevice === outputDevice ? stagingRequired + outputRequired : outputRequired, minimum);
|
|
939
|
-
const available = await freeBytes(promotionParent);
|
|
1006
|
+
const available = await freeBytes(promotionParent, request.freeSpaceBytes);
|
|
940
1007
|
if (available < required) {
|
|
941
1008
|
throw new ImportError("UNREAL_DISK_SPACE", `The import needs about ${Math.ceil(required / 1024 ** 3)} GiB on the output volume; ${Math.floor(available / 1024 ** 3)} GiB is free at ${promotionParent}. Use --max-texture-size or choose an output on a larger volume.`);
|
|
942
1009
|
}
|
|
943
1010
|
if (stagingDevice !== outputDevice) {
|
|
944
|
-
const stagingAvailable = await freeBytes(staging);
|
|
1011
|
+
const stagingAvailable = await freeBytes(staging, request.freeSpaceBytes);
|
|
945
1012
|
const separateStagingRequired = Math.max(stagingRequired, minimum);
|
|
946
1013
|
if (stagingAvailable < separateStagingRequired) {
|
|
947
1014
|
throw new ImportError("UNREAL_DISK_SPACE", `The import needs about ${Math.ceil(separateStagingRequired / 1024 ** 3)} GiB of staging space; ${Math.floor(stagingAvailable / 1024 ** 3)} GiB is free at ${staging}.`);
|
|
@@ -1182,45 +1249,29 @@ export async function importUnrealDirectory(request) {
|
|
|
1182
1249
|
const versions = [...new Set(unsupportedUncooked.map((entry) => entry.fileVersionUE4 ?? "unknown"))];
|
|
1183
1250
|
throw new ImportError("UNREAL_SOURCE_UNSUPPORTED", `${unsupportedUncooked.length} uncooked static-mesh package${unsupportedUncooked.length === 1 ? " uses" : "s use"} UE4 object version ${versions.join(", ")}. UE Viewer reads versions below 517 and the engine-free MeshDescription path reads 517–522 (UE4.25–4.27-era source assets); refusing to guess at a different binary layout.`);
|
|
1184
1251
|
}
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1252
|
+
/** UE Viewer's mesh export, in one place: the primary route for a mesh package, and the retry
|
|
1253
|
+
* for one the modern converter could not read. Returns the reason it failed, or undefined. */
|
|
1254
|
+
const exportMeshWithUmodel = async (entry, out) => {
|
|
1255
|
+
const run = () => runBounded(umodel.path, [`-path=${sourceDir}`, "-export", "-gltf", "-png", "-nooverwrite", `-out=${out}`, entry.selector], { timeoutMs: 1_800_000, maxOutputBytes: 32 * 1024 * 1024 });
|
|
1189
1256
|
try {
|
|
1190
|
-
let run = await runBounded(umodel.path, [
|
|
1191
|
-
`-path=${sourceDir}`,
|
|
1192
|
-
"-export",
|
|
1193
|
-
"-gltf",
|
|
1194
|
-
"-png",
|
|
1195
|
-
"-nooverwrite",
|
|
1196
|
-
`-out=${raw}`,
|
|
1197
|
-
entry.selector,
|
|
1198
|
-
], { timeoutMs: 1_800_000, maxOutputBytes: 32 * 1024 * 1024 });
|
|
1199
1257
|
// UE Viewer occasionally exits non-zero for one package under filesystem pressure even
|
|
1200
1258
|
// though the same read-only export succeeds immediately afterward. One bounded retry keeps
|
|
1201
1259
|
// a transient process failure from silently removing a mesh from an otherwise valid pack.
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
"-gltf",
|
|
1207
|
-
"-png",
|
|
1208
|
-
"-nooverwrite",
|
|
1209
|
-
`-out=${raw}`,
|
|
1210
|
-
entry.selector,
|
|
1211
|
-
], { timeoutMs: 1_800_000, maxOutputBytes: 32 * 1024 * 1024 });
|
|
1212
|
-
}
|
|
1213
|
-
if (run.code !== 0) {
|
|
1214
|
-
return { package: entry.package, reason: `UE Viewer export exited ${run.code}.` };
|
|
1215
|
-
}
|
|
1216
|
-
return undefined;
|
|
1260
|
+
let outcome = await run();
|
|
1261
|
+
if (outcome.code !== 0)
|
|
1262
|
+
outcome = await run();
|
|
1263
|
+
return outcome.code === 0 ? undefined : `UE Viewer export exited ${outcome.code}.`;
|
|
1217
1264
|
}
|
|
1218
1265
|
catch (error) {
|
|
1219
|
-
return
|
|
1220
|
-
package: entry.package,
|
|
1221
|
-
reason: error instanceof ToolchainError ? error.message : "UE Viewer export failed.",
|
|
1222
|
-
};
|
|
1266
|
+
return error instanceof ToolchainError ? error.message : "UE Viewer export failed.";
|
|
1223
1267
|
}
|
|
1268
|
+
};
|
|
1269
|
+
// Packages share textures, so two exporters can write the same PNG at once and `-nooverwrite`
|
|
1270
|
+
// would see a half-written file as done. Listing is read-only and parallel; exporting is not.
|
|
1271
|
+
log(`Exporting ${exportableMeshPackages.length} static/skeletal mesh packages with UE Viewer…`);
|
|
1272
|
+
const exportFailures = await mapWithConcurrency(exportableMeshPackages, 1, async (entry) => {
|
|
1273
|
+
const reason = await exportMeshWithUmodel(entry, raw);
|
|
1274
|
+
return reason ? { package: entry.package, reason } : undefined;
|
|
1224
1275
|
});
|
|
1225
1276
|
for (const failure of exportFailures)
|
|
1226
1277
|
if (failure)
|
|
@@ -1445,6 +1496,8 @@ export async function importUnrealDirectory(request) {
|
|
|
1445
1496
|
let uncookedGlbs = new Map();
|
|
1446
1497
|
let modernConverter;
|
|
1447
1498
|
let modernGlbs = new Map();
|
|
1499
|
+
/** Meshes UE Viewer exported after the modern converter failed on them. */
|
|
1500
|
+
const recoveredByUmodel = new Set();
|
|
1448
1501
|
const modernSceneModelSources = [];
|
|
1449
1502
|
const sceneSources = join(staging, "scene-sources");
|
|
1450
1503
|
const sceneSourcePaths = new Map();
|
|
@@ -1499,26 +1552,41 @@ export async function importUnrealDirectory(request) {
|
|
|
1499
1552
|
maxOutputBytes: 64 * 1024 * 1024,
|
|
1500
1553
|
});
|
|
1501
1554
|
if (converted.code !== 0) {
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
const
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1555
|
+
// A static mesh old enough for UE Viewer never needed the modern converter, so one
|
|
1556
|
+
// converter crash must not take a mesh UE Viewer can read down with it. That fallback is only
|
|
1557
|
+
// honest when it covers everything: recovering part of the request would drop the rest
|
|
1558
|
+
// silently, so anything UE Viewer cannot supply reports the converter's own diagnostic.
|
|
1559
|
+
const retryable = modernPackages.filter(({ entry, fileVersionUE4 }) => entry.meshKind === "static" && uncookedMeshRoute("static", fileVersionUE4) === "umodel");
|
|
1560
|
+
const retried = await mapWithConcurrency(retryable, 1, async ({ entry }) => ({
|
|
1561
|
+
entry,
|
|
1562
|
+
reason: await exportMeshWithUmodel(entry, raw),
|
|
1563
|
+
}));
|
|
1564
|
+
const incomplete = retried.find((result) => result.reason !== undefined);
|
|
1565
|
+
if (retryable.length !== modernPackages.length || incomplete) {
|
|
1566
|
+
throw new ToolchainError("UNREAL_TOOL_FAILED", `The modern UE5 asset converter exited ${converted.code}; no partial output was promoted. ${describeModernFailure(converted.stderr, modernPackages)}`);
|
|
1567
|
+
}
|
|
1568
|
+
for (const result of retried) {
|
|
1569
|
+
recoveredByUmodel.add(basename(result.entry.package, extname(result.entry.package)));
|
|
1570
|
+
}
|
|
1571
|
+
assets = mergeExported(assets, await indexExported(raw));
|
|
1572
|
+
warnings.push(`The modern UE5 asset converter exited ${converted.code}; UE Viewer decoded ${recoveredByUmodel.size} static mesh package${recoveredByUmodel.size === 1 ? "" : "s"} it could read itself.`);
|
|
1573
|
+
}
|
|
1574
|
+
else {
|
|
1575
|
+
modernGlbs = await indexGlbs(modernRaw);
|
|
1576
|
+
assets = mergeExported(assets, await indexExported(modernRaw));
|
|
1577
|
+
for (const entry of modernTexturePackages) {
|
|
1578
|
+
const name = basename(entry.package, extname(entry.package));
|
|
1579
|
+
const source = assets.png.get(name);
|
|
1580
|
+
if (source)
|
|
1581
|
+
textureSources.set(entry.file, source);
|
|
1582
|
+
else
|
|
1583
|
+
failed.push({
|
|
1584
|
+
package: entry.package,
|
|
1585
|
+
reason: "The modern UE5 texture converter produced no PNG for this package.",
|
|
1586
|
+
});
|
|
1587
|
+
}
|
|
1588
|
+
warnings.push(`Decoded ${modernAssetCount} requested modern UE5 asset package${modernAssetCount === 1 ? "" : "s"} without Unreal Engine.`);
|
|
1520
1589
|
}
|
|
1521
|
-
warnings.push(`Decoded ${modernAssetCount} requested modern UE5 asset package${modernAssetCount === 1 ? "" : "s"} without Unreal Engine.`);
|
|
1522
1590
|
}
|
|
1523
1591
|
if (modernMapPackages.length > 0) {
|
|
1524
1592
|
modernConverter ??= request.modernConverter ?? (await ensureModernConverter(environment, log));
|
|
@@ -1791,7 +1859,9 @@ export async function importUnrealDirectory(request) {
|
|
|
1791
1859
|
}
|
|
1792
1860
|
warnings.push(`Decoded ${paperPackages.length} requested Paper2D package${paperPackages.length === 1 ? "" : "s"} without Unreal Engine.`);
|
|
1793
1861
|
}
|
|
1794
|
-
const modernNames = new Set(modernPackages
|
|
1862
|
+
const modernNames = new Set(modernPackages
|
|
1863
|
+
.map(({ entry }) => basename(entry.package, extname(entry.package)))
|
|
1864
|
+
.filter((name) => !recoveredByUmodel.has(name)));
|
|
1795
1865
|
const promotion = await mkdtemp(join(promotionParent, ".threenative-import-"));
|
|
1796
1866
|
// Only a verified entitlement earns a copyright line. A local pack whose licence nobody
|
|
1797
1867
|
// checked stays blank so the game's asset health check keeps saying "unknown".
|