@babylonjs/loaders 9.26.0 → 9.26.2
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/FBX/fbxConstraintBehavior.d.ts +188 -0
- package/FBX/fbxConstraintBehavior.js +532 -0
- package/FBX/fbxConstraintBehavior.js.map +1 -0
- package/FBX/fbxFileLoader.pure.d.ts +175 -6
- package/FBX/fbxFileLoader.pure.js +1521 -286
- package/FBX/fbxFileLoader.pure.js.map +1 -1
- package/FBX/index.d.ts +4 -1
- package/FBX/index.js +1 -0
- package/FBX/index.js.map +1 -1
- package/FBX/interpreter/animation.d.ts +73 -33
- package/FBX/interpreter/animation.js +620 -223
- package/FBX/interpreter/animation.js.map +1 -1
- package/FBX/interpreter/animationCurve.d.ts +91 -0
- package/FBX/interpreter/animationCurve.js +623 -0
- package/FBX/interpreter/animationCurve.js.map +1 -0
- package/FBX/interpreter/blendShapes.js +9 -18
- package/FBX/interpreter/blendShapes.js.map +1 -1
- package/FBX/interpreter/connections.d.ts +1 -1
- package/FBX/interpreter/connections.js +173 -34
- package/FBX/interpreter/connections.js.map +1 -1
- package/FBX/interpreter/constraints.d.ts +68 -0
- package/FBX/interpreter/constraints.js +143 -0
- package/FBX/interpreter/constraints.js.map +1 -0
- package/FBX/interpreter/fbxInterpreter.d.ts +89 -4
- package/FBX/interpreter/fbxInterpreter.js +474 -122
- package/FBX/interpreter/fbxInterpreter.js.map +1 -1
- package/FBX/interpreter/geometry.d.ts +1 -1
- package/FBX/interpreter/geometry.js +150 -92
- package/FBX/interpreter/geometry.js.map +1 -1
- package/FBX/interpreter/legacyDocument.d.ts +11 -0
- package/FBX/interpreter/legacyDocument.js +425 -0
- package/FBX/interpreter/legacyDocument.js.map +1 -0
- package/FBX/interpreter/materialModel.d.ts +71 -0
- package/FBX/interpreter/materialModel.js +622 -0
- package/FBX/interpreter/materialModel.js.map +1 -0
- package/FBX/interpreter/materials.d.ts +13 -1
- package/FBX/interpreter/materials.js +88 -5
- package/FBX/interpreter/materials.js.map +1 -1
- package/FBX/interpreter/nodeTransform.d.ts +32 -0
- package/FBX/interpreter/nodeTransform.js +54 -0
- package/FBX/interpreter/nodeTransform.js.map +1 -0
- package/FBX/interpreter/nurbs.d.ts +99 -0
- package/FBX/interpreter/nurbs.js +627 -0
- package/FBX/interpreter/nurbs.js.map +1 -0
- package/FBX/interpreter/propertyTemplates.d.ts +23 -0
- package/FBX/interpreter/propertyTemplates.js +109 -2
- package/FBX/interpreter/propertyTemplates.js.map +1 -1
- package/FBX/interpreter/rig.js +16 -0
- package/FBX/interpreter/rig.js.map +1 -1
- package/FBX/interpreter/sceneDiagnostics.js +28 -3
- package/FBX/interpreter/sceneDiagnostics.js.map +1 -1
- package/FBX/interpreter/skeleton.d.ts +4 -18
- package/FBX/interpreter/skeleton.js +16 -94
- package/FBX/interpreter/skeleton.js.map +1 -1
- package/FBX/parsers/fbxAsciiParser.js +119 -9
- package/FBX/parsers/fbxAsciiParser.js.map +1 -1
- package/FBX/parsers/fbxBinaryParser.js +74 -22
- package/FBX/parsers/fbxBinaryParser.js.map +1 -1
- package/FBX/pure.d.ts +1 -0
- package/FBX/pure.js +1 -0
- package/FBX/pure.js.map +1 -1
- package/FBX/types/fbxTypes.d.ts +18 -2
- package/FBX/types/fbxTypes.js +40 -12
- package/FBX/types/fbxTypes.js.map +1 -1
- package/SPLAT/gaussianSplattingStream.d.ts +79 -25
- package/SPLAT/gaussianSplattingStream.js +320 -95
- package/SPLAT/gaussianSplattingStream.js.map +1 -1
- package/USD/usdCommandProtocol.d.ts +20 -4
- package/USD/usdCommandProtocol.js +25 -3
- package/USD/usdCommandProtocol.js.map +1 -1
- package/USD/usdFileLoader.pure.js +2 -0
- package/USD/usdFileLoader.pure.js.map +1 -1
- package/USD/usdSceneMaterializer.js +430 -92
- package/USD/usdSceneMaterializer.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +110 -3
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +468 -74
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.d.ts +47 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.js +68 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +2 -2
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.d.ts +24 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.js +38 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.d.ts +41 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.js +63 -0
- package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.js +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.d.ts +112 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js +773 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +18 -10
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +299 -54
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.d.ts +2 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.js +7 -2
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.d.ts +24 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.js +89 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js +5 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +55 -1
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js +124 -76
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity.types.d.ts +18 -1
- package/glTF/2.0/Extensions/KHR_interactivity.types.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +2 -0
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +114 -56
- package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +2 -0
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +80 -35
- package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -1
- package/glTF/2.0/Extensions/interactivityRefPathToObjectConverter.js +3 -2
- package/glTF/2.0/Extensions/interactivityRefPathToObjectConverter.js.map +1 -1
- package/glTF/2.0/Extensions/objectModelMapping.d.ts +4 -2
- package/glTF/2.0/Extensions/objectModelMapping.js +33 -4
- package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -1
- package/glTF/2.0/glTFLoader.pure.d.ts +1 -1
- package/glTF/2.0/glTFLoader.pure.js +9 -4
- package/glTF/2.0/glTFLoader.pure.js.map +1 -1
- package/glTF/2.0/glTFLoaderExtension.d.ts +2 -1
- package/glTF/2.0/glTFLoaderExtension.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const COMMAND_MAGIC = 1111774037;
|
|
2
|
-
export declare const PROTOCOL_VERSION =
|
|
2
|
+
export declare const PROTOCOL_VERSION = 5;
|
|
3
3
|
export declare const MISSING_OFFSET = 4294967295;
|
|
4
4
|
export declare const enum Command {
|
|
5
5
|
Scene = 1,
|
|
@@ -11,7 +11,9 @@ export declare const enum Command {
|
|
|
11
11
|
Mesh = 7,
|
|
12
12
|
Instance = 8,
|
|
13
13
|
Animation = 9,
|
|
14
|
-
AnalyticPrimitive = 10
|
|
14
|
+
AnalyticPrimitive = 10,
|
|
15
|
+
ThinInstances = 11,
|
|
16
|
+
MorphTarget = 12
|
|
15
17
|
}
|
|
16
18
|
export declare const enum AnalyticPrimitiveType {
|
|
17
19
|
Cube = 0,
|
|
@@ -26,19 +28,33 @@ export declare const enum PrimitiveAxis {
|
|
|
26
28
|
}
|
|
27
29
|
export declare const enum AnimationTarget {
|
|
28
30
|
Node = 0,
|
|
29
|
-
Bone = 1
|
|
31
|
+
Bone = 1,
|
|
32
|
+
MorphTarget = 2
|
|
30
33
|
}
|
|
31
34
|
export declare const enum AnimationProperty {
|
|
32
35
|
Position = 0,
|
|
33
36
|
RotationQuaternion = 1,
|
|
34
37
|
Scaling = 2,
|
|
35
|
-
Matrix = 3
|
|
38
|
+
Matrix = 3,
|
|
39
|
+
Influence = 4
|
|
36
40
|
}
|
|
37
41
|
export declare const enum MaterialFlags {
|
|
38
42
|
DoubleSided = 1,
|
|
39
43
|
Unlit = 2,
|
|
40
44
|
AlphaBlend = 4
|
|
41
45
|
}
|
|
46
|
+
export declare const enum TextureOutputChannel {
|
|
47
|
+
R = 0,
|
|
48
|
+
G = 1,
|
|
49
|
+
B = 2,
|
|
50
|
+
A = 3,
|
|
51
|
+
RGB = 4
|
|
52
|
+
}
|
|
53
|
+
export declare const enum USDTextureColorSpace {
|
|
54
|
+
Auto = 0,
|
|
55
|
+
Raw = 1,
|
|
56
|
+
SRGB = 2
|
|
57
|
+
}
|
|
42
58
|
export declare const enum MeshFlags {
|
|
43
59
|
DoubleSided = 1,
|
|
44
60
|
LeftHanded = 2
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var _PayloadReader_instances, _PayloadReader_view, _PayloadReader_end, _PayloadReader_require;
|
|
3
3
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "@babylonjs/core/tslib.es6.js";
|
|
4
4
|
export const COMMAND_MAGIC = 0x42445355;
|
|
5
|
-
export const PROTOCOL_VERSION =
|
|
5
|
+
export const PROTOCOL_VERSION = 5;
|
|
6
6
|
export const MISSING_OFFSET = 0xffffffff;
|
|
7
7
|
export var Command;
|
|
8
8
|
(function (Command) {
|
|
@@ -16,6 +16,8 @@ export var Command;
|
|
|
16
16
|
Command[Command["Instance"] = 8] = "Instance";
|
|
17
17
|
Command[Command["Animation"] = 9] = "Animation";
|
|
18
18
|
Command[Command["AnalyticPrimitive"] = 10] = "AnalyticPrimitive";
|
|
19
|
+
Command[Command["ThinInstances"] = 11] = "ThinInstances";
|
|
20
|
+
Command[Command["MorphTarget"] = 12] = "MorphTarget";
|
|
19
21
|
})(Command || (Command = {}));
|
|
20
22
|
export var AnalyticPrimitiveType;
|
|
21
23
|
(function (AnalyticPrimitiveType) {
|
|
@@ -34,6 +36,7 @@ export var AnimationTarget;
|
|
|
34
36
|
(function (AnimationTarget) {
|
|
35
37
|
AnimationTarget[AnimationTarget["Node"] = 0] = "Node";
|
|
36
38
|
AnimationTarget[AnimationTarget["Bone"] = 1] = "Bone";
|
|
39
|
+
AnimationTarget[AnimationTarget["MorphTarget"] = 2] = "MorphTarget";
|
|
37
40
|
})(AnimationTarget || (AnimationTarget = {}));
|
|
38
41
|
export var AnimationProperty;
|
|
39
42
|
(function (AnimationProperty) {
|
|
@@ -41,6 +44,7 @@ export var AnimationProperty;
|
|
|
41
44
|
AnimationProperty[AnimationProperty["RotationQuaternion"] = 1] = "RotationQuaternion";
|
|
42
45
|
AnimationProperty[AnimationProperty["Scaling"] = 2] = "Scaling";
|
|
43
46
|
AnimationProperty[AnimationProperty["Matrix"] = 3] = "Matrix";
|
|
47
|
+
AnimationProperty[AnimationProperty["Influence"] = 4] = "Influence";
|
|
44
48
|
})(AnimationProperty || (AnimationProperty = {}));
|
|
45
49
|
export var MaterialFlags;
|
|
46
50
|
(function (MaterialFlags) {
|
|
@@ -48,6 +52,20 @@ export var MaterialFlags;
|
|
|
48
52
|
MaterialFlags[MaterialFlags["Unlit"] = 2] = "Unlit";
|
|
49
53
|
MaterialFlags[MaterialFlags["AlphaBlend"] = 4] = "AlphaBlend";
|
|
50
54
|
})(MaterialFlags || (MaterialFlags = {}));
|
|
55
|
+
export var TextureOutputChannel;
|
|
56
|
+
(function (TextureOutputChannel) {
|
|
57
|
+
TextureOutputChannel[TextureOutputChannel["R"] = 0] = "R";
|
|
58
|
+
TextureOutputChannel[TextureOutputChannel["G"] = 1] = "G";
|
|
59
|
+
TextureOutputChannel[TextureOutputChannel["B"] = 2] = "B";
|
|
60
|
+
TextureOutputChannel[TextureOutputChannel["A"] = 3] = "A";
|
|
61
|
+
TextureOutputChannel[TextureOutputChannel["RGB"] = 4] = "RGB";
|
|
62
|
+
})(TextureOutputChannel || (TextureOutputChannel = {}));
|
|
63
|
+
export var USDTextureColorSpace;
|
|
64
|
+
(function (USDTextureColorSpace) {
|
|
65
|
+
USDTextureColorSpace[USDTextureColorSpace["Auto"] = 0] = "Auto";
|
|
66
|
+
USDTextureColorSpace[USDTextureColorSpace["Raw"] = 1] = "Raw";
|
|
67
|
+
USDTextureColorSpace[USDTextureColorSpace["SRGB"] = 2] = "SRGB";
|
|
68
|
+
})(USDTextureColorSpace || (USDTextureColorSpace = {}));
|
|
51
69
|
export var MeshFlags;
|
|
52
70
|
(function (MeshFlags) {
|
|
53
71
|
MeshFlags[MeshFlags["DoubleSided"] = 1] = "DoubleSided";
|
|
@@ -67,9 +85,9 @@ function expectedPayloadLength(opcode) {
|
|
|
67
85
|
case 1 /* Command.Scene */:
|
|
68
86
|
return 12;
|
|
69
87
|
case 2 /* Command.Texture */:
|
|
70
|
-
return
|
|
88
|
+
return 48;
|
|
71
89
|
case 3 /* Command.Material */:
|
|
72
|
-
return
|
|
90
|
+
return 96;
|
|
73
91
|
case 4 /* Command.TransformNode */:
|
|
74
92
|
case 5 /* Command.Skeleton */:
|
|
75
93
|
return 20;
|
|
@@ -83,6 +101,10 @@ function expectedPayloadLength(opcode) {
|
|
|
83
101
|
return 32;
|
|
84
102
|
case 10 /* Command.AnalyticPrimitive */:
|
|
85
103
|
return 44;
|
|
104
|
+
case 11 /* Command.ThinInstances */:
|
|
105
|
+
return 12;
|
|
106
|
+
case 12 /* Command.MorphTarget */:
|
|
107
|
+
return 32;
|
|
86
108
|
default:
|
|
87
109
|
throw new Error(`Unknown OpenUSD Babylon command opcode ${opcode}.`);
|
|
88
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usdCommandProtocol.js","sourceRoot":"","sources":["../../../../dev/loaders/src/USD/usdCommandProtocol.ts"],"names":[],"mappings":"AAAA,yDAAyD;;;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;AAEzC,MAAM,CAAN,IAAkB,
|
|
1
|
+
{"version":3,"file":"usdCommandProtocol.js","sourceRoot":"","sources":["../../../../dev/loaders/src/USD/usdCommandProtocol.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n\nexport const COMMAND_MAGIC = 0x42445355;\nexport const PROTOCOL_VERSION = 5;\nexport const MISSING_OFFSET = 0xffffffff;\n\nexport const enum Command {\n Scene = 1,\n Texture = 2,\n Material = 3,\n TransformNode = 4,\n Skeleton = 5,\n Geometry = 6,\n Mesh = 7,\n Instance = 8,\n Animation = 9,\n AnalyticPrimitive = 10,\n ThinInstances = 11,\n MorphTarget = 12,\n}\n\nexport const enum AnalyticPrimitiveType {\n Cube = 0,\n Sphere = 1,\n Cylinder = 2,\n Cone = 3,\n}\n\nexport const enum PrimitiveAxis {\n X = 0,\n Y = 1,\n Z = 2,\n}\n\nexport const enum AnimationTarget {\n Node = 0,\n Bone = 1,\n MorphTarget = 2,\n}\n\nexport const enum AnimationProperty {\n Position = 0,\n RotationQuaternion = 1,\n Scaling = 2,\n Matrix = 3,\n Influence = 4,\n}\n\nexport const enum MaterialFlags {\n DoubleSided = 1 << 0,\n Unlit = 1 << 1,\n AlphaBlend = 1 << 2,\n}\n\nexport const enum TextureOutputChannel {\n R = 0,\n G = 1,\n B = 2,\n A = 3,\n RGB = 4,\n}\n\nexport const enum USDTextureColorSpace {\n Auto = 0,\n Raw = 1,\n SRGB = 2,\n}\n\nexport const enum MeshFlags {\n DoubleSided = 1 << 0,\n LeftHanded = 1 << 1,\n}\n\nexport const enum GeometryFlags {\n Normals = 1 << 0,\n Tangents = 1 << 1,\n Uv0 = 1 << 2,\n Colors = 1 << 3,\n Skin0 = 1 << 4,\n Skin1 = 1 << 5,\n}\n\nexport interface CommandRecord {\n opcode: Command;\n flags: number;\n payloadOffset: number;\n payloadLength: number;\n}\n\nfunction expectedPayloadLength(opcode: Command): number {\n switch (opcode) {\n case Command.Scene:\n return 12;\n case Command.Texture:\n return 48;\n case Command.Material:\n return 96;\n case Command.TransformNode:\n case Command.Skeleton:\n return 20;\n case Command.Geometry:\n return 60;\n case Command.Mesh:\n return 40;\n case Command.Instance:\n return 16;\n case Command.Animation:\n return 32;\n case Command.AnalyticPrimitive:\n return 44;\n case Command.ThinInstances:\n return 12;\n case Command.MorphTarget:\n return 32;\n default:\n throw new Error(`Unknown OpenUSD Babylon command opcode ${opcode}.`);\n }\n}\n\nexport function readCommands(buffer: ArrayBuffer): CommandRecord[] {\n const view = new DataView(buffer);\n if (view.byteLength < 16 || view.getUint32(0, true) !== COMMAND_MAGIC) {\n throw new Error(\"Invalid OpenUSD Babylon command buffer.\");\n }\n if (view.getUint16(4, true) !== PROTOCOL_VERSION) {\n throw new Error(`Unsupported OpenUSD Babylon protocol ${view.getUint16(4, true)}.`);\n }\n const count = view.getUint32(8, true);\n const commands: CommandRecord[] = [];\n let offset = 16;\n for (let index = 0; index < count; ++index) {\n if (offset + 8 > view.byteLength) {\n throw new Error(\"Truncated OpenUSD Babylon command header.\");\n }\n const opcode = view.getUint16(offset, true) as Command;\n const flags = view.getUint16(offset + 2, true);\n const payloadLength = view.getUint32(offset + 4, true);\n const payloadOffset = offset + 8;\n const expectedLength = expectedPayloadLength(opcode);\n if (payloadLength !== expectedLength) {\n throw new Error(`Invalid payload length ${payloadLength} for command ${opcode}; ` + `expected ${expectedLength}.`);\n }\n if (payloadOffset + payloadLength > view.byteLength) {\n throw new Error(\"Truncated OpenUSD Babylon command payload.\");\n }\n commands.push({ opcode, flags, payloadOffset, payloadLength });\n offset = payloadOffset + payloadLength;\n }\n if (offset !== view.byteLength) {\n throw new Error(\"Unexpected trailing data in OpenUSD Babylon command buffer.\");\n }\n return commands;\n}\n\nexport class PayloadReader {\n readonly #view: DataView;\n readonly #end: number;\n offset: number;\n\n constructor(buffer: ArrayBuffer, offset: number, length: number) {\n this.#view = new DataView(buffer);\n this.offset = offset;\n this.#end = offset + length;\n }\n\n u32(): number {\n this.#require(4);\n const value = this.#view.getUint32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n f32(): number {\n this.#require(4);\n const value = this.#view.getFloat32(this.offset, true);\n this.offset += 4;\n return value;\n }\n\n #require(byteLength: number): void {\n if (this.offset + byteLength > this.#end) {\n throw new Error(\"OpenUSD Babylon command payload read exceeded its bounds.\");\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** This file must only contain pure code and pure imports */
|
|
2
2
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
3
3
|
import { RegisterInstancedMesh } from "@babylonjs/core/Meshes/instancedMesh.pure.js";
|
|
4
|
+
import { RegisterThinInstanceMesh } from "@babylonjs/core/Meshes/thinInstanceMesh.pure.js";
|
|
4
5
|
import { RegisterPbrMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.pure.js";
|
|
5
6
|
import { Tools } from "@babylonjs/core/Misc/tools.pure.js";
|
|
6
7
|
import { AssetContainer } from "@babylonjs/core/assetContainer.js";
|
|
@@ -323,6 +324,7 @@ let _Registered = false;
|
|
|
323
324
|
export function _RegisterUSDLoaderDependencies() {
|
|
324
325
|
RegisterPbrMaterial();
|
|
325
326
|
RegisterInstancedMesh();
|
|
327
|
+
RegisterThinInstanceMesh();
|
|
326
328
|
}
|
|
327
329
|
/**
|
|
328
330
|
* Registers the USD scene loader plugin and its Babylon.js runtime dependencies.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usdFileLoader.pure.js","sourceRoot":"","sources":["../../../../dev/loaders/src/USD/usdFileLoader.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { RegisterInstancedMesh } from \"core/Meshes/instancedMesh.pure\";\nimport { RegisterPbrMaterial } from \"core/Materials/PBR/pbrMaterial.pure\";\nimport { Tools } from \"core/Misc/tools.pure\";\nimport { type AbstractAssetContainer, AssetContainer } from \"core/assetContainer\";\nimport {\n type ISceneLoaderAsyncResult,\n type ISceneLoaderPluginAsync,\n type ISceneLoaderPluginFactory,\n type ISceneLoaderProgressEvent,\n type SceneLoaderPluginOptions,\n RegisterSceneLoaderPlugin,\n} from \"core/Loading/sceneLoader\";\nimport { type Scene } from \"core/scene.pure\";\n\nimport { USDFileLoaderMetadata } from \"./usdFileLoader.metadata\";\nimport {\n type USDBinaryInput,\n type USDFileLoaderOptions,\n type USDImportDiagnostics,\n type USDImportStatistics,\n type USDImportTimings,\n type USDLoadProgress,\n type USDVirtualFiles,\n} from \"./usdLoadingOptions\";\nimport { materializeCommandBuffers } from \"./usdSceneMaterializer\";\nimport { PROTOCOL_VERSION } from \"./usdCommandProtocol\";\nimport { type ExtractRequest, type WorkerResponse } from \"./usdWorkerMessages\";\n\ninterface PendingRequest {\n resolve: (response: Extract<WorkerResponse, { type: \"result\" }>) => void;\n reject: (error: Error) => void;\n onProgress?: (progress: USDLoadProgress) => void;\n onLog?: USDFileLoaderOptions[\"onLog\"];\n}\n\ninterface USDLoadResult {\n container: AbstractAssetContainer;\n timings: USDImportTimings;\n statistics: USDImportStatistics;\n missingAssets: string[];\n}\n\nconst _DefaultAssetRootUrl = `${Tools._DefaultCdnUrl}/babylonUsdImporter/${PROTOCOL_VERSION}/`;\nconst _SupportedExtension = /\\.(?:usd|usda|usdc|usdz)$/i;\n\nfunction _toBytes(input: USDBinaryInput): Uint8Array {\n if (input instanceof Uint8Array) {\n return input.slice();\n }\n if (input instanceof ArrayBuffer) {\n return new Uint8Array(input.slice(0));\n }\n return new Uint8Array(input.buffer.slice(input.byteOffset, input.byteOffset + input.byteLength));\n}\n\nfunction _normalizeFiles(files?: USDVirtualFiles): Record<string, Uint8Array> | undefined {\n if (!files) {\n return undefined;\n }\n const normalized: Record<string, Uint8Array> = {};\n for (const [path, input] of Object.entries(files)) {\n normalized[path] = _toBytes(input);\n }\n return normalized;\n}\n\nfunction _stagedFileName(fileName: string | undefined, bytes: Uint8Array, preserveUrlCharacters: boolean): string {\n const normalizedFileName = fileName?.replace(/\\\\/g, \"/\").replace(/^\\.\\/+/, \"\");\n const cleanFileName = preserveUrlCharacters ? normalizedFileName : normalizedFileName?.split(/[?#]/, 1)[0];\n const pathParts = cleanFileName?.split(\"/\").filter(Boolean);\n if (cleanFileName && !cleanFileName.startsWith(\"/\") && pathParts?.length && !pathParts.includes(\"..\") && _SupportedExtension.test(cleanFileName)) {\n return pathParts.join(\"/\");\n }\n const isZip = bytes.length >= 4 && bytes[0] === 0x50 && bytes[1] === 0x4b && bytes[2] === 0x03 && bytes[3] === 0x04;\n return isZip ? \"scene.usdz\" : \"scene.usd\";\n}\n\nfunction _toAsyncResult(container: AbstractAssetContainer): ISceneLoaderAsyncResult {\n return {\n meshes: container.meshes,\n particleSystems: container.particleSystems,\n skeletons: container.skeletons,\n animationGroups: container.animationGroups,\n transformNodes: container.transformNodes,\n geometries: container.geometries,\n lights: container.lights,\n spriteManagers: container.spriteManagers,\n };\n}\n\n/**\n * OpenUSD scene loader backed by a WebAssembly command-buffer extractor.\n */\nexport class USDFileLoader implements ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {\n /**\n * Default URLs for the prebuilt OpenUSD importer assets.\n */\n public static DefaultConfiguration = {\n glueUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.js`,\n wasmUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.wasm`,\n dataUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.data`,\n workerUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.worker.js`,\n };\n\n /**\n * Defines the name of the plugin.\n */\n public readonly name = USDFileLoaderMetadata.name;\n\n /**\n * Defines the extensions the plugin can load.\n */\n public readonly extensions = USDFileLoaderMetadata.extensions;\n\n private readonly _options: USDFileLoaderOptions;\n private _worker: Worker | undefined;\n private _workerUrl: string | undefined;\n private _workerBlobUrl: string | undefined;\n private _nextRequestId = 1;\n private readonly _pending = new Map<number, PendingRequest>();\n private readonly _activeLoads = new Set<AbortController>();\n\n /**\n * Creates a USD loader.\n * @param options Options controlling worker assets, supporting files, and diagnostics.\n */\n public constructor(options: Partial<USDFileLoaderOptions> = {}) {\n this._options = {\n ...options,\n resolveByFileName: options.resolveByFileName ?? true,\n glueUrl: options.glueUrl ?? USDFileLoader.DefaultConfiguration.glueUrl,\n wasmUrl: options.wasmUrl ?? USDFileLoader.DefaultConfiguration.wasmUrl,\n dataUrl: options.dataUrl ?? USDFileLoader.DefaultConfiguration.dataUrl,\n workerUrl: options.workerUrl ?? USDFileLoader.DefaultConfiguration.workerUrl,\n };\n }\n\n /**\n * Creates a configured plugin instance for a SceneLoader operation.\n * @param options SceneLoader plugin options.\n * @returns The configured USD loader.\n */\n public createPlugin(options: SceneLoaderPluginOptions): ISceneLoaderPluginAsync {\n _RegisterUSDLoaderDependencies();\n return new USDFileLoader(options[USDFileLoaderMetadata.name]);\n }\n\n /**\n * Imports all objects from a USD stage into a scene.\n * @param _meshesNames Mesh name filtering is not currently supported.\n * @param scene The scene receiving the imported objects.\n * @param data The USD, USDA, USDC, or USDZ bytes.\n * @param rootUrl The source root URL.\n * @param onProgress SceneLoader progress callback.\n * @param fileName Name of the root USD layer.\n * @returns The imported Babylon.js objects.\n */\n public async importMeshAsync(\n _meshesNames: string | readonly string[] | null | undefined,\n scene: Scene,\n data: unknown,\n rootUrl: string,\n onProgress?: (event: ISceneLoaderProgressEvent) => void,\n fileName?: string\n ): Promise<ISceneLoaderAsyncResult> {\n const result = await this._loadAsync(scene, data, rootUrl, onProgress, fileName, true);\n return _toAsyncResult(result.container);\n }\n\n /**\n * Loads a USD stage into a scene.\n * @param scene The scene receiving the imported objects.\n * @param data The USD, USDA, USDC, or USDZ bytes.\n * @param rootUrl The source root URL.\n * @param onProgress SceneLoader progress callback.\n * @param fileName Name of the root USD layer.\n */\n public async loadAsync(scene: Scene, data: unknown, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<void> {\n await this._loadAsync(scene, data, rootUrl, onProgress, fileName, true);\n }\n\n /**\n * Loads a USD stage into an asset container.\n * @param scene The scene used to create imported objects.\n * @param data The USD, USDA, USDC, or USDZ bytes.\n * @param rootUrl The source root URL.\n * @param onProgress SceneLoader progress callback.\n * @param fileName Name of the root USD layer.\n * @returns The populated asset container.\n */\n public async loadAssetContainerAsync(\n scene: Scene,\n data: unknown,\n rootUrl: string,\n onProgress?: (event: ISceneLoaderProgressEvent) => void,\n fileName?: string\n ): Promise<AssetContainer> {\n const container = (await this._loadAsync(scene, data, rootUrl, onProgress, fileName, false)).container;\n if (!(container instanceof AssetContainer)) {\n throw new Error(\"USDFileLoader failed to create an asset container.\");\n }\n return container;\n }\n\n /**\n * Releases the worker and rejects pending loads.\n */\n public dispose(): void {\n this._terminateWorker();\n const error = new Error(\"USDFileLoader was disposed.\");\n for (const controller of this._activeLoads) {\n controller.abort(error);\n }\n for (const request of this._pending.values()) {\n request.reject(error);\n }\n this._pending.clear();\n }\n\n private async _loadAsync(\n scene: Scene,\n data: unknown,\n _rootUrl: string,\n onProgress: ((event: ISceneLoaderProgressEvent) => void) | undefined,\n fileName: string | undefined,\n addToScene: boolean\n ): Promise<USDLoadResult> {\n if (!(data instanceof ArrayBuffer) && !ArrayBuffer.isView(data)) {\n throw new Error(\"USDFileLoader expects binary USD data.\");\n }\n const bytes = _toBytes(data);\n const files = _normalizeFiles(this._options.files);\n const requestId = this._nextRequestId++;\n const request: ExtractRequest = {\n type: \"extract\",\n requestId,\n asset: {\n bytes,\n files,\n fileName: _stagedFileName(this._options.rootFileName ?? fileName, bytes, this._options.rootFileName !== undefined),\n resolveByFileName: this._options.resolveByFileName ?? true,\n glueUrl: this._options.glueUrl,\n wasmUrl: this._options.wasmUrl,\n dataUrl: this._options.dataUrl,\n },\n };\n const transfer = [...new Set([bytes.buffer, ...Object.values(files ?? {}).map((file) => file.buffer)])];\n const controller = new AbortController();\n const signal = controller.signal;\n this._activeLoads.add(controller);\n try {\n const worker = this._getWorker(this._options.workerUrl);\n const response = await new Promise<Extract<WorkerResponse, { type: \"result\" }>>((resolve, reject) => {\n this._pending.set(requestId, {\n resolve,\n reject,\n onProgress: (progress) => {\n this._options.onProgress?.(progress);\n onProgress?.({\n lengthComputable: false,\n loaded: _ProgressPhaseIndex[progress.phase],\n total: 4,\n });\n },\n onLog: this._options.onLog,\n });\n try {\n worker.postMessage(request, transfer);\n } catch (error) {\n this._pending.delete(requestId);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n\n const materializingProgress = {\n phase: \"materializing\",\n message: \"Creating Babylon.js objects...\",\n } as const;\n this._options.onProgress?.(materializingProgress);\n onProgress?.({ lengthComputable: false, loaded: 4, total: 4 });\n signal.throwIfAborted();\n const materialized = await materializeCommandBuffers(scene, response.commands, response.data, addToScene, signal);\n const result = {\n container: materialized.container,\n timings: {\n ...response.timings,\n materializeMs: materialized.materializeMs,\n },\n statistics: response.statistics,\n missingAssets: response.missingAssets,\n };\n try {\n signal.throwIfAborted();\n this._options.onComplete?.({\n timings: result.timings,\n statistics: result.statistics,\n missingAssets: result.missingAssets,\n } satisfies USDImportDiagnostics);\n signal.throwIfAborted();\n } catch (error) {\n materialized.container.dispose();\n throw error;\n }\n return result;\n } finally {\n this._activeLoads.delete(controller);\n if (this._pending.size === 0) {\n this._terminateWorker();\n }\n }\n }\n\n private _getWorker(workerUrl?: string | URL): Worker {\n if (!workerUrl) {\n throw new Error(\"The USD worker URL was not configured.\");\n }\n const currentLocation = globalThis.location;\n const resolvedUrl = new URL(String(workerUrl), currentLocation?.href ?? \"http://localhost/\").href;\n if (this._worker && this._workerUrl !== resolvedUrl) {\n if (this._pending.size > 0) {\n throw new Error(\"Cannot change the USD worker URL while requests are pending.\");\n }\n this._terminateWorker();\n }\n if (this._worker) {\n return this._worker;\n }\n this._workerUrl = resolvedUrl;\n if (!currentLocation || new URL(resolvedUrl).origin === currentLocation.origin) {\n this._worker = new Worker(resolvedUrl, { type: \"module\" });\n } else {\n this._workerBlobUrl = URL.createObjectURL(new Blob([`import ${JSON.stringify(resolvedUrl)};`], { type: \"application/javascript\" }));\n this._worker = new Worker(this._workerBlobUrl, { type: \"module\" });\n }\n this._worker.addEventListener(\"message\", (event: MessageEvent<WorkerResponse>) => {\n const response = event.data;\n const pending = this._pending.get(response.requestId);\n if (!pending) {\n return;\n }\n if (response.type === \"progress\") {\n pending.onProgress?.(response.progress);\n return;\n }\n if (response.type === \"log\") {\n pending.onLog?.(response.level >= 2 ? \"error\" : response.level === 1 ? \"warning\" : \"info\", response.message);\n return;\n }\n this._pending.delete(response.requestId);\n if (response.type === \"error\") {\n const error = new Error(response.message);\n error.stack = response.stack;\n pending.reject(error);\n } else {\n pending.resolve(response);\n }\n });\n const fail = (error: Error) => {\n this._terminateWorker();\n for (const request of this._pending.values()) {\n request.reject(error);\n }\n this._pending.clear();\n };\n this._worker.addEventListener(\"error\", (event) => {\n fail(event.error ?? new Error(event.message || `Could not load the USD worker from '${resolvedUrl}'.`));\n });\n this._worker.addEventListener(\"messageerror\", () => {\n fail(new Error(\"The USD worker returned a message that could not be deserialized.\"));\n });\n return this._worker;\n }\n\n private _terminateWorker(): void {\n this._worker?.terminate();\n this._worker = undefined;\n this._workerUrl = undefined;\n if (this._workerBlobUrl) {\n URL.revokeObjectURL(this._workerBlobUrl);\n this._workerBlobUrl = undefined;\n }\n }\n}\n\nconst _ProgressPhaseIndex: Record<USDLoadProgress[\"phase\"], number> = {\n initializing: 1,\n staging: 2,\n extracting: 3,\n materializing: 4,\n};\n\nlet _Registered = false;\n\n/** @internal */\nexport function _RegisterUSDLoaderDependencies(): void {\n RegisterPbrMaterial();\n RegisterInstancedMesh();\n}\n\n/**\n * Registers the USD scene loader plugin and its Babylon.js runtime dependencies.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterUSDFileLoader(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n _RegisterUSDLoaderDependencies();\n RegisterSceneLoaderPlugin(new USDFileLoader());\n}\n"]}
|
|
1
|
+
{"version":3,"file":"usdFileLoader.pure.js","sourceRoot":"","sources":["../../../../dev/loaders/src/USD/usdFileLoader.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { RegisterInstancedMesh } from \"core/Meshes/instancedMesh.pure\";\nimport { RegisterThinInstanceMesh } from \"core/Meshes/thinInstanceMesh.pure\";\nimport { RegisterPbrMaterial } from \"core/Materials/PBR/pbrMaterial.pure\";\nimport { Tools } from \"core/Misc/tools.pure\";\nimport { type AbstractAssetContainer, AssetContainer } from \"core/assetContainer\";\nimport {\n type ISceneLoaderAsyncResult,\n type ISceneLoaderPluginAsync,\n type ISceneLoaderPluginFactory,\n type ISceneLoaderProgressEvent,\n type SceneLoaderPluginOptions,\n RegisterSceneLoaderPlugin,\n} from \"core/Loading/sceneLoader\";\nimport { type Scene } from \"core/scene.pure\";\n\nimport { USDFileLoaderMetadata } from \"./usdFileLoader.metadata\";\nimport {\n type USDBinaryInput,\n type USDFileLoaderOptions,\n type USDImportDiagnostics,\n type USDImportStatistics,\n type USDImportTimings,\n type USDLoadProgress,\n type USDVirtualFiles,\n} from \"./usdLoadingOptions\";\nimport { materializeCommandBuffers } from \"./usdSceneMaterializer\";\nimport { PROTOCOL_VERSION } from \"./usdCommandProtocol\";\nimport { type ExtractRequest, type WorkerResponse } from \"./usdWorkerMessages\";\n\ninterface PendingRequest {\n resolve: (response: Extract<WorkerResponse, { type: \"result\" }>) => void;\n reject: (error: Error) => void;\n onProgress?: (progress: USDLoadProgress) => void;\n onLog?: USDFileLoaderOptions[\"onLog\"];\n}\n\ninterface USDLoadResult {\n container: AbstractAssetContainer;\n timings: USDImportTimings;\n statistics: USDImportStatistics;\n missingAssets: string[];\n}\n\nconst _DefaultAssetRootUrl = `${Tools._DefaultCdnUrl}/babylonUsdImporter/${PROTOCOL_VERSION}/`;\nconst _SupportedExtension = /\\.(?:usd|usda|usdc|usdz)$/i;\n\nfunction _toBytes(input: USDBinaryInput): Uint8Array {\n if (input instanceof Uint8Array) {\n return input.slice();\n }\n if (input instanceof ArrayBuffer) {\n return new Uint8Array(input.slice(0));\n }\n return new Uint8Array(input.buffer.slice(input.byteOffset, input.byteOffset + input.byteLength));\n}\n\nfunction _normalizeFiles(files?: USDVirtualFiles): Record<string, Uint8Array> | undefined {\n if (!files) {\n return undefined;\n }\n const normalized: Record<string, Uint8Array> = {};\n for (const [path, input] of Object.entries(files)) {\n normalized[path] = _toBytes(input);\n }\n return normalized;\n}\n\nfunction _stagedFileName(fileName: string | undefined, bytes: Uint8Array, preserveUrlCharacters: boolean): string {\n const normalizedFileName = fileName?.replace(/\\\\/g, \"/\").replace(/^\\.\\/+/, \"\");\n const cleanFileName = preserveUrlCharacters ? normalizedFileName : normalizedFileName?.split(/[?#]/, 1)[0];\n const pathParts = cleanFileName?.split(\"/\").filter(Boolean);\n if (cleanFileName && !cleanFileName.startsWith(\"/\") && pathParts?.length && !pathParts.includes(\"..\") && _SupportedExtension.test(cleanFileName)) {\n return pathParts.join(\"/\");\n }\n const isZip = bytes.length >= 4 && bytes[0] === 0x50 && bytes[1] === 0x4b && bytes[2] === 0x03 && bytes[3] === 0x04;\n return isZip ? \"scene.usdz\" : \"scene.usd\";\n}\n\nfunction _toAsyncResult(container: AbstractAssetContainer): ISceneLoaderAsyncResult {\n return {\n meshes: container.meshes,\n particleSystems: container.particleSystems,\n skeletons: container.skeletons,\n animationGroups: container.animationGroups,\n transformNodes: container.transformNodes,\n geometries: container.geometries,\n lights: container.lights,\n spriteManagers: container.spriteManagers,\n };\n}\n\n/**\n * OpenUSD scene loader backed by a WebAssembly command-buffer extractor.\n */\nexport class USDFileLoader implements ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {\n /**\n * Default URLs for the prebuilt OpenUSD importer assets.\n */\n public static DefaultConfiguration = {\n glueUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.js`,\n wasmUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.wasm`,\n dataUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.data`,\n workerUrl: `${_DefaultAssetRootUrl}babylon-usd-importer.worker.js`,\n };\n\n /**\n * Defines the name of the plugin.\n */\n public readonly name = USDFileLoaderMetadata.name;\n\n /**\n * Defines the extensions the plugin can load.\n */\n public readonly extensions = USDFileLoaderMetadata.extensions;\n\n private readonly _options: USDFileLoaderOptions;\n private _worker: Worker | undefined;\n private _workerUrl: string | undefined;\n private _workerBlobUrl: string | undefined;\n private _nextRequestId = 1;\n private readonly _pending = new Map<number, PendingRequest>();\n private readonly _activeLoads = new Set<AbortController>();\n\n /**\n * Creates a USD loader.\n * @param options Options controlling worker assets, supporting files, and diagnostics.\n */\n public constructor(options: Partial<USDFileLoaderOptions> = {}) {\n this._options = {\n ...options,\n resolveByFileName: options.resolveByFileName ?? true,\n glueUrl: options.glueUrl ?? USDFileLoader.DefaultConfiguration.glueUrl,\n wasmUrl: options.wasmUrl ?? USDFileLoader.DefaultConfiguration.wasmUrl,\n dataUrl: options.dataUrl ?? USDFileLoader.DefaultConfiguration.dataUrl,\n workerUrl: options.workerUrl ?? USDFileLoader.DefaultConfiguration.workerUrl,\n };\n }\n\n /**\n * Creates a configured plugin instance for a SceneLoader operation.\n * @param options SceneLoader plugin options.\n * @returns The configured USD loader.\n */\n public createPlugin(options: SceneLoaderPluginOptions): ISceneLoaderPluginAsync {\n _RegisterUSDLoaderDependencies();\n return new USDFileLoader(options[USDFileLoaderMetadata.name]);\n }\n\n /**\n * Imports all objects from a USD stage into a scene.\n * @param _meshesNames Mesh name filtering is not currently supported.\n * @param scene The scene receiving the imported objects.\n * @param data The USD, USDA, USDC, or USDZ bytes.\n * @param rootUrl The source root URL.\n * @param onProgress SceneLoader progress callback.\n * @param fileName Name of the root USD layer.\n * @returns The imported Babylon.js objects.\n */\n public async importMeshAsync(\n _meshesNames: string | readonly string[] | null | undefined,\n scene: Scene,\n data: unknown,\n rootUrl: string,\n onProgress?: (event: ISceneLoaderProgressEvent) => void,\n fileName?: string\n ): Promise<ISceneLoaderAsyncResult> {\n const result = await this._loadAsync(scene, data, rootUrl, onProgress, fileName, true);\n return _toAsyncResult(result.container);\n }\n\n /**\n * Loads a USD stage into a scene.\n * @param scene The scene receiving the imported objects.\n * @param data The USD, USDA, USDC, or USDZ bytes.\n * @param rootUrl The source root URL.\n * @param onProgress SceneLoader progress callback.\n * @param fileName Name of the root USD layer.\n */\n public async loadAsync(scene: Scene, data: unknown, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<void> {\n await this._loadAsync(scene, data, rootUrl, onProgress, fileName, true);\n }\n\n /**\n * Loads a USD stage into an asset container.\n * @param scene The scene used to create imported objects.\n * @param data The USD, USDA, USDC, or USDZ bytes.\n * @param rootUrl The source root URL.\n * @param onProgress SceneLoader progress callback.\n * @param fileName Name of the root USD layer.\n * @returns The populated asset container.\n */\n public async loadAssetContainerAsync(\n scene: Scene,\n data: unknown,\n rootUrl: string,\n onProgress?: (event: ISceneLoaderProgressEvent) => void,\n fileName?: string\n ): Promise<AssetContainer> {\n const container = (await this._loadAsync(scene, data, rootUrl, onProgress, fileName, false)).container;\n if (!(container instanceof AssetContainer)) {\n throw new Error(\"USDFileLoader failed to create an asset container.\");\n }\n return container;\n }\n\n /**\n * Releases the worker and rejects pending loads.\n */\n public dispose(): void {\n this._terminateWorker();\n const error = new Error(\"USDFileLoader was disposed.\");\n for (const controller of this._activeLoads) {\n controller.abort(error);\n }\n for (const request of this._pending.values()) {\n request.reject(error);\n }\n this._pending.clear();\n }\n\n private async _loadAsync(\n scene: Scene,\n data: unknown,\n _rootUrl: string,\n onProgress: ((event: ISceneLoaderProgressEvent) => void) | undefined,\n fileName: string | undefined,\n addToScene: boolean\n ): Promise<USDLoadResult> {\n if (!(data instanceof ArrayBuffer) && !ArrayBuffer.isView(data)) {\n throw new Error(\"USDFileLoader expects binary USD data.\");\n }\n const bytes = _toBytes(data);\n const files = _normalizeFiles(this._options.files);\n const requestId = this._nextRequestId++;\n const request: ExtractRequest = {\n type: \"extract\",\n requestId,\n asset: {\n bytes,\n files,\n fileName: _stagedFileName(this._options.rootFileName ?? fileName, bytes, this._options.rootFileName !== undefined),\n resolveByFileName: this._options.resolveByFileName ?? true,\n glueUrl: this._options.glueUrl,\n wasmUrl: this._options.wasmUrl,\n dataUrl: this._options.dataUrl,\n },\n };\n const transfer = [...new Set([bytes.buffer, ...Object.values(files ?? {}).map((file) => file.buffer)])];\n const controller = new AbortController();\n const signal = controller.signal;\n this._activeLoads.add(controller);\n try {\n const worker = this._getWorker(this._options.workerUrl);\n const response = await new Promise<Extract<WorkerResponse, { type: \"result\" }>>((resolve, reject) => {\n this._pending.set(requestId, {\n resolve,\n reject,\n onProgress: (progress) => {\n this._options.onProgress?.(progress);\n onProgress?.({\n lengthComputable: false,\n loaded: _ProgressPhaseIndex[progress.phase],\n total: 4,\n });\n },\n onLog: this._options.onLog,\n });\n try {\n worker.postMessage(request, transfer);\n } catch (error) {\n this._pending.delete(requestId);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n\n const materializingProgress = {\n phase: \"materializing\",\n message: \"Creating Babylon.js objects...\",\n } as const;\n this._options.onProgress?.(materializingProgress);\n onProgress?.({ lengthComputable: false, loaded: 4, total: 4 });\n signal.throwIfAborted();\n const materialized = await materializeCommandBuffers(scene, response.commands, response.data, addToScene, signal);\n const result = {\n container: materialized.container,\n timings: {\n ...response.timings,\n materializeMs: materialized.materializeMs,\n },\n statistics: response.statistics,\n missingAssets: response.missingAssets,\n };\n try {\n signal.throwIfAborted();\n this._options.onComplete?.({\n timings: result.timings,\n statistics: result.statistics,\n missingAssets: result.missingAssets,\n } satisfies USDImportDiagnostics);\n signal.throwIfAborted();\n } catch (error) {\n materialized.container.dispose();\n throw error;\n }\n return result;\n } finally {\n this._activeLoads.delete(controller);\n if (this._pending.size === 0) {\n this._terminateWorker();\n }\n }\n }\n\n private _getWorker(workerUrl?: string | URL): Worker {\n if (!workerUrl) {\n throw new Error(\"The USD worker URL was not configured.\");\n }\n const currentLocation = globalThis.location;\n const resolvedUrl = new URL(String(workerUrl), currentLocation?.href ?? \"http://localhost/\").href;\n if (this._worker && this._workerUrl !== resolvedUrl) {\n if (this._pending.size > 0) {\n throw new Error(\"Cannot change the USD worker URL while requests are pending.\");\n }\n this._terminateWorker();\n }\n if (this._worker) {\n return this._worker;\n }\n this._workerUrl = resolvedUrl;\n if (!currentLocation || new URL(resolvedUrl).origin === currentLocation.origin) {\n this._worker = new Worker(resolvedUrl, { type: \"module\" });\n } else {\n this._workerBlobUrl = URL.createObjectURL(new Blob([`import ${JSON.stringify(resolvedUrl)};`], { type: \"application/javascript\" }));\n this._worker = new Worker(this._workerBlobUrl, { type: \"module\" });\n }\n this._worker.addEventListener(\"message\", (event: MessageEvent<WorkerResponse>) => {\n const response = event.data;\n const pending = this._pending.get(response.requestId);\n if (!pending) {\n return;\n }\n if (response.type === \"progress\") {\n pending.onProgress?.(response.progress);\n return;\n }\n if (response.type === \"log\") {\n pending.onLog?.(response.level >= 2 ? \"error\" : response.level === 1 ? \"warning\" : \"info\", response.message);\n return;\n }\n this._pending.delete(response.requestId);\n if (response.type === \"error\") {\n const error = new Error(response.message);\n error.stack = response.stack;\n pending.reject(error);\n } else {\n pending.resolve(response);\n }\n });\n const fail = (error: Error) => {\n this._terminateWorker();\n for (const request of this._pending.values()) {\n request.reject(error);\n }\n this._pending.clear();\n };\n this._worker.addEventListener(\"error\", (event) => {\n fail(event.error ?? new Error(event.message || `Could not load the USD worker from '${resolvedUrl}'.`));\n });\n this._worker.addEventListener(\"messageerror\", () => {\n fail(new Error(\"The USD worker returned a message that could not be deserialized.\"));\n });\n return this._worker;\n }\n\n private _terminateWorker(): void {\n this._worker?.terminate();\n this._worker = undefined;\n this._workerUrl = undefined;\n if (this._workerBlobUrl) {\n URL.revokeObjectURL(this._workerBlobUrl);\n this._workerBlobUrl = undefined;\n }\n }\n}\n\nconst _ProgressPhaseIndex: Record<USDLoadProgress[\"phase\"], number> = {\n initializing: 1,\n staging: 2,\n extracting: 3,\n materializing: 4,\n};\n\nlet _Registered = false;\n\n/** @internal */\nexport function _RegisterUSDLoaderDependencies(): void {\n RegisterPbrMaterial();\n RegisterInstancedMesh();\n RegisterThinInstanceMesh();\n}\n\n/**\n * Registers the USD scene loader plugin and its Babylon.js runtime dependencies.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterUSDFileLoader(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n _RegisterUSDLoaderDependencies();\n RegisterSceneLoaderPlugin(new USDFileLoader());\n}\n"]}
|