@babylonjs/loaders 9.25.0 → 9.26.1

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 (106) hide show
  1. package/FBX/fbxConstraintBehavior.d.ts +188 -0
  2. package/FBX/fbxConstraintBehavior.js +532 -0
  3. package/FBX/fbxConstraintBehavior.js.map +1 -0
  4. package/FBX/fbxFileLoader.pure.d.ts +175 -6
  5. package/FBX/fbxFileLoader.pure.js +1521 -286
  6. package/FBX/fbxFileLoader.pure.js.map +1 -1
  7. package/FBX/index.d.ts +4 -1
  8. package/FBX/index.js +1 -0
  9. package/FBX/index.js.map +1 -1
  10. package/FBX/interpreter/animation.d.ts +73 -33
  11. package/FBX/interpreter/animation.js +620 -223
  12. package/FBX/interpreter/animation.js.map +1 -1
  13. package/FBX/interpreter/animationCurve.d.ts +91 -0
  14. package/FBX/interpreter/animationCurve.js +623 -0
  15. package/FBX/interpreter/animationCurve.js.map +1 -0
  16. package/FBX/interpreter/blendShapes.js +9 -18
  17. package/FBX/interpreter/blendShapes.js.map +1 -1
  18. package/FBX/interpreter/connections.d.ts +1 -1
  19. package/FBX/interpreter/connections.js +173 -34
  20. package/FBX/interpreter/connections.js.map +1 -1
  21. package/FBX/interpreter/constraints.d.ts +68 -0
  22. package/FBX/interpreter/constraints.js +143 -0
  23. package/FBX/interpreter/constraints.js.map +1 -0
  24. package/FBX/interpreter/fbxInterpreter.d.ts +89 -4
  25. package/FBX/interpreter/fbxInterpreter.js +474 -122
  26. package/FBX/interpreter/fbxInterpreter.js.map +1 -1
  27. package/FBX/interpreter/geometry.d.ts +1 -1
  28. package/FBX/interpreter/geometry.js +150 -92
  29. package/FBX/interpreter/geometry.js.map +1 -1
  30. package/FBX/interpreter/legacyDocument.d.ts +11 -0
  31. package/FBX/interpreter/legacyDocument.js +425 -0
  32. package/FBX/interpreter/legacyDocument.js.map +1 -0
  33. package/FBX/interpreter/materialModel.d.ts +71 -0
  34. package/FBX/interpreter/materialModel.js +622 -0
  35. package/FBX/interpreter/materialModel.js.map +1 -0
  36. package/FBX/interpreter/materials.d.ts +13 -1
  37. package/FBX/interpreter/materials.js +88 -5
  38. package/FBX/interpreter/materials.js.map +1 -1
  39. package/FBX/interpreter/nodeTransform.d.ts +32 -0
  40. package/FBX/interpreter/nodeTransform.js +54 -0
  41. package/FBX/interpreter/nodeTransform.js.map +1 -0
  42. package/FBX/interpreter/nurbs.d.ts +99 -0
  43. package/FBX/interpreter/nurbs.js +627 -0
  44. package/FBX/interpreter/nurbs.js.map +1 -0
  45. package/FBX/interpreter/propertyTemplates.d.ts +23 -0
  46. package/FBX/interpreter/propertyTemplates.js +109 -2
  47. package/FBX/interpreter/propertyTemplates.js.map +1 -1
  48. package/FBX/interpreter/rig.js +16 -0
  49. package/FBX/interpreter/rig.js.map +1 -1
  50. package/FBX/interpreter/sceneDiagnostics.js +28 -3
  51. package/FBX/interpreter/sceneDiagnostics.js.map +1 -1
  52. package/FBX/interpreter/skeleton.d.ts +4 -18
  53. package/FBX/interpreter/skeleton.js +16 -94
  54. package/FBX/interpreter/skeleton.js.map +1 -1
  55. package/FBX/parsers/fbxAsciiParser.js +119 -9
  56. package/FBX/parsers/fbxAsciiParser.js.map +1 -1
  57. package/FBX/parsers/fbxBinaryParser.js +74 -22
  58. package/FBX/parsers/fbxBinaryParser.js.map +1 -1
  59. package/FBX/pure.d.ts +1 -0
  60. package/FBX/pure.js +1 -0
  61. package/FBX/pure.js.map +1 -1
  62. package/FBX/types/fbxTypes.d.ts +18 -2
  63. package/FBX/types/fbxTypes.js +40 -12
  64. package/FBX/types/fbxTypes.js.map +1 -1
  65. package/SPLAT/gaussianSplattingStream.d.ts +31 -0
  66. package/SPLAT/gaussianSplattingStream.js +49 -0
  67. package/SPLAT/gaussianSplattingStream.js.map +1 -1
  68. package/USD/index.d.ts +2 -0
  69. package/USD/index.js +4 -0
  70. package/USD/index.js.map +1 -0
  71. package/USD/pure.d.ts +3 -0
  72. package/USD/pure.js +5 -0
  73. package/USD/pure.js.map +1 -0
  74. package/USD/usdCommandProtocol.d.ts +83 -0
  75. package/USD/usdCommandProtocol.js +173 -0
  76. package/USD/usdCommandProtocol.js.map +1 -0
  77. package/USD/usdFileLoader.d.ts +6 -0
  78. package/USD/usdFileLoader.js +9 -0
  79. package/USD/usdFileLoader.js.map +1 -0
  80. package/USD/usdFileLoader.metadata.d.ts +20 -0
  81. package/USD/usdFileLoader.metadata.js +18 -0
  82. package/USD/usdFileLoader.metadata.js.map +1 -0
  83. package/USD/usdFileLoader.pure.d.ts +102 -0
  84. package/USD/usdFileLoader.pure.js +341 -0
  85. package/USD/usdFileLoader.pure.js.map +1 -0
  86. package/USD/usdFileLoader.types.d.ts +11 -0
  87. package/USD/usdFileLoader.types.js +2 -0
  88. package/USD/usdFileLoader.types.js.map +1 -0
  89. package/USD/usdLoadingOptions.d.ts +123 -0
  90. package/USD/usdLoadingOptions.js +3 -0
  91. package/USD/usdLoadingOptions.js.map +1 -0
  92. package/USD/usdSceneMaterializer.d.ts +9 -0
  93. package/USD/usdSceneMaterializer.js +982 -0
  94. package/USD/usdSceneMaterializer.js.map +1 -0
  95. package/USD/usdWorkerMessages.d.ts +57 -0
  96. package/USD/usdWorkerMessages.js +3 -0
  97. package/USD/usdWorkerMessages.js.map +1 -0
  98. package/dynamic.js +10 -0
  99. package/dynamic.js.map +1 -1
  100. package/index.d.ts +1 -0
  101. package/index.js +1 -0
  102. package/index.js.map +1 -1
  103. package/package.json +4 -3
  104. package/pure.d.ts +1 -0
  105. package/pure.js +1 -0
  106. package/pure.js.map +1 -1
@@ -0,0 +1,99 @@
1
+ /**
2
+ * NURBS curves and surfaces, and polyline ("Line") geometry.
3
+ *
4
+ * The basis evaluation and tessellation follow the FBX SDK conventions as implemented by ufbx: knot spans are
5
+ * subdivided uniformly, closed and periodic curves wrap their control points, and surfaces are tessellated into
6
+ * quads (degenerate quads at poles become triangles) with welded positions along the wrapped edges.
7
+ */
8
+ import { type FBXNode } from "../types/fbxTypes.js";
9
+ import { type FBXGeometryData, type FBXGeometryDiagnostic } from "./geometry.js";
10
+ export type FBXNurbsTopology = "open" | "closed" | "periodic";
11
+ /** Knot vector and derived data of one parametric direction. */
12
+ export interface FBXNurbsBasis {
13
+ order: number;
14
+ topology: FBXNurbsTopology;
15
+ knots: Float64Array;
16
+ /** Parameter range that the curve is defined on */
17
+ tMin: number;
18
+ tMax: number;
19
+ /** Distinct knot values inside [tMin, tMax], i.e. the boundaries of the non-empty spans */
20
+ spans: Float64Array;
21
+ /** False when the knot vector is too short or not monotonic */
22
+ valid: boolean;
23
+ }
24
+ /** NURBS curve: homogeneous control points (x, y, z, w) and a basis. */
25
+ export interface FBXNurbsCurveData {
26
+ basis: FBXNurbsBasis;
27
+ /** Control points as x,y,z,w */
28
+ controlPoints: Float64Array;
29
+ numControlPoints: number;
30
+ }
31
+ /** NURBS surface: control points laid out as `v * numU + u`. */
32
+ export interface FBXNurbsSurfaceData {
33
+ basisU: FBXNurbsBasis;
34
+ basisV: FBXNurbsBasis;
35
+ numU: number;
36
+ numV: number;
37
+ /** Control points as x,y,z,w */
38
+ controlPoints: Float64Array;
39
+ flipNormals: boolean;
40
+ /** Span subdivision stored in the file (Step), 0 when absent */
41
+ stepU: number;
42
+ stepV: number;
43
+ }
44
+ /** Polyline geometry ready for a lines mesh: one or more open or closed point runs. */
45
+ export interface FBXCurveGeometryData {
46
+ id: number;
47
+ name: string;
48
+ kind: "line" | "nurbsCurve";
49
+ /** Each polyline as x,y,z triples; closed runs repeat their first point at the end */
50
+ polylines: Float64Array[];
51
+ /** Display colour from the geometry's Color property */
52
+ color: [number, number, number] | null;
53
+ diagnostics: FBXGeometryDiagnostic[];
54
+ }
55
+ export declare function createNurbsBasis(order: number, form: string | undefined, knots: Float64Array): FBXNurbsBasis;
56
+ /**
57
+ * Evaluates the basis functions (and their derivatives) that are non-zero at `u`.
58
+ * @returns index of the first influencing control point, or -1 when the basis cannot be evaluated
59
+ */
60
+ export declare function evaluateNurbsBasis(basis: FBXNurbsBasis, u: number, weights: Float64Array, derivatives: Float64Array | null): number;
61
+ /** Evaluates a curve point; `out` receives position (0..2) and derivative (3..5). */
62
+ export declare function evaluateNurbsCurve(curve: FBXNurbsCurveData, u: number, out: Float64Array, weights: Float64Array, derivs: Float64Array): boolean;
63
+ /** Evaluates a surface point; `out` receives position (0..2), du (3..5) and dv (6..8). */
64
+ export declare function evaluateNurbsSurface(surface: FBXNurbsSurfaceData, u: number, v: number, out: Float64Array, scratch: {
65
+ wu: Float64Array;
66
+ wv: Float64Array;
67
+ du: Float64Array;
68
+ dv: Float64Array;
69
+ }): boolean;
70
+ /**
71
+ * Tessellates a curve into a polyline with `subdivision` segments per knot span. Closed and periodic curves
72
+ * end on a copy of their first point.
73
+ */
74
+ export declare function tessellateNurbsCurve(curve: FBXNurbsCurveData, subdivision?: number): Float64Array | null;
75
+ /** Span subdivision to use for a surface direction: an explicit override, else the file's Step, else 4. */
76
+ export declare function resolveSpanSubdivision(fileStep: number, override: number | undefined): number;
77
+ /**
78
+ * Tessellates a surface into triangles. Positions on wrapped (closed/periodic) edges and at poles are welded
79
+ * exactly like the FBX SDK does, so degenerate quads collapse into triangles.
80
+ */
81
+ export declare function tessellateNurbsSurface(surface: FBXNurbsSurfaceData, subU: number, subV: number): {
82
+ positions: Float64Array;
83
+ indices: Uint32Array;
84
+ normals: Float64Array;
85
+ uvs: Float64Array;
86
+ } | null;
87
+ /** Reads a NurbsCurve geometry node. */
88
+ export declare function extractNurbsCurve(node: FBXNode): FBXNurbsCurveData | null;
89
+ /** Reads a NurbsSurface geometry node. */
90
+ export declare function extractNurbsSurface(node: FBXNode): FBXNurbsSurfaceData | null;
91
+ /** Tessellates a NurbsSurface geometry node into mesh geometry. */
92
+ export declare function nurbsSurfaceToGeometry(node: FBXNode, geometryId: number, subdivisionOverride: number | undefined): FBXGeometryData | null;
93
+ /** Reads a NurbsCurve geometry node into a tessellated polyline. */
94
+ export declare function extractNurbsCurveGeometry(node: FBXNode, geometryId: number, subdivision?: number): FBXCurveGeometryData;
95
+ /**
96
+ * Reads a Line geometry node: Points plus PointsIndex where a negative index (~index) ends a segment, as in
97
+ * polygon vertex indices.
98
+ */
99
+ export declare function extractLineGeometry(node: FBXNode, geometryId: number): FBXCurveGeometryData;