@flighthq/scene3d-formats 0.2.1-next.840.857425c

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 (74) hide show
  1. package/dist/awd2Inflate.d.ts +4 -0
  2. package/dist/awd2Inflate.d.ts.map +1 -0
  3. package/dist/awd2Inflate.js +249 -0
  4. package/dist/awd2Inflate.js.map +1 -0
  5. package/dist/awd2Parse.d.ts +7 -0
  6. package/dist/awd2Parse.d.ts.map +1 -0
  7. package/dist/awd2Parse.js +1533 -0
  8. package/dist/awd2Parse.js.map +1 -0
  9. package/dist/awd2Schema.d.ts +44 -0
  10. package/dist/awd2Schema.d.ts.map +1 -0
  11. package/dist/awd2Schema.js +67 -0
  12. package/dist/awd2Schema.js.map +1 -0
  13. package/dist/gltfParse.d.ts +9 -0
  14. package/dist/gltfParse.d.ts.map +1 -0
  15. package/dist/gltfParse.js +1456 -0
  16. package/dist/gltfParse.js.map +1 -0
  17. package/dist/gltfPunctualLights.d.ts +3 -0
  18. package/dist/gltfPunctualLights.d.ts.map +1 -0
  19. package/dist/gltfPunctualLights.js +103 -0
  20. package/dist/gltfPunctualLights.js.map +1 -0
  21. package/dist/index.d.ts +12 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +12 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/md2Parse.d.ts +5 -0
  26. package/dist/md2Parse.d.ts.map +1 -0
  27. package/dist/md2Parse.js +408 -0
  28. package/dist/md2Parse.js.map +1 -0
  29. package/dist/md2Schema.d.ts +12 -0
  30. package/dist/md2Schema.d.ts.map +1 -0
  31. package/dist/md2Schema.js +193 -0
  32. package/dist/md2Schema.js.map +1 -0
  33. package/dist/md5AnimParse.d.ts +3 -0
  34. package/dist/md5AnimParse.d.ts.map +1 -0
  35. package/dist/md5AnimParse.js +385 -0
  36. package/dist/md5AnimParse.js.map +1 -0
  37. package/dist/md5Parse.d.ts +6 -0
  38. package/dist/md5Parse.d.ts.map +1 -0
  39. package/dist/md5Parse.js +635 -0
  40. package/dist/md5Parse.js.map +1 -0
  41. package/dist/mtlParse.d.ts +3 -0
  42. package/dist/mtlParse.d.ts.map +1 -0
  43. package/dist/mtlParse.js +256 -0
  44. package/dist/mtlParse.js.map +1 -0
  45. package/dist/objParse.d.ts +5 -0
  46. package/dist/objParse.d.ts.map +1 -0
  47. package/dist/objParse.js +464 -0
  48. package/dist/objParse.js.map +1 -0
  49. package/dist/sceneSkeleton.d.ts +3 -0
  50. package/dist/sceneSkeleton.d.ts.map +1 -0
  51. package/dist/sceneSkeleton.js +34 -0
  52. package/dist/sceneSkeleton.js.map +1 -0
  53. package/dist/shared.d.ts +18 -0
  54. package/dist/shared.d.ts.map +1 -0
  55. package/dist/shared.js +143 -0
  56. package/dist/shared.js.map +1 -0
  57. package/dist/threeDsParse.d.ts +4 -0
  58. package/dist/threeDsParse.d.ts.map +1 -0
  59. package/dist/threeDsParse.js +718 -0
  60. package/dist/threeDsParse.js.map +1 -0
  61. package/package.json +55 -0
  62. package/src/awd2Inflate.test.ts +118 -0
  63. package/src/awd2Parse.test.ts +2431 -0
  64. package/src/gltfParse.test.ts +2339 -0
  65. package/src/gltfPunctualLights.test.ts +184 -0
  66. package/src/gltfTreeShaking.test.ts +45 -0
  67. package/src/md2Parse.test.ts +1033 -0
  68. package/src/md5AnimParse.test.ts +673 -0
  69. package/src/md5Parse.test.ts +1094 -0
  70. package/src/mtlParse.test.ts +244 -0
  71. package/src/objParse.test.ts +690 -0
  72. package/src/sceneSkeleton.test.ts +35 -0
  73. package/src/shared.test.ts +210 -0
  74. package/src/threeDsParse.test.ts +1089 -0
package/dist/shared.js ADDED
@@ -0,0 +1,143 @@
1
+ import { CANONICAL_SKINNED_MESH_GEOMETRY_LAYOUT } from '@flighthq/mesh';
2
+ import { createTexture } from '@flighthq/texture';
3
+ import { ResourceResolutionState, ImageResourceReferenceKind } from '@flighthq/types';
4
+ export const CANONICAL_FLOATS_PER_VERTEX = 12;
5
+ export const CANONICAL_LAYOUT = {
6
+ attributes: [
7
+ { byteOffset: 0, format: 'float32x3', semantic: 'position' },
8
+ { byteOffset: 12, format: 'float32x3', semantic: 'normal' },
9
+ { byteOffset: 24, format: 'float32x4', semantic: 'tangent' },
10
+ { byteOffset: 40, format: 'float32x2', semantic: 'uv0' },
11
+ ],
12
+ stride: 48,
13
+ };
14
+ // Floats per vertex in the canonical skinned record (position/normal/tangent/uv0/joints0/weights0),
15
+ // derived from the shared skinned layout so no importer's interleave stride can drift from it.
16
+ export const SKINNED_FLOATS_PER_VERTEX = CANONICAL_SKINNED_MESH_GEOMETRY_LAYOUT.stride / 4;
17
+ // The joint influences per vertex the skinned layout carries (linear-blend skinning's standard 4).
18
+ // Source formats may list more influences per vertex (AWD's shambler uses 8); the top four by weight
19
+ // are kept and renormalized. See packSkinInfluences.
20
+ export const MAX_SKIN_INFLUENCES = 4;
21
+ export function buildEmbeddedImageResourceReference(bytes, mimeType) {
22
+ return {
23
+ bytes,
24
+ failure: null,
25
+ kind: ImageResourceReferenceKind.Embedded,
26
+ mimeType,
27
+ state: ResourceResolutionState.Unresolved,
28
+ };
29
+ }
30
+ export function buildExternalImageResourceReference(uri, basePath = null) {
31
+ return {
32
+ basePath,
33
+ failure: null,
34
+ kind: ImageResourceReferenceKind.External,
35
+ mimeType: null,
36
+ state: ResourceResolutionState.Unresolved,
37
+ uri,
38
+ };
39
+ }
40
+ // Flight uses a right-handed Y-up coordinate system with CCW front faces. Importers for formats
41
+ // that use different conventions apply the conversions below at parse time so every scene enters
42
+ // the graph in Flight's native frame. Every coordinate-space operation passes through one of
43
+ // these helpers so the reason for each transformation is explicit and grep-locatable.
44
+ // Right-handed Z-up → right-handed Y-up: a -90° rotation about X, (x, y, z) → (x, z, -y). The
45
+ // determinant is +1, so triangle winding and cross-product normals are unchanged and no reflection
46
+ // (mirroring) is introduced. Used by every RH Z-up importer — MD2, MD5, and 3DS. stride/offset walk
47
+ // interleaved vertex buffers.
48
+ export function convertPositionsZUpToYUp(values, stride = 3, offset = 0) {
49
+ for (let i = offset; i + 2 < values.length; i += stride) {
50
+ const y = values[i + 1];
51
+ values[i + 1] = values[i + 2];
52
+ values[i + 2] = -y + 0;
53
+ }
54
+ }
55
+ // Quaternion companion to convertPositionsZUpToYUp: applies the same -90°-about-X rotation to the
56
+ // vector part (qx, qy, qz) → (qx, qz, -qy), leaving qw. Used for MD5 animation rotations.
57
+ export function convertQuaternionsZUpToYUp(values, stride = 4, offset = 0) {
58
+ for (let i = offset; i + 3 < values.length; i += stride) {
59
+ const qy = values[i + 1];
60
+ values[i + 1] = values[i + 2];
61
+ values[i + 2] = -qy + 0;
62
+ }
63
+ }
64
+ export function convertTransformLhToRh(transform) {
65
+ // AWD 12-float layout: [c0x c0y c0z c1x c1y c1z c2x c2y c2z tx ty tz]
66
+ // S·M·S negates: c0z(2), c1z(5), c2x(6), c2y(7), tz(11). Index 8 (c2z) stays — double negation.
67
+ transform[2] = -transform[2] + 0;
68
+ transform[5] = -transform[5] + 0;
69
+ transform[6] = -transform[6] + 0;
70
+ transform[7] = -transform[7] + 0;
71
+ transform[11] = -transform[11] + 0;
72
+ }
73
+ // Wraps already-in-hand encoded image bytes (a payload carved out of a container, e.g. a PNG inside a
74
+ // GLB buffer or an AWD texture block) as an Unresolved Embedded resource ref on a fresh Texture. The
75
+ // parser carries the bytes but does not decode them — @flighthq/scene3d-resources decodes on resolve.
76
+ // `mimeType` is null when the container did not declare one (the resolver sniffs it from the bytes).
77
+ export function createEmbeddedTextureRef(bytes, mimeType, resources) {
78
+ let resource = resources?.find((candidate) => candidate.kind === ImageResourceReferenceKind.Embedded &&
79
+ candidate.bytes === bytes &&
80
+ candidate.mimeType === mimeType);
81
+ if (resource === undefined) {
82
+ resource = buildEmbeddedImageResourceReference(bytes, mimeType);
83
+ resources?.push(resource);
84
+ }
85
+ return createTexture({ resource });
86
+ }
87
+ // Wraps a texture file path/URI declared by a model format as an Unresolved External resource ref on
88
+ // a fresh Texture. The parser references the image, it does not load or decode it — @flighthq/scene3d-
89
+ // resources resolves the ref later, joining a relative `uri` against `basePath` (the directory the
90
+ // container loaded from, null when the format carried none). Shared by the OBJ/MD5/3DS/MD2/glTF
91
+ // material decoders.
92
+ export function createExternalTextureRef(uri, basePath = null, resources) {
93
+ let resource = resources?.find((candidate) => candidate.kind === ImageResourceReferenceKind.External &&
94
+ candidate.uri === uri &&
95
+ candidate.basePath === basePath);
96
+ if (resource === undefined) {
97
+ resource = buildExternalImageResourceReference(uri, basePath);
98
+ resources?.push(resource);
99
+ }
100
+ return createTexture({ resource });
101
+ }
102
+ // Left-handed Y-up ↔ right-handed Y-up: negates Z (a reflection across the XY plane, det = -1) on a
103
+ // vec3 stream (positions, normals, tangents). A reflection flips triangle winding, so a caller must
104
+ // pair this with reverseTriangleWinding to keep front faces front-facing. Used by AWD/Stage3D.
105
+ export function negateVec3Z(values) {
106
+ for (let i = 2; i < values.length; i += 3) {
107
+ values[i] = -values[i] + 0;
108
+ }
109
+ }
110
+ // Reduces a vertex's joint influences to the 4-slot joints0/weights0 form linear-blend skinning
111
+ // consumes: keeps the (up to) four highest-weight influences and renormalizes their weights to sum 1,
112
+ // so dropping smaller influences does not dim the vertex. Writes joint indices into `outJoints` and
113
+ // weights into `outWeights` (both length 4), zero-filling unused slots. A vertex with no influence
114
+ // keeps all weights zero (it stays at its bind position). This is the single influence-packing seam
115
+ // every skinned-mesh importer (MD5, AWD) feeds — per-format extraction differs, the emit is shared.
116
+ export function packSkinInfluences(influences, outJoints, outWeights) {
117
+ for (let i = 0; i < MAX_SKIN_INFLUENCES; i++) {
118
+ outJoints[i] = 0;
119
+ outWeights[i] = 0;
120
+ }
121
+ // Descending by weight; per-vertex influence counts are tiny, so Array.sort is simplest.
122
+ influences.sort((a, b) => b.weight - a.weight);
123
+ const kept = Math.min(influences.length, MAX_SKIN_INFLUENCES);
124
+ let sum = 0;
125
+ for (let i = 0; i < kept; i++)
126
+ sum += influences[i].weight;
127
+ for (let i = 0; i < kept; i++) {
128
+ outJoints[i] = influences[i].jointIndex;
129
+ outWeights[i] = sum > 0 ? influences[i].weight / sum : 0;
130
+ }
131
+ }
132
+ // Reverses each triangle's winding (swaps v1 and v2). Use whenever a source's front-face winding is
133
+ // opposite to Flight's counter-clockwise-front convention: either paired with a det = -1 reflection
134
+ // such as negateVec3Z (AWD/Stage3D) or on its own for a format whose native winding is clockwise
135
+ // (MD5/id Tech 4, whose Z-up→Y-up rotation preserves the source's clockwise winding).
136
+ export function reverseTriangleWinding(indices) {
137
+ for (let i = 0; i + 2 < indices.length; i += 3) {
138
+ const tmp = indices[i + 1];
139
+ indices[i + 1] = indices[i + 2];
140
+ indices[i + 2] = tmp;
141
+ }
142
+ }
143
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ImportDiagnostic, Scene3D, Scene3DDocument } from '@flighthq/types';
2
+ export declare function createScene3DFrom3ds(bytes: Readonly<Uint8Array>, diagnostics?: ImportDiagnostic[]): Scene3D;
3
+ export declare function parse3ds(bytes: Readonly<Uint8Array>, diagnostics?: ImportDiagnostic[]): Scene3DDocument;
4
+ //# sourceMappingURL=threeDsParse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threeDsParse.d.ts","sourceRoot":"","sources":["../src/threeDsParse.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gBAAgB,EAIhB,OAAO,EACP,eAAe,EAMhB,MAAM,iBAAiB,CAAC;AAoDzB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAE3G;AAOD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAqDvG"}