@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.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.
Files changed (935) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/schema/CjsSchema.js +20 -2
  80. package/dist/global/schema/CjsSchema.js.map +1 -1
  81. package/dist/global/schema/hydration.js +14 -0
  82. package/dist/global/schema/hydration.js.map +1 -1
  83. package/dist/global/utils/bytes.js +22 -4
  84. package/dist/global/utils/bytes.js.map +1 -1
  85. package/dist/global/utils/checksum.js +80 -0
  86. package/dist/global/utils/checksum.js.map +1 -0
  87. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  88. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  89. package/dist/global/utils/errors/CjsError.js +21 -52
  90. package/dist/global/utils/errors/CjsError.js.map +1 -1
  91. package/dist/global/utils/errors/abort.js +1 -1
  92. package/dist/global/utils/errors/abort.js.map +1 -1
  93. package/dist/global/utils/errors/index.js +2 -1
  94. package/dist/global/utils/errors/index.js.map +1 -1
  95. package/dist/global/utils/index.js +4 -2
  96. package/dist/global/utils/index.js.map +1 -1
  97. package/dist/index.js +95 -35
  98. package/dist/index.js.map +1 -1
  99. package/dist/input/Tr2MainWindow.js +7 -9
  100. package/dist/input/Tr2MainWindow.js.map +1 -1
  101. package/dist/resource/CjsResMan.js +33 -39
  102. package/dist/resource/CjsResMan.js.map +1 -1
  103. package/dist/resource/CjsResource.js +19 -5
  104. package/dist/resource/CjsResource.js.map +1 -1
  105. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  106. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  107. package/dist/resource/audio/CjsAudioRes.js +4 -5
  108. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  109. package/dist/resource/format/CjsBitReader.js +263 -0
  110. package/dist/resource/format/CjsBitReader.js.map +1 -0
  111. package/dist/resource/format/CjsByteReader.js +130 -125
  112. package/dist/resource/format/CjsByteReader.js.map +1 -1
  113. package/dist/resource/format/CjsFormat.js +11 -4
  114. package/dist/resource/format/CjsFormat.js.map +1 -1
  115. package/dist/resource/format/CjsFormatError.js +37 -1
  116. package/dist/resource/format/CjsFormatError.js.map +1 -1
  117. package/dist/resource/format/CjsResourceProbe.js +41 -37
  118. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  119. package/dist/resource/format/carbonRecordGuard.js +33 -0
  120. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  121. package/dist/resource/format/imageSignatures.js +202 -0
  122. package/dist/resource/format/imageSignatures.js.map +1 -0
  123. package/dist/resource/format/index.js +2 -1
  124. package/dist/resource/format/index.js.map +1 -1
  125. package/dist/resource/format/jsonPolicies.js +180 -0
  126. package/dist/resource/format/jsonPolicies.js.map +1 -0
  127. package/dist/resource/formats/black/core/helpers.js +18 -29
  128. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  129. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  130. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  132. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  133. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  134. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  136. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  138. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  140. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  142. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  144. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  145. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  146. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  147. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  148. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  149. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  150. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  151. package/dist/resource/formats/cmf/core/binary.js +54 -60
  152. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  153. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  154. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  155. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  156. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  157. package/dist/resource/formats/dds/core/bc7.js +28 -24
  158. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  159. package/dist/resource/formats/dds/core/helpers.js +7 -133
  160. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  162. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  163. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  164. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  166. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  167. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  168. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  170. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  171. package/dist/resource/formats/flac/core/helpers.js +1 -62
  172. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  174. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  175. package/dist/resource/formats/gif/core/helpers.js +1 -63
  176. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  178. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  179. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  180. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  181. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  182. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/container.js +1 -10
  184. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  185. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  186. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  187. package/dist/resource/formats/gr2/core/shared.js +193 -189
  188. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  189. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  190. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  191. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  192. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  194. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  195. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  196. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  198. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  199. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  200. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  202. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  203. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  204. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  206. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  207. package/dist/resource/formats/obj/core/helpers.js +93 -115
  208. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  210. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  211. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  212. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  213. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  214. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  215. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  216. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  217. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  218. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  219. package/dist/resource/formats/png/core/helpers.js +13 -152
  220. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/png/core/writer.js +3 -27
  222. package/dist/resource/formats/png/core/writer.js.map +1 -1
  223. package/dist/resource/formats/red/core/helpers.js +19 -29
  224. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  226. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  227. package/dist/resource/formats/stl/core/helpers.js +44 -66
  228. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  230. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  231. package/dist/resource/formats/tga/core/helpers.js +7 -153
  232. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  234. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  235. package/dist/resource/formats/vta/core/helpers.js +1 -17
  236. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  238. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  239. package/dist/resource/formats/wav/core/helpers.js +1 -15
  240. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  241. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  242. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  243. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +69 -9
  244. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  245. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +12 -3
  246. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  247. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  248. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  249. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  250. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  251. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  252. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  253. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  254. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  255. package/dist/resource/formats/webm/core/helpers.js +1 -73
  256. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  257. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  258. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  259. package/dist/resource/formats/webp/core/helpers.js +1 -62
  260. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  261. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  262. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  263. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  264. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  265. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  266. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  267. package/dist/resource/formats/wem/core/helpers.js +1 -15
  268. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  269. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  270. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  271. package/dist/resource/geometry/MeshDecalData.js +23 -25
  272. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  273. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  274. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  276. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  278. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  280. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  281. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  282. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  283. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  284. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  285. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  286. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  287. package/dist/resource/geometry/TriJointBinding.js +16 -24
  288. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  289. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  290. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  291. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  292. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  293. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  294. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  295. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  296. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  297. package/dist/resource/index.js +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  299. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  301. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  303. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  305. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  307. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  309. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  310. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  311. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  312. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  313. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  314. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  315. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  316. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  317. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  318. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  319. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  320. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  321. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  322. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  323. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  324. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  325. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  327. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  329. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  333. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  335. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  336. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  337. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  338. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  339. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  340. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  341. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  342. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  343. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  344. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  345. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  346. package/dist/resource/worker/protocol.js +18 -1
  347. package/dist/resource/worker/protocol.js.map +1 -1
  348. package/dist/sof/EveSOF.js +2 -222
  349. package/dist/sof/EveSOF.js.map +1 -1
  350. package/dist/sof/SofDocumentBuilder.js +205 -0
  351. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  352. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  353. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  354. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  355. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  356. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  357. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  358. package/dist/sof/faction/index.js +3 -1
  359. package/dist/sof/faction/index.js.map +1 -1
  360. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  361. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  362. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  363. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  364. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  365. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  366. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  367. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  368. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  369. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  370. package/dist/sof/generic/index.js +5 -1
  371. package/dist/sof/generic/index.js.map +1 -1
  372. package/dist/sof/index.js +23 -7
  373. package/dist/sof/index.js.map +1 -1
  374. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  375. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  376. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  377. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  378. package/dist/sof/pattern/index.js +2 -1
  379. package/dist/sof/pattern/index.js.map +1 -1
  380. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  381. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  382. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  383. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  384. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  385. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  386. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  387. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  388. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  389. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  390. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  391. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  392. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  393. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  395. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  398. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  399. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  400. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  401. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  402. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  403. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  404. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  405. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  406. package/dist/sof/shared/index.js +13 -4
  407. package/dist/sof/shared/index.js.map +1 -1
  408. package/dist/sof/sofDocumentValues.js +33 -0
  409. package/dist/sof/sofDocumentValues.js.map +1 -0
  410. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  411. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  412. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  413. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  414. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  415. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  416. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  417. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  418. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  419. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  420. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  421. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  424. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  425. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  426. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  427. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  428. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  429. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  430. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  431. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  432. package/dist/trinity/controllers/index.js +5 -2
  433. package/dist/trinity/controllers/index.js.map +1 -1
  434. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  435. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  436. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  437. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  438. package/dist/trinity/core/ITr2Updateable.js +2 -1
  439. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  440. package/dist/trinity/core/Tr2Blitter.js +6 -3
  441. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  442. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  443. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  444. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  445. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  446. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  447. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  448. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  449. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  450. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  451. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  452. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  453. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  454. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  455. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  456. package/dist/trinity/core/Tr2Renderer.js +146 -1
  457. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  458. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  459. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  460. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  461. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  462. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  463. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  464. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  465. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  466. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  467. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  468. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  469. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  470. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  471. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  472. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  473. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  474. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  475. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  476. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  477. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  478. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  479. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  480. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  481. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  482. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  483. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  484. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  485. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  486. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  487. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  488. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  489. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  490. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  491. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  492. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  493. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  494. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  495. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  496. package/dist/trinity/core/index.js +42 -15
  497. package/dist/trinity/core/index.js.map +1 -1
  498. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  499. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  500. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  501. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  502. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  503. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  504. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  505. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  506. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  507. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  508. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  509. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  510. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  511. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  512. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  513. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  514. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  515. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  516. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  517. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  519. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  520. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  521. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  522. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  547. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  549. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  550. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  551. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  552. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  553. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  573. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  575. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  577. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  578. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  579. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  580. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  581. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  582. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  583. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  584. package/dist/trinity/core/variable/TriVariable.js +83 -83
  585. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  586. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  587. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  588. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  589. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  590. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  591. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  592. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  593. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  594. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  595. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  596. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  597. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  598. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  599. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  600. package/dist/trinity/eve/IEveTransform.js +2 -1
  601. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  602. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  603. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  604. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  605. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  606. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  607. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  608. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  609. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  610. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  611. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  612. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  613. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  614. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  615. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  616. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  617. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  619. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  621. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  622. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  623. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  624. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  625. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  626. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  627. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  628. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  629. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  631. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  632. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  633. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  634. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  635. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  636. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  639. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  640. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  641. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  643. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  645. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  647. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  648. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  649. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  650. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  651. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  652. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  653. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  654. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  655. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  656. package/dist/trinity/eve/index.js +10 -4
  657. package/dist/trinity/eve/index.js.map +1 -1
  658. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  659. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  660. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  661. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  662. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  663. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  664. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  665. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  666. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  667. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  668. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  669. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  670. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  671. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  672. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  673. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  674. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  675. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  676. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  677. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  678. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  679. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  680. package/dist/trinity/generated/index.js +0 -1
  681. package/dist/trinity/generated/index.js.map +1 -1
  682. package/dist/trinity/generated/trinityCore/index.js +0 -1
  683. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  684. package/dist/trinity/index.js +59 -23
  685. package/dist/trinity/index.js.map +1 -1
  686. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  687. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  688. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  689. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  690. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  691. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  692. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  693. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  694. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  695. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  696. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  697. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  698. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  699. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  700. package/dist/trinity/particle/index.js +2 -1
  701. package/dist/trinity/particle/index.js.map +1 -1
  702. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  703. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  704. package/dist/trinity/shader/Tr2Effect.js +131 -58
  705. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  706. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  707. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  708. package/dist/trinity/shader/Tr2Material.js +21 -4
  709. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  710. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  711. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  712. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  713. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  714. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  715. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  716. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  717. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  718. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  719. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  720. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  721. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  724. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  728. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  729. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  730. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  731. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  732. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  733. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  734. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  735. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  736. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  737. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  740. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  741. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  742. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  743. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  744. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  745. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  746. package/dist/trinityal/index.js +22 -9
  747. package/dist/trinityal/index.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  749. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  751. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  752. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  753. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  754. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  755. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  756. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  757. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  758. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  759. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  761. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  762. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  763. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  764. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  765. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  766. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  767. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  769. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  771. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  772. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  773. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  774. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  775. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  776. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  777. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  778. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  779. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  780. package/dist/trinityal/stub/index.js +8 -4
  781. package/dist/trinityal/stub/index.js.map +1 -1
  782. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  783. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  785. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  787. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  789. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  791. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  793. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  795. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  796. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  797. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  799. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  800. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  801. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  802. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  803. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  804. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  807. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  813. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  815. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  817. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  821. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  822. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  823. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  824. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  825. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  826. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  827. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  828. package/dist/trinityal/webgpu/internal.js +12 -11
  829. package/dist/trinityal/webgpu/internal.js.map +1 -1
  830. package/docs/audio/reference/classes/trinity.md +44 -34
  831. package/docs/character/architecture.md +276 -0
  832. package/docs/character/reference/character-appearance-plans.md +30 -66
  833. package/docs/character/reference/prepared-libraries.md +14 -30
  834. package/docs/global/reference/api.md +2 -1
  835. package/docs/global/reference/classes/README.md +53 -71
  836. package/docs/global/reference/classes/dropped.md +16 -0
  837. package/docs/resource/README.md +19 -15
  838. package/docs/resource/architecture.md +9 -2
  839. package/docs/resource/concepts/format-capabilities.md +124 -80
  840. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  841. package/docs/resource/formats/README.md +230 -224
  842. package/docs/resource/formats/bitknit2.md +221 -0
  843. package/docs/resource/formats/carbon-effect-container.md +184 -269
  844. package/docs/resource/formats/gr2.md +6 -1
  845. package/docs/resource/formats/schemabound.md +28 -48
  846. package/docs/resource/formats/static.md +70 -97
  847. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  848. package/docs/resource/formats/webgl/decl-io.md +165 -256
  849. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  850. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  851. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  852. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  853. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  854. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +158 -345
  855. package/docs/resource/reference/classes/core.md +256 -236
  856. package/docs/resource/reference/classes/formats.md +1668 -1672
  857. package/docs/resource/reference/workers.md +4 -2
  858. package/docs/sof/reference/classes/core.md +1 -1
  859. package/docs/sof/reference/classes/faction.md +2 -2
  860. package/docs/sof/reference/classes/generic.md +4 -4
  861. package/docs/sof/reference/classes/pattern.md +1 -1
  862. package/docs/sof/reference/classes/shared.md +10 -10
  863. package/docs/trinity/architecture.md +55 -44
  864. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  865. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  866. package/docs/trinity/reference/classes/dropped.md +0 -189
  867. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  868. package/docs/trinity/reference/classes/generated.md +0 -10
  869. package/docs/trinity/reference/classes/particle.md +2 -2
  870. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  871. package/docs/trinity/reference/implementation-status.md +50 -75
  872. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  873. package/docs/trinityal/reference/classes/README.md +77 -27
  874. package/docs/trinityal/reference/classes/dropped.md +92 -0
  875. package/docs/trinityal/webgpu/README.md +3 -1
  876. package/docs/trinityal/webgpu/architecture.md +121 -228
  877. package/docs/trinityal/webgpu/reference/api.md +5 -5
  878. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  879. package/format-notices/gr2/NOTICE +18 -12
  880. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  881. package/package.json +4 -1
  882. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  883. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  884. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  885. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  886. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  887. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  888. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  889. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  890. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  891. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  892. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  893. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  894. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  895. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  896. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  897. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  898. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  899. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  900. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  901. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  902. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  903. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  904. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  905. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  906. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  907. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  908. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  909. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  910. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  911. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  912. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  913. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  914. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  915. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  916. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  917. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  918. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  919. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  920. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  921. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  922. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  923. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  930. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  931. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  932. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  933. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  934. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  935. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/fbx/core/helpers.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport { CMF_CLASS_KEYS, GR2_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport { buildGr2Animations } from \"../../cmf/core/gr2Compat.js\";\nimport { buildCmfFromShared as buildCanonicalCmfFromShared } from \"../../cmf/core/shared.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\nimport {\n invertMatrix4 as invertSharedMatrix4,\n multiplyMatrix4,\n transposeMatrix4\n} from \"../../cmf/core/utils/matrix.js\";\nimport {\n normalizeQuaternionSeries,\n normalizedLerpQuaternion,\n quaternionAngularDifference,\n quaternionSegmentMidpointTick,\n quaternionSegmentNeedsSubdivision\n} from \"../../cmf/core/utils/quaternion.js\";\n\nexport { CMF_CLASS_KEYS, GR2_CLASS_KEYS };\n\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_FBX_JSON = \"fbxJson\";\nexport const COMPATIBILITY_SOURCE = \"source\";\nexport const COMPATIBILITY_CARBON = \"carbon\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"fbx\",\n source: \"\",\n flipV: true,\n compatibility: COMPATIBILITY_SOURCE,\n classes: Object.freeze({}),\n maxBytes: 256 * 1024 * 1024,\n maxNodes: 250000,\n maxDepth: 128,\n maxProperties: 4096,\n maxArrayLength: 20000000\n});\n\nconst BINARY_SIGNATURE = \"Kaydara FBX Binary \\u0000\\u001a\\u0000\";\nconst BINARY_HEADER_SIZE = 27;\nconst NODE_HEADER_32_SIZE = 13;\nconst NODE_HEADER_64_SIZE = 25;\nconst ASCII_PREFIX_LENGTH = 8192;\nconst BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst TEXT_DECODER = new TextDecoder(\"utf-8\");\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"inputType\",\n \"source\",\n \"flipV\",\n \"compatibility\",\n \"classes\",\n \"maxBytes\",\n \"maxNodes\",\n \"maxDepth\",\n \"maxProperties\",\n \"maxArrayLength\"\n]);\nconst DEFLATE_CODE_LENGTH_ORDER = Object.freeze([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\nconst DEFLATE_LENGTH_BASE = Object.freeze([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]);\nconst DEFLATE_LENGTH_EXTRA = Object.freeze([ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 ]);\nconst DEFLATE_DISTANCE_BASE = Object.freeze([ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]);\nconst DEFLATE_DISTANCE_EXTRA = Object.freeze([ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ]);\nconst ADLER32_MOD = 65521;\nconst TRIANGULATION_EPSILON = 1e-10;\nconst IDENTITY_MATRIX4 = Object.freeze([\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n]);\nconst DEFAULT_ROTATION_ORDER = \"XYZ\";\nconst FBX_ROTATION_ORDERS = Object.freeze([ \"XYZ\", \"XZY\", \"YZX\", \"YXZ\", \"ZXY\", \"ZYX\" ]);\nconst FBX_TICKS_PER_SECOND = 46186158000;\nconst CMF_VERTEX_CHANNELS = Object.freeze([\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt8\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ]\n]);\nconst CMF_MORPH_CHANNELS = Object.freeze(CMF_VERTEX_CHANNELS.slice(0, 4));\nconst FEATURE_SCAN_ROOT_NODES = Object.freeze([ \"GlobalSettings\", \"Objects\", \"Connections\" ]);\nconst SUPPORTED_GEOMETRY_CLASSES = new Set([ \"\", \"Mesh\", \"Shape\" ]);\nconst SUPPORTED_LAYER_ELEMENTS = new Set([\n \"LayerElementNormal\",\n \"LayerElementTangent\",\n \"LayerElementBinormal\",\n \"LayerElementUV\",\n \"LayerElementColor\",\n \"LayerElementMaterial\"\n]);\nconst SUPPORTED_LAYER_MAPPINGS = new Set([ \"ByPolygonVertex\", \"ByControlPoint\", \"ByVertice\", \"ByVertex\", \"ByPolygon\", \"AllSame\" ]);\nconst SUPPORTED_LAYER_REFERENCES = new Set([ \"Direct\", \"IndexToDirect\", \"Index\" ]);\nconst SUPPORTED_MATERIAL_MAPPINGS = new Set([ \"AllSame\", \"ByPolygon\" ]);\n\nlet fixedDeflateTables = null;\n\n/**\n * Normalize reader values.\n *\n * @param {object} [base] Base values.\n * @param {object} [options] Override values.\n * @param {string} [readerName] Reader name for errors.\n * @returns {object} Normalized values.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsFbxFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const baseValues = { ...DEFAULT_VALUES, ...(base || {}) };\n const values = { ...baseValues, ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"fbx\";\n values.emit = normalizeEmit(values.emit, readerName);\n values.maxBytes = normalizeIntegerLimit(values.maxBytes, \"maxBytes\", readerName);\n values.maxNodes = normalizeIntegerLimit(values.maxNodes, \"maxNodes\", readerName);\n values.maxDepth = normalizeIntegerLimit(values.maxDepth, \"maxDepth\", readerName);\n values.maxProperties = normalizeIntegerLimit(values.maxProperties, \"maxProperties\", readerName);\n values.maxArrayLength = normalizeIntegerLimit(values.maxArrayLength, \"maxArrayLength\", readerName);\n values.flipV = normalizeBooleanOption(values.flipV, \"flipV\", readerName);\n values.compatibility = normalizeCompatibility(values.compatibility, readerName);\n values.classes = Object.hasOwn(options, \"classes\")\n ? mergeClasses(baseValues.classes || {}, options.classes, readerName)\n : normalizeClasses(baseValues.classes || {}, readerName);\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\n {\n throw new TypeError(`${readerName}: emit \"${values.emit}\" requires explicit classes`);\n }\n return values;\n}\n\n/**\n * Validate a node class key.\n *\n * @param {string} key Class key.\n * @param {string} [readerName] Reader name for errors.\n * @returns {string} The validated key.\n */\nexport function validateClassKey(key, readerName = \"CjsFbxFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n return key;\n}\n\n/**\n * Validate a node class constructor.\n *\n * @param {string} key Class key.\n * @param {Function} Class Constructor.\n * @param {string} [readerName] Reader name for errors.\n * @returns {Function} The validated constructor.\n */\nexport function validateClass(key, Class, readerName = \"CjsFbxFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${key} must be a constructor`);\n }\n return Class;\n}\n\n/**\n * Normalize an emit target.\n *\n * @param {string} emit Emit target.\n * @param {string} readerName Reader name for errors.\n * @returns {string} Normalized emit target.\n */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null)\n {\n return OUTPUT_RAW;\n }\n if (emit === OUTPUT_JSON)\n {\n return OUTPUT_FBX_JSON;\n }\n if ([ OUTPUT_RAW, OUTPUT_FBX_JSON, OUTPUT_GR2, OUTPUT_CMF ].includes(emit))\n {\n return emit;\n }\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/**\n * Convert supported binary inputs to bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Binary input.\n * @returns {Uint8Array} Byte view.\n */\r/**\n * Read FBX bytes with normalized values.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Raw or debug payload.\n */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n\n if (values.emit === OUTPUT_RAW)\n {\n const metadata = inspectWithValues(bytes, values);\n return {\n payloadType: \"raw\",\n sourceFormat: \"fbx\",\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_FBX_JSON)\n {\n return parseWithValues(bytes, values);\n }\n\n if (values.emit === OUTPUT_GR2)\n {\n return readGr2WithValues(bytes, values);\n }\n\n return readCmfWithValues(bytes, values);\n}\n\n/**\n * Inspect FBX bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Lightweight FBX metadata.\n */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n const detected = inspectBytes(bytes);\n\n return {\n payloadType: \"geometry\",\n mediaTypes: [ \"geometry\" ],\n sourceFormat: \"fbx\",\n byteLength: bytes.byteLength,\n source: values.source || \"\",\n ...detected\n };\n}\n\n/**\n * Parse FBX bytes into a browser-safe debug document.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Parsed FBX document.\n */\nexport function parseWithValues(input, values = DEFAULT_VALUES)\n{\n return {\n ...parseDocumentWithValues(input, values),\n payloadType: OUTPUT_FBX_JSON\n };\n}\n\n/**\n * Read static FBX mesh data into GR2-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated GR2-shaped root.\n */\nexport function readGr2WithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n return hydrateGr2(buildGr2FromFbxNodes(document.nodes, values), values.classes, { source: values.source });\n}\n\n/**\n * Read static FBX mesh data into CMF-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated CMF-shaped root.\n */\nexport function readCmfWithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n const source = buildGr2FromFbxNodes(document.nodes, values);\n return hydrateCmf(\n buildCanonicalCmfFromShared({\n metadata: buildCmfMetadata(source),\n meshes: source.meshes,\n skeletons: source.skeletons,\n animations: source.cmfAnimations\n }, { boneIndexType: \"UInt8\" }),\n values.classes,\n { source: values.source },\n \"CjsFbxFormat\"\n );\n}\n\nfunction buildCmfMetadata(root)\n{\n const source = String(root.grannyFileSource || \"\");\n const entries = source && source !== \"memory\" ? [ { key: \"source\", value: source } ] : [];\n entries.push(\n { key: \"sourceFormat\", value: \"fbx\" },\n { key: \"generator\", value: \"CjsFbxFormat\" }\n );\n return { entries };\n}\n\nfunction parseDocumentWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return parseBinaryDocument(bytes, metadata, values);\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return parseAsciiDocument(bytes, metadata, values);\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\nfunction parseGr2DocumentWithValues(input, values)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return {\n ...metadata,\n nodes: readBinaryTargetNodes(bytes, metadata, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return {\n ...metadata,\n nodes: readAsciiTargetNodes(bytes, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\n/**\n * Report FBX support for the current implementation.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Support report.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const recognized = metadata.encoding !== \"\";\n const diagnostics = recognized\n ? inspectFbxFeatureSupport(input, values, metadata)\n : { warnings: [], errors: [] };\n\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: recognized ? \"partial\" : \"none\",\n confidence: recognized ? metadata.confidence : 0,\n preferredOutput: recognized ? \"gr2\" : \"\",\n reason: recognized ? \"FBX document parsing plus basic static/skinned/morphed GR2/CMF output and basic CMF animation curves are available; full CarbonEngine-equivalent import is not implemented yet.\" : \"Unrecognized FBX data.\",\n metadata,\n variants: [\n { kind: \"document\", codec: metadata.encoding || \"unknown\", supported: recognized },\n { kind: \"gr2\", codec: \"gr2-geometry\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry class output is available.\" : \"Unrecognized FBX data.\" },\n { kind: \"cmf\", codec: \"cmf-geometry-animation\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry and basic morph/bone animation class output are available.\" : \"Unrecognized FBX data.\" }\n ],\n warnings: diagnostics.warnings,\n errors: diagnostics.errors\n };\n }\n catch (error)\n {\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction inspectFbxFeatureSupport(input, values, metadata)\n{\n try\n {\n const\n bytes = asUint8Array(input, \"Fbx input\"),\n targetNames = new Set(FEATURE_SCAN_ROOT_NODES),\n nodes = metadata.encoding === \"binary\"\n ? readBinaryTargetNodes(bytes, metadata, values, targetNames)\n : readAsciiTargetNodes(bytes, values, targetNames);\n\n return collectFbxFeatureSupport(nodes);\n }\n catch (error)\n {\n return {\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction collectFbxFeatureSupport(nodes)\n{\n const\n warnings = [],\n objectsNode = findFirstNode(nodes, \"Objects\");\n\n if (!objectsNode)\n {\n return {\n warnings: [ \"fbx: no Objects node; runtime GR2/CMF output requires mesh Geometry nodes.\" ],\n errors: []\n };\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\"));\n\n collectGeometryFeatureWarnings(objectIndex, warnings);\n collectLayerElementFeatureWarnings(objectIndex, warnings);\n collectSkinFeatureWarnings(objectIndex, connections, warnings);\n collectBlendShapeFeatureWarnings(objectIndex, connections, warnings);\n collectAnimationFeatureWarnings(objectIndex, connections, warnings);\n\n return {\n warnings,\n errors: []\n };\n}\n\nfunction collectGeometryFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\"))\n {\n if (!SUPPORTED_GEOMETRY_CLASSES.has(geometry.className))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} class ${JSON.stringify(geometry.className)} is not imported by GR2/CMF output.`);\n continue;\n }\n\n if (geometry.className === \"Shape\")\n {\n continue;\n }\n\n if (!findFirstNode(geometry.node.children, \"Vertices\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing Vertices and cannot be imported as a mesh.`);\n }\n if (!findFirstNode(geometry.node.children, \"PolygonVertexIndex\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing PolygonVertexIndex and cannot be imported as a mesh.`);\n }\n }\n}\n\nfunction collectLayerElementFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n for (const layer of geometry.node.children.filter(child => child.name.startsWith(\"LayerElement\")))\n {\n if (!SUPPORTED_LAYER_ELEMENTS.has(layer.name))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} is ignored by GR2/CMF output.`);\n continue;\n }\n\n if (layer.name === \"LayerElementMaterial\")\n {\n collectMaterialLayerFeatureWarnings(geometry, layer, warnings);\n }\n else\n {\n collectVertexLayerFeatureWarnings(geometry, layer, warnings);\n }\n }\n }\n}\n\nfunction collectVertexLayerFeatureWarnings(geometry, layer, warnings)\n{\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\");\n\n if (!SUPPORTED_LAYER_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n if (!SUPPORTED_LAYER_REFERENCES.has(reference))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported ReferenceInformationType ${JSON.stringify(reference)}.`);\n }\n}\n\nfunction collectMaterialLayerFeatureWarnings(geometry, layer, warnings)\n{\n const mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\");\n if (!SUPPORTED_MATERIAL_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: LayerElementMaterial on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n}\n\nfunction collectSkinFeatureWarnings(objectIndex, connections, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const skins = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\").filter(isSkinDeformer);\n if (skins.length > 1)\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} has ${skins.length} Skin deformers; GR2/CMF output imports only the first skin.`);\n }\n }\n\n const skins = objectIndex.list\n .filter(entry => entry.nodeName === \"Deformer\" && isSkinDeformer(entry));\n\n for (const skin of skins)\n {\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no linked bone Model.`);\n }\n else if (!indexes.length)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no Indexes.`);\n }\n else if (!hasPositiveClusterWeight(indexes, weights))\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no positive Weights.`);\n }\n }\n\n if (hasControlPointInfluenceOverflow(buildSkinClusterRecords(clusters, objectIndex, connections)))\n {\n addWarning(warnings, `fbx: Skin ${objectLabel(skin)} has control points with more than four positive bone influences; GR2/CMF output keeps the strongest four and renormalizes them.`);\n }\n }\n}\n\n/**\n * Check whether an indexed FBX object is a Skin deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Skin deformer.\n */\nfunction isSkinDeformer(entry)\n{\n return entry?.className === \"Skin\" || entry?.fullName?.startsWith(\"Deformer::Skin\") || entry?.name === \"Skin\";\n}\n\n/**\n * Check whether an indexed FBX object is a Cluster deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Cluster deformer.\n */\nfunction isClusterDeformer(entry)\n{\n return entry?.className === \"Cluster\" || entry?.fullName?.startsWith(\"SubDeformer::\") || entry?.name?.includes(\"Cluster\");\n}\n\nfunction hasControlPointInfluenceOverflow(records)\n{\n const controlPointInfluences = buildControlPointInfluences(records);\n for (const influences of controlPointInfluences.values())\n {\n if (influences.filter(influence => influence.weight > 0).length > 4)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction collectBlendShapeFeatureWarnings(objectIndex, connections, warnings)\n{\n const channels = objectIndex.list\n .filter(entry => isBlendShapeChannel(entry));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n addWarning(warnings, `fbx: BlendShapeChannel ${objectLabel(channel)} is skipped because in-between morph interpolation is not implemented.`);\n }\n }\n}\n\nfunction collectAnimationFeatureWarnings(objectIndex, connections, warnings)\n{\n for (const stack of objectIndex.list.filter(entry => entry.nodeName === \"AnimationStack\"))\n {\n const layers = connectedChildObjects(stack, objectIndex, connections, \"AnimationLayer\");\n if (layers.length > 1)\n {\n addWarning(warnings, `fbx: AnimationStack ${objectLabel(stack)} has ${layers.length} layers; GR2/CMF output does not evaluate layered animation.`);\n }\n for (const layer of layers)\n {\n try\n {\n validateAnimationLayer(layer);\n }\n catch (error)\n {\n addWarning(warnings, `${error.message}.`);\n }\n }\n }\n\n for (const curve of objectIndex.list.filter(entry => entry.nodeName === \"AnimationCurve\"))\n {\n const keyCount = (readChildArray(curve.node, \"KeyTime\") || []).length;\n try\n {\n readAnimationCurveInterpolation(curve.node, keyCount);\n }\n catch (error)\n {\n addWarning(warnings, `${error.message} AnimationCurve ${objectLabel(curve)} is not imported by GR2/CMF output.`);\n }\n }\n}\n\nfunction addWarning(warnings, message)\n{\n if (!warnings.includes(message))\n {\n warnings.push(message);\n }\n}\n\nfunction objectLabel(entry)\n{\n return JSON.stringify(entry?.name || entry?.fullName || entry?.key || \"\");\n}\n\n/**\n * Inspect raw bytes without normalized options.\n *\n * @param {Uint8Array} bytes FBX bytes.\n * @returns {object} Detected metadata.\n */\nexport function inspectBytes(bytes)\n{\n if (isBinaryFBX(bytes))\n {\n return inspectBinaryBytes(bytes);\n }\n\n const text = decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH);\n const ascii = isAsciiFBXText(text);\n return {\n encoding: ascii ? \"ascii\" : \"\",\n version: ascii ? readAsciiVersion(text) : 0,\n signature: ascii ? \"FBX ASCII\" : \"\",\n rootNodeCount: ascii ? countAsciiRootNodes(text) : 0,\n rootNodeNames: ascii ? collectAsciiRootNames(text) : [],\n confidence: ascii ? 0.85 : 0\n };\n}\n\n/**\n * Test whether bytes look like FBX.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the input appears to be FBX.\n */\nexport function isFBX(input)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n return isBinaryFBX(bytes) || isAsciiFBXText(decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH));\n}\n\n/**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (ArrayBuffer.isView(value))\n {\n return { type: value.constructor.name, length: value.length };\n }\n if (Array.isArray(value))\n {\n return value.map(toJsonValue);\n }\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value))\n {\n output[key] = toJsonValue(entry);\n }\n return output;\n }\n return value;\n}\n\nfunction inspectBinaryBytes(bytes)\n{\n const version = readU32LE(bytes, 23);\n const headerSize = getBinaryNodeHeaderSize(version);\n const rootNodeNames = [];\n let rootNodeCount = 0;\n let offset = BINARY_HEADER_SIZE;\n\n while (offset + headerSize <= bytes.byteLength && !isNullRecord(bytes, offset, headerSize))\n {\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header || header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n break;\n }\n rootNodeNames.push(readString(bytes, header.nameOffset, header.nameLength));\n rootNodeCount++;\n offset = header.endOffset;\n }\n\n return {\n encoding: \"binary\",\n version,\n signature: \"Kaydara FBX Binary\",\n rootNodeCount,\n rootNodeNames,\n confidence: 1\n };\n}\n\nfunction parseBinaryDocument(bytes, metadata, values)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n offset = result.offset;\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryNode(bytes, offset, version, values, depth)\n{\n if (depth > values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header)\n {\n throw new Error(`fbx: invalid node header at offset ${offset}`);\n }\n if (header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: node ${header.name} extends beyond end of file`);\n }\n if (header.propertyCount > values.maxProperties)\n {\n throw new Error(`fbx: node ${header.name} exceeds maxProperties (${values.maxProperties})`);\n }\n\n let cursor = header.propertiesOffset;\n const properties = [];\n const propertyTypes = [];\n\n for (let i = 0; i < header.propertyCount; i++)\n {\n const result = readBinaryProperty(bytes, cursor, values);\n properties.push(result.value);\n propertyTypes.push(result.type);\n cursor = result.offset;\n }\n\n const propertyEnd = header.propertiesOffset + header.propertyListLength;\n if (cursor > propertyEnd)\n {\n throw new Error(`fbx: property list for node ${header.name} overflowed`);\n }\n cursor = propertyEnd;\n\n const children = [];\n let count = 1;\n const headerSize = getBinaryNodeHeaderSize(version);\n\n while (cursor + headerSize <= header.endOffset)\n {\n if (isNullRecord(bytes, cursor, headerSize))\n {\n cursor += headerSize;\n break;\n }\n if (cursor >= header.endOffset)\n {\n break;\n }\n\n const child = readBinaryNode(bytes, cursor, version, values, depth + 1);\n if (child.offset > header.endOffset)\n {\n throw new Error(`fbx: child node for ${header.name} overflowed`);\n }\n children.push(child.node);\n count += child.count;\n cursor = child.offset;\n }\n\n return {\n offset: header.endOffset,\n count,\n node: {\n name: header.name,\n properties,\n propertyTypes,\n children\n }\n };\n}\n\nfunction readBinaryNodeHeader(bytes, offset, version)\n{\n const large = version >= 7500;\n const headerSize = getBinaryNodeHeaderSize(version);\n if (offset + headerSize > bytes.byteLength)\n {\n return null;\n }\n\n let cursor = offset;\n const endOffset = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyCount = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyListLength = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const nameLength = bytes[cursor++];\n const nameOffset = cursor;\n\n if (endOffset === 0 && propertyCount === 0 && propertyListLength === 0 && nameLength === 0)\n {\n return null;\n }\n if (!Number.isSafeInteger(endOffset) || !Number.isSafeInteger(propertyCount) || !Number.isSafeInteger(propertyListLength))\n {\n throw new Error(\"fbx: 64-bit node offsets exceed JavaScript safe integer range\");\n }\n if (nameOffset + nameLength > bytes.byteLength)\n {\n throw new Error(`fbx: node name at offset ${offset} is truncated`);\n }\n\n return {\n endOffset,\n propertyCount,\n propertyListLength,\n nameLength,\n nameOffset,\n name: readString(bytes, nameOffset, nameLength),\n propertiesOffset: nameOffset + nameLength\n };\n}\n\nfunction readBinaryProperty(bytes, offset, values)\n{\n ensureRange(bytes, offset, 1, \"fbx: property type is truncated\");\n const type = String.fromCharCode(bytes[offset]);\n let cursor = offset + 1;\n\n switch (type)\n {\n case \"Y\":\n ensureRange(bytes, cursor, 2, \"fbx: int16 property is truncated\");\n return { type, value: readI16LE(bytes, cursor), offset: cursor + 2 };\n case \"C\":\n ensureRange(bytes, cursor, 1, \"fbx: bool property is truncated\");\n return { type, value: bytes[cursor] !== 0, offset: cursor + 1 };\n case \"I\":\n ensureRange(bytes, cursor, 4, \"fbx: int32 property is truncated\");\n return { type, value: readI32LE(bytes, cursor), offset: cursor + 4 };\n case \"F\":\n ensureRange(bytes, cursor, 4, \"fbx: float32 property is truncated\");\n return { type, value: readF32LE(bytes, cursor), offset: cursor + 4 };\n case \"D\":\n ensureRange(bytes, cursor, 8, \"fbx: float64 property is truncated\");\n return { type, value: readF64LE(bytes, cursor), offset: cursor + 8 };\n case \"L\":\n ensureRange(bytes, cursor, 8, \"fbx: int64 property is truncated\");\n return { type, value: readI64LEValue(bytes, cursor), offset: cursor + 8 };\n case \"R\":\n return readBinaryBlobProperty(bytes, cursor, type, \"bytes\");\n case \"S\":\n return readBinaryBlobProperty(bytes, cursor, type, \"string\");\n case \"f\":\n case \"d\":\n case \"i\":\n case \"l\":\n case \"b\":\n case \"c\":\n return readBinaryArrayProperty(bytes, cursor, type, values);\n default:\n throw new Error(`fbx: unsupported property type ${JSON.stringify(type)} at offset ${offset}`);\n }\n}\n\nfunction readBinaryBlobProperty(bytes, offset, type, kind)\n{\n ensureRange(bytes, offset, 4, `fbx: ${kind} property length is truncated`);\n const length = readU32LE(bytes, offset);\n const dataOffset = offset + 4;\n const endOffset = dataOffset + length;\n ensureRange(bytes, dataOffset, length, `fbx: ${kind} property is truncated`);\n\n return {\n type,\n value: kind === \"string\" ? readString(bytes, dataOffset, length) : bytes.subarray(dataOffset, endOffset),\n offset: endOffset\n };\n}\n\nfunction readBinaryArrayProperty(bytes, offset, type, values)\n{\n ensureRange(bytes, offset, 12, \"fbx: array property header is truncated\");\n const length = readU32LE(bytes, offset);\n const encoding = readU32LE(bytes, offset + 4);\n const byteLength = readU32LE(bytes, offset + 8);\n const dataOffset = offset + 12;\n const endOffset = dataOffset + byteLength;\n ensureRange(bytes, dataOffset, byteLength, \"fbx: array property is truncated\");\n if (length > values.maxArrayLength)\n {\n throw new Error(`fbx: array property exceeds maxArrayLength (${values.maxArrayLength})`);\n }\n\n if (encoding === 0)\n {\n return {\n type,\n value: readUncompressedArray(bytes, dataOffset, type, length, byteLength),\n offset: endOffset\n };\n }\n\n if (encoding === 1)\n {\n const expectedByteLength = getArrayElementSize(type) * length;\n const expanded = inflateZlib(bytes.subarray(dataOffset, endOffset), expectedByteLength);\n return {\n type,\n value: readUncompressedArray(expanded, 0, type, length, expectedByteLength),\n offset: endOffset\n };\n }\n\n return {\n type,\n value: {\n arrayType: type,\n length,\n encoding,\n byteOffset: dataOffset,\n byteLength,\n compressed: true\n },\n offset: endOffset\n };\n}\n\nfunction readUncompressedArray(bytes, offset, type, length, byteLength)\n{\n const expected = getArrayElementSize(type) * length;\n if (byteLength < expected)\n {\n throw new Error(`fbx: array property ${type} is truncated`);\n }\n\n if (type === \"f\")\n {\n const value = new Float32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"d\")\n {\n const value = new Float64Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF64LE(bytes, offset + i * 8);\n }\n return value;\n }\n if (type === \"i\")\n {\n const value = new Int32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readI32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"l\")\n {\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(readI64LEValue(bytes, offset + i * 8));\n }\n return value;\n }\n\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(bytes[offset + i] !== 0);\n }\n return value;\n}\n\nfunction inflateZlib(source, expectedLength)\n{\n if (source.byteLength < 6)\n {\n throw new Error(\"fbx: compressed array zlib stream is truncated\");\n }\n\n const\n cmf = source[0],\n flg = source[1];\n\n if ((cmf & 0x0f) !== 8 || (cmf >> 4) > 7 || ((cmf << 8) + flg) % 31 !== 0)\n {\n throw new Error(\"fbx: compressed array has invalid zlib header\");\n }\n if (flg & 0x20)\n {\n throw new Error(\"fbx: compressed array uses a preset zlib dictionary\");\n }\n\n const\n expectedAdler = readU32BE(source, source.byteLength - 4),\n output = inflateDeflate(source.subarray(2, source.byteLength - 4), expectedLength),\n actualAdler = adler32(output);\n\n if (actualAdler !== expectedAdler)\n {\n throw new Error(\"fbx: compressed array zlib checksum mismatch\");\n }\n\n return output;\n}\n\nfunction inflateDeflate(source, expectedLength)\n{\n const\n reader = new DeflateBitReader(source),\n state = {\n output: new Uint8Array(expectedLength),\n offset: 0\n };\n\n let finalBlock = false;\n while (!finalBlock)\n {\n finalBlock = reader.readBits(1) === 1;\n const blockType = reader.readBits(2);\n if (blockType === 0)\n {\n inflateStoredBlock(reader, state);\n }\n else if (blockType === 1)\n {\n const tables = getFixedDeflateTables();\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else if (blockType === 2)\n {\n const tables = readDynamicDeflateTables(reader);\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else\n {\n throw new Error(\"fbx: compressed array uses reserved deflate block type\");\n }\n }\n\n if (state.offset !== expectedLength)\n {\n throw new Error(\"fbx: compressed array decoded to unexpected length\");\n }\n\n return state.output;\n}\n\nfunction inflateStoredBlock(reader, state)\n{\n reader.alignByte();\n const\n length = reader.readAlignedU16LE(),\n inverseLength = reader.readAlignedU16LE();\n\n if (((length ^ 0xffff) & 0xffff) !== inverseLength)\n {\n throw new Error(\"fbx: compressed array stored block length mismatch\");\n }\n\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, reader.readAlignedByte());\n }\n}\n\nfunction inflateHuffmanBlock(reader, state, literalLengthTable, distanceTable)\n{\n for (;;)\n {\n const symbol = literalLengthTable.decode(reader);\n if (symbol < 256)\n {\n writeInflatedByte(state, symbol);\n continue;\n }\n if (symbol === 256)\n {\n return;\n }\n\n const lengthIndex = symbol - 257;\n if (lengthIndex < 0 || lengthIndex >= DEFLATE_LENGTH_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate length symbol\");\n }\n\n const\n length = DEFLATE_LENGTH_BASE[lengthIndex] + reader.readBits(DEFLATE_LENGTH_EXTRA[lengthIndex]),\n distanceSymbol = distanceTable.decode(reader);\n\n if (distanceSymbol < 0 || distanceSymbol >= DEFLATE_DISTANCE_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance symbol\");\n }\n\n const distance = DEFLATE_DISTANCE_BASE[distanceSymbol] + reader.readBits(DEFLATE_DISTANCE_EXTRA[distanceSymbol]);\n copyInflatedBytes(state, distance, length);\n }\n}\n\nfunction getFixedDeflateTables()\n{\n if (!fixedDeflateTables)\n {\n const literalLengths = new Array(288).fill(0);\n for (let symbol = 0; symbol <= 143; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n for (let symbol = 144; symbol <= 255; symbol++)\n {\n literalLengths[symbol] = 9;\n }\n for (let symbol = 256; symbol <= 279; symbol++)\n {\n literalLengths[symbol] = 7;\n }\n for (let symbol = 280; symbol <= 287; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n\n fixedDeflateTables = {\n literalLength: new DeflateHuffmanTable(literalLengths),\n distance: new DeflateHuffmanTable(new Array(32).fill(5))\n };\n }\n return fixedDeflateTables;\n}\n\nfunction readDynamicDeflateTables(reader)\n{\n const\n literalLengthCount = reader.readBits(5) + 257,\n distanceCount = reader.readBits(5) + 1,\n codeLengthCount = reader.readBits(4) + 4,\n codeLengthLengths = new Array(19).fill(0);\n\n for (let i = 0; i < codeLengthCount; i++)\n {\n codeLengthLengths[DEFLATE_CODE_LENGTH_ORDER[i]] = reader.readBits(3);\n }\n\n const\n codeLengthTable = new DeflateHuffmanTable(codeLengthLengths),\n totalCount = literalLengthCount + distanceCount,\n lengths = [];\n\n while (lengths.length < totalCount)\n {\n const symbol = codeLengthTable.decode(reader);\n if (symbol <= 15)\n {\n lengths.push(symbol);\n }\n else if (symbol === 16)\n {\n if (!lengths.length)\n {\n throw new Error(\"fbx: compressed array repeats missing deflate code length\");\n }\n repeatCodeLength(lengths, lengths[lengths.length - 1], reader.readBits(2) + 3, totalCount);\n }\n else if (symbol === 17)\n {\n repeatCodeLength(lengths, 0, reader.readBits(3) + 3, totalCount);\n }\n else if (symbol === 18)\n {\n repeatCodeLength(lengths, 0, reader.readBits(7) + 11, totalCount);\n }\n else\n {\n throw new Error(\"fbx: compressed array has invalid code length symbol\");\n }\n }\n\n return {\n literalLength: new DeflateHuffmanTable(lengths.slice(0, literalLengthCount)),\n distance: new DeflateHuffmanTable(lengths.slice(literalLengthCount))\n };\n}\n\nfunction repeatCodeLength(lengths, value, count, totalCount)\n{\n if (lengths.length + count > totalCount)\n {\n throw new Error(\"fbx: compressed array code lengths overflow\");\n }\n for (let i = 0; i < count; i++)\n {\n lengths.push(value);\n }\n}\n\nfunction writeInflatedByte(state, value)\n{\n if (state.offset >= state.output.byteLength)\n {\n throw new Error(\"fbx: compressed array decoded past expected length\");\n }\n state.output[state.offset++] = value & 0xff;\n}\n\nfunction copyInflatedBytes(state, distance, length)\n{\n if (distance <= 0 || distance > state.offset)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance\");\n }\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, state.output[state.offset - distance]);\n }\n}\n\nfunction adler32(bytes)\n{\n let\n a = 1,\n b = 0;\n\n for (const byte of bytes)\n {\n a += byte;\n b += a;\n a %= ADLER32_MOD;\n b %= ADLER32_MOD;\n }\n\n return (((b << 16) >>> 0) | a) >>> 0;\n}\n\n/**\n * Bit reader over a zlib/deflate stream used to inflate compressed FBX\n * property arrays.\n */\nclass DeflateBitReader\n{\n /**\n * Creates a DeflateBitReader over caller-provided FBX bytes and reader\n * options.\n */\n constructor(bytes)\n {\n this.bytes = bytes;\n this.byteOffset = 0;\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n /** Reads bits from the current FBX binary reader. */\n readBits(count)\n {\n let\n value = 0,\n shift = 0,\n remaining = count;\n\n while (remaining > 0)\n {\n if (this.bitCount === 0)\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array deflate stream is truncated\");\n }\n this.bitBuffer = this.bytes[this.byteOffset++];\n this.bitCount = 8;\n }\n\n const take = Math.min(remaining, this.bitCount);\n value |= (this.bitBuffer & ((1 << take) - 1)) << shift;\n this.bitBuffer >>>= take;\n this.bitCount -= take;\n shift += take;\n remaining -= take;\n }\n\n return value;\n }\n\n /**\n * Moves the compressed-bit cursor to the next byte boundary for the FBX\n * binary reader.\n */\n alignByte()\n {\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n /** Reads aligned byte from the current FBX binary reader. */\n readAlignedByte()\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array stored block is truncated\");\n }\n return this.bytes[this.byteOffset++];\n }\n\n /** Reads aligned U16 LE from the current FBX binary reader. */\n readAlignedU16LE()\n {\n const\n low = this.readAlignedByte(),\n high = this.readAlignedByte();\n return low | (high << 8);\n }\n}\n\n/**\n * Canonical Huffman decode table built from deflate code lengths for\n * inflating compressed FBX property arrays.\n */\nclass DeflateHuffmanTable\n{\n /** Creates a DeflateHuffmanTable with caller-provided initial state. */\n constructor(lengths)\n {\n this.tables = [];\n this.maxBits = 0;\n\n const counts = new Array(16).fill(0);\n for (const length of lengths)\n {\n if (length < 0 || length > 15)\n {\n throw new Error(\"fbx: compressed array has invalid deflate code length\");\n }\n if (length)\n {\n counts[length]++;\n this.maxBits = Math.max(this.maxBits, length);\n }\n }\n\n let code = 0;\n const nextCodes = new Array(16).fill(0);\n for (let bits = 1; bits <= 15; bits++)\n {\n code = (code + counts[bits - 1]) << 1;\n nextCodes[bits] = code;\n }\n\n for (let symbol = 0; symbol < lengths.length; symbol++)\n {\n const length = lengths[symbol];\n if (!length)\n {\n continue;\n }\n\n const reversed = reverseBits(nextCodes[length], length);\n nextCodes[length]++;\n if (!this.tables[length])\n {\n this.tables[length] = [];\n }\n this.tables[length][reversed] = symbol;\n }\n }\n\n /**\n * Decodes one symbol through the canonical Deflate Huffman table for the FBX\n * decoder.\n */\n decode(reader)\n {\n let code = 0;\n for (let length = 1; length <= this.maxBits; length++)\n {\n code |= reader.readBits(1) << (length - 1);\n const table = this.tables[length];\n if (table && table[code] !== undefined)\n {\n return table[code];\n }\n }\n\n throw new Error(\"fbx: compressed array has invalid deflate code\");\n }\n}\n\nfunction reverseBits(value, length)\n{\n let reversed = 0;\n for (let i = 0; i < length; i++)\n {\n reversed = (reversed << 1) | (value & 1);\n value >>>= 1;\n }\n return reversed;\n}\n\nfunction parseAsciiDocument(bytes, metadata, values)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n appendAsciiArrayContinuation(stack, line, values);\n continue;\n }\n\n stack[stack.length - 1].children.push(node);\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(node);\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryTargetNodes(bytes, metadata, values, targetNames)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const header = readBinaryNodeHeader(bytes, offset, metadata.version);\n if (!header)\n {\n throw new Error(`fbx: invalid root node header at offset ${offset}`);\n }\n if (header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: invalid root node ${header.name}`);\n }\n\n if (targetNames.has(header.name))\n {\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n }\n\n offset = header.endOffset;\n }\n\n return nodes;\n}\n\nfunction readAsciiTargetNodes(bytes, values, targetNames)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes, collecting: true } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n appendAsciiArrayContinuation(stack, line, values);\n continue;\n }\n\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n\n const isRoot = stack.length === 1;\n const parent = stack[stack.length - 1];\n const collecting = isRoot ? targetNames.has(node.name) : parent.collecting;\n\n if (collecting)\n {\n parent.children.push(node);\n }\n\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(collecting ? { children: node.children, collecting: true } : { children: [], collecting: false });\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n return nodes;\n}\n\nfunction buildGr2FromFbxNodes(nodes, values)\n{\n const objectsNode = findFirstNode(nodes, \"Objects\");\n if (!objectsNode)\n {\n throw new Error(\"fbx: GR2 output requires an Objects node\");\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\")),\n sceneTransform = buildSceneTransform(findFirstNode(nodes, \"GlobalSettings\")),\n modelWorldCache = new Map(),\n skeletonContext = buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache, values),\n meshes = [];\n\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const owners = connectedParentObjects(geometry, objectIndex, connections, \"Model\");\n for (const owner of owners.length ? owners : [ null ])\n {\n meshes.push(buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values));\n }\n }\n\n if (!meshes.length)\n {\n throw new Error(\"fbx: no supported Geometry mesh nodes found\");\n }\n\n const cmfAnimations = readCmfAnimations(\n objectIndex,\n connections,\n meshes,\n skeletonContext,\n sceneTransform,\n values\n );\n const root = {\n grannyFileFormatRevision: 0,\n grannyFileSource: values.source || \"memory\",\n meshes,\n models: buildGr2Models(skeletonContext.skeletons, meshes),\n skeletons: skeletonContext.skeletons.map(skeleton => skeleton.cmfSkeleton),\n animations: [],\n cmfAnimations\n };\n if (values.emit === OUTPUT_GR2)\n {\n root.animations = buildGr2Animations({\n skeletons: root.skeletons,\n animations: cmfAnimations\n });\n }\n return root;\n}\n\nfunction buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values)\n{\n const\n controlPoints = requireChildArray(geometry.node, \"Vertices\"),\n polygonVertexIndex = requireChildArray(geometry.node, \"PolygonVertexIndex\");\n\n if (controlPoints.length % 3 !== 0)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has invalid Vertices length`);\n }\n\n const\n decoded = decodePolygonCorners(controlPoints, polygonVertexIndex, geometry),\n meshTransform = buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache),\n positions = transformPoints(decoded.positions, meshTransform, sceneTransform),\n layerChannels = readGeometryLayerChannels(geometry.node, decoded, values, meshTransform, sceneTransform),\n normal = layerChannels.normal ?? [],\n explicitTangent = layerChannels.tangent ?? [],\n explicitBinormal = values.compatibility === COMPATIBILITY_CARBON ? [] : layerChannels.binormal ?? [],\n texcoord0 = layerChannels.texcoord0 ?? [],\n polygonTriangles = orientPolygonTriangles(\n triangulatePolygonList(decoded.polygons, decoded.positions),\n isReflectedTransform(meshTransform, sceneTransform)\n ),\n triangleFaces = flattenPolygonTriangles(polygonTriangles),\n tangent = explicitTangent.length ? explicitTangent : generateBaseTangents(positions, normal, texcoord0, triangleFaces),\n binormal = explicitBinormal.length ? explicitBinormal : generateBaseBinormals(normal, tangent),\n materialSelection = readPolygonMaterials(geometry, owner, objectIndex, connections, decoded.polygons.length),\n indices = buildIndexGroups(polygonTriangles, materialSelection),\n skin = readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext),\n morphTargets = readMorphTargets(\n geometry,\n owner,\n objectIndex,\n connections,\n decoded,\n controlPoints,\n meshTransform,\n sceneTransform,\n positions,\n triangleFaces,\n { normal, tangent, binormal, texcoord0 }\n ),\n bounds = computeBounds(positions),\n vertex = createGr2Vertex(positions, {\n ...layerChannels,\n tangent,\n normal,\n binormal,\n blendIndice: skin.blendIndice,\n blendWeight: skin.blendWeight\n });\n\n deriveIndexedBinormals(vertex);\n\n if (!hasArrayValues(vertex.normal) && morphTargets.some(target => hasArrayValues(target.vertex?.normal)))\n {\n // Carbon imports normals by default. A custom morph-normal payload\n // therefore requires the corresponding base declaration too.\n vertex.normal = cleanNumericArray(generateNormals(positions, triangleFaces));\n }\n\n return {\n name: meshNameFromFbx(geometry, owner),\n morphTargets,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds,\n boneBindings: skin.boneBindings,\n vertex,\n indices,\n skeleton: skin.skeleton\n };\n}\n\nfunction deriveIndexedBinormals(vertex)\n{\n for (const name of Object.keys(vertex))\n {\n const match = /^tangent([1-9][0-9]*)$/u.exec(name);\n if (!match) continue;\n const normal = vertex[`normal${match[1]}`] ?? [];\n const binormalName = `binormal${match[1]}`;\n if (!(vertex[binormalName]?.length)) vertex[binormalName] = generateBaseBinormals(normal, vertex[name]);\n }\n}\n\nfunction readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext)\n{\n const skin = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .find(isSkinDeformer);\n\n if (!skin)\n {\n return emptySkinning();\n }\n\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n const clusterRecords = buildSkinClusterRecords(clusters, objectIndex, connections);\n if (!clusterRecords.length)\n {\n return emptySkinning();\n }\n\n const\n boneKeys = clusterRecords.map(record => record.boneKey),\n controlPointInfluences = buildControlPointInfluences(clusterRecords),\n outputInfluences = decoded.corners.map(corner => normalizeInfluences(controlPointInfluences.get(corner.controlPointIndex) || [])),\n blendIndice = [],\n blendWeight = [],\n boneBindings = buildBoneBindingsFromInfluences(clusterRecords, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache),\n skeleton = findSkinSkeletonIndex(boneKeys, skeletonContext);\n\n for (const influences of outputInfluences)\n {\n for (let i = 0; i < 4; i++)\n {\n blendIndice.push(influences[i]?.boneIndex ?? 0);\n }\n for (let i = 0; i < 4; i++)\n {\n blendWeight.push(influences[i]?.weight ?? 0);\n }\n }\n\n return { boneBindings, blendIndice, blendWeight, boneKeys, skeleton };\n}\n\nfunction emptySkinning()\n{\n return { boneBindings: [], blendIndice: [], blendWeight: [], boneKeys: [], skeleton: null };\n}\n\n/**\n * Generate base mesh tangents when normal and UV channels are available.\n *\n * @param {number[]} positions Expanded position channel.\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} texcoord0 Expanded primary UV channel.\n * @param {number[]} triangleFaces Triangulated index buffer.\n * @returns {number[]} Expanded tangent channel.\n */\nfunction generateBaseTangents(positions, normal, texcoord0, triangleFaces)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(texcoord0))\n {\n return [];\n }\n return cleanNumericArray(generateTangents(positions, normal, texcoord0, triangleFaces));\n}\n\n/**\n * Generate base mesh binormals when normals and tangents are available.\n *\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} tangent Expanded tangent channel.\n * @returns {number[]} Expanded binormal channel.\n */\nfunction generateBaseBinormals(normal, tangent)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(tangent))\n {\n return [];\n }\n return cleanNumericArray(generateBiNormals(normal, tangent));\n}\n\nfunction readMorphTargets(geometry, owner, objectIndex, connections, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const blendShapes = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShape\" || deformer.fullName.startsWith(\"Deformer::BlendShape\") || deformer.name.includes(\"BlendShape\"));\n\n const targets = [];\n for (const blendShape of blendShapes)\n {\n const channels = connectedChildObjects(blendShape, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShapeChannel\" || deformer.fullName.startsWith(\"SubDeformer::\") || deformer.name.includes(\"BlendShapeChannel\"));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n continue;\n }\n\n for (const shape of shapes)\n {\n const target = buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex);\n if (target)\n {\n targets.push(target);\n }\n }\n }\n }\n return targets;\n}\n\nfunction buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const\n indexes = readChildArray(shape.node, \"Indexes\") || [],\n vertices = readChildArray(shape.node, \"Vertices\") || [];\n\n if (!indexes.length || !vertices.length)\n {\n return null;\n }\n if (vertices.length % 3 !== 0)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has invalid Vertices length`);\n }\n if (vertices.length / 3 < indexes.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has fewer Vertices than Indexes`);\n }\n\n const controlTargetPositions = controlPoints.slice();\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n targetOffset = i * 3,\n controlOffset = controlPointIndex * 3;\n\n if (controlOffset < 0 || controlOffset + 2 >= controlTargetPositions.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has Indexes value out of range`);\n }\n\n controlTargetPositions[controlOffset] = finiteNumber(controlPoints[controlOffset], \"Vertices\") + finiteNumber(vertices[targetOffset], \"Vertices\");\n controlTargetPositions[controlOffset + 1] = finiteNumber(controlPoints[controlOffset + 1], \"Vertices\") + finiteNumber(vertices[targetOffset + 1], \"Vertices\");\n controlTargetPositions[controlOffset + 2] = finiteNumber(controlPoints[controlOffset + 2], \"Vertices\") + finiteNumber(vertices[targetOffset + 2], \"Vertices\");\n }\n\n const expanded = [];\n for (const corner of decoded.corners)\n {\n const source = corner.controlPointIndex * 3;\n expanded.push(\n controlTargetPositions[source],\n controlTargetPositions[source + 1],\n controlTargetPositions[source + 2]\n );\n }\n\n const\n positions = transformPoints(expanded, meshTransform, sceneTransform),\n name = shape.name || channel.name || \"morph_target\",\n vertexChannels = buildMorphTargetVertexChannels(\n name,\n shape,\n indexes,\n geometry,\n owner,\n decoded,\n meshTransform,\n sceneTransform,\n positions,\n triangleFaces,\n baseVertex\n );\n\n return {\n name,\n dataIsDeltas: false,\n maxDisplacement: computeMaxDisplacement(basePositions, positions),\n vertex: createGr2Vertex(positions, vertexChannels)\n };\n}\n\nfunction buildMorphTargetVertexChannels(name, shape, indexes, geometry, owner, decoded, meshTransform, sceneTransform, positions, triangleFaces, baseVertex)\n{\n let normal = readMorphTargetShapeNormals(shape, indexes, decoded, meshTransform, sceneTransform, baseVertex);\n if (!normal.length)\n {\n normal = readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform);\n }\n if (!normal.length && hasArrayValues(baseVertex.normal))\n {\n normal = cleanNumericArray(generateNormals(positions, triangleFaces));\n }\n\n const tangent = normal.length && hasArrayValues(baseVertex.tangent) && hasArrayValues(baseVertex.texcoord0)\n ? cleanNumericArray(generateTangents(positions, normal, baseVertex.texcoord0, triangleFaces))\n : [];\n const binormal = normal.length && tangent.length && hasArrayValues(baseVertex.binormal)\n ? cleanNumericArray(generateBiNormals(normal, tangent))\n : [];\n\n return { normal, tangent, binormal };\n}\n\nfunction readMorphTargetShapeNormals(shape, indexes, decoded, meshTransform, sceneTransform, baseVertex)\n{\n const values = readChildArray(shape.node, \"Normals\") || [];\n if (!values.length) return [];\n if (!hasArrayValues(baseVertex.normal))\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has Normals without base normals`);\n }\n if (values.length !== indexes.length * 3)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} Normals length does not match Indexes`);\n }\n const byControlPoint = new Map();\n for (let index = 0; index < indexes.length; index++)\n {\n byControlPoint.set(integerNumber(indexes[index], \"Indexes\"), [\n finiteNumber(values[index * 3], \"Normals\"),\n finiteNumber(values[index * 3 + 1], \"Normals\"),\n finiteNumber(values[index * 3 + 2], \"Normals\")\n ]);\n }\n const expanded = [];\n for (const corner of decoded.corners)\n {\n expanded.push(...(byControlPoint.get(corner.controlPointIndex) || [ 0, 0, 0 ]));\n }\n const deltas = transformDirectionDeltas(expanded, meshTransform, sceneTransform);\n return baseVertex.normal.map((value, index) => value + deltas[index]);\n}\n\nfunction readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform)\n{\n const encoded = readMorphTargetCustomNormalString(name, owner, geometry);\n if (!encoded)\n {\n return [];\n }\n\n return transformDirections(\n decodeBase64Float32Vector3Array(encoded, decoded.corners.length, `morph target custom normals ${JSON.stringify(name)}`),\n meshTransform,\n sceneTransform\n );\n}\n\nfunction readMorphTargetCustomNormalString(name, owner, geometry)\n{\n const propertyName = `bsNormals_${name}`;\n for (const entry of [ owner, geometry ])\n {\n const value = readProperties70(entry?.node).properties[propertyName]?.value;\n if (typeof value === \"string\")\n {\n return value;\n }\n }\n return \"\";\n}\n\nfunction decodeBase64Float32Vector3Array(encoded, vertexCount, feature)\n{\n const\n bytes = decodeBase64Bytes(encoded, feature),\n expectedByteLength = vertexCount * 3 * 4;\n\n if (bytes.byteLength !== expectedByteLength)\n {\n throw new Error(`fbx: ${feature} byte length ${bytes.byteLength} does not match expected ${expectedByteLength}`);\n }\n\n const\n view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n values = [];\n\n for (let offset = 0; offset < bytes.byteLength; offset += 4)\n {\n values.push(finiteNumber(view.getFloat32(offset, true), feature));\n }\n return values;\n}\n\nfunction decodeBase64Bytes(encoded, feature)\n{\n const bytes = [];\n let buffer = 0, bits = 0;\n\n for (const char of String(encoded))\n {\n if (/\\s/u.test(char))\n {\n continue;\n }\n if (char === \"=\")\n {\n break;\n }\n\n const value = BASE64_ALPHABET.indexOf(char);\n if (value === -1)\n {\n throw new Error(`fbx: ${feature} contains invalid base64 data`);\n }\n\n buffer = (buffer << 6) | value;\n bits += 6;\n if (bits >= 8)\n {\n bits -= 8;\n bytes.push((buffer >> bits) & 0xff);\n }\n }\n\n return Uint8Array.from(bytes);\n}\n\nfunction computeMaxDisplacement(basePositions, targetPositions)\n{\n let maxDisplacement = 0;\n for (let i = 0; i < Math.min(basePositions.length, targetPositions.length); i += 3)\n {\n maxDisplacement = Math.max(maxDisplacement, Math.hypot(\n targetPositions[i] - basePositions[i],\n targetPositions[i + 1] - basePositions[i + 1],\n targetPositions[i + 2] - basePositions[i + 2]\n ));\n }\n return cleanFloat(maxDisplacement);\n}\n\nfunction readCmfAnimations(objectIndex, connections, meshes, skeletonContext, sceneTransform, values)\n{\n const\n morphTargetNames = buildMorphTargetNameSet(meshes),\n boneTargets = buildCmfBoneTargetMap(skeletonContext);\n\n const animations = [];\n for (const stack of objectIndex.list.filter(entry => entry.nodeName === \"AnimationStack\"))\n {\n const animation = readCmfAnimation(\n stack,\n objectIndex,\n connections,\n morphTargetNames,\n boneTargets,\n sceneTransform,\n values\n );\n if (animation)\n {\n animations.push(animation);\n }\n }\n return values.compatibility === COMPATIBILITY_CARBON ? animations.reverse() : animations;\n}\n\nfunction buildMorphTargetNameSet(meshes)\n{\n const names = new Set();\n for (const mesh of meshes)\n {\n for (const target of mesh.morphTargets ?? [])\n {\n if (target.name)\n {\n names.add(target.name);\n }\n }\n }\n return names;\n}\n\nfunction buildCmfBoneTargetMap(skeletonContext)\n{\n const targets = new Map();\n for (const skeleton of skeletonContext.skeletons)\n {\n for (let i = 0; i < skeleton.boneKeys.length; i++)\n {\n targets.set(skeleton.boneKeys[i], {\n name: skeleton.cmfSkeleton.bones[i] || `bone_${i}`,\n isRoot: skeleton.cmfSkeleton.parents[i] === 0xffffffff\n });\n }\n }\n return targets;\n}\n\nfunction readCmfAnimation(stack, objectIndex, connections, morphTargetNames, boneTargets, sceneTransform, values)\n{\n const layers = connectedChildObjects(stack, objectIndex, connections, \"AnimationLayer\");\n if (layers.length > 1)\n {\n throw new Error(`fbx: animation stack ${JSON.stringify(stack.name || stack.key)} has multiple layers`);\n }\n if (layers.length) validateAnimationLayer(layers[0]);\n const\n curveNodeParents = layers.length ? layers : [ stack ],\n curveNodes = uniqueEntries(curveNodeParents.flatMap(parent => connectedChildObjects(parent, objectIndex, connections, \"AnimationCurveNode\"))),\n records = [];\n\n for (const curveNode of curveNodes)\n {\n if (values.compatibility !== COMPATIBILITY_CARBON)\n {\n records.push(...readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames));\n }\n records.push(...readRootPropertyMorphAnimationRecords(\n curveNode,\n objectIndex,\n connections,\n values.compatibility === COMPATIBILITY_CARBON ? new Set() : morphTargetNames,\n boneTargets\n ));\n\n const boneRecord = readBoneAnimationRecord(\n curveNode,\n objectIndex,\n connections,\n boneTargets,\n sceneTransform,\n values.compatibility\n );\n if (boneRecord)\n {\n records.push(boneRecord);\n }\n }\n\n const compatibleRecords = values.compatibility === COMPATIBILITY_CARBON\n ? bakeCarbonBoneAnimationRecords(records, sceneTransform, objectIndex)\n : records;\n const normalizedRecords = deduplicateMorphAnimationRecords(compatibleRecords);\n if (!normalizedRecords.length)\n {\n return null;\n }\n\n const stackTimeSpan = readAnimationStackTimeSpan(stack, normalizedRecords);\n for (const record of normalizedRecords)\n {\n if (record.curve.ticks.some(tick => tick < stackTimeSpan.startTick ||\n stackTimeSpan.stopTick !== null && tick > stackTimeSpan.stopTick))\n {\n throw new Error(`fbx: animation curve for ${JSON.stringify(record.target)} lies outside its stack time span`);\n }\n }\n\n const\n channels = [],\n curves = [];\n let duration = 0;\n\n for (const record of normalizedRecords)\n {\n const\n sourceCurve = values.compatibility === COMPATIBILITY_CARBON || record.curve.interpolation === \"Mixed\"\n ? carbonLinearizeStepCurve(record.curve, record.valueDimension)\n : record.curve,\n knots = sourceCurve.ticks.map(tick => cleanFloat((tick - stackTimeSpan.startTick) / FBX_TICKS_PER_SECOND)),\n curveValues = sourceCurve.values.map(cleanFloat),\n curveIndex = curves.length;\n\n if (curveValues.length !== knots.length * record.valueDimension)\n {\n throw new Error(`fbx: animation curve for ${JSON.stringify(record.target)} has mismatched value dimension`);\n }\n\n for (const knot of knots)\n {\n duration = Math.max(duration, knot);\n }\n curves.push({\n valueDimension: record.valueDimension,\n interpolation: sourceCurve.interpolation ?? \"Linear\",\n knotType: \"Float32\",\n valueType: \"Float32\",\n knotCount: knots.length,\n knots: packFloat32Values(knots),\n values: packFloat32Values(curveValues)\n });\n channels.push({\n target: record.target,\n targetType: record.targetType,\n curveIndex\n });\n }\n\n return {\n name: stack.name || \"fbx_animation\",\n channels,\n curves,\n duration: cleanFloat(stackTimeSpan.duration ?? duration)\n };\n}\n\nfunction carbonLinearizeStepCurve(curve, dimension)\n{\n if (curve.interpolation === \"Mixed\")\n {\n const ticks = [ curve.ticks[0] ];\n const values = curve.values.slice(0, dimension);\n for (let index = 1; index < curve.ticks.length; index++)\n {\n if (curve.interpolations[index - 1] === \"Step\")\n {\n ticks.push(curve.ticks[index]);\n values.push(...curve.values.slice((index - 1) * dimension, index * dimension));\n }\n ticks.push(curve.ticks[index]);\n values.push(...curve.values.slice(index * dimension, (index + 1) * dimension));\n }\n return { ...curve, ticks, values, interpolation: \"Linear\" };\n }\n if (curve.interpolation !== \"Step\") return curve;\n if (curve.ticks.length < 2) return { ...curve, interpolation: \"Linear\" };\n const ticks = [ curve.ticks[0] ];\n const values = curve.values.slice(0, dimension);\n for (let index = 1; index < curve.ticks.length; index++)\n {\n ticks.push(curve.ticks[index], curve.ticks[index]);\n values.push(\n ...curve.values.slice((index - 1) * dimension, index * dimension),\n ...curve.values.slice(index * dimension, (index + 1) * dimension)\n );\n }\n return { ...curve, ticks, values, interpolation: \"Linear\" };\n}\n\nfunction validateAnimationLayer(layer)\n{\n const properties = readProperties70(layer.node).properties;\n const weight = propertyNumber(properties, \"Weight\", 100);\n if (weight !== 100)\n {\n throw new Error(`fbx: animation layer ${JSON.stringify(layer.name || layer.key)} has unsupported weight ${weight}`);\n }\n for (const name of [ \"Mute\", \"Solo\", \"Lock\" ])\n {\n if (propertyNumber(properties, name, 0))\n {\n throw new Error(`fbx: animation layer ${JSON.stringify(layer.name || layer.key)} uses ${name}`);\n }\n }\n for (const name of [ \"BlendMode\", \"RotationAccumulationMode\", \"ScaleAccumulationMode\" ])\n {\n if (propertyNumber(properties, name, 0) !== 0)\n {\n throw new Error(`fbx: animation layer ${JSON.stringify(layer.name || layer.key)} uses unsupported ${name}`);\n }\n }\n}\n\nfunction readAnimationStackTimeSpan(stack, records)\n{\n const\n properties = readProperties70(stack.node).properties,\n start = propertyNumber(properties, \"LocalStart\", propertyNumber(properties, \"ReferenceStart\", null)),\n stop = propertyNumber(properties, \"LocalStop\", propertyNumber(properties, \"ReferenceStop\", null));\n\n if ((start === null) !== (stop === null) || start !== null && stop < start)\n {\n throw new Error(`fbx: animation stack ${JSON.stringify(stack.name || stack.key)} has an invalid time span`);\n }\n if (start !== null && stop !== null)\n {\n if (!Number.isSafeInteger(start) || !Number.isSafeInteger(stop))\n {\n throw new Error(`fbx: animation stack ${JSON.stringify(stack.name || stack.key)} exceeds the safe tick range`);\n }\n return {\n startTick: start,\n stopTick: stop,\n duration: (stop - start) / FBX_TICKS_PER_SECOND\n };\n }\n\n let startTick = Infinity;\n for (const record of records)\n {\n for (const tick of record.curve.ticks)\n {\n startTick = Math.min(startTick, tick);\n }\n }\n return {\n startTick,\n stopTick: null,\n duration: null\n };\n}\n\nfunction readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames)\n{\n const\n targets = readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames),\n curve = readMorphAnimationCurve(curveNode, objectIndex, connections);\n\n if (!targets.length || !curve)\n {\n return [];\n }\n\n return targets.map(target => ({\n target,\n targetType: \"MorphTarget\",\n source: \"deformPercent\",\n valueDimension: 1,\n curve\n }));\n}\n\nfunction readRootPropertyMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames, boneTargets)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n !isBoneAnimationProperty(connection.property) &&\n boneTargets.get(connection.parentKey)?.isRoot &&\n isBoneModel(objectIndex.byId[connection.parentKey]) &&\n isUserDefinedNumericProperty(objectIndex.byId[connection.parentKey], connection.property)\n );\n\n if (!targetConnection)\n {\n return [];\n }\n\n const target = String(targetConnection.property || \"\");\n if (!target || (morphTargetNames.size && !morphTargetNames.has(target)))\n {\n return [];\n }\n\n const curve = readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 1);\n return curve\n ? [ {\n target,\n targetType: \"MorphTarget\",\n source: \"rootProperty\",\n valueDimension: 1,\n curve\n } ]\n : [];\n}\n\nfunction deduplicateMorphAnimationRecords(records)\n{\n const output = [];\n const morphs = new Map();\n for (const record of records)\n {\n if (record.targetType !== \"MorphTarget\")\n {\n output.push(record);\n continue;\n }\n const previous = morphs.get(record.target);\n if (!previous)\n {\n morphs.set(record.target, record);\n output.push(record);\n continue;\n }\n if (previous.source === record.source)\n {\n throw new Error(`fbx: morph animation target ${JSON.stringify(record.target)} is authored more than once`);\n }\n if (!sameScalarAnimationCurve(previous.curve, record.curve))\n {\n throw new Error(`fbx: standard and Carbon morph curves disagree for ${JSON.stringify(record.target)}`);\n }\n }\n return output;\n}\n\nfunction sameScalarAnimationCurve(left, right)\n{\n if (left.interpolation !== right.interpolation || left.ticks.length !== right.ticks.length ||\n left.values.length !== right.values.length) return false;\n return left.ticks.every((tick, index) => tick === right.ticks[index]) &&\n left.values.every((value, index) => Math.abs(value - right.values[index]) <= 1e-6) &&\n (left.interpolations ?? []).every((value, index) => value === right.interpolations?.[index]);\n}\n\nfunction readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames)\n{\n const targets = [];\n for (const connection of connections.list)\n {\n if (connection.relation !== \"OP\" || connection.childKey !== curveNode.key || !isMorphAnimationProperty(connection.property))\n {\n continue;\n }\n\n const target = objectIndex.byId[connection.parentKey];\n if (!isBlendShapeChannel(target))\n {\n continue;\n }\n\n for (const name of readBlendShapeChannelMorphNames(target, objectIndex, connections))\n {\n if (!morphTargetNames.size || morphTargetNames.has(name))\n {\n targets.push(name);\n }\n }\n }\n return Array.from(new Set(targets));\n}\n\nfunction readBlendShapeChannelMorphNames(channel, objectIndex, connections)\n{\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n return [];\n }\n\n const names = shapes\n .map(shape => shape.name || channel.name)\n .filter(Boolean);\n\n return names.length ? names : [ channel.name || \"morph_target\" ];\n}\n\nfunction readBlendShapeChannelShapes(channel, objectIndex, connections)\n{\n return connectedChildObjects(channel, objectIndex, connections, \"Geometry\")\n .filter(shape => shape.className === \"Shape\" || shape.fullName.startsWith(\"Geometry::Shape\") || shape.name);\n}\n\nfunction readBlendShapeChannelFullWeights(channel)\n{\n return readChildArray(channel.node, \"FullWeights\") || [];\n}\n\nfunction isUnsupportedBlendShapeInBetween(channel, shapes)\n{\n // Multiple shapes/weights under one FBX channel are in-between targets, not independent sliders.\n return shapes.length > 1 || readBlendShapeChannelFullWeights(channel).length > 1;\n}\n\nfunction readMorphAnimationCurve(curveNode, objectIndex, connections)\n{\n return readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 0.01, isMorphAnimationProperty);\n}\n\nfunction readAnyScalarAnimationCurve(curveNode, objectIndex, connections, scale, predicate = null)\n{\n const curves = connections.list\n .filter(connection => connection.parentKey === curveNode.key)\n .map(connection => ({ connection, curve: objectIndex.byId[connection.childKey] }))\n .filter(item => item.curve?.nodeName === \"AnimationCurve\");\n\n const match = predicate\n ? curves.find(item => predicate(item.connection.property)) || curves[0]\n : curves.find(item => animationCurveAxis(item.connection.property) === 0) || curves[0];\n return match ? readScalarAnimationCurve(match.curve, scale) : null;\n}\n\nfunction readScalarAnimationCurve(curve, scale)\n{\n const\n ticks = readChildArray(curve.node, \"KeyTime\") || [],\n keyValueFloat = readChildArray(curve.node, \"KeyValueFloat\"),\n keyValue = readChildArray(curve.node, \"KeyValue\"),\n valueFeature = hasArrayValues(keyValueFloat) ? \"KeyValueFloat\" : \"KeyValue\",\n values = hasArrayValues(keyValueFloat) ? keyValueFloat : hasArrayValues(keyValue) ? keyValue : [],\n interpolations = readAnimationCurveInterpolations(curve.node, ticks.length);\n\n if (!ticks.length || !values.length)\n {\n return null;\n }\n if (ticks.length !== values.length)\n {\n throw new Error(`fbx: animation curve ${JSON.stringify(curve.name || curve.key)} has mismatched KeyTime and ${valueFeature} lengths`);\n }\n\n const pairs = ticks.map((tick, index) =>\n {\n const time = finiteNumber(tick, \"KeyTime\");\n if (!Number.isSafeInteger(time)) throw new Error(\"fbx: KeyTime exceeds the safe integer range\");\n return {\n tick: time,\n value: finiteNumber(values[index], valueFeature) * scale,\n interpolation: interpolations[index]\n };\n }).sort((a, b) => a.tick - b.tick);\n for (let index = 1; index < pairs.length; index++)\n {\n if (pairs[index].tick === pairs[index - 1].tick)\n {\n throw new Error(`fbx: animation curve ${JSON.stringify(curve.name || curve.key)} has duplicate KeyTime values`);\n }\n }\n\n const sortedInterpolations = pairs.map(pair => pair.interpolation);\n const modes = new Set(sortedInterpolations);\n return {\n ticks: pairs.map(pair => pair.tick),\n values: pairs.map(pair => pair.value),\n interpolation: modes.size === 1 ? sortedInterpolations[0] : \"Mixed\",\n interpolations: sortedInterpolations\n };\n}\n\nfunction readAnimationCurveInterpolation(curveNode, keyCount)\n{\n const modes = new Set(readAnimationCurveInterpolations(curveNode, keyCount));\n return modes.size <= 1 ? [ ...modes ][0] ?? \"Linear\" : \"Mixed\";\n}\n\nfunction readAnimationCurveInterpolations(curveNode, keyCount)\n{\n const flags = readChildArray(curveNode, \"KeyAttrFlags\") || [];\n if (!flags.length) return new Array(keyCount).fill(\"Linear\");\n const referenceCounts = readChildArray(curveNode, \"KeyAttrRefCount\") || [];\n const expanded = [];\n if (flags.length === keyCount)\n {\n expanded.push(...flags);\n }\n else if (referenceCounts.length === flags.length)\n {\n for (let index = 0; index < flags.length; index++)\n {\n const count = integerNumber(referenceCounts[index], \"KeyAttrRefCount\");\n for (let repeat = 0; repeat < count; repeat++) expanded.push(flags[index]);\n }\n }\n else if (flags.length === 1)\n {\n for (let index = 0; index < keyCount; index++) expanded.push(flags[0]);\n }\n else\n {\n throw new Error(\"fbx: animation curve has malformed KeyAttrFlags/KeyAttrRefCount lengths\");\n }\n if (expanded.length !== keyCount)\n {\n throw new Error(`fbx: animation curve attributes cover ${expanded.length} keys instead of ${keyCount}`);\n }\n const interpolations = expanded.map((flag) =>\n {\n const numeric = integerNumber(flag, \"KeyAttrFlags\");\n const mode = numeric & 0x0e;\n if (mode === 0x02 && numeric & 0x100)\n {\n throw new Error(\"fbx: ConstantNext animation interpolation is not supported\");\n }\n if (mode === 0x02) return \"Step\";\n if (mode === 0x04) return \"Linear\";\n throw new Error(`fbx: animation interpolation mode ${mode} is not supported`);\n });\n return interpolations;\n}\n\nfunction readBoneAnimationRecord(curveNode, objectIndex, connections, boneTargets, sceneTransform, compatibility)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n isBoneAnimationProperty(connection.property) &&\n boneTargets.has(connection.parentKey) &&\n isBoneModel(objectIndex.byId[connection.parentKey])\n );\n\n if (!targetConnection)\n {\n return null;\n }\n\n const\n bone = objectIndex.byId[targetConnection.parentKey],\n target = boneTargets.get(bone.key),\n properties = readProperties70(bone.node).properties,\n property = normalizeBoneAnimationProperty(targetConnection.property);\n\n if (!property)\n {\n return null;\n }\n\n const vectorCurve = readVectorAnimationCurve(\n curveNode,\n objectIndex,\n connections,\n animationCurveNodeFallback(curveNode, boneAnimationFallback(properties, property))\n );\n if (!vectorCurve)\n {\n return null;\n }\n const source = { _bone: bone, _boneTarget: target, _property: property, _vectorCurve: vectorCurve };\n\n if (property === \"position\")\n {\n const values = packBonePositionValues(vectorCurve.values, sceneTransform, target.isRoot);\n return {\n ...source,\n target: target.name,\n targetType: \"BonePosition\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: compatibility === COMPATIBILITY_CARBON && target.isRoot\n ? relativeRootPositions(values)\n : values,\n interpolation: vectorCurve.interpolation\n }\n };\n }\n\n if (property === \"rotation\")\n {\n const baked = packBoneRotationCurve(bone, vectorCurve, sceneTransform, target.isRoot);\n if (compatibility === COMPATIBILITY_CARBON && target.isRoot)\n {\n baked.values = relativeRootRotations(baked.values);\n }\n return {\n ...source,\n target: target.name,\n targetType: \"BoneRotation\",\n valueDimension: 4,\n curve: {\n ticks: baked.ticks,\n values: baked.values,\n interpolation: vectorCurve.interpolation\n }\n };\n }\n\n return {\n ...source,\n target: target.name,\n targetType: \"BoneScale\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: vectorCurve.values.map(cleanFloat),\n interpolation: vectorCurve.interpolation\n }\n };\n}\n\nfunction bakeCarbonBoneAnimationRecords(records, sceneTransform, objectIndex)\n{\n const morphRecords = records.filter(record => !record._bone);\n const groups = new Map();\n for (const record of records.filter(record => record._bone))\n {\n let group = groups.get(record._bone.key);\n if (!group)\n {\n group = { bone: record._bone, target: record._boneTarget, curves: new Map() };\n groups.set(record._bone.key, group);\n }\n if (group.curves.has(record._property))\n {\n throw new Error(`fbx: bone ${JSON.stringify(record.target)} authors ${record._property} more than once`);\n }\n group.curves.set(record._property, record._vectorCurve);\n }\n\n const output = [];\n const boneOrder = new Map(objectIndex.list.map((entry, index) => [ entry.key, index ]));\n const orderedGroups = Array.from(groups.values()).sort((left, right) =>\n boneOrder.get(left.bone.key) - boneOrder.get(right.bone.key));\n for (const { bone, target, curves } of orderedGroups)\n {\n const properties = readProperties70(bone.node).properties;\n const fallback = {\n position: boneAnimationFallback(properties, \"position\"),\n rotation: boneAnimationFallback(properties, \"rotation\"),\n scale: boneAnimationFallback(properties, \"scale\")\n };\n const allTicks = new Set();\n for (const curve of curves.values()) curve.ticks.forEach(tick => allTicks.add(tick));\n const rotationCurve = curves.get(\"rotation\");\n const rotationTicks = new Set(rotationCurve?.ticks ?? [ Math.min(...allTicks) ]);\n if (rotationCurve?.interpolation === \"Linear\" && rotationCurve.ticks.length > 1)\n {\n packBoneRotationCurve(bone, rotationCurve, sceneTransform, target.isRoot).ticks.forEach(tick => rotationTicks.add(tick));\n }\n const firstTick = Math.min(...allTicks);\n const positionCurves = [ curves.get(\"position\") ].filter(Boolean);\n const positionTicks = new Set(curves.get(\"position\")?.ticks ?? [ firstTick ]);\n if (modelTransformCanMovePivot(properties))\n {\n rotationTicks.forEach(tick => positionTicks.add(tick));\n curves.get(\"scale\")?.ticks.forEach(tick => positionTicks.add(tick));\n if (rotationCurve) positionCurves.push(rotationCurve);\n if (curves.get(\"scale\")) positionCurves.push(curves.get(\"scale\"));\n }\n const sampleTransform = (sample) =>\n {\n const local = composeModelTransform(properties, {\n translation: sampleVectorAnimationCurve(curves.get(\"position\"), sample.tick, fallback.position, sample.before),\n rotation: sampleVectorAnimationCurve(curves.get(\"rotation\"), sample.tick, fallback.rotation, sample.before),\n scale: sampleVectorAnimationCurve(curves.get(\"scale\"), sample.tick, fallback.scale, sample.before)\n });\n return decomposeMatrix4(target.isRoot ? transformMatrixScene(local, sceneTransform) : local);\n };\n const positionSamples = animationSampleDescriptors(positionTicks, positionCurves);\n const rotationSamples = animationSampleDescriptors(rotationTicks, rotationCurve ? [ rotationCurve ] : []);\n const scaleCurve = curves.get(\"scale\");\n const scaleSamples = animationSampleDescriptors(new Set(scaleCurve?.ticks ?? [ firstTick ]), scaleCurve ? [ scaleCurve ] : []);\n const positions = positionSamples.flatMap((sample) =>\n {\n const position = sampleTransform(sample).position;\n return target.isRoot\n ? cleanVector3(position)\n : cleanVector3(position.map(value => value * sceneTransform.scale));\n });\n const rotations = rotationSamples.flatMap(sample => sampleTransform(sample).rotation);\n const scales = scaleSamples.flatMap(sample => cleanVector3(sampleTransform(sample).scale));\n normalizeQuaternionSeries(rotations, `FBX animation rotation for ${target.name}`);\n output.push(\n {\n target: target.name,\n targetType: \"BonePosition\",\n valueDimension: 3,\n curve: {\n ticks: positionSamples.map(sample => sample.tick),\n values: target.isRoot ? relativeRootPositions(positions) : positions,\n interpolation: \"Linear\"\n }\n },\n {\n target: target.name,\n targetType: \"BoneRotation\",\n valueDimension: 4,\n curve: {\n ticks: rotationSamples.map(sample => sample.tick),\n values: target.isRoot ? relativeRootRotations(rotations) : rotations.map(cleanFloat),\n interpolation: \"Linear\"\n }\n },\n {\n target: target.name,\n targetType: \"BoneScale\",\n valueDimension: 3,\n curve: {\n ticks: scaleSamples.map(sample => sample.tick),\n values: scales,\n interpolation: \"Linear\"\n }\n }\n );\n }\n output.push(...morphRecords);\n return output;\n}\n\nfunction modelTransformCanMovePivot(properties)\n{\n return [ \"RotationPivot\", \"ScalingPivot\", \"RotationOffset\", \"ScalingOffset\" ].some(name =>\n propertyVector3(properties, name, [ 0, 0, 0 ]).some(value => value !== 0));\n}\n\nfunction animationSampleDescriptors(ticks, curves)\n{\n const ordered = Array.from(ticks).sort((left, right) => left - right);\n const samples = [];\n for (let index = 0; index < ordered.length; index++)\n {\n const tick = ordered[index];\n const hasStepTransition = index > 0 && curves.some(curve =>\n {\n const first = curve.ticks.indexOf(tick);\n return first > 0 && (\n curve.ticks.lastIndexOf(tick) !== first ||\n curve.interpolation === \"Step\"\n );\n });\n if (hasStepTransition) samples.push({ tick, before: true });\n samples.push({ tick, before: false });\n }\n return samples;\n}\n\nfunction sampleVectorAnimationCurve(curve, tick, fallback, before = false)\n{\n if (!curve) return fallback.slice();\n const values = [];\n for (let axis = 0; axis < 3; axis++)\n {\n const scalar = {\n ticks: curve.ticks,\n values: curve.ticks.map((_, index) => curve.values[index * 3 + axis]),\n interpolation: curve.interpolation\n };\n values.push(sampleScalarAnimationCurve(scalar, tick, fallback[axis], before));\n }\n return values;\n}\n\nfunction relativeRootPositions(values)\n{\n if (!values.length) return values;\n const origin = values.slice(0, 3);\n return values.map((value, index) => cleanFloat(value - origin[index % 3]));\n}\n\nfunction relativeRootRotations(values)\n{\n if (!values.length) return values;\n const initialInverse = quaternionInverse(values.slice(0, 4));\n const output = [];\n for (let index = 0; index < values.length; index += 4)\n {\n // Carbon evaluates current * inverse(initial) in its row-vector\n // convention. In the column-vector convention used here, that is\n // inverse(initial) * current.\n output.push(...quaternionMultiply(initialInverse, values.slice(index, index + 4)));\n }\n return normalizeQuaternionSeries(output, \"Carbon-relative FBX root rotation\");\n}\n\nfunction quaternionInverse(value)\n{\n const lengthSquared = value.reduce((sum, component) => sum + component * component, 0);\n if (!(lengthSquared > 0)) throw new Error(\"fbx: root animation starts with a zero quaternion\");\n return [\n -value[0] / lengthSquared,\n -value[1] / lengthSquared,\n -value[2] / lengthSquared,\n value[3] / lengthSquared\n ];\n}\n\nfunction quaternionMultiply(left, right)\n{\n const [ ax, ay, az, aw ] = left;\n const [ bx, by, bz, bw ] = right;\n return [\n aw * bx + ax * bw + ay * bz - az * by,\n aw * by - ax * bz + ay * bw + az * bx,\n aw * bz + ax * by - ay * bx + az * bw,\n aw * bw - ax * bx - ay * by - az * bz\n ].map(cleanFloat);\n}\n\nfunction isBoneAnimationProperty(property)\n{\n return !!normalizeBoneAnimationProperty(property);\n}\n\nfunction normalizeBoneAnimationProperty(property)\n{\n const text = String(property || \"\").replace(/\\s+/gu, \"\").toLowerCase();\n if (text.includes(\"translation\") || text === \"t\")\n {\n return \"position\";\n }\n if (text.includes(\"rotation\") || text === \"r\")\n {\n return \"rotation\";\n }\n if (text.includes(\"scaling\") || text.includes(\"scale\") || text === \"s\")\n {\n return \"scale\";\n }\n return \"\";\n}\n\nfunction boneAnimationFallback(properties, property)\n{\n if (property === \"position\")\n {\n return propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]);\n }\n if (property === \"rotation\")\n {\n return propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]);\n }\n return propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n}\n\nfunction animationCurveNodeFallback(curveNode, fallback)\n{\n const\n properties = readProperties70(curveNode.node).properties,\n axes = [ \"d|X\", \"d|Y\", \"d|Z\" ];\n\n return axes.map((axis, index) => propertyNumber(properties, axis, fallback[index]));\n}\n\nfunction readVectorAnimationCurve(curveNode, objectIndex, connections, fallback)\n{\n const components = [ null, null, null ];\n for (const connection of connections.list.filter(item => item.parentKey === curveNode.key))\n {\n const\n curve = objectIndex.byId[connection.childKey],\n axis = animationCurveAxis(connection.property) ?? animationCurveAxis(curve?.name);\n\n if (curve?.nodeName !== \"AnimationCurve\" || axis === null)\n {\n continue;\n }\n components[axis] = readScalarAnimationCurve(curve, 1);\n }\n\n if (components.every(component => !component))\n {\n return null;\n }\n\n const sourceTicks = uniqueSortedTicks(components);\n const sourceValues = sourceTicks.map(tick => components.map((component, axis) =>\n sampleScalarAnimationCurve(component, tick, fallback[axis])));\n const intervalModes = components.flatMap(component => component?.interpolations?.slice(0, -1) ?? []);\n const allStep = intervalModes.length\n ? intervalModes.every(mode => mode === \"Step\")\n : components.filter(Boolean).every(component => component.interpolation === \"Step\");\n if (allStep)\n {\n return { ticks: sourceTicks, values: sourceValues.flat(), interpolation: \"Step\" };\n }\n\n const ticks = [];\n const values = [];\n for (let index = 0; index < sourceTicks.length; index++)\n {\n const tick = sourceTicks[index];\n if (index)\n {\n const before = components.map((component, axis) =>\n sampleScalarAnimationCurve(component, tick, fallback[axis], true));\n if (before.some((value, axis) => value !== sourceValues[index][axis]))\n {\n ticks.push(tick);\n values.push(...before);\n }\n }\n ticks.push(tick);\n values.push(...sourceValues[index]);\n }\n return { ticks, values, interpolation: \"Linear\" };\n}\n\nfunction animationCurveAxis(property)\n{\n const text = String(property || \"\").trim().toLowerCase();\n if (/(^|[|._])x$/u.test(text))\n {\n return 0;\n }\n if (/(^|[|._])y$/u.test(text))\n {\n return 1;\n }\n if (/(^|[|._])z$/u.test(text))\n {\n return 2;\n }\n return null;\n}\n\nfunction uniqueSortedTicks(components)\n{\n const ticks = new Set();\n for (const component of components)\n {\n for (const tick of component?.ticks ?? [])\n {\n ticks.add(tick);\n }\n }\n return Array.from(ticks).sort((a, b) => a - b);\n}\n\nfunction sampleScalarAnimationCurve(curve, tick, fallback, before = false)\n{\n if (!curve)\n {\n return fallback;\n }\n\n const { ticks, values } = curve;\n if (tick < ticks[0])\n {\n return values[0];\n }\n if (tick > ticks[ticks.length - 1])\n {\n return values[values.length - 1];\n }\n\n const firstExact = ticks.indexOf(tick);\n if (firstExact !== -1)\n {\n const lastExact = ticks.lastIndexOf(tick);\n if (lastExact !== firstExact) return values[before ? firstExact : lastExact];\n if (before && firstExact > 0 &&\n (curve.interpolations?.[firstExact - 1] ?? curve.interpolation) === \"Step\")\n {\n return values[firstExact - 1];\n }\n return values[firstExact];\n }\n\n for (let i = 1; i < ticks.length; i++)\n {\n if (tick >= ticks[i])\n {\n continue;\n }\n\n if ((curve.interpolations?.[i - 1] ?? curve.interpolation) === \"Step\") return values[i - 1];\n\n const amount = (tick - ticks[i - 1]) / (ticks[i] - ticks[i - 1]);\n return values[i - 1] + (values[i] - values[i - 1]) * amount;\n }\n return fallback;\n}\n\nfunction packBonePositionValues(values, sceneTransform, isRoot)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const position = isRoot\n ? transformScenePoint([ values[i], values[i + 1], values[i + 2] ], sceneTransform)\n : [ values[i] * sceneTransform.scale, values[i + 1] * sceneTransform.scale, values[i + 2] * sceneTransform.scale ];\n output.push(...cleanVector3(position));\n }\n return output;\n}\n\nfunction packBoneRotationValues(bone, values, sceneTransform, isRoot)\n{\n const\n properties = readProperties70(bone.node).properties,\n output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const\n matrix = composeModelTransform(properties, {\n translation: [ 0, 0, 0 ],\n rotation: [ values[i], values[i + 1], values[i + 2] ],\n scale: [ 1, 1, 1 ]\n }),\n transformed = isRoot ? transformMatrixScene(matrix, sceneTransform) : matrix,\n rotation = decomposeMatrix4(transformed).rotation;\n\n output.push(...rotation);\n }\n return normalizeQuaternionSeries(output, \"FBX animation rotation\");\n}\n\nfunction packBoneRotationCurve(bone, curve, sceneTransform, isRoot)\n{\n const quaternions = packBoneRotationValues(bone, curve.values, sceneTransform, isRoot);\n if (curve.interpolation === \"Step\" || curve.ticks.length < 2)\n {\n return { ticks: curve.ticks, values: quaternions };\n }\n const source = curve.ticks.map((tick, index) => ({\n tick,\n euler: curve.values.slice(index * 3, index * 3 + 3),\n quaternion: quaternions.slice(index * 4, index * 4 + 4)\n }));\n const output = [ source[0] ];\n for (let sourceIndex = 1; sourceIndex < source.length; sourceIndex++)\n {\n const sourceStart = source[sourceIndex - 1];\n const sourceEnd = source[sourceIndex];\n const appendSegment = (start, end, alpha0, alpha1, depth) =>\n {\n const tick = quaternionSegmentMidpointTick(start.tick, end.tick);\n if (tick <= start.tick || tick >= end.tick)\n {\n output.push(end);\n return;\n }\n const authoredTurnRequiresSubdivision = sourceStart.euler.some((value, axis) =>\n Math.abs((sourceEnd.euler[axis] - value) * (alpha1 - alpha0)) > 90\n );\n const needsSubdivision = authoredTurnRequiresSubdivision ||\n quaternionSegmentNeedsSubdivision(start.tick, end.tick, (_tick, local) =>\n {\n const\n alpha = alpha0 + (alpha1 - alpha0) * local,\n euler = sourceStart.euler.map((value, axis) =>\n value + (sourceEnd.euler[axis] - value) * alpha\n ),\n quaternion = packBoneRotationValues(bone, euler, sceneTransform, isRoot),\n interpolated = normalizedLerpQuaternion(start.quaternion, end.quaternion, local);\n return quaternionAngularDifference(quaternion, interpolated);\n });\n if (!needsSubdivision)\n {\n output.push(end);\n return;\n }\n if (depth >= 12)\n {\n throw new Error(\"fbx: rotation curve requires more than 4096 baked keys per source segment\");\n }\n const\n local = (tick - start.tick) / (end.tick - start.tick),\n alpha = alpha0 + (alpha1 - alpha0) * local,\n euler = sourceStart.euler.map((value, axis) =>\n value + (sourceEnd.euler[axis] - value) * alpha\n ),\n quaternion = packBoneRotationValues(bone, euler, sceneTransform, isRoot);\n const middle = { tick, euler, quaternion };\n appendSegment(start, middle, alpha0, alpha, depth + 1);\n appendSegment(middle, end, alpha, alpha1, depth + 1);\n };\n appendSegment(sourceStart, sourceEnd, 0, 1, 0);\n }\n const values = output.flatMap(key => key.quaternion);\n return {\n ticks: output.map(key => key.tick),\n values: normalizeQuaternionSeries(values, \"FBX animation rotation\")\n };\n}\n\nfunction isBlendShapeChannel(entry)\n{\n return !!entry && entry.nodeName === \"Deformer\" && (\n entry.className === \"BlendShapeChannel\" ||\n entry.fullName.startsWith(\"SubDeformer::\") ||\n entry.name.includes(\"BlendShapeChannel\")\n );\n}\n\nfunction isMorphAnimationProperty(property)\n{\n return String(property || \"\").toLowerCase().includes(\"deformpercent\");\n}\n\nfunction isUserDefinedNumericProperty(entry, property)\n{\n if (!entry || !property)\n {\n return false;\n }\n\n const definition = readProperties70(entry.node).properties[property];\n if (!definition || !String(definition.flags || \"\").includes(\"U\"))\n {\n return false;\n }\n return typeof definition.value === \"number\";\n}\n\nfunction uniqueEntries(entries)\n{\n const\n seen = new Set(),\n unique = [];\n\n for (const entry of entries)\n {\n if (!entry || seen.has(entry.key))\n {\n continue;\n }\n seen.add(entry.key);\n unique.push(entry);\n }\n return unique;\n}\n\nfunction packFloat32Values(values)\n{\n const\n bytes = new Uint8Array(values.length * 4),\n view = new DataView(bytes.buffer);\n\n values.forEach((value, index) => view.setFloat32(index * 4, value, true));\n return Array.from(bytes);\n}\n\nfunction buildSkinClusterRecords(clusters, objectIndex, connections)\n{\n const\n records = [],\n recordsByBone = new Map();\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone || !indexes.length || !hasPositiveClusterWeight(indexes, weights))\n {\n continue;\n }\n\n const existing = recordsByBone.get(bone.key);\n if (existing)\n {\n // Carbon assigns palette entries by linked bone, not by cluster.\n // Multiple clusters for one bone contribute to that one entry.\n existing.indexes.push(...indexes);\n existing.weights.push(...weights);\n }\n else\n {\n const record = {\n cluster,\n bone,\n boneKey: bone.key,\n boneName: bone.name || cluster.name || `bone_${records.length}`,\n indexes: [ ...indexes ],\n weights: [ ...weights ]\n };\n recordsByBone.set(bone.key, record);\n records.push(record);\n }\n }\n return records;\n}\n\nfunction hasPositiveClusterWeight(indexes, weights)\n{\n for (let i = 0; i < indexes.length; i++)\n {\n if (finiteNumber(weights[i] ?? 0, \"Weights\") > 0)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction buildControlPointInfluences(records)\n{\n const controlPointInfluences = new Map();\n\n records.forEach((record, boneIndex) =>\n {\n const\n indexes = record.indexes,\n weights = record.weights;\n\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n weight = Math.max(0, finiteNumber(weights[i] ?? 0, \"Weights\")),\n list = controlPointInfluences.get(controlPointIndex) || [];\n\n if (weight <= 0)\n {\n continue;\n }\n\n const existing = list.find(influence => influence.boneIndex === boneIndex);\n if (existing)\n {\n existing.weight += weight;\n }\n else\n {\n list.push({ boneIndex, boneKey: record.boneKey, boneName: record.boneName, weight });\n }\n controlPointInfluences.set(controlPointIndex, list);\n }\n });\n\n return controlPointInfluences;\n}\n\nfunction normalizeInfluences(influences)\n{\n const best = influences\n .filter(influence => influence.weight > 0)\n .sort((a, b) => b.weight - a.weight)\n .slice(0, 4);\n\n const total = best.reduce((sum, influence) => sum + influence.weight, 0);\n if (total <= 0)\n {\n return [];\n }\n\n return best.map(influence => ({\n ...influence,\n weight: cleanFloat(influence.weight / total)\n }));\n}\n\nfunction buildBoneBindingsFromInfluences(records, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return records.map((record, boneIndex) =>\n {\n const\n name = record.boneName || `bone_${boneIndex}`,\n bindingMatrix = buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache),\n bindingPositions = [];\n\n for (let vertexIndex = 0; vertexIndex < outputInfluences.length; vertexIndex++)\n {\n if (!outputInfluences[vertexIndex].some(influence => influence.boneIndex === boneIndex && influence.weight > 0))\n {\n continue;\n }\n\n const offset = vertexIndex * 3;\n bindingPositions.push(...transformPointMatrix4([ positions[offset], positions[offset + 1], positions[offset + 2] ], bindingMatrix));\n }\n\n const bounds = computeBounds(bindingPositions);\n return {\n name,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds\n };\n });\n}\n\nfunction buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return invertMatrix4(transformMatrixScene(\n buildMeshGeometryToWorld(record.bone, objectIndex, connections, modelWorldCache),\n sceneTransform\n ));\n}\n\nfunction clusterBone(cluster, objectIndex, connections)\n{\n return connectedChildObjects(cluster, objectIndex, connections, \"Model\")[0] || null;\n}\n\nfunction findSkinSkeletonIndex(boneKeys, skeletonContext)\n{\n if (!skeletonContext)\n {\n return null;\n }\n\n let skeletonIndex = null;\n for (const key of boneKeys)\n {\n if (!key)\n {\n return null;\n }\n\n const index = skeletonContext.boneToSkeletonIndex.get(key);\n if (index === undefined)\n {\n return null;\n }\n if (skeletonIndex === null)\n {\n skeletonIndex = index;\n }\n else if (skeletonIndex !== index)\n {\n return null;\n }\n }\n\n return skeletonIndex;\n}\n\nfunction buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache, values)\n{\n const\n roots = objectIndex.list\n .filter(isBoneModel)\n .filter(bone => !connectedParentObjects(bone, objectIndex, connections, \"Model\").some(isBoneModel)),\n bindPoseMatrices = values.compatibility === COMPATIBILITY_CARBON\n ? new Map()\n : readBindPoseMatrices(objectIndex, connections, sceneTransform),\n skeletons = [],\n boneToSkeletonIndex = new Map(),\n visited = new Set();\n\n for (const root of roots)\n {\n if (visited.has(root.key))\n {\n continue;\n }\n\n const skeleton = buildSkeleton(\n root,\n objectIndex,\n connections,\n sceneTransform,\n modelWorldCache,\n bindPoseMatrices,\n visited,\n values.compatibility\n );\n if (!skeleton.cmfSkeleton.bones.length)\n {\n continue;\n }\n\n const skeletonIndex = skeletons.length;\n skeletons.push(skeleton);\n for (const key of skeleton.boneKeys)\n {\n boneToSkeletonIndex.set(key, skeletonIndex);\n }\n }\n\n return { skeletons, boneToSkeletonIndex };\n}\n\nfunction buildSkeleton(root, objectIndex, connections, sceneTransform, modelWorldCache, bindPoseMatrices, visited, compatibility)\n{\n const\n records = [],\n componentKeys = new Set(),\n collectBone = (bone) =>\n {\n if (!bone || componentKeys.has(bone.key)) return;\n componentKeys.add(bone.key);\n for (const child of connectedChildObjects(bone, objectIndex, connections, \"Model\").filter(isBoneModel))\n {\n collectBone(child);\n }\n };\n collectBone(root);\n\n const\n pending = objectIndex.list.filter(entry =>\n isBoneModel(entry) && componentKeys.has(entry.key) && !visited.has(entry.key)),\n recordIndexByKey = new Map();\n while (pending.length)\n {\n let progressed = false;\n for (let index = 0; index < pending.length; index++)\n {\n const\n bone = pending[index],\n parent = connectedParentObjects(bone, objectIndex, connections, \"Model\")\n .find(entry => isBoneModel(entry) && componentKeys.has(entry.key));\n if (parent && !recordIndexByKey.has(parent.key)) continue;\n\n const\n parentIndex = parent ? recordIndexByKey.get(parent.key) : -1,\n authoredLocalMatrix = buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache),\n authoredTransform = decomposeMatrix4(authoredLocalMatrix),\n transform = compatibility === COMPATIBILITY_CARBON && parentIndex === -1\n ? { position: [ 0, 0, 0 ], rotation: [ 0, 0, 0, 1 ], scale: authoredTransform.scale }\n : authoredTransform,\n localMatrix = compatibility === COMPATIBILITY_CARBON && parentIndex === -1\n ? composeSimpleTransform(transform.position, [ 0, 0, 0 ], transform.scale, DEFAULT_ROTATION_ORDER)\n : authoredLocalMatrix,\n recordIndex = records.length;\n\n visited.add(bone.key);\n recordIndexByKey.set(bone.key, recordIndex);\n records.push({ bone, parentIndex, localMatrix, transform });\n pending.splice(index, 1);\n index--;\n progressed = true;\n }\n\n if (!progressed)\n {\n throw new Error(`fbx: skeleton ${JSON.stringify(root.name || root.key)} contains a cyclic bone hierarchy`);\n }\n }\n\n const\n authoredName = compatibility === COMPATIBILITY_SOURCE\n ? readProperties70(root.node).properties.CjsSkeletonName?.value\n : undefined,\n name = authoredName === undefined ? root.name || \"fbx_skeleton\" : String(authoredName),\n invBindTransforms = buildInvBindTransforms(records, bindPoseMatrices);\n\n return {\n name,\n boneKeys: records.map(record => record.bone.key),\n gr2Skeleton: {\n name,\n bones: records.map(record => buildGr2Bone(record))\n },\n cmfSkeleton: {\n name,\n bones: records.map(record => record.bone.name || \"bone\"),\n parents: records.map(record => record.parentIndex === -1 ? 0xffffffff : record.parentIndex),\n restTransforms: records.map(record => ({\n position: record.transform.position,\n rotation: record.transform.rotation,\n scale: record.transform.scale\n })),\n invBindTransforms,\n boneMasks: buildCmfBoneMasks(records)\n }\n };\n}\n\n/**\n * Build CMF bone masks from user-defined numeric bone properties.\n *\n * @param {object[]} records Imported skeleton bone records.\n * @returns {object[]} CMF bone masks.\n */\nfunction buildCmfBoneMasks(records)\n{\n const\n masks = [],\n byName = new Map();\n\n records.forEach((record, index) =>\n {\n const properties = readProperties70(record.bone.node).properties;\n for (const [ name, definition ] of Object.entries(properties))\n {\n if (!isUserDefinedNumericPropertyDefinition(definition))\n {\n continue;\n }\n\n let mask = byName.get(name);\n if (!mask)\n {\n mask = { name, weights: [] };\n byName.set(name, mask);\n masks.push(mask);\n }\n mask.weights.push({ index, weight: cleanFloat(clamp01(definition.value)) });\n }\n });\n\n return masks;\n}\n\n/**\n * Check whether a Properties70 definition should become a CMF bone-mask weight.\n *\n * @param {object} definition Parsed Properties70 definition.\n * @returns {boolean} True when the property is user-defined and numeric.\n */\nfunction isUserDefinedNumericPropertyDefinition(definition)\n{\n return !!definition && String(definition.flags || \"\").includes(\"U\") && typeof definition.value === \"number\";\n}\n\n/**\n * Clamp a numeric value to the unit interval.\n *\n * @param {number} value Input value.\n * @returns {number} Clamped value.\n */\nfunction clamp01(value)\n{\n return Math.min(1, Math.max(0, finiteNumber(value, \"bone mask weight\")));\n}\n\nfunction buildGr2Models(skeletons, meshes)\n{\n return skeletons.map((skeleton, skeletonIndex) => ({\n name: skeleton.name,\n skeleton: skeleton.gr2Skeleton,\n meshBindings: meshes\n .map((mesh, meshIndex) => mesh.skeleton === skeletonIndex ? meshIndex : -1)\n .filter(meshIndex => meshIndex !== -1)\n }));\n}\n\nfunction buildGr2Bone(record)\n{\n const transform = record.transform;\n return {\n name: record.bone.name || \"bone\",\n parentIndex: record.parentIndex,\n flag: 7,\n position: transform.position,\n orientation: transform.rotation,\n scaleShear: [\n transform.scale[0], 0, 0,\n 0, transform.scale[1], 0,\n 0, 0, transform.scale[2]\n ]\n };\n}\n\nfunction buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n if (parentIndex === -1)\n {\n return transformMatrixScene(\n buildModelTransformState(bone, objectIndex, connections, modelWorldCache).nodeToWorld,\n sceneTransform\n );\n }\n\n return scaleMatrixTranslation(buildModelLocalTransform(bone), sceneTransform.scale);\n}\n\nfunction buildInvBindTransforms(records, bindPoseMatrices)\n{\n const invBindTransforms = [];\n for (const record of records)\n {\n const poseMatrix = bindPoseMatrices.get(record.bone.key);\n if (poseMatrix)\n {\n invBindTransforms.push(cleanMatrix4(invertMatrix4(poseMatrix)));\n continue;\n }\n const parentInvTransform = record.parentIndex === -1\n ? IDENTITY_MATRIX4\n : invBindTransforms[record.parentIndex];\n invBindTransforms.push(cleanMatrix4(multiplyMatrix4(\n invertMatrix4(record.localMatrix),\n parentInvTransform\n )));\n }\n return invBindTransforms.map((matrix) => transposeMatrix4(matrix));\n}\n\nfunction readBindPoseMatrices(objectIndex, connections, sceneTransform)\n{\n const matrices = new Map();\n for (const pose of objectIndex.list.filter(entry => entry.nodeName === \"Pose\"))\n {\n const type = String(readFirstChildProperty(pose.node, \"Type\") || pose.className || pose.name || \"\");\n if (!/bindpose/iu.test(type))\n {\n continue;\n }\n\n for (const poseNode of pose.node.children.filter(child => child.name === \"PoseNode\"))\n {\n const\n nodeId = readFirstChildProperty(poseNode, \"Node\"),\n matrix = readChildArray(poseNode, \"Matrix\");\n\n if (nodeId === undefined || !Array.isArray(matrix) || matrix.length !== 16)\n {\n continue;\n }\n\n matrices.set(toObjectKey(nodeId), transformMatrixScene(matrix, sceneTransform));\n }\n }\n for (const cluster of objectIndex.list.filter(entry => entry.nodeName === \"Deformer\" && isClusterDeformer(entry)))\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n matrix = readChildArray(cluster.node, \"TransformLink\");\n if (!bone || matrices.has(bone.key) || !Array.isArray(matrix) || matrix.length !== 16)\n {\n continue;\n }\n matrices.set(bone.key, transformMatrixScene(\n matrix.map(value => finiteNumber(value, \"TransformLink\")),\n sceneTransform\n ));\n }\n return matrices;\n}\n\nfunction isBoneModel(entry)\n{\n return entry?.nodeName === \"Model\" && (entry.className === \"LimbNode\" || /LimbNode/iu.test(entry.fullName));\n}\n\nfunction buildSceneTransform(globalSettingsNode)\n{\n const properties = readProperties70(globalSettingsNode).properties;\n const unitScaleFactor = propertyNumber(properties, \"UnitScaleFactor\", null);\n return {\n scale: unitScaleFactor === null ? 1 : unitScaleFactor * 0.01,\n right: axisVector(\n propertyNumber(properties, \"CoordAxis\", 0),\n propertyNumber(properties, \"CoordAxisSign\", 1)\n ),\n up: axisVector(\n propertyNumber(properties, \"UpAxis\", 1),\n propertyNumber(properties, \"UpAxisSign\", 1)\n ),\n forward: axisVector(\n propertyNumber(properties, \"FrontAxis\", 2),\n propertyNumber(properties, \"FrontAxisSign\", 1)\n )\n };\n}\n\nfunction buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache)\n{\n if (!owner)\n {\n return IDENTITY_MATRIX4;\n }\n\n return multiplyMatrix4(\n buildModelTransformState(owner, objectIndex, connections, modelWorldCache).nodeToWorld,\n buildModelGeometricTransform(owner)\n );\n}\n\nfunction buildModelTransformState(model, objectIndex, connections, cache)\n{\n if (cache.has(model.key))\n {\n return cache.get(model.key);\n }\n\n const\n local = buildModelLocalState(model),\n parents = connectedParentObjects(model, objectIndex, connections, \"Model\"),\n parent = parents[0],\n parentState = parent ? buildModelTransformState(parent, objectIndex, connections, cache) : null,\n state = parentState\n ? composeInheritedModelState(local, parentState)\n : {\n nodeToWorld: local.matrix,\n unscaledNodeToWorld: local.unscaledMatrix,\n inheritScale: local.scale\n };\n\n cache.set(model.key, state);\n return state;\n}\n\nfunction buildModelLocalTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeModelTransform(properties);\n}\n\nfunction buildModelLocalState(model)\n{\n const\n properties = readProperties70(model.node).properties,\n translation = propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]),\n scale = propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n\n return {\n properties,\n translation,\n scale,\n inheritType: propertyNumber(properties, \"InheritType\", 1),\n matrix: composeModelTransform(properties, { translation, scale }),\n unscaledMatrix: composeModelTransform(properties, { translation, scale: [ 1, 1, 1 ] })\n };\n}\n\nfunction composeInheritedModelState(local, parentState)\n{\n const inheritType = integerNumber(local.inheritType, \"InheritType\");\n\n if (inheritType === 0 || inheritType === 2)\n {\n const\n translation = multiplyVector3(local.translation, parentState.inheritScale),\n scale = inheritType === 0 ? multiplyVector3(local.scale, parentState.inheritScale) : local.scale,\n matrix = composeModelTransform(local.properties, { translation, scale }),\n unscaledMatrix = composeModelTransform(local.properties, { translation, scale: [ 1, 1, 1 ] });\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, unscaledMatrix),\n inheritScale: scale\n };\n }\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.nodeToWorld, local.matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, local.unscaledMatrix),\n inheritScale: multiplyVector3(parentState.inheritScale, local.scale)\n };\n}\n\nfunction buildModelGeometricTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeSimpleTransform(\n propertyVector3(properties, \"GeometricTranslation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricRotation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricScaling\", [ 1, 1, 1 ]),\n DEFAULT_ROTATION_ORDER\n );\n}\n\nfunction composeModelTransform(properties, overrides = {})\n{\n const\n rotationOrder = propertyRotationOrder(properties),\n rotationPivot = propertyVector3(properties, \"RotationPivot\", [ 0, 0, 0 ]),\n scalingPivot = propertyVector3(properties, \"ScalingPivot\", [ 0, 0, 0 ]);\n\n return multiplyMatrix4List([\n translationMatrix4(overrides.translation ?? propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ])),\n translationMatrix4(propertyVector3(properties, \"RotationOffset\", [ 0, 0, 0 ])),\n translationMatrix4(rotationPivot),\n rotationMatrix4(propertyVector3(properties, \"PreRotation\", [ 0, 0, 0 ]), DEFAULT_ROTATION_ORDER),\n rotationMatrix4(overrides.rotation ?? propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]), rotationOrder),\n inverseRotationMatrix4(propertyVector3(properties, \"PostRotation\", [ 0, 0, 0 ]), DEFAULT_ROTATION_ORDER),\n translationMatrix4(negateVector3(rotationPivot)),\n translationMatrix4(propertyVector3(properties, \"ScalingOffset\", [ 0, 0, 0 ])),\n translationMatrix4(scalingPivot),\n scaleMatrix4(overrides.scale ?? propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ])),\n translationMatrix4(negateVector3(scalingPivot))\n ]);\n}\n\nfunction composeSimpleTransform(translation, rotationDegrees, scale, rotationOrder)\n{\n return multiplyMatrix4(\n translationMatrix4(translation),\n multiplyMatrix4(rotationMatrix4(rotationDegrees, rotationOrder), scaleMatrix4(scale))\n );\n}\n\nfunction transformPoints(values, matrix, sceneTransform)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const point = transformPointMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...transformScenePoint(point, sceneTransform));\n }\n return output;\n}\n\nfunction transformDirections(values, matrix, sceneTransform)\n{\n if (!values.length)\n {\n return values;\n }\n\n // Carbon's Matrix::TransformNormal applies the ordinary upper 3x3 and the\n // FBX importer uses it for normals and tangents. Keep that convention here\n // even though an inverse-transpose is common in other render pipelines.\n const output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const vector = transformVectorMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...normalizeVector3(transformSceneVector(vector, sceneTransform)));\n }\n\n return output;\n}\n\nfunction transformScenePoint(point, sceneTransform)\n{\n const vector = transformSceneVector(point, sceneTransform);\n return vector.map(value => value * sceneTransform.scale);\n}\n\nfunction transformSceneVector(vector, sceneTransform)\n{\n return [\n dotVector3(vector, sceneTransform.right),\n dotVector3(vector, sceneTransform.up),\n dotVector3(vector, sceneTransform.forward)\n ];\n}\n\nfunction transformMatrixScene(matrix, sceneTransform)\n{\n const\n column0 = transformSceneVector([ matrix[0], matrix[4], matrix[8] ], sceneTransform),\n column1 = transformSceneVector([ matrix[1], matrix[5], matrix[9] ], sceneTransform),\n column2 = transformSceneVector([ matrix[2], matrix[6], matrix[10] ], sceneTransform),\n translation = transformScenePoint([ matrix[3], matrix[7], matrix[11] ], sceneTransform);\n\n return cleanMatrix4([\n column0[0], column1[0], column2[0], translation[0],\n column0[1], column1[1], column2[1], translation[1],\n column0[2], column1[2], column2[2], translation[2],\n 0, 0, 0, 1\n ]);\n}\n\nfunction scaleMatrixTranslation(matrix, scale)\n{\n const output = matrix.slice();\n output[3] *= scale;\n output[7] *= scale;\n output[11] *= scale;\n return cleanMatrix4(output);\n}\n\nfunction decomposeMatrix4(matrix)\n{\n const\n scale = [\n Math.hypot(matrix[0], matrix[4], matrix[8]) || 1,\n Math.hypot(matrix[1], matrix[5], matrix[9]) || 1,\n Math.hypot(matrix[2], matrix[6], matrix[10]) || 1\n ],\n rotationMatrix = [\n matrix[0] / scale[0], matrix[1] / scale[1], matrix[2] / scale[2],\n matrix[4] / scale[0], matrix[5] / scale[1], matrix[6] / scale[2],\n matrix[8] / scale[0], matrix[9] / scale[1], matrix[10] / scale[2]\n ];\n\n return {\n position: cleanVector3([ matrix[3], matrix[7], matrix[11] ]),\n rotation: matrixToQuaternion(rotationMatrix),\n scale: cleanVector3(scale)\n };\n}\n\nfunction matrixToQuaternion(matrix)\n{\n const\n m00 = matrix[0],\n m01 = matrix[1],\n m02 = matrix[2],\n m10 = matrix[3],\n m11 = matrix[4],\n m12 = matrix[5],\n m20 = matrix[6],\n m21 = matrix[7],\n m22 = matrix[8],\n trace = m00 + m11 + m22;\n\n let x, y, z, w;\n if (trace > 0)\n {\n const s = Math.sqrt(trace + 1) * 2;\n w = 0.25 * s;\n x = (m21 - m12) / s;\n y = (m02 - m20) / s;\n z = (m10 - m01) / s;\n }\n else if (m00 > m11 && m00 > m22)\n {\n const s = Math.sqrt(1 + m00 - m11 - m22) * 2;\n w = (m21 - m12) / s;\n x = 0.25 * s;\n y = (m01 + m10) / s;\n z = (m02 + m20) / s;\n }\n else if (m11 > m22)\n {\n const s = Math.sqrt(1 + m11 - m00 - m22) * 2;\n w = (m02 - m20) / s;\n x = (m01 + m10) / s;\n y = 0.25 * s;\n z = (m12 + m21) / s;\n }\n else\n {\n const s = Math.sqrt(1 + m22 - m00 - m11) * 2;\n w = (m10 - m01) / s;\n x = (m02 + m20) / s;\n y = (m12 + m21) / s;\n z = 0.25 * s;\n }\n\n return normalizeQuaternion([ x, y, z, w ]);\n}\n\nfunction propertyVector3(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (Array.isArray(value))\n {\n return [\n finiteNumber(value[0] ?? fallback[0], name),\n finiteNumber(value[1] ?? fallback[1], name),\n finiteNumber(value[2] ?? fallback[2], name)\n ];\n }\n return fallback;\n}\n\nfunction propertyNumber(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (value === undefined || value === null || Array.isArray(value))\n {\n return fallback;\n }\n return finiteNumber(value, name);\n}\n\nfunction propertyRotationOrder(properties)\n{\n const value = propertyNumber(properties, \"RotationOrder\", null);\n if (value === null)\n {\n return DEFAULT_ROTATION_ORDER;\n }\n return FBX_ROTATION_ORDERS[value] || DEFAULT_ROTATION_ORDER;\n}\n\nfunction axisVector(axis, sign)\n{\n const vector = [ 0, 0, 0 ];\n const index = Math.max(0, Math.min(2, integerNumber(axis, \"Axis\")));\n vector[index] = sign < 0 ? -1 : 1;\n return vector;\n}\n\nfunction translationMatrix4(translation)\n{\n return [\n 1, 0, 0, translation[0],\n 0, 1, 0, translation[1],\n 0, 0, 1, translation[2],\n 0, 0, 0, 1\n ];\n}\n\nfunction scaleMatrix4(scale)\n{\n return [\n scale[0], 0, 0, 0,\n 0, scale[1], 0, 0,\n 0, 0, scale[2], 0,\n 0, 0, 0, 1\n ];\n}\n\nfunction rotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (let i = order.length - 1; i >= 0; i--)\n {\n const axis = order[i];\n const radians = degreesToRadians(rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction inverseRotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (const axis of order)\n {\n const radians = degreesToRadians(-rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction multiplyMatrix4List(matrices)\n{\n return matrices.reduce((matrix, next) => multiplyMatrix4(matrix, next), IDENTITY_MATRIX4);\n}\n\nfunction negateVector3(vector)\n{\n return [ -vector[0], -vector[1], -vector[2] ];\n}\n\nfunction multiplyVector3(a, b)\n{\n return [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ];\n}\n\nfunction axisIndex(axis)\n{\n return axis === \"X\" ? 0 : axis === \"Y\" ? 1 : 2;\n}\n\nfunction axisRotationMatrix4(axis, radians)\n{\n const\n c = Math.cos(radians),\n s = Math.sin(radians);\n\n switch (axis)\n {\n case \"X\":\n return [\n 1, 0, 0, 0,\n 0, c, -s, 0,\n 0, s, c, 0,\n 0, 0, 0, 1\n ];\n case \"Y\":\n return [\n c, 0, s, 0,\n 0, 1, 0, 0,\n -s, 0, c, 0,\n 0, 0, 0, 1\n ];\n default:\n return [\n c, -s, 0, 0,\n s, c, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n ];\n }\n}\n\nfunction invertMatrix4(matrix)\n{\n try\n {\n return cleanMatrix4(invertSharedMatrix4(matrix));\n }\n catch\n {\n throw new Error(\"fbx: transform matrix is not invertible\");\n }\n}\n\nfunction transformDirectionDeltas(values, matrix, sceneTransform)\n{\n const output = [];\n for (let index = 0; index < values.length; index += 3)\n {\n const source = [ values[index], values[index + 1], values[index + 2] ];\n const vector = transformVectorMatrix4(source, matrix);\n output.push(...transformSceneVector(vector, sceneTransform));\n }\n return output;\n}\n\nfunction transformPointMatrix4(point, matrix)\n{\n return [\n matrix[0] * point[0] + matrix[1] * point[1] + matrix[2] * point[2] + matrix[3],\n matrix[4] * point[0] + matrix[5] * point[1] + matrix[6] * point[2] + matrix[7],\n matrix[8] * point[0] + matrix[9] * point[1] + matrix[10] * point[2] + matrix[11]\n ];\n}\n\nfunction transformVectorMatrix4(vector, matrix)\n{\n return [\n matrix[0] * vector[0] + matrix[1] * vector[1] + matrix[2] * vector[2],\n matrix[4] * vector[0] + matrix[5] * vector[1] + matrix[6] * vector[2],\n matrix[8] * vector[0] + matrix[9] * vector[1] + matrix[10] * vector[2]\n ];\n}\n\nfunction normalizeVector3(vector)\n{\n const length = Math.hypot(vector[0], vector[1], vector[2]);\n if (length === 0)\n {\n return [ 0, 0, 0 ];\n }\n return vector.map(value => cleanFloat(value / length));\n}\n\nfunction normalizeQuaternion(quaternion)\n{\n const length = Math.hypot(quaternion[0], quaternion[1], quaternion[2], quaternion[3]);\n if (length === 0)\n {\n return [ 0, 0, 0, 1 ];\n }\n return quaternion.map(value => cleanFloat(value / length));\n}\n\nfunction dotVector3(a, b)\n{\n return cleanFloat(a[0] * b[0] + a[1] * b[1] + a[2] * b[2]);\n}\n\nfunction degreesToRadians(value)\n{\n return value * Math.PI / 180;\n}\n\nfunction cleanFloat(value)\n{\n return Math.abs(value) < 1e-12 ? 0 : value;\n}\n\nfunction cleanVector3(vector)\n{\n return vector.map(cleanFloat);\n}\n\nfunction cleanNumericArray(values)\n{\n return Array.from(values, cleanFloat);\n}\n\nfunction hasArrayValues(values)\n{\n return (Array.isArray(values) || ArrayBuffer.isView(values)) && values.length > 0;\n}\n\nfunction cleanMatrix4(matrix)\n{\n return matrix.map(cleanFloat);\n}\n\nfunction indexObjectNodes(objectsNode)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n for (const node of objectsNode.children)\n {\n if (!node.properties.length)\n {\n continue;\n }\n\n const summary = readObjectEntry(node);\n const entry = { ...summary, node };\n list.push(entry);\n byId[entry.key] = entry;\n pushIndex(byType, entry.nodeName, entry);\n }\n\n return { list, byId, byType };\n}\n\nfunction connectedParentObjects(entry, objectIndex, connections, nodeName)\n{\n return (connections.parentsByChild[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(parent => parent && parent.nodeName === nodeName);\n}\n\nfunction connectedChildObjects(entry, objectIndex, connections, nodeName)\n{\n if (!entry)\n {\n return [];\n }\n\n return (connections.childrenByParent[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(child => child && child.nodeName === nodeName);\n}\n\nfunction requireChildArray(node, childName)\n{\n const values = readChildArray(node, childName);\n if (!values)\n {\n throw new Error(`fbx: geometry is missing ${childName}`);\n }\n return values;\n}\n\nfunction readChildArray(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? readNodeArray(child, childName) : null;\n}\n\nfunction readNodeArray(node, feature)\n{\n for (const property of node.properties)\n {\n const values = arrayPropertyToNumbers(property, feature);\n if (values)\n {\n return values;\n }\n }\n\n const asciiArray = findFirstNode(node.children, \"a\");\n return asciiArray ? asciiArray.properties.map(value => finiteNumber(value, feature)) : null;\n}\n\nfunction arrayPropertyToNumbers(property, feature)\n{\n if (!property)\n {\n return null;\n }\n if (property.compressed)\n {\n const error = new Error(`fbx: GR2 output cannot read compressed ${feature} arrays yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = \"fbx\";\n error.emit = OUTPUT_GR2;\n error.feature = \"compressed-array\";\n throw error;\n }\n if (ArrayBuffer.isView(property))\n {\n return Array.from(property, value => finiteNumber(value, feature));\n }\n if (Array.isArray(property))\n {\n return property.map(value => finiteNumber(value, feature));\n }\n return null;\n}\n\nfunction decodePolygonCorners(controlPoints, polygonVertexIndex, geometry)\n{\n const\n controlPointCount = controlPoints.length / 3,\n positions = [],\n corners = [],\n polygons = [];\n\n let polygon = [];\n\n for (const rawValue of polygonVertexIndex)\n {\n const raw = integerNumber(rawValue, \"PolygonVertexIndex\");\n const end = raw < 0;\n const controlPointIndex = end ? -raw - 1 : raw;\n if (controlPointIndex < 0 || controlPointIndex >= controlPointCount)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has PolygonVertexIndex ${raw} out of range`);\n }\n\n const source = controlPointIndex * 3;\n const outputIndex = positions.length / 3;\n const polygonIndex = polygons.length;\n positions.push(\n finiteNumber(controlPoints[source], \"Vertices\"),\n finiteNumber(controlPoints[source + 1], \"Vertices\"),\n finiteNumber(controlPoints[source + 2], \"Vertices\")\n );\n corners.push({\n outputIndex,\n controlPointIndex,\n polygonIndex,\n polygonCornerIndex: polygon.length\n });\n polygon.push(outputIndex);\n\n if (end)\n {\n if (polygon.length < 3)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has a polygon with fewer than three vertices`);\n }\n polygons.push(polygon);\n polygon = [];\n }\n }\n\n if (polygon.length)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has an unterminated polygon`);\n }\n\n return { positions, corners, polygons };\n}\n\nfunction readLayerElementChannel(geometryNode, layerName, layerIndex, valueNames, indexNames, elementSize, decoded, feature)\n{\n const layer = findLayerElementNode(geometryNode, layerName, layerIndex);\n if (!layer)\n {\n return [];\n }\n\n const values = readFirstChildArray(layer, valueNames);\n if (!values)\n {\n return [];\n }\n\n if (values.length % elementSize !== 0)\n {\n throw new Error(`fbx: ${feature} array length is not divisible by ${elementSize}`);\n }\n\n const\n indices = readFirstChildArray(layer, indexNames) || [],\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\"),\n output = [];\n\n for (const corner of decoded.corners)\n {\n const\n mappedIndex = resolveLayerMappingIndex(mapping, corner, feature),\n directIndex = resolveLayerReferenceIndex(reference, indices, mappedIndex, feature);\n\n appendLayerElement(output, values, directIndex, elementSize, feature);\n }\n\n return output;\n}\n\nfunction readGeometryLayerChannels(geometryNode, decoded, values, meshTransform, sceneTransform)\n{\n const output = {};\n for (const spec of [\n [ \"LayerElementNormal\", \"normal\", [ \"Normals\" ], [ \"NormalsIndex\", \"NormalIndex\" ], 3, \"Normals\", true ],\n [ \"LayerElementTangent\", \"tangent\", [ \"Tangents\" ], [ \"TangentsIndex\", \"TangentIndex\" ], 3, \"Tangents\", true ],\n [ \"LayerElementBinormal\", \"binormal\", [ \"Binormals\" ], [ \"BinormalsIndex\", \"BinormalIndex\" ], 3, \"Binormals\", true ],\n [ \"LayerElementUV\", \"texcoord\", [ \"UV\" ], [ \"UVIndex\", \"UVIndices\" ], 2, \"UV\", false ],\n [ \"LayerElementColor\", \"color\", [ \"Colors\" ], [ \"ColorIndex\", \"ColorsIndex\", \"ColorIndices\" ], 4, \"Colors\", false ]\n ])\n {\n const [ layerName, channelName, valueNames, indexNames, width, feature, directional ] = spec;\n if (values.compatibility === COMPATIBILITY_CARBON && channelName === \"binormal\") continue;\n for (const usageIndex of layerUsageIndices(geometryNode, layerName))\n {\n let channel = readLayerElementChannel(\n geometryNode,\n layerName,\n usageIndex,\n valueNames,\n indexNames,\n width,\n decoded,\n feature\n );\n if (directional) channel = transformDirections(channel, meshTransform, sceneTransform);\n if (channelName === \"texcoord\" && values.flipV) channel = flipTexcoordV(channel);\n if (channel.length) output[usageIndex === 0 && [ \"normal\", \"tangent\", \"binormal\" ].includes(channelName)\n ? channelName\n : `${channelName}${usageIndex}`] = channel;\n }\n }\n return output;\n}\n\nfunction layerUsageIndices(geometryNode, layerName)\n{\n const routed = [];\n for (const layer of geometryNode.children.filter(child => child.name === \"Layer\"))\n {\n for (const reference of layer.children.filter(child => child.name === \"LayerElement\" &&\n String(readFirstChildProperty(child, \"Type\") || \"\") === layerName))\n {\n const typedIndex = integerNumber(\n readFirstChildProperty(reference, \"TypedIndex\") ?? 0,\n \"TypedIndex\"\n );\n if (typedIndex < 0 || typedIndex > 255)\n {\n throw new Error(`fbx: ${layerName} TypedIndex ${typedIndex} is outside CMF usage range 0..255`);\n }\n routed.push(typedIndex);\n }\n }\n if (routed.length) return Array.from(new Set(routed)).sort((left, right) => left - right);\n\n const direct = geometryNode.children.filter(child => child.name === layerName).map((child, index) =>\n {\n const value = child.properties.length ? Number(child.properties[0]) : index;\n if (!Number.isInteger(value) || value < 0 || value > 255)\n {\n throw new Error(`fbx: ${layerName} index ${value} is outside CMF usage range 0..255`);\n }\n return value;\n });\n return Array.from(new Set(direct)).sort((left, right) => left - right);\n}\n\n/**\n * Flip the V coordinate of an expanded UV channel.\n *\n * @param {number[]} texcoord Expanded UV channel.\n * @returns {number[]} Flipped UV channel.\n */\nfunction flipTexcoordV(texcoord)\n{\n const flipped = texcoord.slice();\n for (let i = 1; i < flipped.length; i += 2)\n {\n flipped[i] = 1 - flipped[i];\n }\n return flipped;\n}\n\nfunction findLayerElementNode(geometryNode, layerName, layerIndex)\n{\n const layers = geometryNode.children.filter(child => child.name === layerName);\n return layers.find((child, index) =>\n {\n const id = child.properties.length ? Number(child.properties[0]) : index;\n return Number.isFinite(id) && id === layerIndex;\n }) || layers[layerIndex] || null;\n}\n\nfunction findRoutedLayerElementNode(geometryNode, layerName, layerIndex)\n{\n const layerNodes = geometryNode.children.filter(child => child.name === \"Layer\");\n const layerNode = layerNodes.find((child, index) =>\n {\n const id = child.properties.length ? Number(child.properties[0]) : index;\n return Number.isFinite(id) && id === layerIndex;\n }) || layerNodes[layerIndex];\n\n if (layerNode)\n {\n for (const reference of layerNode.children.filter(child => child.name === \"LayerElement\"))\n {\n if (String(readFirstChildProperty(reference, \"Type\") || \"\") !== layerName) continue;\n const typedIndex = integerNumber(\n readFirstChildProperty(reference, \"TypedIndex\") ?? 0,\n \"TypedIndex\"\n );\n return findLayerElementNode(geometryNode, layerName, typedIndex);\n }\n }\n return findLayerElementNode(geometryNode, layerName, layerIndex);\n}\n\nfunction readFirstChildArray(node, childNames)\n{\n for (const childName of childNames)\n {\n const values = readChildArray(node, childName);\n if (values)\n {\n return values;\n }\n }\n return null;\n}\n\nfunction resolveLayerMappingIndex(mapping, corner, feature)\n{\n switch (mapping)\n {\n case \"ByPolygonVertex\":\n return corner.outputIndex;\n case \"ByControlPoint\":\n case \"ByVertice\":\n case \"ByVertex\":\n return corner.controlPointIndex;\n case \"ByPolygon\":\n return corner.polygonIndex;\n case \"AllSame\":\n return 0;\n default:\n throw new Error(`fbx: unsupported ${feature} MappingInformationType ${JSON.stringify(mapping)}`);\n }\n}\n\nfunction resolveLayerReferenceIndex(reference, indices, mappedIndex, feature)\n{\n switch (reference)\n {\n case \"Direct\":\n return mappedIndex;\n case \"IndexToDirect\":\n case \"Index\":\n {\n if (mappedIndex >= indices.length)\n {\n throw new Error(`fbx: ${feature} index array is too short`);\n }\n return integerNumber(indices[mappedIndex], feature);\n }\n default:\n throw new Error(`fbx: unsupported ${feature} ReferenceInformationType ${JSON.stringify(reference)}`);\n }\n}\n\nfunction appendLayerElement(output, values, directIndex, elementSize, feature)\n{\n const offset = directIndex * elementSize;\n if (directIndex < 0 || offset + elementSize > values.length)\n {\n throw new Error(`fbx: ${feature} direct index ${directIndex} is out of range`);\n }\n\n for (let i = 0; i < elementSize; i++)\n {\n output.push(finiteNumber(values[offset + i], feature));\n }\n}\n\nfunction buildIndexGroups(polygonTriangles, materialSelection)\n{\n const groups = materialSelection.slots.map(slot => ({\n name: slot.name,\n bytesPerIndex: 2,\n faces: []\n }));\n let maxIndex = 0;\n\n for (let polygonIndex = 0; polygonIndex < polygonTriangles.length; polygonIndex++)\n {\n const\n triangles = polygonTriangles[polygonIndex],\n slot = materialSelection.polygonSlots[polygonIndex] ?? 0,\n group = groups[slot];\n\n if (!group)\n {\n throw new Error(`fbx: polygon ${polygonIndex} references missing material slot ${slot}`);\n }\n\n for (const triangle of triangles)\n {\n group.faces.push(triangle[0], triangle[1], triangle[2]);\n maxIndex = Math.max(maxIndex, triangle[0], triangle[1], triangle[2]);\n }\n }\n\n const bytesPerIndex = maxIndex > 0xffff ? 4 : 2;\n for (const group of groups)\n {\n group.bytesPerIndex = bytesPerIndex;\n }\n return groups;\n}\n\nfunction triangulatePolygonList(polygons, positions)\n{\n return polygons.map(polygon => triangulatePolygon(polygon, positions));\n}\n\nfunction triangulatePolygon(polygon, positions)\n{\n if (polygon.length === 3)\n {\n return [ polygon.slice() ];\n }\n\n const projected = projectPolygonTo2D(polygon, positions);\n if (!projected)\n {\n return triangulatePolygonFan(polygon);\n }\n\n const area = signedArea2D(projected);\n if (Math.abs(area) <= TRIANGULATION_EPSILON)\n {\n return triangulatePolygonFan(polygon);\n }\n if (isConvexPolygon2D(projected, area))\n {\n return triangulatePolygonFan(polygon);\n }\n\n const\n triangles = [],\n remaining = polygon.map((value, index) => index);\n\n let guard = polygon.length * polygon.length;\n while (remaining.length > 3 && guard-- > 0)\n {\n let clipped = false;\n for (let index = 0; index < remaining.length; index++)\n {\n const\n previous = remaining[(index + remaining.length - 1) % remaining.length],\n current = remaining[index],\n next = remaining[(index + 1) % remaining.length];\n\n if (!isEar2D(previous, current, next, remaining, projected, area))\n {\n continue;\n }\n\n triangles.push([ polygon[previous], polygon[current], polygon[next] ]);\n remaining.splice(index, 1);\n clipped = true;\n break;\n }\n\n if (!clipped)\n {\n return triangulatePolygonFan(polygon);\n }\n }\n\n if (remaining.length === 3)\n {\n triangles.push([ polygon[remaining[0]], polygon[remaining[1]], polygon[remaining[2]] ]);\n }\n\n return triangles.length ? triangles : triangulatePolygonFan(polygon);\n}\n\nfunction flattenPolygonTriangles(polygonTriangles)\n{\n const faces = [];\n for (const triangles of polygonTriangles)\n {\n for (const triangle of triangles)\n {\n faces.push(triangle[0], triangle[1], triangle[2]);\n }\n }\n return faces;\n}\n\nfunction orientPolygonTriangles(polygonTriangles, reflected)\n{\n if (!reflected) return polygonTriangles;\n return polygonTriangles.map(triangles => triangles.map(triangle => [\n triangle[0], triangle[2], triangle[1]\n ]));\n}\n\nfunction isReflectedTransform(matrix, sceneTransform)\n{\n const matrixDeterminant = determinant3(\n matrix[0], matrix[1], matrix[2],\n matrix[4], matrix[5], matrix[6],\n matrix[8], matrix[9], matrix[10]\n );\n const sceneDeterminant = determinant3(\n ...sceneTransform.right,\n ...sceneTransform.up,\n ...sceneTransform.forward\n ) * sceneTransform.scale ** 3;\n return matrixDeterminant * sceneDeterminant < 0;\n}\n\nfunction determinant3(a00, a01, a02, a10, a11, a12, a20, a21, a22)\n{\n return a00 * (a11 * a22 - a12 * a21) -\n a01 * (a10 * a22 - a12 * a20) +\n a02 * (a10 * a21 - a11 * a20);\n}\n\nfunction triangulatePolygonFan(polygon)\n{\n const triangles = [];\n for (let i = 1; i < polygon.length - 1; i++)\n {\n triangles.push([ polygon[0], polygon[i], polygon[i + 1] ]);\n }\n return triangles;\n}\n\nfunction projectPolygonTo2D(polygon, positions)\n{\n const normal = computePolygonNormal(polygon, positions);\n const\n absX = Math.abs(normal[0]),\n absY = Math.abs(normal[1]),\n absZ = Math.abs(normal[2]);\n\n if (Math.max(absX, absY, absZ) <= TRIANGULATION_EPSILON)\n {\n return null;\n }\n\n const dropAxis = absX > absY && absX > absZ ? 0 : absY > absZ ? 1 : 2;\n return polygon.map(index =>\n {\n const offset = index * 3;\n if (dropAxis === 0)\n {\n return [ positions[offset + 1], positions[offset + 2] ];\n }\n if (dropAxis === 1)\n {\n return [ positions[offset], positions[offset + 2] ];\n }\n return [ positions[offset], positions[offset + 1] ];\n });\n}\n\nfunction computePolygonNormal(polygon, positions)\n{\n const normal = [ 0, 0, 0 ];\n for (let i = 0; i < polygon.length; i++)\n {\n const\n current = polygon[i] * 3,\n next = polygon[(i + 1) % polygon.length] * 3,\n x0 = positions[current],\n y0 = positions[current + 1],\n z0 = positions[current + 2],\n x1 = positions[next],\n y1 = positions[next + 1],\n z1 = positions[next + 2];\n\n normal[0] += (y0 - y1) * (z0 + z1);\n normal[1] += (z0 - z1) * (x0 + x1);\n normal[2] += (x0 - x1) * (y0 + y1);\n }\n return normal;\n}\n\nfunction signedArea2D(points)\n{\n let area = 0;\n for (let i = 0; i < points.length; i++)\n {\n const\n current = points[i],\n next = points[(i + 1) % points.length];\n\n area += current[0] * next[1] - next[0] * current[1];\n }\n return area * 0.5;\n}\n\nfunction isEar2D(previous, current, next, remaining, points, area)\n{\n const cross = cross2D(points[previous], points[current], points[next]);\n if (area > 0 ? cross <= TRIANGULATION_EPSILON : cross >= -TRIANGULATION_EPSILON)\n {\n return false;\n }\n\n for (const pointIndex of remaining)\n {\n if (pointIndex === previous || pointIndex === current || pointIndex === next)\n {\n continue;\n }\n if (pointInTriangle2D(points[pointIndex], points[previous], points[current], points[next]))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isConvexPolygon2D(points, area)\n{\n for (let i = 0; i < points.length; i++)\n {\n const cross = cross2D(points[i], points[(i + 1) % points.length], points[(i + 2) % points.length]);\n if (Math.abs(cross) <= TRIANGULATION_EPSILON)\n {\n continue;\n }\n if (area > 0 ? cross < -TRIANGULATION_EPSILON : cross > TRIANGULATION_EPSILON)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction cross2D(a, b, c)\n{\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n\nfunction pointInTriangle2D(point, a, b, c)\n{\n const\n ab = cross2D(a, b, point),\n bc = cross2D(b, c, point),\n ca = cross2D(c, a, point),\n hasNegative = ab < -TRIANGULATION_EPSILON || bc < -TRIANGULATION_EPSILON || ca < -TRIANGULATION_EPSILON,\n hasPositive = ab > TRIANGULATION_EPSILON || bc > TRIANGULATION_EPSILON || ca > TRIANGULATION_EPSILON;\n\n return !(hasNegative && hasPositive);\n}\n\nfunction readPolygonMaterials(geometry, owner, objectIndex, connections, polygonCount)\n{\n const slots = readMaterialSlots(geometry, owner, objectIndex, connections);\n if (!slots.length)\n {\n slots.push({ key: \"default\", name: \"default\" });\n }\n\n const layer = findRoutedLayerElementNode(geometry.node, \"LayerElementMaterial\", 0);\n if (!layer)\n {\n return { slots, polygonSlots: new Array(polygonCount).fill(0) };\n }\n\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\"),\n materials = readChildArray(layer, \"Materials\") || [],\n polygonSlots = [];\n\n for (let i = 0; i < polygonCount; i++)\n {\n const slot = mapping === \"ByPolygon\"\n ? integerNumber(materials[i] ?? 0, \"Materials\")\n : integerNumber(materials[0] ?? 0, \"Materials\");\n if (slot < 0 || slot >= slots.length)\n {\n throw new Error(`fbx: Materials slot ${slot} is outside 0..${slots.length - 1}`);\n }\n polygonSlots.push(slot);\n }\n\n return { slots, polygonSlots };\n}\n\nfunction readMaterialSlots(geometry, owner, objectIndex, connections)\n{\n const materials = [\n ...connectedChildObjects(owner, objectIndex, connections, \"Material\"),\n ...connectedChildObjects(geometry, objectIndex, connections, \"Material\")\n ];\n const seen = new Set();\n const slots = [];\n\n for (const material of materials)\n {\n if (seen.has(material.key))\n {\n continue;\n }\n seen.add(material.key);\n slots.push({ key: material.key, name: material.name ?? `material_${slots.length}` });\n }\n\n return slots;\n}\n\nfunction meshNameFromFbx(geometry, owner)\n{\n return owner?.name || geometry.name || \"fbx_mesh\";\n}\n\nfunction createGr2Vertex(position, channels = {})\n{\n return {\n position,\n blendIndice: [],\n tangent: [],\n normal: [],\n texcoord0: [],\n texcoord1: [],\n color0: [],\n binormal: [],\n blendWeight: [],\n ...channels\n };\n}\n\nfunction computeBounds(positions)\n{\n if (!positions.length)\n {\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\n }\n\n const\n minBounds = [ positions[0], positions[1], positions[2] ],\n maxBounds = [ positions[0], positions[1], positions[2] ];\n\n for (let i = 3; i < positions.length; i += 3)\n {\n for (let c = 0; c < 3; c++)\n {\n const value = positions[i + c];\n if (value < minBounds[c])\n {\n minBounds[c] = value;\n }\n if (value > maxBounds[c])\n {\n maxBounds[c] = value;\n }\n }\n }\n\n return { minBounds, maxBounds };\n}\n\nfunction hydrateGr2(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n grannyFileFormatRevision: root.grannyFileFormatRevision,\n grannyFileSource: root.grannyFileSource,\n meshes: root.meshes.map(mesh => hydrate(\"Mesh\", {\n name: mesh.name,\n morphTargets: mesh.morphTargets.map(target => hydrate(\"MorphTarget\", target, hydrationClasses)),\n minBounds: mesh.minBounds,\n maxBounds: mesh.maxBounds,\n boneBindings: mesh.boneBindings.map(binding => hydrate(\"BoneBinding\", binding, hydrationClasses)),\n vertex: mesh.vertex,\n indices: mesh.indices.map(group => hydrate(\"IndexGroup\", group, hydrationClasses))\n }, hydrationClasses)),\n models: root.models.map(model => hydrateGr2Model(model, hydrationClasses)),\n animations: root.animations.map(animation => hydrateGr2Animation(animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateGr2Animation(animation, classes)\n{\n return hydrate(\"Animation\", {\n ...animation,\n trackGroups: (animation.trackGroups ?? []).map(trackGroup => hydrate(\"TrackGroup\", {\n ...trackGroup,\n transformTracks: (trackGroup.transformTracks ?? []).map(track => hydrate(\"TransformTrack\", {\n ...track,\n orientation: hydrate(\"Curve\", track.orientation, classes),\n position: hydrate(\"Curve\", track.position, classes),\n scaleShear: hydrate(\"Curve\", track.scaleShear, classes)\n }, classes)),\n vectorTracks: (trackGroup.vectorTracks ?? []).map(track => hydrate(\"VectorTrack\", {\n ...track,\n valueCurve: hydrate(\"Curve\", track.valueCurve, classes)\n }, classes))\n }, classes))\n }, classes);\n}\n\nfunction hydrateGr2Model(model, classes)\n{\n return hydrate(\"Model\", {\n ...model,\n skeleton: hydrateGr2Skeleton(model.skeleton, classes)\n }, classes);\n}\n\nfunction hydrateGr2Skeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", {\n ...skeleton,\n bones: skeleton.bones.map(bone => hydrate(\"Bone\", bone, classes))\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n if (!Class)\n {\n return fields;\n }\n\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return populate(new Class(), fields, options);\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsFbxFormat class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n\nfunction buildFbxRoot(nodes)\n{\n const headerNode = findFirstNode(nodes, \"FBXHeaderExtension\");\n const globalSettingsNode = findFirstNode(nodes, \"GlobalSettings\");\n const definitionsNode = findFirstNode(nodes, \"Definitions\");\n const objectsNode = findFirstNode(nodes, \"Objects\");\n const connectionsNode = findFirstNode(nodes, \"Connections\");\n\n return {\n rootNodeNames: nodes.map(node => node.name),\n header: readHeader(headerNode),\n globalSettings: readProperties70(globalSettingsNode),\n definitions: readDefinitions(definitionsNode),\n objects: readObjects(objectsNode),\n connections: readConnections(connectionsNode)\n };\n}\n\nfunction readHeader(node)\n{\n if (!node)\n {\n return {};\n }\n\n return {\n fbxHeaderVersion: readFirstChildProperty(node, \"FBXHeaderVersion\"),\n fbxVersion: readFirstChildProperty(node, \"FBXVersion\"),\n creator: readFirstChildProperty(node, \"Creator\")\n };\n}\n\nfunction readDefinitions(node)\n{\n if (!node)\n {\n return {\n version: 0,\n count: 0,\n objectTypes: []\n };\n }\n\n return {\n version: readFirstChildProperty(node, \"Version\") || 0,\n count: readFirstChildProperty(node, \"Count\") || 0,\n objectTypes: node.children\n .filter(child => child.name === \"ObjectType\")\n .map(readObjectType)\n };\n}\n\nfunction readObjectType(node)\n{\n return {\n type: node.properties[0] || \"\",\n count: readFirstChildProperty(node, \"Count\") || 0\n };\n}\n\nfunction readObjects(node)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n if (!node)\n {\n return { count: 0, list, byId, byType };\n }\n\n for (const child of node.children)\n {\n if (child.properties.length === 0)\n {\n continue;\n }\n\n const entry = readObjectEntry(child);\n list.push(entry);\n byId[entry.key] = entry;\n if (!byType[entry.nodeName])\n {\n byType[entry.nodeName] = [];\n }\n byType[entry.nodeName].push(entry.key);\n }\n\n return {\n count: list.length,\n list,\n byId,\n byType\n };\n}\n\nfunction readObjectEntry(node)\n{\n const id = node.properties[0];\n const fullName = node.properties[1] || \"\";\n const className = node.properties[2] || \"\";\n\n return {\n id,\n key: toObjectKey(id),\n nodeName: node.name,\n name: getShortObjectName(fullName),\n fullName,\n className,\n propertyCount: node.properties.length,\n childCount: node.children.length,\n attributeNames: node.children.map(child => child.name)\n };\n}\n\nfunction readConnections(node)\n{\n const list = [];\n const parentsByChild = {};\n const childrenByParent = {};\n\n if (node)\n {\n for (const child of node.children)\n {\n if (child.name !== \"C\")\n {\n continue;\n }\n\n const entry = {\n relation: child.properties[0] || \"\",\n childId: child.properties[1],\n parentId: child.properties[2],\n property: child.properties[3] || \"\"\n };\n entry.childKey = toObjectKey(entry.childId);\n entry.parentKey = toObjectKey(entry.parentId);\n list.push(entry);\n pushIndex(parentsByChild, entry.childKey, entry.parentKey);\n pushIndex(childrenByParent, entry.parentKey, entry.childKey);\n }\n }\n\n return {\n count: list.length,\n list,\n parentsByChild,\n childrenByParent\n };\n}\n\nfunction readProperties70(node)\n{\n const properties = {};\n const properties70 = node ? findFirstNode(node.children, \"Properties70\") : null;\n\n if (!properties70)\n {\n return { properties };\n }\n\n for (const child of properties70.children)\n {\n if (child.name !== \"P\" || child.properties.length === 0)\n {\n continue;\n }\n\n const key = child.properties[0];\n properties[key] = {\n type: child.properties[1] || \"\",\n label: child.properties[2] || \"\",\n flags: child.properties[3] || \"\",\n value: getProperty70Value(child.properties)\n };\n }\n\n return { properties };\n}\n\nfunction getProperty70Value(properties)\n{\n if (properties.length <= 5)\n {\n return properties[4];\n }\n return properties.slice(4);\n}\n\nfunction readFirstChildProperty(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? child.properties[0] : undefined;\n}\n\nfunction findFirstNode(nodes, name)\n{\n return nodes.find(node => node.name === name) || null;\n}\n\nfunction getShortObjectName(fullName)\n{\n if (typeof fullName !== \"string\")\n {\n return \"\";\n }\n const\n fbxClassMarker = fullName.indexOf(\"\\u0000\\u0001\"),\n objectName = fbxClassMarker === -1 ? fullName : fullName.slice(0, fbxClassMarker),\n namespaceMarker = objectName.lastIndexOf(\"::\");\n\n return namespaceMarker === -1 ? objectName : objectName.slice(namespaceMarker + 2);\n}\n\nfunction pushIndex(index, key, value)\n{\n if (!index[key])\n {\n index[key] = [];\n }\n index[key].push(value);\n}\n\nfunction toObjectKey(value)\n{\n return value === undefined || value === null ? \"\" : String(value);\n}\n\nfunction appendAsciiArrayContinuation(stack, line, values)\n{\n const\n siblings = stack[stack.length - 1].children,\n arrayNode = siblings[siblings.length - 1];\n\n if (arrayNode?.name !== \"a\") return;\n arrayNode.properties.push(...parseAsciiProperties(line));\n if (arrayNode.properties.length > values.maxProperties)\n {\n throw new Error(`fbx: ASCII node a exceeds maxProperties (${values.maxProperties})`);\n }\n}\n\nfunction parseAsciiLine(line, values)\n{\n const match = /^([A-Za-z_][\\w.]*)\\s*:\\s*(.*)$/u.exec(line);\n if (!match)\n {\n return null;\n }\n\n let body = match[2].trim();\n const opensBlock = body.endsWith(\"{\");\n if (opensBlock)\n {\n body = body.slice(0, -1).trim();\n }\n\n const properties = body ? parseAsciiProperties(body) : [];\n if (properties.length > values.maxProperties)\n {\n throw new Error(`fbx: ASCII node ${match[1]} exceeds maxProperties (${values.maxProperties})`);\n }\n\n return {\n name: match[1],\n properties,\n propertyTypes: [],\n children: [],\n opensBlock\n };\n}\n\nfunction parseAsciiProperties(body)\n{\n return splitAsciiProperties(body).map(parseAsciiValue);\n}\n\nfunction splitAsciiProperties(body)\n{\n const parts = [];\n let current = \"\";\n let quoted = false;\n let escaped = false;\n\n for (let i = 0; i < body.length; i++)\n {\n const char = body[i];\n if (escaped)\n {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n current += char;\n continue;\n }\n if (char === \",\" && !quoted)\n {\n parts.push(current.trim());\n current = \"\";\n continue;\n }\n current += char;\n }\n\n if (current.trim())\n {\n parts.push(current.trim());\n }\n\n return parts;\n}\n\nfunction parseAsciiValue(value)\n{\n if (/^\".*\"$/u.test(value))\n {\n return value.slice(1, -1).replace(/\\\\\"/gu, \"\\\"\").replace(/\\\\\\\\/gu, \"\\\\\");\n }\n if (/^(true|false)$/iu.test(value))\n {\n return value.toLowerCase() === \"true\";\n }\n if (/^[+-]?\\d+$/u.test(value))\n {\n const number = Number(value);\n return Number.isSafeInteger(number) ? number : BigInt(value).toString();\n }\n if (/^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?$/iu.test(value))\n {\n return Number(value);\n }\n return value;\n}\n\nfunction stripAsciiComment(line)\n{\n let quoted = false;\n let escaped = false;\n for (let i = 0; i < line.length; i++)\n {\n const char = line[i];\n if (escaped)\n {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n continue;\n }\n if (char === \";\" && !quoted)\n {\n return line.slice(0, i);\n }\n }\n return line;\n}\n\nfunction isBinaryFBX(bytes)\n{\n if (bytes.byteLength < BINARY_HEADER_SIZE)\n {\n return false;\n }\n for (let i = 0; i < BINARY_SIGNATURE.length; i++)\n {\n if (bytes[i] !== BINARY_SIGNATURE.charCodeAt(i))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isAsciiFBXText(text)\n{\n return /(^|\\n)\\s*FBXHeaderExtension\\s*:/u.test(text) ||\n /(^|\\n)\\s*Objects\\s*:/u.test(text) ||\n /;\\s*FBX\\s+\\d+\\.\\d+\\.\\d+/iu.test(text);\n}\n\nfunction countAsciiRootNodes(text)\n{\n return collectAsciiRootNames(text).length;\n}\n\nfunction collectAsciiRootNames(text)\n{\n const names = [];\n let depth = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n if (line.startsWith(\"}\"))\n {\n depth = Math.max(depth - 1, 0);\n continue;\n }\n\n const match = /^([A-Za-z_][\\w.]*)\\s*:/u.exec(line);\n if (match && depth === 0)\n {\n names.push(match[1]);\n }\n if (line.endsWith(\"{\"))\n {\n depth++;\n }\n }\n\n return names;\n}\n\nfunction readAsciiVersion(text)\n{\n const direct = /FBXVersion\\s*:\\s*(\\d+)/u.exec(text);\n if (direct)\n {\n return Number(direct[1]);\n }\n\n const comment = /;\\s*FBX\\s+(\\d+)\\.(\\d+)\\.(\\d+)/iu.exec(text);\n if (!comment)\n {\n return 0;\n }\n return Number(`${comment[1]}${comment[2].padStart(2, \"0\")}${comment[3].padStart(2, \"0\")}`);\n}\n\nfunction decodeAsciiPrefix(bytes, length)\n{\n let text = \"\";\n const count = Math.min(bytes.byteLength, length);\n for (let i = 0; i < count; i++)\n {\n const byte = bytes[i];\n if (byte === 0)\n {\n break;\n }\n text += String.fromCharCode(byte);\n }\n return text;\n}\n\nfunction getBinaryNodeHeaderSize(version)\n{\n return version >= 7500 ? NODE_HEADER_64_SIZE : NODE_HEADER_32_SIZE;\n}\n\nfunction isNullRecord(bytes, offset, length)\n{\n if (offset + length > bytes.byteLength)\n {\n return false;\n }\n for (let i = 0; i < length; i++)\n {\n if (bytes[offset + i] !== 0)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction getArrayElementSize(type)\n{\n if (type === \"d\" || type === \"l\")\n {\n return 8;\n }\n if (type === \"f\" || type === \"i\")\n {\n return 4;\n }\n return 1;\n}\n\nfunction normalizeIntegerLimit(value, fieldName, readerName)\n{\n if (!Number.isInteger(value) || value < 1)\n {\n throw new TypeError(`${readerName}: ${fieldName} must be a positive integer`);\n }\n return value;\n}\n\n/**\n * Normalize a boolean reader option.\n *\n * @param {boolean|0|1} value Option value.\n * @param {string} fieldName Option name.\n * @param {string} readerName Reader name for errors.\n * @returns {boolean} Normalized boolean.\n */\nfunction normalizeBooleanOption(value, fieldName, readerName)\n{\n if (typeof value === \"boolean\")\n {\n return value;\n }\n if (value === 0 || value === 1)\n {\n return Boolean(value);\n }\n throw new TypeError(`${readerName}: ${fieldName} must be a boolean`);\n}\n\nfunction normalizeCompatibility(value, readerName)\n{\n if (value === COMPATIBILITY_SOURCE || value === COMPATIBILITY_CARBON) return value;\n throw new TypeError(\n `${readerName}: compatibility must be ${JSON.stringify(COMPATIBILITY_SOURCE)} or ${JSON.stringify(COMPATIBILITY_CARBON)}`\n );\n}\n\nfunction normalizeClasses(classes, readerName)\n{\n if (!classes)\n {\n return {};\n }\n if (typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = {};\n for (const [ key, Class ] of Object.entries(classes))\n {\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = normalizeClasses(base, readerName);\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(key, readerName);\n delete normalized[key];\n continue;\n }\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some(Class => typeof Class === \"function\");\n}\n\nfunction finiteNumber(value, feature)\n{\n const number = Number(value);\n if (!Number.isFinite(number))\n {\n throw new Error(`fbx: ${feature} contains a non-finite number`);\n }\n return number;\n}\n\nfunction integerNumber(value, feature)\n{\n const number = finiteNumber(value, feature);\n if (!Number.isInteger(number))\n {\n throw new Error(`fbx: ${feature} contains a non-integer value`);\n }\n return number;\n}\n\nfunction ensureRange(bytes, offset, length, message)\n{\n if (offset + length > bytes.byteLength)\n {\n throw new Error(message);\n }\n}\n\nfunction readString(bytes, offset, length)\n{\n ensureRange(bytes, offset, length, \"fbx: string is truncated\");\n return TEXT_DECODER.decode(bytes.subarray(offset, offset + length));\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction readU32BE(bytes, offset)\n{\n return (((bytes[offset] << 24) >>> 0) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n}\n\nfunction readI16LE(bytes, offset)\n{\n const value = bytes[offset] | (bytes[offset + 1] << 8);\n return value & 0x8000 ? value - 0x10000 : value;\n}\n\nfunction readI32LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] << 24);\n}\n\nfunction readU64LEAsNumber(bytes, offset)\n{\n const low = readU32LE(bytes, offset);\n const high = readU32LE(bytes, offset + 4);\n return high * 0x100000000 + low;\n}\n\nfunction readI64LEValue(bytes, offset)\n{\n const\n low = BigInt(readU32LE(bytes, offset)),\n high = BigInt(readU32LE(bytes, offset + 4)),\n value = BigInt.asIntN(64, low | (high << 32n)),\n number = Number(value);\n\n return Number.isSafeInteger(number) ? number : value.toString();\n}\n\nfunction readF32LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getFloat32(0, true);\n}\n\nfunction readF64LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 8).getFloat64(0, true);\n}\n"],"names":["OUTPUT_CMF","OUTPUT_GR2","OUTPUT_RAW","OUTPUT_JSON","OUTPUT_FBX_JSON","COMPATIBILITY_SOURCE","COMPATIBILITY_CARBON","CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","DEFAULT_VALUES","emit","inputType","source","flipV","compatibility","classes","maxBytes","maxNodes","maxDepth","maxProperties","maxArrayLength","BINARY_SIGNATURE","BINARY_HEADER_SIZE","NODE_HEADER_32_SIZE","NODE_HEADER_64_SIZE","ASCII_PREFIX_LENGTH","BASE64_ALPHABET","TEXT_DECODER","TextDecoder","OPTION_KEYS","DEFLATE_CODE_LENGTH_ORDER","DEFLATE_LENGTH_BASE","DEFLATE_LENGTH_EXTRA","DEFLATE_DISTANCE_BASE","DEFLATE_DISTANCE_EXTRA","ADLER32_MOD","TRIANGULATION_EPSILON","IDENTITY_MATRIX4","DEFAULT_ROTATION_ORDER","FBX_ROTATION_ORDERS","FBX_TICKS_PER_SECOND","CMF_VERTEX_CHANNELS","slice","FEATURE_SCAN_ROOT_NODES","SUPPORTED_GEOMETRY_CLASSES","SUPPORTED_LAYER_ELEMENTS","SUPPORTED_LAYER_MAPPINGS","SUPPORTED_LAYER_REFERENCES","SUPPORTED_MATERIAL_MAPPINGS","fixedDeflateTables","normalizeValues","base","options","readerName","TypeError","key","keys","has","JSON","stringify","baseValues","values","String","replace","toLowerCase","normalizeEmit","normalizeIntegerLimit","normalizeBooleanOption","normalizeCompatibility","hasOwn","mergeClasses","normalizeClasses","hasClasses","validateClassKey","includes","Error","join","validateClass","Class","undefined","readWithValues","input","bytes","asUint8Array","metadata","inspectWithValues","payloadType","sourceFormat","parseWithValues","readGr2WithValues","readCmfWithValues","detected","inspectBytes","mediaTypes","byteLength","parseDocumentWithValues","document","parseGr2DocumentWithValues","hydrateGr2","buildGr2FromFbxNodes","nodes","hydrateCmf","buildCanonicalCmfFromShared","buildCmfMetadata","meshes","skeletons","animations","cmfAnimations","boneIndexType","root","grannyFileSource","entries","value","push","encoding","parseBinaryDocument","parseAsciiDocument","error","code","readBinaryTargetNodes","readAsciiTargetNodes","probeSupportWithValues","recognized","diagnostics","inspectFbxFeatureSupport","warnings","errors","format","supported","confidence","preferredOutput","reason","variants","kind","codec","message","targetNames","collectFbxFeatureSupport","objectsNode","findFirstNode","objectIndex","indexObjectNodes","connections","readConnections","collectGeometryFeatureWarnings","collectLayerElementFeatureWarnings","collectSkinFeatureWarnings","collectBlendShapeFeatureWarnings","collectAnimationFeatureWarnings","geometry","list","filter","entry","nodeName","className","addWarning","objectLabel","node","children","layer","child","name","startsWith","collectMaterialLayerFeatureWarnings","collectVertexLayerFeatureWarnings","mapping","readFirstChildProperty","reference","skins","connectedChildObjects","isSkinDeformer","length","skin","clusters","isClusterDeformer","cluster","bone","clusterBone","indexes","readChildArray","weights","hasPositiveClusterWeight","hasControlPointInfluenceOverflow","buildSkinClusterRecords","fullName","records","controlPointInfluences","buildControlPointInfluences","influences","influence","weight","channels","isBlendShapeChannel","channel","shapes","readBlendShapeChannelShapes","isUnsupportedBlendShapeInBetween","stack","layers","validateAnimationLayer","curve","keyCount","readAnimationCurveInterpolation","isBinaryFBX","inspectBinaryBytes","text","decodeAsciiPrefix","ascii","isAsciiFBXText","version","readAsciiVersion","signature","rootNodeCount","countAsciiRootNodes","rootNodeNames","collectAsciiRootNames","isFBX","toJsonValue","Uint8Array","ArrayBuffer","isView","type","constructor","isArray","map","output","readU32LE","headerSize","getBinaryNodeHeaderSize","offset","isNullRecord","header","readBinaryNodeHeader","endOffset","readString","nameOffset","nameLength","nodeCount","result","readBinaryNode","count","buildFbxRoot","depth","propertyCount","cursor","propertiesOffset","properties","propertyTypes","i","readBinaryProperty","propertyEnd","propertyListLength","large","readU64LEAsNumber","Number","isSafeInteger","ensureRange","fromCharCode","readI16LE","readI32LE","readF32LE","readF64LE","readI64LEValue","readBinaryBlobProperty","readBinaryArrayProperty","dataOffset","subarray","readUncompressedArray","expectedByteLength","getArrayElementSize","expanded","inflateZlib","arrayType","byteOffset","compressed","expected","Float32Array","Float64Array","Int32Array","expectedLength","cmf","flg","expectedAdler","readU32BE","inflateDeflate","actualAdler","adler32","reader","DeflateBitReader","state","finalBlock","readBits","blockType","inflateStoredBlock","tables","getFixedDeflateTables","inflateHuffmanBlock","literalLength","distance","readDynamicDeflateTables","alignByte","readAlignedU16LE","inverseLength","writeInflatedByte","readAlignedByte","literalLengthTable","distanceTable","symbol","decode","lengthIndex","distanceSymbol","copyInflatedBytes","literalLengths","fill","DeflateHuffmanTable","literalLengthCount","distanceCount","codeLengthCount","codeLengthLengths","codeLengthTable","totalCount","lengths","repeatCodeLength","a","b","byte","bitBuffer","bitCount","shift","remaining","take","Math","min","low","high","maxBits","counts","max","nextCodes","bits","reversed","reverseBits","table","rawLine","split","line","stripAsciiComment","trim","pop","parseAsciiLine","appendAsciiArrayContinuation","opensBlock","collecting","isRoot","parent","sceneTransform","buildSceneTransform","modelWorldCache","Map","skeletonContext","buildSkeletonContext","owners","connectedParentObjects","owner","buildGr2MeshFromGeometry","readCmfAnimations","grannyFileFormatRevision","models","buildGr2Models","skeleton","cmfSkeleton","buildGr2Animations","controlPoints","requireChildArray","polygonVertexIndex","decoded","decodePolygonCorners","meshTransform","buildMeshGeometryToWorld","positions","transformPoints","layerChannels","readGeometryLayerChannels","normal","explicitTangent","tangent","explicitBinormal","binormal","texcoord0","polygonTriangles","orientPolygonTriangles","triangulatePolygonList","polygons","isReflectedTransform","triangleFaces","flattenPolygonTriangles","generateBaseTangents","generateBaseBinormals","materialSelection","readPolygonMaterials","indices","buildIndexGroups","readSkinning","morphTargets","readMorphTargets","bounds","computeBounds","vertex","createGr2Vertex","blendIndice","blendWeight","deriveIndexedBinormals","hasArrayValues","some","target","cleanNumericArray","generateNormals","meshNameFromFbx","minBounds","maxBounds","boneBindings","match","exec","binormalName","find","emptySkinning","clusterRecords","boneKeys","record","boneKey","outputInfluences","corners","corner","normalizeInfluences","get","controlPointIndex","buildBoneBindingsFromInfluences","findSkinSkeletonIndex","boneIndex","generateTangents","generateBiNormals","basePositions","baseVertex","blendShapes","deformer","targets","blendShape","shape","buildMorphTarget","vertices","controlTargetPositions","integerNumber","targetOffset","controlOffset","finiteNumber","vertexChannels","buildMorphTargetVertexChannels","dataIsDeltas","maxDisplacement","computeMaxDisplacement","readMorphTargetShapeNormals","readMorphTargetCustomNormals","byControlPoint","index","set","deltas","transformDirectionDeltas","encoded","readMorphTargetCustomNormalString","transformDirections","decodeBase64Float32Vector3Array","propertyName","readProperties70","vertexCount","feature","decodeBase64Bytes","view","DataView","buffer","getFloat32","char","test","indexOf","targetPositions","hypot","cleanFloat","morphTargetNames","buildMorphTargetNameSet","boneTargets","buildCmfBoneTargetMap","animation","readCmfAnimation","reverse","names","mesh","add","bones","parents","curveNodeParents","curveNodes","uniqueEntries","flatMap","curveNode","readMorphAnimationRecords","readRootPropertyMorphAnimationRecords","boneRecord","readBoneAnimationRecord","compatibleRecords","bakeCarbonBoneAnimationRecords","normalizedRecords","deduplicateMorphAnimationRecords","stackTimeSpan","readAnimationStackTimeSpan","ticks","tick","startTick","stopTick","curves","duration","sourceCurve","interpolation","carbonLinearizeStepCurve","valueDimension","knots","curveValues","curveIndex","knot","knotType","valueType","knotCount","packFloat32Values","targetType","dimension","interpolations","propertyNumber","start","stop","Infinity","readMorphAnimationTargets","readMorphAnimationCurve","targetConnection","connection","relation","childKey","isBoneAnimationProperty","property","parentKey","isBoneModel","byId","isUserDefinedNumericProperty","size","readAnyScalarAnimationCurve","morphs","previous","sameScalarAnimationCurve","left","right","every","abs","isMorphAnimationProperty","readBlendShapeChannelMorphNames","Boolean","readBlendShapeChannelFullWeights","scale","predicate","item","animationCurveAxis","readScalarAnimationCurve","keyValueFloat","keyValue","valueFeature","readAnimationCurveInterpolations","pairs","time","sort","sortedInterpolations","pair","modes","flags","referenceCounts","repeat","flag","numeric","mode","normalizeBoneAnimationProperty","vectorCurve","readVectorAnimationCurve","animationCurveNodeFallback","boneAnimationFallback","_bone","_boneTarget","_property","_vectorCurve","packBonePositionValues","relativeRootPositions","baked","packBoneRotationCurve","relativeRootRotations","morphRecords","groups","group","boneOrder","orderedGroups","fallback","position","rotation","allTicks","forEach","rotationCurve","rotationTicks","firstTick","positionCurves","positionTicks","modelTransformCanMovePivot","sampleTransform","sample","local","composeModelTransform","translation","sampleVectorAnimationCurve","before","decomposeMatrix4","transformMatrixScene","positionSamples","animationSampleDescriptors","rotationSamples","scaleCurve","scaleSamples","cleanVector3","rotations","scales","normalizeQuaternionSeries","propertyVector3","ordered","samples","hasStepTransition","first","lastIndexOf","axis","scalar","_","sampleScalarAnimationCurve","origin","initialInverse","quaternionInverse","quaternionMultiply","lengthSquared","reduce","sum","component","ax","ay","az","aw","bx","by","bz","bw","axes","components","sourceTicks","uniqueSortedTicks","sourceValues","intervalModes","allStep","flat","firstExact","lastExact","amount","transformScenePoint","packBoneRotationValues","matrix","transformed","quaternions","euler","quaternion","sourceIndex","sourceStart","sourceEnd","appendSegment","end","alpha0","alpha1","quaternionSegmentMidpointTick","authoredTurnRequiresSubdivision","needsSubdivision","quaternionSegmentNeedsSubdivision","_tick","alpha","interpolated","normalizedLerpQuaternion","quaternionAngularDifference","middle","definition","seen","unique","setFloat32","recordsByBone","existing","boneName","best","total","bindingMatrix","buildBoneBindingMatrix","bindingPositions","vertexIndex","transformPointMatrix4","invertMatrix4","skeletonIndex","boneToSkeletonIndex","roots","bindPoseMatrices","readBindPoseMatrices","visited","buildSkeleton","componentKeys","collectBone","pending","recordIndexByKey","progressed","parentIndex","authoredLocalMatrix","buildBoneLocalMatrix","authoredTransform","transform","localMatrix","composeSimpleTransform","recordIndex","splice","authoredName","CjsSkeletonName","invBindTransforms","buildInvBindTransforms","gr2Skeleton","buildGr2Bone","restTransforms","boneMasks","buildCmfBoneMasks","masks","byName","isUserDefinedNumericPropertyDefinition","mask","clamp01","meshBindings","meshIndex","orientation","scaleShear","buildModelTransformState","nodeToWorld","scaleMatrixTranslation","buildModelLocalTransform","poseMatrix","cleanMatrix4","parentInvTransform","multiplyMatrix4","transposeMatrix4","matrices","pose","poseNode","nodeId","toObjectKey","globalSettingsNode","unitScaleFactor","axisVector","up","forward","buildModelGeometricTransform","model","cache","buildModelLocalState","parentState","composeInheritedModelState","unscaledNodeToWorld","unscaledMatrix","inheritScale","inheritType","multiplyVector3","overrides","rotationOrder","propertyRotationOrder","rotationPivot","scalingPivot","multiplyMatrix4List","translationMatrix4","rotationMatrix4","inverseRotationMatrix4","negateVector3","scaleMatrix4","rotationDegrees","point","vector","transformVectorMatrix4","normalizeVector3","transformSceneVector","dotVector3","column0","column1","column2","rotationMatrix","matrixToQuaternion","m00","m01","m02","m10","m11","m12","m20","m21","m22","trace","x","y","z","w","s","sqrt","normalizeQuaternion","sign","order","radians","degreesToRadians","axisIndex","axisRotationMatrix4","next","c","cos","sin","invertSharedMatrix4","PI","byType","summary","readObjectEntry","pushIndex","parentsByChild","childrenByParent","childName","readNodeArray","arrayPropertyToNumbers","asciiArray","controlPointCount","polygon","rawValue","raw","outputIndex","polygonIndex","polygonCornerIndex","readLayerElementChannel","geometryNode","layerName","layerIndex","valueNames","indexNames","elementSize","findLayerElementNode","readFirstChildArray","mappedIndex","resolveLayerMappingIndex","directIndex","resolveLayerReferenceIndex","appendLayerElement","spec","channelName","width","directional","usageIndex","layerUsageIndices","flipTexcoordV","routed","typedIndex","direct","isInteger","texcoord","flipped","id","isFinite","findRoutedLayerElementNode","layerNodes","layerNode","childNames","slots","slot","bytesPerIndex","faces","maxIndex","triangles","polygonSlots","triangle","triangulatePolygon","projected","projectPolygonTo2D","triangulatePolygonFan","area","signedArea2D","isConvexPolygon2D","guard","clipped","current","isEar2D","reflected","matrixDeterminant","determinant3","sceneDeterminant","a00","a01","a02","a10","a11","a12","a20","a21","a22","computePolygonNormal","absX","absY","absZ","dropAxis","x0","y0","z0","x1","y1","z1","points","cross","cross2D","pointIndex","pointInTriangle2D","ab","bc","ca","hasNegative","hasPositive","polygonCount","readMaterialSlots","materials","material","texcoord1","color0","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","binding","hydrateGr2Model","hydrateGr2Animation","trackGroups","trackGroup","transformTracks","track","vectorTracks","valueCurve","hydrateGr2Skeleton","fields","__hydrationOptions","populate","instance","SetValues","skipUpdate","skipEvents","create","defineProperty","enumerable","headerNode","definitionsNode","connectionsNode","readHeader","globalSettings","definitions","readDefinitions","objects","readObjects","fbxHeaderVersion","fbxVersion","creator","objectTypes","readObjectType","getShortObjectName","childCount","attributeNames","childId","parentId","properties70","label","getProperty70Value","fbxClassMarker","objectName","namespaceMarker","siblings","arrayNode","parseAsciiProperties","body","endsWith","splitAsciiProperties","parseAsciiValue","parts","quoted","escaped","number","BigInt","toString","charCodeAt","comment","padStart","fieldName","normalized","asIntN","getFloat64"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/fbx/core/helpers.js"],"sourcesContent":["import { adler32 } from \"#utils/checksum\";\nimport { asUint8Array } from \"#utils/bytes\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport { CMF_CLASS_KEYS, GR2_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport { buildGr2Animations } from \"../../cmf/core/gr2Compat.js\";\nimport { buildCmfFromShared as buildCanonicalCmfFromShared } from \"../../cmf/core/shared.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\nimport {\n invertMatrix4 as invertSharedMatrix4,\n multiplyMatrix4,\n transposeMatrix4\n} from \"../../cmf/core/utils/matrix.js\";\nimport {\n normalizeQuaternionSeries,\n normalizedLerpQuaternion,\n quaternionAngularDifference,\n quaternionSegmentMidpointTick,\n quaternionSegmentNeedsSubdivision\n} from \"../../cmf/core/utils/quaternion.js\";\n\nexport { CMF_CLASS_KEYS, GR2_CLASS_KEYS };\n\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_FBX_JSON = \"fbxJson\";\nexport const COMPATIBILITY_SOURCE = \"source\";\nexport const COMPATIBILITY_CARBON = \"carbon\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"fbx\",\n source: \"\",\n flipV: true,\n compatibility: COMPATIBILITY_SOURCE,\n classes: Object.freeze({}),\n maxBytes: 256 * 1024 * 1024,\n maxNodes: 250000,\n maxDepth: 128,\n maxProperties: 4096,\n maxArrayLength: 20000000\n});\n\nconst BINARY_SIGNATURE = \"Kaydara FBX Binary \\u0000\\u001a\\u0000\";\nconst BINARY_HEADER_SIZE = 27;\nconst NODE_HEADER_32_SIZE = 13;\nconst NODE_HEADER_64_SIZE = 25;\nconst ASCII_PREFIX_LENGTH = 8192;\nconst BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst TEXT_DECODER = new TextDecoder(\"utf-8\");\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"inputType\",\n \"source\",\n \"flipV\",\n \"compatibility\",\n \"classes\",\n \"maxBytes\",\n \"maxNodes\",\n \"maxDepth\",\n \"maxProperties\",\n \"maxArrayLength\"\n]);\nconst DEFLATE_CODE_LENGTH_ORDER = Object.freeze([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\nconst DEFLATE_LENGTH_BASE = Object.freeze([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]);\nconst DEFLATE_LENGTH_EXTRA = Object.freeze([ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 ]);\nconst DEFLATE_DISTANCE_BASE = Object.freeze([ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]);\nconst DEFLATE_DISTANCE_EXTRA = Object.freeze([ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ]);\nconst TRIANGULATION_EPSILON = 1e-10;\nconst IDENTITY_MATRIX4 = Object.freeze([\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n]);\nconst DEFAULT_ROTATION_ORDER = \"XYZ\";\nconst FBX_ROTATION_ORDERS = Object.freeze([ \"XYZ\", \"XZY\", \"YZX\", \"YXZ\", \"ZXY\", \"ZYX\" ]);\nconst FBX_TICKS_PER_SECOND = 46186158000;\nconst CMF_VERTEX_CHANNELS = Object.freeze([\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt8\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ]\n]);\nconst CMF_MORPH_CHANNELS = Object.freeze(CMF_VERTEX_CHANNELS.slice(0, 4));\nconst FEATURE_SCAN_ROOT_NODES = Object.freeze([ \"GlobalSettings\", \"Objects\", \"Connections\" ]);\nconst SUPPORTED_GEOMETRY_CLASSES = new Set([ \"\", \"Mesh\", \"Shape\" ]);\nconst SUPPORTED_LAYER_ELEMENTS = new Set([\n \"LayerElementNormal\",\n \"LayerElementTangent\",\n \"LayerElementBinormal\",\n \"LayerElementUV\",\n \"LayerElementColor\",\n \"LayerElementMaterial\"\n]);\nconst SUPPORTED_LAYER_MAPPINGS = new Set([ \"ByPolygonVertex\", \"ByControlPoint\", \"ByVertice\", \"ByVertex\", \"ByPolygon\", \"AllSame\" ]);\nconst SUPPORTED_LAYER_REFERENCES = new Set([ \"Direct\", \"IndexToDirect\", \"Index\" ]);\nconst SUPPORTED_MATERIAL_MAPPINGS = new Set([ \"AllSame\", \"ByPolygon\" ]);\n\nlet fixedDeflateTables = null;\n\n/**\n * Normalize reader values.\n *\n * @param {object} [base] Base values.\n * @param {object} [options] Override values.\n * @param {string} [readerName] Reader name for errors.\n * @returns {object} Normalized values.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsFbxFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const baseValues = { ...DEFAULT_VALUES, ...(base || {}) };\n const values = { ...baseValues, ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"fbx\";\n values.emit = normalizeEmit(values.emit, readerName);\n values.maxBytes = normalizeIntegerLimit(values.maxBytes, \"maxBytes\", readerName);\n values.maxNodes = normalizeIntegerLimit(values.maxNodes, \"maxNodes\", readerName);\n values.maxDepth = normalizeIntegerLimit(values.maxDepth, \"maxDepth\", readerName);\n values.maxProperties = normalizeIntegerLimit(values.maxProperties, \"maxProperties\", readerName);\n values.maxArrayLength = normalizeIntegerLimit(values.maxArrayLength, \"maxArrayLength\", readerName);\n values.flipV = normalizeBooleanOption(values.flipV, \"flipV\", readerName);\n values.compatibility = normalizeCompatibility(values.compatibility, readerName);\n values.classes = Object.hasOwn(options, \"classes\")\n ? mergeClasses(baseValues.classes || {}, options.classes, readerName)\n : normalizeClasses(baseValues.classes || {}, readerName);\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\n {\n throw new TypeError(`${readerName}: emit \"${values.emit}\" requires explicit classes`);\n }\n return values;\n}\n\n/**\n * Validate a node class key.\n *\n * @param {string} key Class key.\n * @param {string} [readerName] Reader name for errors.\n * @returns {string} The validated key.\n */\nexport function validateClassKey(key, readerName = \"CjsFbxFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n return key;\n}\n\n/**\n * Validate a node class constructor.\n *\n * @param {string} key Class key.\n * @param {Function} Class Constructor.\n * @param {string} [readerName] Reader name for errors.\n * @returns {Function} The validated constructor.\n */\nexport function validateClass(key, Class, readerName = \"CjsFbxFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${key} must be a constructor`);\n }\n return Class;\n}\n\n/**\n * Normalize an emit target.\n *\n * @param {string} emit Emit target.\n * @param {string} readerName Reader name for errors.\n * @returns {string} Normalized emit target.\n */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null)\n {\n return OUTPUT_RAW;\n }\n if (emit === OUTPUT_JSON)\n {\n return OUTPUT_FBX_JSON;\n }\n if ([ OUTPUT_RAW, OUTPUT_FBX_JSON, OUTPUT_GR2, OUTPUT_CMF ].includes(emit))\n {\n return emit;\n }\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/**\n * Convert supported binary inputs to bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Binary input.\n * @returns {Uint8Array} Byte view.\n */\n/**\n * Read FBX bytes with normalized values.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Raw or debug payload.\n */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n\n if (values.emit === OUTPUT_RAW)\n {\n const metadata = inspectWithValues(bytes, values);\n return {\n payloadType: \"raw\",\n sourceFormat: \"fbx\",\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_FBX_JSON)\n {\n return parseWithValues(bytes, values);\n }\n\n if (values.emit === OUTPUT_GR2)\n {\n return readGr2WithValues(bytes, values);\n }\n\n return readCmfWithValues(bytes, values);\n}\n\n/**\n * Inspect FBX bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Lightweight FBX metadata.\n */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n const detected = inspectBytes(bytes);\n\n return {\n payloadType: \"geometry\",\n mediaTypes: [ \"geometry\" ],\n sourceFormat: \"fbx\",\n byteLength: bytes.byteLength,\n source: values.source || \"\",\n ...detected\n };\n}\n\n/**\n * Parse FBX bytes into a browser-safe debug document.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Parsed FBX document.\n */\nexport function parseWithValues(input, values = DEFAULT_VALUES)\n{\n return {\n ...parseDocumentWithValues(input, values),\n payloadType: OUTPUT_FBX_JSON\n };\n}\n\n/**\n * Read static FBX mesh data into GR2-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated GR2-shaped root.\n */\nexport function readGr2WithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n return hydrateGr2(buildGr2FromFbxNodes(document.nodes, values), values.classes, { source: values.source });\n}\n\n/**\n * Read static FBX mesh data into CMF-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated CMF-shaped root.\n */\nexport function readCmfWithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n const source = buildGr2FromFbxNodes(document.nodes, values);\n return hydrateCmf(\n buildCanonicalCmfFromShared({\n metadata: buildCmfMetadata(source),\n meshes: source.meshes,\n skeletons: source.skeletons,\n animations: source.cmfAnimations\n }, { boneIndexType: \"UInt8\" }),\n values.classes,\n { source: values.source },\n \"CjsFbxFormat\"\n );\n}\n\nfunction buildCmfMetadata(root)\n{\n const source = String(root.grannyFileSource || \"\");\n const entries = source && source !== \"memory\" ? [ { key: \"source\", value: source } ] : [];\n entries.push(\n { key: \"sourceFormat\", value: \"fbx\" },\n { key: \"generator\", value: \"CjsFbxFormat\" }\n );\n return { entries };\n}\n\nfunction parseDocumentWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return parseBinaryDocument(bytes, metadata, values);\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return parseAsciiDocument(bytes, metadata, values);\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\nfunction parseGr2DocumentWithValues(input, values)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return {\n ...metadata,\n nodes: readBinaryTargetNodes(bytes, metadata, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return {\n ...metadata,\n nodes: readAsciiTargetNodes(bytes, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\n/**\n * Report FBX support for the current implementation.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Support report.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const recognized = metadata.encoding !== \"\";\n const diagnostics = recognized\n ? inspectFbxFeatureSupport(input, values, metadata)\n : { warnings: [], errors: [] };\n\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: recognized ? \"partial\" : \"none\",\n confidence: recognized ? metadata.confidence : 0,\n preferredOutput: recognized ? \"gr2\" : \"\",\n reason: recognized ? \"FBX document parsing plus basic static/skinned/morphed GR2/CMF output and basic CMF animation curves are available; full CarbonEngine-equivalent import is not implemented yet.\" : \"Unrecognized FBX data.\",\n metadata,\n variants: [\n { kind: \"document\", codec: metadata.encoding || \"unknown\", supported: recognized },\n { kind: \"gr2\", codec: \"gr2-geometry\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry class output is available.\" : \"Unrecognized FBX data.\" },\n { kind: \"cmf\", codec: \"cmf-geometry-animation\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry and basic morph/bone animation class output are available.\" : \"Unrecognized FBX data.\" }\n ],\n warnings: diagnostics.warnings,\n errors: diagnostics.errors\n };\n }\n catch (error)\n {\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction inspectFbxFeatureSupport(input, values, metadata)\n{\n try\n {\n const\n bytes = asUint8Array(input, \"Fbx input\"),\n targetNames = new Set(FEATURE_SCAN_ROOT_NODES),\n nodes = metadata.encoding === \"binary\"\n ? readBinaryTargetNodes(bytes, metadata, values, targetNames)\n : readAsciiTargetNodes(bytes, values, targetNames);\n\n return collectFbxFeatureSupport(nodes);\n }\n catch (error)\n {\n return {\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction collectFbxFeatureSupport(nodes)\n{\n const\n warnings = [],\n objectsNode = findFirstNode(nodes, \"Objects\");\n\n if (!objectsNode)\n {\n return {\n warnings: [ \"fbx: no Objects node; runtime GR2/CMF output requires mesh Geometry nodes.\" ],\n errors: []\n };\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\"));\n\n collectGeometryFeatureWarnings(objectIndex, warnings);\n collectLayerElementFeatureWarnings(objectIndex, warnings);\n collectSkinFeatureWarnings(objectIndex, connections, warnings);\n collectBlendShapeFeatureWarnings(objectIndex, connections, warnings);\n collectAnimationFeatureWarnings(objectIndex, connections, warnings);\n\n return {\n warnings,\n errors: []\n };\n}\n\nfunction collectGeometryFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\"))\n {\n if (!SUPPORTED_GEOMETRY_CLASSES.has(geometry.className))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} class ${JSON.stringify(geometry.className)} is not imported by GR2/CMF output.`);\n continue;\n }\n\n if (geometry.className === \"Shape\")\n {\n continue;\n }\n\n if (!findFirstNode(geometry.node.children, \"Vertices\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing Vertices and cannot be imported as a mesh.`);\n }\n if (!findFirstNode(geometry.node.children, \"PolygonVertexIndex\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing PolygonVertexIndex and cannot be imported as a mesh.`);\n }\n }\n}\n\nfunction collectLayerElementFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n for (const layer of geometry.node.children.filter(child => child.name.startsWith(\"LayerElement\")))\n {\n if (!SUPPORTED_LAYER_ELEMENTS.has(layer.name))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} is ignored by GR2/CMF output.`);\n continue;\n }\n\n if (layer.name === \"LayerElementMaterial\")\n {\n collectMaterialLayerFeatureWarnings(geometry, layer, warnings);\n }\n else\n {\n collectVertexLayerFeatureWarnings(geometry, layer, warnings);\n }\n }\n }\n}\n\nfunction collectVertexLayerFeatureWarnings(geometry, layer, warnings)\n{\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\");\n\n if (!SUPPORTED_LAYER_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n if (!SUPPORTED_LAYER_REFERENCES.has(reference))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported ReferenceInformationType ${JSON.stringify(reference)}.`);\n }\n}\n\nfunction collectMaterialLayerFeatureWarnings(geometry, layer, warnings)\n{\n const mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\");\n if (!SUPPORTED_MATERIAL_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: LayerElementMaterial on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n}\n\nfunction collectSkinFeatureWarnings(objectIndex, connections, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const skins = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\").filter(isSkinDeformer);\n if (skins.length > 1)\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} has ${skins.length} Skin deformers; GR2/CMF output imports only the first skin.`);\n }\n }\n\n const skins = objectIndex.list\n .filter(entry => entry.nodeName === \"Deformer\" && isSkinDeformer(entry));\n\n for (const skin of skins)\n {\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no linked bone Model.`);\n }\n else if (!indexes.length)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no Indexes.`);\n }\n else if (!hasPositiveClusterWeight(indexes, weights))\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no positive Weights.`);\n }\n }\n\n if (hasControlPointInfluenceOverflow(buildSkinClusterRecords(clusters, objectIndex, connections)))\n {\n addWarning(warnings, `fbx: Skin ${objectLabel(skin)} has control points with more than four positive bone influences; GR2/CMF output keeps the strongest four and renormalizes them.`);\n }\n }\n}\n\n/**\n * Check whether an indexed FBX object is a Skin deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Skin deformer.\n */\nfunction isSkinDeformer(entry)\n{\n return entry?.className === \"Skin\" || entry?.fullName?.startsWith(\"Deformer::Skin\") || entry?.name === \"Skin\";\n}\n\n/**\n * Check whether an indexed FBX object is a Cluster deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Cluster deformer.\n */\nfunction isClusterDeformer(entry)\n{\n return entry?.className === \"Cluster\" || entry?.fullName?.startsWith(\"SubDeformer::\") || entry?.name?.includes(\"Cluster\");\n}\n\nfunction hasControlPointInfluenceOverflow(records)\n{\n const controlPointInfluences = buildControlPointInfluences(records);\n for (const influences of controlPointInfluences.values())\n {\n if (influences.filter(influence => influence.weight > 0).length > 4)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction collectBlendShapeFeatureWarnings(objectIndex, connections, warnings)\n{\n const channels = objectIndex.list\n .filter(entry => isBlendShapeChannel(entry));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n addWarning(warnings, `fbx: BlendShapeChannel ${objectLabel(channel)} is skipped because in-between morph interpolation is not implemented.`);\n }\n }\n}\n\nfunction collectAnimationFeatureWarnings(objectIndex, connections, warnings)\n{\n for (const stack of objectIndex.list.filter(entry => entry.nodeName === \"AnimationStack\"))\n {\n const layers = connectedChildObjects(stack, objectIndex, connections, \"AnimationLayer\");\n if (layers.length > 1)\n {\n addWarning(warnings, `fbx: AnimationStack ${objectLabel(stack)} has ${layers.length} layers; GR2/CMF output does not evaluate layered animation.`);\n }\n for (const layer of layers)\n {\n try\n {\n validateAnimationLayer(layer);\n }\n catch (error)\n {\n addWarning(warnings, `${error.message}.`);\n }\n }\n }\n\n for (const curve of objectIndex.list.filter(entry => entry.nodeName === \"AnimationCurve\"))\n {\n const keyCount = (readChildArray(curve.node, \"KeyTime\") || []).length;\n try\n {\n readAnimationCurveInterpolation(curve.node, keyCount);\n }\n catch (error)\n {\n addWarning(warnings, `${error.message} AnimationCurve ${objectLabel(curve)} is not imported by GR2/CMF output.`);\n }\n }\n}\n\nfunction addWarning(warnings, message)\n{\n if (!warnings.includes(message))\n {\n warnings.push(message);\n }\n}\n\nfunction objectLabel(entry)\n{\n return JSON.stringify(entry?.name || entry?.fullName || entry?.key || \"\");\n}\n\n/**\n * Inspect raw bytes without normalized options.\n *\n * @param {Uint8Array} bytes FBX bytes.\n * @returns {object} Detected metadata.\n */\nexport function inspectBytes(bytes)\n{\n if (isBinaryFBX(bytes))\n {\n return inspectBinaryBytes(bytes);\n }\n\n const text = decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH);\n const ascii = isAsciiFBXText(text);\n return {\n encoding: ascii ? \"ascii\" : \"\",\n version: ascii ? readAsciiVersion(text) : 0,\n signature: ascii ? \"FBX ASCII\" : \"\",\n rootNodeCount: ascii ? countAsciiRootNodes(text) : 0,\n rootNodeNames: ascii ? collectAsciiRootNames(text) : [],\n confidence: ascii ? 0.85 : 0\n };\n}\n\n/**\n * Test whether bytes look like FBX.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the input appears to be FBX.\n */\nexport function isFBX(input)\n{\n const bytes = asUint8Array(input, \"Fbx input\");\n return isBinaryFBX(bytes) || isAsciiFBXText(decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH));\n}\n\n/**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (ArrayBuffer.isView(value))\n {\n return { type: value.constructor.name, length: value.length };\n }\n if (Array.isArray(value))\n {\n return value.map(toJsonValue);\n }\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value))\n {\n output[key] = toJsonValue(entry);\n }\n return output;\n }\n return value;\n}\n\nfunction inspectBinaryBytes(bytes)\n{\n const version = readU32LE(bytes, 23);\n const headerSize = getBinaryNodeHeaderSize(version);\n const rootNodeNames = [];\n let rootNodeCount = 0;\n let offset = BINARY_HEADER_SIZE;\n\n while (offset + headerSize <= bytes.byteLength && !isNullRecord(bytes, offset, headerSize))\n {\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header || header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n break;\n }\n rootNodeNames.push(readString(bytes, header.nameOffset, header.nameLength));\n rootNodeCount++;\n offset = header.endOffset;\n }\n\n return {\n encoding: \"binary\",\n version,\n signature: \"Kaydara FBX Binary\",\n rootNodeCount,\n rootNodeNames,\n confidence: 1\n };\n}\n\nfunction parseBinaryDocument(bytes, metadata, values)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n offset = result.offset;\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryNode(bytes, offset, version, values, depth)\n{\n if (depth > values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header)\n {\n throw new Error(`fbx: invalid node header at offset ${offset}`);\n }\n if (header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: node ${header.name} extends beyond end of file`);\n }\n if (header.propertyCount > values.maxProperties)\n {\n throw new Error(`fbx: node ${header.name} exceeds maxProperties (${values.maxProperties})`);\n }\n\n let cursor = header.propertiesOffset;\n const properties = [];\n const propertyTypes = [];\n\n for (let i = 0; i < header.propertyCount; i++)\n {\n const result = readBinaryProperty(bytes, cursor, values);\n properties.push(result.value);\n propertyTypes.push(result.type);\n cursor = result.offset;\n }\n\n const propertyEnd = header.propertiesOffset + header.propertyListLength;\n if (cursor > propertyEnd)\n {\n throw new Error(`fbx: property list for node ${header.name} overflowed`);\n }\n cursor = propertyEnd;\n\n const children = [];\n let count = 1;\n const headerSize = getBinaryNodeHeaderSize(version);\n\n while (cursor + headerSize <= header.endOffset)\n {\n if (isNullRecord(bytes, cursor, headerSize))\n {\n cursor += headerSize;\n break;\n }\n if (cursor >= header.endOffset)\n {\n break;\n }\n\n const child = readBinaryNode(bytes, cursor, version, values, depth + 1);\n if (child.offset > header.endOffset)\n {\n throw new Error(`fbx: child node for ${header.name} overflowed`);\n }\n children.push(child.node);\n count += child.count;\n cursor = child.offset;\n }\n\n return {\n offset: header.endOffset,\n count,\n node: {\n name: header.name,\n properties,\n propertyTypes,\n children\n }\n };\n}\n\nfunction readBinaryNodeHeader(bytes, offset, version)\n{\n const large = version >= 7500;\n const headerSize = getBinaryNodeHeaderSize(version);\n if (offset + headerSize > bytes.byteLength)\n {\n return null;\n }\n\n let cursor = offset;\n const endOffset = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyCount = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyListLength = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const nameLength = bytes[cursor++];\n const nameOffset = cursor;\n\n if (endOffset === 0 && propertyCount === 0 && propertyListLength === 0 && nameLength === 0)\n {\n return null;\n }\n if (!Number.isSafeInteger(endOffset) || !Number.isSafeInteger(propertyCount) || !Number.isSafeInteger(propertyListLength))\n {\n throw new Error(\"fbx: 64-bit node offsets exceed JavaScript safe integer range\");\n }\n if (nameOffset + nameLength > bytes.byteLength)\n {\n throw new Error(`fbx: node name at offset ${offset} is truncated`);\n }\n\n return {\n endOffset,\n propertyCount,\n propertyListLength,\n nameLength,\n nameOffset,\n name: readString(bytes, nameOffset, nameLength),\n propertiesOffset: nameOffset + nameLength\n };\n}\n\nfunction readBinaryProperty(bytes, offset, values)\n{\n ensureRange(bytes, offset, 1, \"fbx: property type is truncated\");\n const type = String.fromCharCode(bytes[offset]);\n let cursor = offset + 1;\n\n switch (type)\n {\n case \"Y\":\n ensureRange(bytes, cursor, 2, \"fbx: int16 property is truncated\");\n return { type, value: readI16LE(bytes, cursor), offset: cursor + 2 };\n case \"C\":\n ensureRange(bytes, cursor, 1, \"fbx: bool property is truncated\");\n return { type, value: bytes[cursor] !== 0, offset: cursor + 1 };\n case \"I\":\n ensureRange(bytes, cursor, 4, \"fbx: int32 property is truncated\");\n return { type, value: readI32LE(bytes, cursor), offset: cursor + 4 };\n case \"F\":\n ensureRange(bytes, cursor, 4, \"fbx: float32 property is truncated\");\n return { type, value: readF32LE(bytes, cursor), offset: cursor + 4 };\n case \"D\":\n ensureRange(bytes, cursor, 8, \"fbx: float64 property is truncated\");\n return { type, value: readF64LE(bytes, cursor), offset: cursor + 8 };\n case \"L\":\n ensureRange(bytes, cursor, 8, \"fbx: int64 property is truncated\");\n return { type, value: readI64LEValue(bytes, cursor), offset: cursor + 8 };\n case \"R\":\n return readBinaryBlobProperty(bytes, cursor, type, \"bytes\");\n case \"S\":\n return readBinaryBlobProperty(bytes, cursor, type, \"string\");\n case \"f\":\n case \"d\":\n case \"i\":\n case \"l\":\n case \"b\":\n case \"c\":\n return readBinaryArrayProperty(bytes, cursor, type, values);\n default:\n throw new Error(`fbx: unsupported property type ${JSON.stringify(type)} at offset ${offset}`);\n }\n}\n\nfunction readBinaryBlobProperty(bytes, offset, type, kind)\n{\n ensureRange(bytes, offset, 4, `fbx: ${kind} property length is truncated`);\n const length = readU32LE(bytes, offset);\n const dataOffset = offset + 4;\n const endOffset = dataOffset + length;\n ensureRange(bytes, dataOffset, length, `fbx: ${kind} property is truncated`);\n\n return {\n type,\n value: kind === \"string\" ? readString(bytes, dataOffset, length) : bytes.subarray(dataOffset, endOffset),\n offset: endOffset\n };\n}\n\nfunction readBinaryArrayProperty(bytes, offset, type, values)\n{\n ensureRange(bytes, offset, 12, \"fbx: array property header is truncated\");\n const length = readU32LE(bytes, offset);\n const encoding = readU32LE(bytes, offset + 4);\n const byteLength = readU32LE(bytes, offset + 8);\n const dataOffset = offset + 12;\n const endOffset = dataOffset + byteLength;\n ensureRange(bytes, dataOffset, byteLength, \"fbx: array property is truncated\");\n if (length > values.maxArrayLength)\n {\n throw new Error(`fbx: array property exceeds maxArrayLength (${values.maxArrayLength})`);\n }\n\n if (encoding === 0)\n {\n return {\n type,\n value: readUncompressedArray(bytes, dataOffset, type, length, byteLength),\n offset: endOffset\n };\n }\n\n if (encoding === 1)\n {\n const expectedByteLength = getArrayElementSize(type) * length;\n const expanded = inflateZlib(bytes.subarray(dataOffset, endOffset), expectedByteLength);\n return {\n type,\n value: readUncompressedArray(expanded, 0, type, length, expectedByteLength),\n offset: endOffset\n };\n }\n\n return {\n type,\n value: {\n arrayType: type,\n length,\n encoding,\n byteOffset: dataOffset,\n byteLength,\n compressed: true\n },\n offset: endOffset\n };\n}\n\nfunction readUncompressedArray(bytes, offset, type, length, byteLength)\n{\n const expected = getArrayElementSize(type) * length;\n if (byteLength < expected)\n {\n throw new Error(`fbx: array property ${type} is truncated`);\n }\n\n if (type === \"f\")\n {\n const value = new Float32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"d\")\n {\n const value = new Float64Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF64LE(bytes, offset + i * 8);\n }\n return value;\n }\n if (type === \"i\")\n {\n const value = new Int32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readI32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"l\")\n {\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(readI64LEValue(bytes, offset + i * 8));\n }\n return value;\n }\n\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(bytes[offset + i] !== 0);\n }\n return value;\n}\n\n// THE ONE HAND-ROLLED INFLATE IN THIS PACKAGE, AND WHY IT STAYS. Everywhere else\n// that meets a deflate stream uses the shared `decompressBytes` over the\n// platform's `DecompressionStream` — `formats/vta` and `formats/png` both do.\n// FBX cannot: `DecompressionStream` is asynchronous by specification and there is\n// no synchronous platform inflate, while a compressed FBX array is decoded INLINE\n// during a synchronous recursive node walk (`readBinaryArrayProperty` at :1037,\n// which calls this at :1063). Making this await would make the whole node walk\n// async and take `CjsFbxFormat.read` — the synchronous entry point — with it.\n//\n// So this is a platform constraint, not an oversight, and not a preference for\n// hand-rolled code. If a SECOND synchronous inflate is ever needed, this moves to\n// a shared home rather than being copied; one caller is not yet a shared module.\n//\n// Carbon offers no donor either way: `mesh` vendors ufbx\n// (`mesh/vendor/github.com/ufbx`), so Carbon's FBX decompression lives inside\n// third-party C rather than in code there is anything to port.\nfunction inflateZlib(source, expectedLength)\n{\n if (source.byteLength < 6)\n {\n throw new Error(\"fbx: compressed array zlib stream is truncated\");\n }\n\n const\n cmf = source[0],\n flg = source[1];\n\n if ((cmf & 0x0f) !== 8 || (cmf >> 4) > 7 || ((cmf << 8) + flg) % 31 !== 0)\n {\n throw new Error(\"fbx: compressed array has invalid zlib header\");\n }\n if (flg & 0x20)\n {\n throw new Error(\"fbx: compressed array uses a preset zlib dictionary\");\n }\n\n const\n expectedAdler = readU32BE(source, source.byteLength - 4),\n output = inflateDeflate(source.subarray(2, source.byteLength - 4), expectedLength),\n actualAdler = adler32(output);\n\n if (actualAdler !== expectedAdler)\n {\n throw new Error(\"fbx: compressed array zlib checksum mismatch\");\n }\n\n return output;\n}\n\nfunction inflateDeflate(source, expectedLength)\n{\n const\n reader = new DeflateBitReader(source),\n state = {\n output: new Uint8Array(expectedLength),\n offset: 0\n };\n\n let finalBlock = false;\n while (!finalBlock)\n {\n finalBlock = reader.readBits(1) === 1;\n const blockType = reader.readBits(2);\n if (blockType === 0)\n {\n inflateStoredBlock(reader, state);\n }\n else if (blockType === 1)\n {\n const tables = getFixedDeflateTables();\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else if (blockType === 2)\n {\n const tables = readDynamicDeflateTables(reader);\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else\n {\n throw new Error(\"fbx: compressed array uses reserved deflate block type\");\n }\n }\n\n if (state.offset !== expectedLength)\n {\n throw new Error(\"fbx: compressed array decoded to unexpected length\");\n }\n\n return state.output;\n}\n\nfunction inflateStoredBlock(reader, state)\n{\n reader.alignByte();\n const\n length = reader.readAlignedU16LE(),\n inverseLength = reader.readAlignedU16LE();\n\n if (((length ^ 0xffff) & 0xffff) !== inverseLength)\n {\n throw new Error(\"fbx: compressed array stored block length mismatch\");\n }\n\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, reader.readAlignedByte());\n }\n}\n\nfunction inflateHuffmanBlock(reader, state, literalLengthTable, distanceTable)\n{\n for (;;)\n {\n const symbol = literalLengthTable.decode(reader);\n if (symbol < 256)\n {\n writeInflatedByte(state, symbol);\n continue;\n }\n if (symbol === 256)\n {\n return;\n }\n\n const lengthIndex = symbol - 257;\n if (lengthIndex < 0 || lengthIndex >= DEFLATE_LENGTH_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate length symbol\");\n }\n\n const\n length = DEFLATE_LENGTH_BASE[lengthIndex] + reader.readBits(DEFLATE_LENGTH_EXTRA[lengthIndex]),\n distanceSymbol = distanceTable.decode(reader);\n\n if (distanceSymbol < 0 || distanceSymbol >= DEFLATE_DISTANCE_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance symbol\");\n }\n\n const distance = DEFLATE_DISTANCE_BASE[distanceSymbol] + reader.readBits(DEFLATE_DISTANCE_EXTRA[distanceSymbol]);\n copyInflatedBytes(state, distance, length);\n }\n}\n\nfunction getFixedDeflateTables()\n{\n if (!fixedDeflateTables)\n {\n const literalLengths = new Array(288).fill(0);\n for (let symbol = 0; symbol <= 143; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n for (let symbol = 144; symbol <= 255; symbol++)\n {\n literalLengths[symbol] = 9;\n }\n for (let symbol = 256; symbol <= 279; symbol++)\n {\n literalLengths[symbol] = 7;\n }\n for (let symbol = 280; symbol <= 287; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n\n fixedDeflateTables = {\n literalLength: new DeflateHuffmanTable(literalLengths),\n distance: new DeflateHuffmanTable(new Array(32).fill(5))\n };\n }\n return fixedDeflateTables;\n}\n\nfunction readDynamicDeflateTables(reader)\n{\n const\n literalLengthCount = reader.readBits(5) + 257,\n distanceCount = reader.readBits(5) + 1,\n codeLengthCount = reader.readBits(4) + 4,\n codeLengthLengths = new Array(19).fill(0);\n\n for (let i = 0; i < codeLengthCount; i++)\n {\n codeLengthLengths[DEFLATE_CODE_LENGTH_ORDER[i]] = reader.readBits(3);\n }\n\n const\n codeLengthTable = new DeflateHuffmanTable(codeLengthLengths),\n totalCount = literalLengthCount + distanceCount,\n lengths = [];\n\n while (lengths.length < totalCount)\n {\n const symbol = codeLengthTable.decode(reader);\n if (symbol <= 15)\n {\n lengths.push(symbol);\n }\n else if (symbol === 16)\n {\n if (!lengths.length)\n {\n throw new Error(\"fbx: compressed array repeats missing deflate code length\");\n }\n repeatCodeLength(lengths, lengths[lengths.length - 1], reader.readBits(2) + 3, totalCount);\n }\n else if (symbol === 17)\n {\n repeatCodeLength(lengths, 0, reader.readBits(3) + 3, totalCount);\n }\n else if (symbol === 18)\n {\n repeatCodeLength(lengths, 0, reader.readBits(7) + 11, totalCount);\n }\n else\n {\n throw new Error(\"fbx: compressed array has invalid code length symbol\");\n }\n }\n\n return {\n literalLength: new DeflateHuffmanTable(lengths.slice(0, literalLengthCount)),\n distance: new DeflateHuffmanTable(lengths.slice(literalLengthCount))\n };\n}\n\nfunction repeatCodeLength(lengths, value, count, totalCount)\n{\n if (lengths.length + count > totalCount)\n {\n throw new Error(\"fbx: compressed array code lengths overflow\");\n }\n for (let i = 0; i < count; i++)\n {\n lengths.push(value);\n }\n}\n\nfunction writeInflatedByte(state, value)\n{\n if (state.offset >= state.output.byteLength)\n {\n throw new Error(\"fbx: compressed array decoded past expected length\");\n }\n state.output[state.offset++] = value & 0xff;\n}\n\nfunction copyInflatedBytes(state, distance, length)\n{\n if (distance <= 0 || distance > state.offset)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance\");\n }\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, state.output[state.offset - distance]);\n }\n}\n\n\n/**\n * Bit reader over a zlib/deflate stream used to inflate compressed FBX\n * property arrays.\n */\nclass DeflateBitReader\n{\n /**\n * Creates a DeflateBitReader over caller-provided FBX bytes and reader\n * options.\n */\n constructor(bytes)\n {\n this.bytes = bytes;\n this.byteOffset = 0;\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n /** Reads bits from the current FBX binary reader. */\n readBits(count)\n {\n let\n value = 0,\n shift = 0,\n remaining = count;\n\n while (remaining > 0)\n {\n if (this.bitCount === 0)\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array deflate stream is truncated\");\n }\n this.bitBuffer = this.bytes[this.byteOffset++];\n this.bitCount = 8;\n }\n\n const take = Math.min(remaining, this.bitCount);\n value |= (this.bitBuffer & ((1 << take) - 1)) << shift;\n this.bitBuffer >>>= take;\n this.bitCount -= take;\n shift += take;\n remaining -= take;\n }\n\n return value;\n }\n\n /**\n * Moves the compressed-bit cursor to the next byte boundary for the FBX\n * binary reader.\n */\n alignByte()\n {\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n /** Reads aligned byte from the current FBX binary reader. */\n readAlignedByte()\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array stored block is truncated\");\n }\n return this.bytes[this.byteOffset++];\n }\n\n /** Reads aligned U16 LE from the current FBX binary reader. */\n readAlignedU16LE()\n {\n const\n low = this.readAlignedByte(),\n high = this.readAlignedByte();\n return low | (high << 8);\n }\n}\n\n/**\n * Canonical Huffman decode table built from deflate code lengths for\n * inflating compressed FBX property arrays.\n */\nclass DeflateHuffmanTable\n{\n /** Creates a DeflateHuffmanTable with caller-provided initial state. */\n constructor(lengths)\n {\n this.tables = [];\n this.maxBits = 0;\n\n const counts = new Array(16).fill(0);\n for (const length of lengths)\n {\n if (length < 0 || length > 15)\n {\n throw new Error(\"fbx: compressed array has invalid deflate code length\");\n }\n if (length)\n {\n counts[length]++;\n this.maxBits = Math.max(this.maxBits, length);\n }\n }\n\n let code = 0;\n const nextCodes = new Array(16).fill(0);\n for (let bits = 1; bits <= 15; bits++)\n {\n code = (code + counts[bits - 1]) << 1;\n nextCodes[bits] = code;\n }\n\n for (let symbol = 0; symbol < lengths.length; symbol++)\n {\n const length = lengths[symbol];\n if (!length)\n {\n continue;\n }\n\n const reversed = reverseBits(nextCodes[length], length);\n nextCodes[length]++;\n if (!this.tables[length])\n {\n this.tables[length] = [];\n }\n this.tables[length][reversed] = symbol;\n }\n }\n\n /**\n * Decodes one symbol through the canonical Deflate Huffman table for the FBX\n * decoder.\n */\n decode(reader)\n {\n let code = 0;\n for (let length = 1; length <= this.maxBits; length++)\n {\n code |= reader.readBits(1) << (length - 1);\n const table = this.tables[length];\n if (table && table[code] !== undefined)\n {\n return table[code];\n }\n }\n\n throw new Error(\"fbx: compressed array has invalid deflate code\");\n }\n}\n\nfunction reverseBits(value, length)\n{\n let reversed = 0;\n for (let i = 0; i < length; i++)\n {\n reversed = (reversed << 1) | (value & 1);\n value >>>= 1;\n }\n return reversed;\n}\n\nfunction parseAsciiDocument(bytes, metadata, values)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n appendAsciiArrayContinuation(stack, line, values);\n continue;\n }\n\n stack[stack.length - 1].children.push(node);\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(node);\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryTargetNodes(bytes, metadata, values, targetNames)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const header = readBinaryNodeHeader(bytes, offset, metadata.version);\n if (!header)\n {\n throw new Error(`fbx: invalid root node header at offset ${offset}`);\n }\n if (header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: invalid root node ${header.name}`);\n }\n\n if (targetNames.has(header.name))\n {\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n }\n\n offset = header.endOffset;\n }\n\n return nodes;\n}\n\nfunction readAsciiTargetNodes(bytes, values, targetNames)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes, collecting: true } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n appendAsciiArrayContinuation(stack, line, values);\n continue;\n }\n\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n\n const isRoot = stack.length === 1;\n const parent = stack[stack.length - 1];\n const collecting = isRoot ? targetNames.has(node.name) : parent.collecting;\n\n if (collecting)\n {\n parent.children.push(node);\n }\n\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(collecting ? { children: node.children, collecting: true } : { children: [], collecting: false });\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n return nodes;\n}\n\nfunction buildGr2FromFbxNodes(nodes, values)\n{\n const objectsNode = findFirstNode(nodes, \"Objects\");\n if (!objectsNode)\n {\n throw new Error(\"fbx: GR2 output requires an Objects node\");\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\")),\n sceneTransform = buildSceneTransform(findFirstNode(nodes, \"GlobalSettings\")),\n modelWorldCache = new Map(),\n skeletonContext = buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache, values),\n meshes = [];\n\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const owners = connectedParentObjects(geometry, objectIndex, connections, \"Model\");\n for (const owner of owners.length ? owners : [ null ])\n {\n meshes.push(buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values));\n }\n }\n\n if (!meshes.length)\n {\n throw new Error(\"fbx: no supported Geometry mesh nodes found\");\n }\n\n const cmfAnimations = readCmfAnimations(\n objectIndex,\n connections,\n meshes,\n skeletonContext,\n sceneTransform,\n values\n );\n const root = {\n grannyFileFormatRevision: 0,\n grannyFileSource: values.source || \"memory\",\n meshes,\n models: buildGr2Models(skeletonContext.skeletons, meshes),\n skeletons: skeletonContext.skeletons.map(skeleton => skeleton.cmfSkeleton),\n animations: [],\n cmfAnimations\n };\n if (values.emit === OUTPUT_GR2)\n {\n root.animations = buildGr2Animations({\n skeletons: root.skeletons,\n animations: cmfAnimations\n });\n }\n return root;\n}\n\nfunction buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values)\n{\n const\n controlPoints = requireChildArray(geometry.node, \"Vertices\"),\n polygonVertexIndex = requireChildArray(geometry.node, \"PolygonVertexIndex\");\n\n if (controlPoints.length % 3 !== 0)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has invalid Vertices length`);\n }\n\n const\n decoded = decodePolygonCorners(controlPoints, polygonVertexIndex, geometry),\n meshTransform = buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache),\n positions = transformPoints(decoded.positions, meshTransform, sceneTransform),\n layerChannels = readGeometryLayerChannels(geometry.node, decoded, values, meshTransform, sceneTransform),\n normal = layerChannels.normal ?? [],\n explicitTangent = layerChannels.tangent ?? [],\n explicitBinormal = values.compatibility === COMPATIBILITY_CARBON ? [] : layerChannels.binormal ?? [],\n texcoord0 = layerChannels.texcoord0 ?? [],\n polygonTriangles = orientPolygonTriangles(\n triangulatePolygonList(decoded.polygons, decoded.positions),\n isReflectedTransform(meshTransform, sceneTransform)\n ),\n triangleFaces = flattenPolygonTriangles(polygonTriangles),\n tangent = explicitTangent.length ? explicitTangent : generateBaseTangents(positions, normal, texcoord0, triangleFaces),\n binormal = explicitBinormal.length ? explicitBinormal : generateBaseBinormals(normal, tangent),\n materialSelection = readPolygonMaterials(geometry, owner, objectIndex, connections, decoded.polygons.length),\n indices = buildIndexGroups(polygonTriangles, materialSelection),\n skin = readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext),\n morphTargets = readMorphTargets(\n geometry,\n owner,\n objectIndex,\n connections,\n decoded,\n controlPoints,\n meshTransform,\n sceneTransform,\n positions,\n triangleFaces,\n { normal, tangent, binormal, texcoord0 }\n ),\n bounds = computeBounds(positions),\n vertex = createGr2Vertex(positions, {\n ...layerChannels,\n tangent,\n normal,\n binormal,\n blendIndice: skin.blendIndice,\n blendWeight: skin.blendWeight\n });\n\n deriveIndexedBinormals(vertex);\n\n if (!hasArrayValues(vertex.normal) && morphTargets.some(target => hasArrayValues(target.vertex?.normal)))\n {\n // Carbon imports normals by default. A custom morph-normal payload\n // therefore requires the corresponding base declaration too.\n vertex.normal = cleanNumericArray(generateNormals(positions, triangleFaces));\n }\n\n return {\n name: meshNameFromFbx(geometry, owner),\n morphTargets,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds,\n boneBindings: skin.boneBindings,\n vertex,\n indices,\n skeleton: skin.skeleton\n };\n}\n\nfunction deriveIndexedBinormals(vertex)\n{\n for (const name of Object.keys(vertex))\n {\n const match = /^tangent([1-9][0-9]*)$/u.exec(name);\n if (!match) continue;\n const normal = vertex[`normal${match[1]}`] ?? [];\n const binormalName = `binormal${match[1]}`;\n if (!(vertex[binormalName]?.length)) vertex[binormalName] = generateBaseBinormals(normal, vertex[name]);\n }\n}\n\nfunction readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext)\n{\n const skin = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .find(isSkinDeformer);\n\n if (!skin)\n {\n return emptySkinning();\n }\n\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n const clusterRecords = buildSkinClusterRecords(clusters, objectIndex, connections);\n if (!clusterRecords.length)\n {\n return emptySkinning();\n }\n\n const\n boneKeys = clusterRecords.map(record => record.boneKey),\n controlPointInfluences = buildControlPointInfluences(clusterRecords),\n outputInfluences = decoded.corners.map(corner => normalizeInfluences(controlPointInfluences.get(corner.controlPointIndex) || [])),\n blendIndice = [],\n blendWeight = [],\n boneBindings = buildBoneBindingsFromInfluences(clusterRecords, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache),\n skeleton = findSkinSkeletonIndex(boneKeys, skeletonContext);\n\n for (const influences of outputInfluences)\n {\n for (let i = 0; i < 4; i++)\n {\n blendIndice.push(influences[i]?.boneIndex ?? 0);\n }\n for (let i = 0; i < 4; i++)\n {\n blendWeight.push(influences[i]?.weight ?? 0);\n }\n }\n\n return { boneBindings, blendIndice, blendWeight, boneKeys, skeleton };\n}\n\nfunction emptySkinning()\n{\n return { boneBindings: [], blendIndice: [], blendWeight: [], boneKeys: [], skeleton: null };\n}\n\n/**\n * Generate base mesh tangents when normal and UV channels are available.\n *\n * @param {number[]} positions Expanded position channel.\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} texcoord0 Expanded primary UV channel.\n * @param {number[]} triangleFaces Triangulated index buffer.\n * @returns {number[]} Expanded tangent channel.\n */\nfunction generateBaseTangents(positions, normal, texcoord0, triangleFaces)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(texcoord0))\n {\n return [];\n }\n return cleanNumericArray(generateTangents(positions, normal, texcoord0, triangleFaces));\n}\n\n/**\n * Generate base mesh binormals when normals and tangents are available.\n *\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} tangent Expanded tangent channel.\n * @returns {number[]} Expanded binormal channel.\n */\nfunction generateBaseBinormals(normal, tangent)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(tangent))\n {\n return [];\n }\n return cleanNumericArray(generateBiNormals(normal, tangent));\n}\n\nfunction readMorphTargets(geometry, owner, objectIndex, connections, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const blendShapes = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShape\" || deformer.fullName.startsWith(\"Deformer::BlendShape\") || deformer.name.includes(\"BlendShape\"));\n\n const targets = [];\n for (const blendShape of blendShapes)\n {\n const channels = connectedChildObjects(blendShape, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShapeChannel\" || deformer.fullName.startsWith(\"SubDeformer::\") || deformer.name.includes(\"BlendShapeChannel\"));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n continue;\n }\n\n for (const shape of shapes)\n {\n const target = buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex);\n if (target)\n {\n targets.push(target);\n }\n }\n }\n }\n return targets;\n}\n\nfunction buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const\n indexes = readChildArray(shape.node, \"Indexes\") || [],\n vertices = readChildArray(shape.node, \"Vertices\") || [];\n\n if (!indexes.length || !vertices.length)\n {\n return null;\n }\n if (vertices.length % 3 !== 0)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has invalid Vertices length`);\n }\n if (vertices.length / 3 < indexes.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has fewer Vertices than Indexes`);\n }\n\n const controlTargetPositions = controlPoints.slice();\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n targetOffset = i * 3,\n controlOffset = controlPointIndex * 3;\n\n if (controlOffset < 0 || controlOffset + 2 >= controlTargetPositions.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has Indexes value out of range`);\n }\n\n controlTargetPositions[controlOffset] = finiteNumber(controlPoints[controlOffset], \"Vertices\") + finiteNumber(vertices[targetOffset], \"Vertices\");\n controlTargetPositions[controlOffset + 1] = finiteNumber(controlPoints[controlOffset + 1], \"Vertices\") + finiteNumber(vertices[targetOffset + 1], \"Vertices\");\n controlTargetPositions[controlOffset + 2] = finiteNumber(controlPoints[controlOffset + 2], \"Vertices\") + finiteNumber(vertices[targetOffset + 2], \"Vertices\");\n }\n\n const expanded = [];\n for (const corner of decoded.corners)\n {\n const source = corner.controlPointIndex * 3;\n expanded.push(\n controlTargetPositions[source],\n controlTargetPositions[source + 1],\n controlTargetPositions[source + 2]\n );\n }\n\n const\n positions = transformPoints(expanded, meshTransform, sceneTransform),\n name = shape.name || channel.name || \"morph_target\",\n vertexChannels = buildMorphTargetVertexChannels(\n name,\n shape,\n indexes,\n geometry,\n owner,\n decoded,\n meshTransform,\n sceneTransform,\n positions,\n triangleFaces,\n baseVertex\n );\n\n return {\n name,\n dataIsDeltas: false,\n maxDisplacement: computeMaxDisplacement(basePositions, positions),\n vertex: createGr2Vertex(positions, vertexChannels)\n };\n}\n\nfunction buildMorphTargetVertexChannels(name, shape, indexes, geometry, owner, decoded, meshTransform, sceneTransform, positions, triangleFaces, baseVertex)\n{\n let normal = readMorphTargetShapeNormals(shape, indexes, decoded, meshTransform, sceneTransform, baseVertex);\n if (!normal.length)\n {\n normal = readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform);\n }\n if (!normal.length && hasArrayValues(baseVertex.normal))\n {\n normal = cleanNumericArray(generateNormals(positions, triangleFaces));\n }\n\n const tangent = normal.length && hasArrayValues(baseVertex.tangent) && hasArrayValues(baseVertex.texcoord0)\n ? cleanNumericArray(generateTangents(positions, normal, baseVertex.texcoord0, triangleFaces))\n : [];\n const binormal = normal.length && tangent.length && hasArrayValues(baseVertex.binormal)\n ? cleanNumericArray(generateBiNormals(normal, tangent))\n : [];\n\n return { normal, tangent, binormal };\n}\n\nfunction readMorphTargetShapeNormals(shape, indexes, decoded, meshTransform, sceneTransform, baseVertex)\n{\n const values = readChildArray(shape.node, \"Normals\") || [];\n if (!values.length) return [];\n if (!hasArrayValues(baseVertex.normal))\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has Normals without base normals`);\n }\n if (values.length !== indexes.length * 3)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} Normals length does not match Indexes`);\n }\n const byControlPoint = new Map();\n for (let index = 0; index < indexes.length; index++)\n {\n byControlPoint.set(integerNumber(indexes[index], \"Indexes\"), [\n finiteNumber(values[index * 3], \"Normals\"),\n finiteNumber(values[index * 3 + 1], \"Normals\"),\n finiteNumber(values[index * 3 + 2], \"Normals\")\n ]);\n }\n const expanded = [];\n for (const corner of decoded.corners)\n {\n expanded.push(...(byControlPoint.get(corner.controlPointIndex) || [ 0, 0, 0 ]));\n }\n const deltas = transformDirectionDeltas(expanded, meshTransform, sceneTransform);\n return baseVertex.normal.map((value, index) => value + deltas[index]);\n}\n\nfunction readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform)\n{\n const encoded = readMorphTargetCustomNormalString(name, owner, geometry);\n if (!encoded)\n {\n return [];\n }\n\n return transformDirections(\n decodeBase64Float32Vector3Array(encoded, decoded.corners.length, `morph target custom normals ${JSON.stringify(name)}`),\n meshTransform,\n sceneTransform\n );\n}\n\nfunction readMorphTargetCustomNormalString(name, owner, geometry)\n{\n const propertyName = `bsNormals_${name}`;\n for (const entry of [ owner, geometry ])\n {\n const value = readProperties70(entry?.node).properties[propertyName]?.value;\n if (typeof value === \"string\")\n {\n return value;\n }\n }\n return \"\";\n}\n\nfunction decodeBase64Float32Vector3Array(encoded, vertexCount, feature)\n{\n const\n bytes = decodeBase64Bytes(encoded, feature),\n expectedByteLength = vertexCount * 3 * 4;\n\n if (bytes.byteLength !== expectedByteLength)\n {\n throw new Error(`fbx: ${feature} byte length ${bytes.byteLength} does not match expected ${expectedByteLength}`);\n }\n\n const\n view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n values = [];\n\n for (let offset = 0; offset < bytes.byteLength; offset += 4)\n {\n values.push(finiteNumber(view.getFloat32(offset, true), feature));\n }\n return values;\n}\n\nfunction decodeBase64Bytes(encoded, feature)\n{\n const bytes = [];\n let buffer = 0, bits = 0;\n\n for (const char of String(encoded))\n {\n if (/\\s/u.test(char))\n {\n continue;\n }\n if (char === \"=\")\n {\n break;\n }\n\n const value = BASE64_ALPHABET.indexOf(char);\n if (value === -1)\n {\n throw new Error(`fbx: ${feature} contains invalid base64 data`);\n }\n\n buffer = (buffer << 6) | value;\n bits += 6;\n if (bits >= 8)\n {\n bits -= 8;\n bytes.push((buffer >> bits) & 0xff);\n }\n }\n\n return Uint8Array.from(bytes);\n}\n\nfunction computeMaxDisplacement(basePositions, targetPositions)\n{\n let maxDisplacement = 0;\n for (let i = 0; i < Math.min(basePositions.length, targetPositions.length); i += 3)\n {\n maxDisplacement = Math.max(maxDisplacement, Math.hypot(\n targetPositions[i] - basePositions[i],\n targetPositions[i + 1] - basePositions[i + 1],\n targetPositions[i + 2] - basePositions[i + 2]\n ));\n }\n return cleanFloat(maxDisplacement);\n}\n\nfunction readCmfAnimations(objectIndex, connections, meshes, skeletonContext, sceneTransform, values)\n{\n const\n morphTargetNames = buildMorphTargetNameSet(meshes),\n boneTargets = buildCmfBoneTargetMap(skeletonContext);\n\n const animations = [];\n for (const stack of objectIndex.list.filter(entry => entry.nodeName === \"AnimationStack\"))\n {\n const animation = readCmfAnimation(\n stack,\n objectIndex,\n connections,\n morphTargetNames,\n boneTargets,\n sceneTransform,\n values\n );\n if (animation)\n {\n animations.push(animation);\n }\n }\n return values.compatibility === COMPATIBILITY_CARBON ? animations.reverse() : animations;\n}\n\nfunction buildMorphTargetNameSet(meshes)\n{\n const names = new Set();\n for (const mesh of meshes)\n {\n for (const target of mesh.morphTargets ?? [])\n {\n if (target.name)\n {\n names.add(target.name);\n }\n }\n }\n return names;\n}\n\nfunction buildCmfBoneTargetMap(skeletonContext)\n{\n const targets = new Map();\n for (const skeleton of skeletonContext.skeletons)\n {\n for (let i = 0; i < skeleton.boneKeys.length; i++)\n {\n targets.set(skeleton.boneKeys[i], {\n name: skeleton.cmfSkeleton.bones[i] || `bone_${i}`,\n isRoot: skeleton.cmfSkeleton.parents[i] === 0xffffffff\n });\n }\n }\n return targets;\n}\n\nfunction readCmfAnimation(stack, objectIndex, connections, morphTargetNames, boneTargets, sceneTransform, values)\n{\n const layers = connectedChildObjects(stack, objectIndex, connections, \"AnimationLayer\");\n if (layers.length > 1)\n {\n throw new Error(`fbx: animation stack ${JSON.stringify(stack.name || stack.key)} has multiple layers`);\n }\n if (layers.length) validateAnimationLayer(layers[0]);\n const\n curveNodeParents = layers.length ? layers : [ stack ],\n curveNodes = uniqueEntries(curveNodeParents.flatMap(parent => connectedChildObjects(parent, objectIndex, connections, \"AnimationCurveNode\"))),\n records = [];\n\n for (const curveNode of curveNodes)\n {\n if (values.compatibility !== COMPATIBILITY_CARBON)\n {\n records.push(...readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames));\n }\n records.push(...readRootPropertyMorphAnimationRecords(\n curveNode,\n objectIndex,\n connections,\n values.compatibility === COMPATIBILITY_CARBON ? new Set() : morphTargetNames,\n boneTargets\n ));\n\n const boneRecord = readBoneAnimationRecord(\n curveNode,\n objectIndex,\n connections,\n boneTargets,\n sceneTransform,\n values.compatibility\n );\n if (boneRecord)\n {\n records.push(boneRecord);\n }\n }\n\n const compatibleRecords = values.compatibility === COMPATIBILITY_CARBON\n ? bakeCarbonBoneAnimationRecords(records, sceneTransform, objectIndex)\n : records;\n const normalizedRecords = deduplicateMorphAnimationRecords(compatibleRecords);\n if (!normalizedRecords.length)\n {\n return null;\n }\n\n const stackTimeSpan = readAnimationStackTimeSpan(stack, normalizedRecords);\n for (const record of normalizedRecords)\n {\n if (record.curve.ticks.some(tick => tick < stackTimeSpan.startTick ||\n stackTimeSpan.stopTick !== null && tick > stackTimeSpan.stopTick))\n {\n throw new Error(`fbx: animation curve for ${JSON.stringify(record.target)} lies outside its stack time span`);\n }\n }\n\n const\n channels = [],\n curves = [];\n let duration = 0;\n\n for (const record of normalizedRecords)\n {\n const\n sourceCurve = values.compatibility === COMPATIBILITY_CARBON || record.curve.interpolation === \"Mixed\"\n ? carbonLinearizeStepCurve(record.curve, record.valueDimension)\n : record.curve,\n knots = sourceCurve.ticks.map(tick => cleanFloat((tick - stackTimeSpan.startTick) / FBX_TICKS_PER_SECOND)),\n curveValues = sourceCurve.values.map(cleanFloat),\n curveIndex = curves.length;\n\n if (curveValues.length !== knots.length * record.valueDimension)\n {\n throw new Error(`fbx: animation curve for ${JSON.stringify(record.target)} has mismatched value dimension`);\n }\n\n for (const knot of knots)\n {\n duration = Math.max(duration, knot);\n }\n curves.push({\n valueDimension: record.valueDimension,\n interpolation: sourceCurve.interpolation ?? \"Linear\",\n knotType: \"Float32\",\n valueType: \"Float32\",\n knotCount: knots.length,\n knots: packFloat32Values(knots),\n values: packFloat32Values(curveValues)\n });\n channels.push({\n target: record.target,\n targetType: record.targetType,\n curveIndex\n });\n }\n\n return {\n name: stack.name || \"fbx_animation\",\n channels,\n curves,\n duration: cleanFloat(stackTimeSpan.duration ?? duration)\n };\n}\n\nfunction carbonLinearizeStepCurve(curve, dimension)\n{\n if (curve.interpolation === \"Mixed\")\n {\n const ticks = [ curve.ticks[0] ];\n const values = curve.values.slice(0, dimension);\n for (let index = 1; index < curve.ticks.length; index++)\n {\n if (curve.interpolations[index - 1] === \"Step\")\n {\n ticks.push(curve.ticks[index]);\n values.push(...curve.values.slice((index - 1) * dimension, index * dimension));\n }\n ticks.push(curve.ticks[index]);\n values.push(...curve.values.slice(index * dimension, (index + 1) * dimension));\n }\n return { ...curve, ticks, values, interpolation: \"Linear\" };\n }\n if (curve.interpolation !== \"Step\") return curve;\n if (curve.ticks.length < 2) return { ...curve, interpolation: \"Linear\" };\n const ticks = [ curve.ticks[0] ];\n const values = curve.values.slice(0, dimension);\n for (let index = 1; index < curve.ticks.length; index++)\n {\n ticks.push(curve.ticks[index], curve.ticks[index]);\n values.push(\n ...curve.values.slice((index - 1) * dimension, index * dimension),\n ...curve.values.slice(index * dimension, (index + 1) * dimension)\n );\n }\n return { ...curve, ticks, values, interpolation: \"Linear\" };\n}\n\nfunction validateAnimationLayer(layer)\n{\n const properties = readProperties70(layer.node).properties;\n const weight = propertyNumber(properties, \"Weight\", 100);\n if (weight !== 100)\n {\n throw new Error(`fbx: animation layer ${JSON.stringify(layer.name || layer.key)} has unsupported weight ${weight}`);\n }\n for (const name of [ \"Mute\", \"Solo\", \"Lock\" ])\n {\n if (propertyNumber(properties, name, 0))\n {\n throw new Error(`fbx: animation layer ${JSON.stringify(layer.name || layer.key)} uses ${name}`);\n }\n }\n for (const name of [ \"BlendMode\", \"RotationAccumulationMode\", \"ScaleAccumulationMode\" ])\n {\n if (propertyNumber(properties, name, 0) !== 0)\n {\n throw new Error(`fbx: animation layer ${JSON.stringify(layer.name || layer.key)} uses unsupported ${name}`);\n }\n }\n}\n\nfunction readAnimationStackTimeSpan(stack, records)\n{\n const\n properties = readProperties70(stack.node).properties,\n start = propertyNumber(properties, \"LocalStart\", propertyNumber(properties, \"ReferenceStart\", null)),\n stop = propertyNumber(properties, \"LocalStop\", propertyNumber(properties, \"ReferenceStop\", null));\n\n if ((start === null) !== (stop === null) || start !== null && stop < start)\n {\n throw new Error(`fbx: animation stack ${JSON.stringify(stack.name || stack.key)} has an invalid time span`);\n }\n if (start !== null && stop !== null)\n {\n if (!Number.isSafeInteger(start) || !Number.isSafeInteger(stop))\n {\n throw new Error(`fbx: animation stack ${JSON.stringify(stack.name || stack.key)} exceeds the safe tick range`);\n }\n return {\n startTick: start,\n stopTick: stop,\n duration: (stop - start) / FBX_TICKS_PER_SECOND\n };\n }\n\n let startTick = Infinity;\n for (const record of records)\n {\n for (const tick of record.curve.ticks)\n {\n startTick = Math.min(startTick, tick);\n }\n }\n return {\n startTick,\n stopTick: null,\n duration: null\n };\n}\n\nfunction readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames)\n{\n const\n targets = readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames),\n curve = readMorphAnimationCurve(curveNode, objectIndex, connections);\n\n if (!targets.length || !curve)\n {\n return [];\n }\n\n return targets.map(target => ({\n target,\n targetType: \"MorphTarget\",\n source: \"deformPercent\",\n valueDimension: 1,\n curve\n }));\n}\n\nfunction readRootPropertyMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames, boneTargets)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n !isBoneAnimationProperty(connection.property) &&\n boneTargets.get(connection.parentKey)?.isRoot &&\n isBoneModel(objectIndex.byId[connection.parentKey]) &&\n isUserDefinedNumericProperty(objectIndex.byId[connection.parentKey], connection.property)\n );\n\n if (!targetConnection)\n {\n return [];\n }\n\n const target = String(targetConnection.property || \"\");\n if (!target || (morphTargetNames.size && !morphTargetNames.has(target)))\n {\n return [];\n }\n\n const curve = readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 1);\n return curve\n ? [ {\n target,\n targetType: \"MorphTarget\",\n source: \"rootProperty\",\n valueDimension: 1,\n curve\n } ]\n : [];\n}\n\nfunction deduplicateMorphAnimationRecords(records)\n{\n const output = [];\n const morphs = new Map();\n for (const record of records)\n {\n if (record.targetType !== \"MorphTarget\")\n {\n output.push(record);\n continue;\n }\n const previous = morphs.get(record.target);\n if (!previous)\n {\n morphs.set(record.target, record);\n output.push(record);\n continue;\n }\n if (previous.source === record.source)\n {\n throw new Error(`fbx: morph animation target ${JSON.stringify(record.target)} is authored more than once`);\n }\n if (!sameScalarAnimationCurve(previous.curve, record.curve))\n {\n throw new Error(`fbx: standard and Carbon morph curves disagree for ${JSON.stringify(record.target)}`);\n }\n }\n return output;\n}\n\nfunction sameScalarAnimationCurve(left, right)\n{\n if (left.interpolation !== right.interpolation || left.ticks.length !== right.ticks.length ||\n left.values.length !== right.values.length) return false;\n return left.ticks.every((tick, index) => tick === right.ticks[index]) &&\n left.values.every((value, index) => Math.abs(value - right.values[index]) <= 1e-6) &&\n (left.interpolations ?? []).every((value, index) => value === right.interpolations?.[index]);\n}\n\nfunction readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames)\n{\n const targets = [];\n for (const connection of connections.list)\n {\n if (connection.relation !== \"OP\" || connection.childKey !== curveNode.key || !isMorphAnimationProperty(connection.property))\n {\n continue;\n }\n\n const target = objectIndex.byId[connection.parentKey];\n if (!isBlendShapeChannel(target))\n {\n continue;\n }\n\n for (const name of readBlendShapeChannelMorphNames(target, objectIndex, connections))\n {\n if (!morphTargetNames.size || morphTargetNames.has(name))\n {\n targets.push(name);\n }\n }\n }\n return Array.from(new Set(targets));\n}\n\nfunction readBlendShapeChannelMorphNames(channel, objectIndex, connections)\n{\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n return [];\n }\n\n const names = shapes\n .map(shape => shape.name || channel.name)\n .filter(Boolean);\n\n return names.length ? names : [ channel.name || \"morph_target\" ];\n}\n\nfunction readBlendShapeChannelShapes(channel, objectIndex, connections)\n{\n return connectedChildObjects(channel, objectIndex, connections, \"Geometry\")\n .filter(shape => shape.className === \"Shape\" || shape.fullName.startsWith(\"Geometry::Shape\") || shape.name);\n}\n\nfunction readBlendShapeChannelFullWeights(channel)\n{\n return readChildArray(channel.node, \"FullWeights\") || [];\n}\n\nfunction isUnsupportedBlendShapeInBetween(channel, shapes)\n{\n // Multiple shapes/weights under one FBX channel are in-between targets, not independent sliders.\n return shapes.length > 1 || readBlendShapeChannelFullWeights(channel).length > 1;\n}\n\nfunction readMorphAnimationCurve(curveNode, objectIndex, connections)\n{\n return readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 0.01, isMorphAnimationProperty);\n}\n\nfunction readAnyScalarAnimationCurve(curveNode, objectIndex, connections, scale, predicate = null)\n{\n const curves = connections.list\n .filter(connection => connection.parentKey === curveNode.key)\n .map(connection => ({ connection, curve: objectIndex.byId[connection.childKey] }))\n .filter(item => item.curve?.nodeName === \"AnimationCurve\");\n\n const match = predicate\n ? curves.find(item => predicate(item.connection.property)) || curves[0]\n : curves.find(item => animationCurveAxis(item.connection.property) === 0) || curves[0];\n return match ? readScalarAnimationCurve(match.curve, scale) : null;\n}\n\nfunction readScalarAnimationCurve(curve, scale)\n{\n const\n ticks = readChildArray(curve.node, \"KeyTime\") || [],\n keyValueFloat = readChildArray(curve.node, \"KeyValueFloat\"),\n keyValue = readChildArray(curve.node, \"KeyValue\"),\n valueFeature = hasArrayValues(keyValueFloat) ? \"KeyValueFloat\" : \"KeyValue\",\n values = hasArrayValues(keyValueFloat) ? keyValueFloat : hasArrayValues(keyValue) ? keyValue : [],\n interpolations = readAnimationCurveInterpolations(curve.node, ticks.length);\n\n if (!ticks.length || !values.length)\n {\n return null;\n }\n if (ticks.length !== values.length)\n {\n throw new Error(`fbx: animation curve ${JSON.stringify(curve.name || curve.key)} has mismatched KeyTime and ${valueFeature} lengths`);\n }\n\n const pairs = ticks.map((tick, index) =>\n {\n const time = finiteNumber(tick, \"KeyTime\");\n if (!Number.isSafeInteger(time)) throw new Error(\"fbx: KeyTime exceeds the safe integer range\");\n return {\n tick: time,\n value: finiteNumber(values[index], valueFeature) * scale,\n interpolation: interpolations[index]\n };\n }).sort((a, b) => a.tick - b.tick);\n for (let index = 1; index < pairs.length; index++)\n {\n if (pairs[index].tick === pairs[index - 1].tick)\n {\n throw new Error(`fbx: animation curve ${JSON.stringify(curve.name || curve.key)} has duplicate KeyTime values`);\n }\n }\n\n const sortedInterpolations = pairs.map(pair => pair.interpolation);\n const modes = new Set(sortedInterpolations);\n return {\n ticks: pairs.map(pair => pair.tick),\n values: pairs.map(pair => pair.value),\n interpolation: modes.size === 1 ? sortedInterpolations[0] : \"Mixed\",\n interpolations: sortedInterpolations\n };\n}\n\nfunction readAnimationCurveInterpolation(curveNode, keyCount)\n{\n const modes = new Set(readAnimationCurveInterpolations(curveNode, keyCount));\n return modes.size <= 1 ? [ ...modes ][0] ?? \"Linear\" : \"Mixed\";\n}\n\nfunction readAnimationCurveInterpolations(curveNode, keyCount)\n{\n const flags = readChildArray(curveNode, \"KeyAttrFlags\") || [];\n if (!flags.length) return new Array(keyCount).fill(\"Linear\");\n const referenceCounts = readChildArray(curveNode, \"KeyAttrRefCount\") || [];\n const expanded = [];\n if (flags.length === keyCount)\n {\n expanded.push(...flags);\n }\n else if (referenceCounts.length === flags.length)\n {\n for (let index = 0; index < flags.length; index++)\n {\n const count = integerNumber(referenceCounts[index], \"KeyAttrRefCount\");\n for (let repeat = 0; repeat < count; repeat++) expanded.push(flags[index]);\n }\n }\n else if (flags.length === 1)\n {\n for (let index = 0; index < keyCount; index++) expanded.push(flags[0]);\n }\n else\n {\n throw new Error(\"fbx: animation curve has malformed KeyAttrFlags/KeyAttrRefCount lengths\");\n }\n if (expanded.length !== keyCount)\n {\n throw new Error(`fbx: animation curve attributes cover ${expanded.length} keys instead of ${keyCount}`);\n }\n const interpolations = expanded.map((flag) =>\n {\n const numeric = integerNumber(flag, \"KeyAttrFlags\");\n const mode = numeric & 0x0e;\n if (mode === 0x02 && numeric & 0x100)\n {\n throw new Error(\"fbx: ConstantNext animation interpolation is not supported\");\n }\n if (mode === 0x02) return \"Step\";\n if (mode === 0x04) return \"Linear\";\n throw new Error(`fbx: animation interpolation mode ${mode} is not supported`);\n });\n return interpolations;\n}\n\nfunction readBoneAnimationRecord(curveNode, objectIndex, connections, boneTargets, sceneTransform, compatibility)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n isBoneAnimationProperty(connection.property) &&\n boneTargets.has(connection.parentKey) &&\n isBoneModel(objectIndex.byId[connection.parentKey])\n );\n\n if (!targetConnection)\n {\n return null;\n }\n\n const\n bone = objectIndex.byId[targetConnection.parentKey],\n target = boneTargets.get(bone.key),\n properties = readProperties70(bone.node).properties,\n property = normalizeBoneAnimationProperty(targetConnection.property);\n\n if (!property)\n {\n return null;\n }\n\n const vectorCurve = readVectorAnimationCurve(\n curveNode,\n objectIndex,\n connections,\n animationCurveNodeFallback(curveNode, boneAnimationFallback(properties, property))\n );\n if (!vectorCurve)\n {\n return null;\n }\n const source = { _bone: bone, _boneTarget: target, _property: property, _vectorCurve: vectorCurve };\n\n if (property === \"position\")\n {\n const values = packBonePositionValues(vectorCurve.values, sceneTransform, target.isRoot);\n return {\n ...source,\n target: target.name,\n targetType: \"BonePosition\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: compatibility === COMPATIBILITY_CARBON && target.isRoot\n ? relativeRootPositions(values)\n : values,\n interpolation: vectorCurve.interpolation\n }\n };\n }\n\n if (property === \"rotation\")\n {\n const baked = packBoneRotationCurve(bone, vectorCurve, sceneTransform, target.isRoot);\n if (compatibility === COMPATIBILITY_CARBON && target.isRoot)\n {\n baked.values = relativeRootRotations(baked.values);\n }\n return {\n ...source,\n target: target.name,\n targetType: \"BoneRotation\",\n valueDimension: 4,\n curve: {\n ticks: baked.ticks,\n values: baked.values,\n interpolation: vectorCurve.interpolation\n }\n };\n }\n\n return {\n ...source,\n target: target.name,\n targetType: \"BoneScale\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: vectorCurve.values.map(cleanFloat),\n interpolation: vectorCurve.interpolation\n }\n };\n}\n\nfunction bakeCarbonBoneAnimationRecords(records, sceneTransform, objectIndex)\n{\n const morphRecords = records.filter(record => !record._bone);\n const groups = new Map();\n for (const record of records.filter(record => record._bone))\n {\n let group = groups.get(record._bone.key);\n if (!group)\n {\n group = { bone: record._bone, target: record._boneTarget, curves: new Map() };\n groups.set(record._bone.key, group);\n }\n if (group.curves.has(record._property))\n {\n throw new Error(`fbx: bone ${JSON.stringify(record.target)} authors ${record._property} more than once`);\n }\n group.curves.set(record._property, record._vectorCurve);\n }\n\n const output = [];\n const boneOrder = new Map(objectIndex.list.map((entry, index) => [ entry.key, index ]));\n const orderedGroups = Array.from(groups.values()).sort((left, right) =>\n boneOrder.get(left.bone.key) - boneOrder.get(right.bone.key));\n for (const { bone, target, curves } of orderedGroups)\n {\n const properties = readProperties70(bone.node).properties;\n const fallback = {\n position: boneAnimationFallback(properties, \"position\"),\n rotation: boneAnimationFallback(properties, \"rotation\"),\n scale: boneAnimationFallback(properties, \"scale\")\n };\n const allTicks = new Set();\n for (const curve of curves.values()) curve.ticks.forEach(tick => allTicks.add(tick));\n const rotationCurve = curves.get(\"rotation\");\n const rotationTicks = new Set(rotationCurve?.ticks ?? [ Math.min(...allTicks) ]);\n if (rotationCurve?.interpolation === \"Linear\" && rotationCurve.ticks.length > 1)\n {\n packBoneRotationCurve(bone, rotationCurve, sceneTransform, target.isRoot).ticks.forEach(tick => rotationTicks.add(tick));\n }\n const firstTick = Math.min(...allTicks);\n const positionCurves = [ curves.get(\"position\") ].filter(Boolean);\n const positionTicks = new Set(curves.get(\"position\")?.ticks ?? [ firstTick ]);\n if (modelTransformCanMovePivot(properties))\n {\n rotationTicks.forEach(tick => positionTicks.add(tick));\n curves.get(\"scale\")?.ticks.forEach(tick => positionTicks.add(tick));\n if (rotationCurve) positionCurves.push(rotationCurve);\n if (curves.get(\"scale\")) positionCurves.push(curves.get(\"scale\"));\n }\n const sampleTransform = (sample) =>\n {\n const local = composeModelTransform(properties, {\n translation: sampleVectorAnimationCurve(curves.get(\"position\"), sample.tick, fallback.position, sample.before),\n rotation: sampleVectorAnimationCurve(curves.get(\"rotation\"), sample.tick, fallback.rotation, sample.before),\n scale: sampleVectorAnimationCurve(curves.get(\"scale\"), sample.tick, fallback.scale, sample.before)\n });\n return decomposeMatrix4(target.isRoot ? transformMatrixScene(local, sceneTransform) : local);\n };\n const positionSamples = animationSampleDescriptors(positionTicks, positionCurves);\n const rotationSamples = animationSampleDescriptors(rotationTicks, rotationCurve ? [ rotationCurve ] : []);\n const scaleCurve = curves.get(\"scale\");\n const scaleSamples = animationSampleDescriptors(new Set(scaleCurve?.ticks ?? [ firstTick ]), scaleCurve ? [ scaleCurve ] : []);\n const positions = positionSamples.flatMap((sample) =>\n {\n const position = sampleTransform(sample).position;\n return target.isRoot\n ? cleanVector3(position)\n : cleanVector3(position.map(value => value * sceneTransform.scale));\n });\n const rotations = rotationSamples.flatMap(sample => sampleTransform(sample).rotation);\n const scales = scaleSamples.flatMap(sample => cleanVector3(sampleTransform(sample).scale));\n normalizeQuaternionSeries(rotations, `FBX animation rotation for ${target.name}`);\n output.push(\n {\n target: target.name,\n targetType: \"BonePosition\",\n valueDimension: 3,\n curve: {\n ticks: positionSamples.map(sample => sample.tick),\n values: target.isRoot ? relativeRootPositions(positions) : positions,\n interpolation: \"Linear\"\n }\n },\n {\n target: target.name,\n targetType: \"BoneRotation\",\n valueDimension: 4,\n curve: {\n ticks: rotationSamples.map(sample => sample.tick),\n values: target.isRoot ? relativeRootRotations(rotations) : rotations.map(cleanFloat),\n interpolation: \"Linear\"\n }\n },\n {\n target: target.name,\n targetType: \"BoneScale\",\n valueDimension: 3,\n curve: {\n ticks: scaleSamples.map(sample => sample.tick),\n values: scales,\n interpolation: \"Linear\"\n }\n }\n );\n }\n output.push(...morphRecords);\n return output;\n}\n\nfunction modelTransformCanMovePivot(properties)\n{\n return [ \"RotationPivot\", \"ScalingPivot\", \"RotationOffset\", \"ScalingOffset\" ].some(name =>\n propertyVector3(properties, name, [ 0, 0, 0 ]).some(value => value !== 0));\n}\n\nfunction animationSampleDescriptors(ticks, curves)\n{\n const ordered = Array.from(ticks).sort((left, right) => left - right);\n const samples = [];\n for (let index = 0; index < ordered.length; index++)\n {\n const tick = ordered[index];\n const hasStepTransition = index > 0 && curves.some(curve =>\n {\n const first = curve.ticks.indexOf(tick);\n return first > 0 && (\n curve.ticks.lastIndexOf(tick) !== first ||\n curve.interpolation === \"Step\"\n );\n });\n if (hasStepTransition) samples.push({ tick, before: true });\n samples.push({ tick, before: false });\n }\n return samples;\n}\n\nfunction sampleVectorAnimationCurve(curve, tick, fallback, before = false)\n{\n if (!curve) return fallback.slice();\n const values = [];\n for (let axis = 0; axis < 3; axis++)\n {\n const scalar = {\n ticks: curve.ticks,\n values: curve.ticks.map((_, index) => curve.values[index * 3 + axis]),\n interpolation: curve.interpolation\n };\n values.push(sampleScalarAnimationCurve(scalar, tick, fallback[axis], before));\n }\n return values;\n}\n\nfunction relativeRootPositions(values)\n{\n if (!values.length) return values;\n const origin = values.slice(0, 3);\n return values.map((value, index) => cleanFloat(value - origin[index % 3]));\n}\n\nfunction relativeRootRotations(values)\n{\n if (!values.length) return values;\n const initialInverse = quaternionInverse(values.slice(0, 4));\n const output = [];\n for (let index = 0; index < values.length; index += 4)\n {\n // Carbon evaluates current * inverse(initial) in its row-vector\n // convention. In the column-vector convention used here, that is\n // inverse(initial) * current.\n output.push(...quaternionMultiply(initialInverse, values.slice(index, index + 4)));\n }\n return normalizeQuaternionSeries(output, \"Carbon-relative FBX root rotation\");\n}\n\nfunction quaternionInverse(value)\n{\n const lengthSquared = value.reduce((sum, component) => sum + component * component, 0);\n if (!(lengthSquared > 0)) throw new Error(\"fbx: root animation starts with a zero quaternion\");\n return [\n -value[0] / lengthSquared,\n -value[1] / lengthSquared,\n -value[2] / lengthSquared,\n value[3] / lengthSquared\n ];\n}\n\nfunction quaternionMultiply(left, right)\n{\n const [ ax, ay, az, aw ] = left;\n const [ bx, by, bz, bw ] = right;\n return [\n aw * bx + ax * bw + ay * bz - az * by,\n aw * by - ax * bz + ay * bw + az * bx,\n aw * bz + ax * by - ay * bx + az * bw,\n aw * bw - ax * bx - ay * by - az * bz\n ].map(cleanFloat);\n}\n\nfunction isBoneAnimationProperty(property)\n{\n return !!normalizeBoneAnimationProperty(property);\n}\n\nfunction normalizeBoneAnimationProperty(property)\n{\n const text = String(property || \"\").replace(/\\s+/gu, \"\").toLowerCase();\n if (text.includes(\"translation\") || text === \"t\")\n {\n return \"position\";\n }\n if (text.includes(\"rotation\") || text === \"r\")\n {\n return \"rotation\";\n }\n if (text.includes(\"scaling\") || text.includes(\"scale\") || text === \"s\")\n {\n return \"scale\";\n }\n return \"\";\n}\n\nfunction boneAnimationFallback(properties, property)\n{\n if (property === \"position\")\n {\n return propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]);\n }\n if (property === \"rotation\")\n {\n return propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]);\n }\n return propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n}\n\nfunction animationCurveNodeFallback(curveNode, fallback)\n{\n const\n properties = readProperties70(curveNode.node).properties,\n axes = [ \"d|X\", \"d|Y\", \"d|Z\" ];\n\n return axes.map((axis, index) => propertyNumber(properties, axis, fallback[index]));\n}\n\nfunction readVectorAnimationCurve(curveNode, objectIndex, connections, fallback)\n{\n const components = [ null, null, null ];\n for (const connection of connections.list.filter(item => item.parentKey === curveNode.key))\n {\n const\n curve = objectIndex.byId[connection.childKey],\n axis = animationCurveAxis(connection.property) ?? animationCurveAxis(curve?.name);\n\n if (curve?.nodeName !== \"AnimationCurve\" || axis === null)\n {\n continue;\n }\n components[axis] = readScalarAnimationCurve(curve, 1);\n }\n\n if (components.every(component => !component))\n {\n return null;\n }\n\n const sourceTicks = uniqueSortedTicks(components);\n const sourceValues = sourceTicks.map(tick => components.map((component, axis) =>\n sampleScalarAnimationCurve(component, tick, fallback[axis])));\n const intervalModes = components.flatMap(component => component?.interpolations?.slice(0, -1) ?? []);\n const allStep = intervalModes.length\n ? intervalModes.every(mode => mode === \"Step\")\n : components.filter(Boolean).every(component => component.interpolation === \"Step\");\n if (allStep)\n {\n return { ticks: sourceTicks, values: sourceValues.flat(), interpolation: \"Step\" };\n }\n\n const ticks = [];\n const values = [];\n for (let index = 0; index < sourceTicks.length; index++)\n {\n const tick = sourceTicks[index];\n if (index)\n {\n const before = components.map((component, axis) =>\n sampleScalarAnimationCurve(component, tick, fallback[axis], true));\n if (before.some((value, axis) => value !== sourceValues[index][axis]))\n {\n ticks.push(tick);\n values.push(...before);\n }\n }\n ticks.push(tick);\n values.push(...sourceValues[index]);\n }\n return { ticks, values, interpolation: \"Linear\" };\n}\n\nfunction animationCurveAxis(property)\n{\n const text = String(property || \"\").trim().toLowerCase();\n if (/(^|[|._])x$/u.test(text))\n {\n return 0;\n }\n if (/(^|[|._])y$/u.test(text))\n {\n return 1;\n }\n if (/(^|[|._])z$/u.test(text))\n {\n return 2;\n }\n return null;\n}\n\nfunction uniqueSortedTicks(components)\n{\n const ticks = new Set();\n for (const component of components)\n {\n for (const tick of component?.ticks ?? [])\n {\n ticks.add(tick);\n }\n }\n return Array.from(ticks).sort((a, b) => a - b);\n}\n\nfunction sampleScalarAnimationCurve(curve, tick, fallback, before = false)\n{\n if (!curve)\n {\n return fallback;\n }\n\n const { ticks, values } = curve;\n if (tick < ticks[0])\n {\n return values[0];\n }\n if (tick > ticks[ticks.length - 1])\n {\n return values[values.length - 1];\n }\n\n const firstExact = ticks.indexOf(tick);\n if (firstExact !== -1)\n {\n const lastExact = ticks.lastIndexOf(tick);\n if (lastExact !== firstExact) return values[before ? firstExact : lastExact];\n if (before && firstExact > 0 &&\n (curve.interpolations?.[firstExact - 1] ?? curve.interpolation) === \"Step\")\n {\n return values[firstExact - 1];\n }\n return values[firstExact];\n }\n\n for (let i = 1; i < ticks.length; i++)\n {\n if (tick >= ticks[i])\n {\n continue;\n }\n\n if ((curve.interpolations?.[i - 1] ?? curve.interpolation) === \"Step\") return values[i - 1];\n\n const amount = (tick - ticks[i - 1]) / (ticks[i] - ticks[i - 1]);\n return values[i - 1] + (values[i] - values[i - 1]) * amount;\n }\n return fallback;\n}\n\nfunction packBonePositionValues(values, sceneTransform, isRoot)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const position = isRoot\n ? transformScenePoint([ values[i], values[i + 1], values[i + 2] ], sceneTransform)\n : [ values[i] * sceneTransform.scale, values[i + 1] * sceneTransform.scale, values[i + 2] * sceneTransform.scale ];\n output.push(...cleanVector3(position));\n }\n return output;\n}\n\nfunction packBoneRotationValues(bone, values, sceneTransform, isRoot)\n{\n const\n properties = readProperties70(bone.node).properties,\n output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const\n matrix = composeModelTransform(properties, {\n translation: [ 0, 0, 0 ],\n rotation: [ values[i], values[i + 1], values[i + 2] ],\n scale: [ 1, 1, 1 ]\n }),\n transformed = isRoot ? transformMatrixScene(matrix, sceneTransform) : matrix,\n rotation = decomposeMatrix4(transformed).rotation;\n\n output.push(...rotation);\n }\n return normalizeQuaternionSeries(output, \"FBX animation rotation\");\n}\n\nfunction packBoneRotationCurve(bone, curve, sceneTransform, isRoot)\n{\n const quaternions = packBoneRotationValues(bone, curve.values, sceneTransform, isRoot);\n if (curve.interpolation === \"Step\" || curve.ticks.length < 2)\n {\n return { ticks: curve.ticks, values: quaternions };\n }\n const source = curve.ticks.map((tick, index) => ({\n tick,\n euler: curve.values.slice(index * 3, index * 3 + 3),\n quaternion: quaternions.slice(index * 4, index * 4 + 4)\n }));\n const output = [ source[0] ];\n for (let sourceIndex = 1; sourceIndex < source.length; sourceIndex++)\n {\n const sourceStart = source[sourceIndex - 1];\n const sourceEnd = source[sourceIndex];\n const appendSegment = (start, end, alpha0, alpha1, depth) =>\n {\n const tick = quaternionSegmentMidpointTick(start.tick, end.tick);\n if (tick <= start.tick || tick >= end.tick)\n {\n output.push(end);\n return;\n }\n const authoredTurnRequiresSubdivision = sourceStart.euler.some((value, axis) =>\n Math.abs((sourceEnd.euler[axis] - value) * (alpha1 - alpha0)) > 90\n );\n const needsSubdivision = authoredTurnRequiresSubdivision ||\n quaternionSegmentNeedsSubdivision(start.tick, end.tick, (_tick, local) =>\n {\n const\n alpha = alpha0 + (alpha1 - alpha0) * local,\n euler = sourceStart.euler.map((value, axis) =>\n value + (sourceEnd.euler[axis] - value) * alpha\n ),\n quaternion = packBoneRotationValues(bone, euler, sceneTransform, isRoot),\n interpolated = normalizedLerpQuaternion(start.quaternion, end.quaternion, local);\n return quaternionAngularDifference(quaternion, interpolated);\n });\n if (!needsSubdivision)\n {\n output.push(end);\n return;\n }\n if (depth >= 12)\n {\n throw new Error(\"fbx: rotation curve requires more than 4096 baked keys per source segment\");\n }\n const\n local = (tick - start.tick) / (end.tick - start.tick),\n alpha = alpha0 + (alpha1 - alpha0) * local,\n euler = sourceStart.euler.map((value, axis) =>\n value + (sourceEnd.euler[axis] - value) * alpha\n ),\n quaternion = packBoneRotationValues(bone, euler, sceneTransform, isRoot);\n const middle = { tick, euler, quaternion };\n appendSegment(start, middle, alpha0, alpha, depth + 1);\n appendSegment(middle, end, alpha, alpha1, depth + 1);\n };\n appendSegment(sourceStart, sourceEnd, 0, 1, 0);\n }\n const values = output.flatMap(key => key.quaternion);\n return {\n ticks: output.map(key => key.tick),\n values: normalizeQuaternionSeries(values, \"FBX animation rotation\")\n };\n}\n\nfunction isBlendShapeChannel(entry)\n{\n return !!entry && entry.nodeName === \"Deformer\" && (\n entry.className === \"BlendShapeChannel\" ||\n entry.fullName.startsWith(\"SubDeformer::\") ||\n entry.name.includes(\"BlendShapeChannel\")\n );\n}\n\nfunction isMorphAnimationProperty(property)\n{\n return String(property || \"\").toLowerCase().includes(\"deformpercent\");\n}\n\nfunction isUserDefinedNumericProperty(entry, property)\n{\n if (!entry || !property)\n {\n return false;\n }\n\n const definition = readProperties70(entry.node).properties[property];\n if (!definition || !String(definition.flags || \"\").includes(\"U\"))\n {\n return false;\n }\n return typeof definition.value === \"number\";\n}\n\nfunction uniqueEntries(entries)\n{\n const\n seen = new Set(),\n unique = [];\n\n for (const entry of entries)\n {\n if (!entry || seen.has(entry.key))\n {\n continue;\n }\n seen.add(entry.key);\n unique.push(entry);\n }\n return unique;\n}\n\nfunction packFloat32Values(values)\n{\n const\n bytes = new Uint8Array(values.length * 4),\n view = new DataView(bytes.buffer);\n\n values.forEach((value, index) => view.setFloat32(index * 4, value, true));\n return Array.from(bytes);\n}\n\nfunction buildSkinClusterRecords(clusters, objectIndex, connections)\n{\n const\n records = [],\n recordsByBone = new Map();\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone || !indexes.length || !hasPositiveClusterWeight(indexes, weights))\n {\n continue;\n }\n\n const existing = recordsByBone.get(bone.key);\n if (existing)\n {\n // Carbon assigns palette entries by linked bone, not by cluster.\n // Multiple clusters for one bone contribute to that one entry.\n existing.indexes.push(...indexes);\n existing.weights.push(...weights);\n }\n else\n {\n const record = {\n cluster,\n bone,\n boneKey: bone.key,\n boneName: bone.name || cluster.name || `bone_${records.length}`,\n indexes: [ ...indexes ],\n weights: [ ...weights ]\n };\n recordsByBone.set(bone.key, record);\n records.push(record);\n }\n }\n return records;\n}\n\nfunction hasPositiveClusterWeight(indexes, weights)\n{\n for (let i = 0; i < indexes.length; i++)\n {\n if (finiteNumber(weights[i] ?? 0, \"Weights\") > 0)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction buildControlPointInfluences(records)\n{\n const controlPointInfluences = new Map();\n\n records.forEach((record, boneIndex) =>\n {\n const\n indexes = record.indexes,\n weights = record.weights;\n\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n weight = Math.max(0, finiteNumber(weights[i] ?? 0, \"Weights\")),\n list = controlPointInfluences.get(controlPointIndex) || [];\n\n if (weight <= 0)\n {\n continue;\n }\n\n const existing = list.find(influence => influence.boneIndex === boneIndex);\n if (existing)\n {\n existing.weight += weight;\n }\n else\n {\n list.push({ boneIndex, boneKey: record.boneKey, boneName: record.boneName, weight });\n }\n controlPointInfluences.set(controlPointIndex, list);\n }\n });\n\n return controlPointInfluences;\n}\n\nfunction normalizeInfluences(influences)\n{\n const best = influences\n .filter(influence => influence.weight > 0)\n .sort((a, b) => b.weight - a.weight)\n .slice(0, 4);\n\n const total = best.reduce((sum, influence) => sum + influence.weight, 0);\n if (total <= 0)\n {\n return [];\n }\n\n return best.map(influence => ({\n ...influence,\n weight: cleanFloat(influence.weight / total)\n }));\n}\n\nfunction buildBoneBindingsFromInfluences(records, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return records.map((record, boneIndex) =>\n {\n const\n name = record.boneName || `bone_${boneIndex}`,\n bindingMatrix = buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache),\n bindingPositions = [];\n\n for (let vertexIndex = 0; vertexIndex < outputInfluences.length; vertexIndex++)\n {\n if (!outputInfluences[vertexIndex].some(influence => influence.boneIndex === boneIndex && influence.weight > 0))\n {\n continue;\n }\n\n const offset = vertexIndex * 3;\n bindingPositions.push(...transformPointMatrix4([ positions[offset], positions[offset + 1], positions[offset + 2] ], bindingMatrix));\n }\n\n const bounds = computeBounds(bindingPositions);\n return {\n name,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds\n };\n });\n}\n\nfunction buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return invertMatrix4(transformMatrixScene(\n buildMeshGeometryToWorld(record.bone, objectIndex, connections, modelWorldCache),\n sceneTransform\n ));\n}\n\nfunction clusterBone(cluster, objectIndex, connections)\n{\n return connectedChildObjects(cluster, objectIndex, connections, \"Model\")[0] || null;\n}\n\nfunction findSkinSkeletonIndex(boneKeys, skeletonContext)\n{\n if (!skeletonContext)\n {\n return null;\n }\n\n let skeletonIndex = null;\n for (const key of boneKeys)\n {\n if (!key)\n {\n return null;\n }\n\n const index = skeletonContext.boneToSkeletonIndex.get(key);\n if (index === undefined)\n {\n return null;\n }\n if (skeletonIndex === null)\n {\n skeletonIndex = index;\n }\n else if (skeletonIndex !== index)\n {\n return null;\n }\n }\n\n return skeletonIndex;\n}\n\nfunction buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache, values)\n{\n const\n roots = objectIndex.list\n .filter(isBoneModel)\n .filter(bone => !connectedParentObjects(bone, objectIndex, connections, \"Model\").some(isBoneModel)),\n bindPoseMatrices = values.compatibility === COMPATIBILITY_CARBON\n ? new Map()\n : readBindPoseMatrices(objectIndex, connections, sceneTransform),\n skeletons = [],\n boneToSkeletonIndex = new Map(),\n visited = new Set();\n\n for (const root of roots)\n {\n if (visited.has(root.key))\n {\n continue;\n }\n\n const skeleton = buildSkeleton(\n root,\n objectIndex,\n connections,\n sceneTransform,\n modelWorldCache,\n bindPoseMatrices,\n visited,\n values.compatibility\n );\n if (!skeleton.cmfSkeleton.bones.length)\n {\n continue;\n }\n\n const skeletonIndex = skeletons.length;\n skeletons.push(skeleton);\n for (const key of skeleton.boneKeys)\n {\n boneToSkeletonIndex.set(key, skeletonIndex);\n }\n }\n\n return { skeletons, boneToSkeletonIndex };\n}\n\nfunction buildSkeleton(root, objectIndex, connections, sceneTransform, modelWorldCache, bindPoseMatrices, visited, compatibility)\n{\n const\n records = [],\n componentKeys = new Set(),\n collectBone = (bone) =>\n {\n if (!bone || componentKeys.has(bone.key)) return;\n componentKeys.add(bone.key);\n for (const child of connectedChildObjects(bone, objectIndex, connections, \"Model\").filter(isBoneModel))\n {\n collectBone(child);\n }\n };\n collectBone(root);\n\n const\n pending = objectIndex.list.filter(entry =>\n isBoneModel(entry) && componentKeys.has(entry.key) && !visited.has(entry.key)),\n recordIndexByKey = new Map();\n while (pending.length)\n {\n let progressed = false;\n for (let index = 0; index < pending.length; index++)\n {\n const\n bone = pending[index],\n parent = connectedParentObjects(bone, objectIndex, connections, \"Model\")\n .find(entry => isBoneModel(entry) && componentKeys.has(entry.key));\n if (parent && !recordIndexByKey.has(parent.key)) continue;\n\n const\n parentIndex = parent ? recordIndexByKey.get(parent.key) : -1,\n authoredLocalMatrix = buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache),\n authoredTransform = decomposeMatrix4(authoredLocalMatrix),\n transform = compatibility === COMPATIBILITY_CARBON && parentIndex === -1\n ? { position: [ 0, 0, 0 ], rotation: [ 0, 0, 0, 1 ], scale: authoredTransform.scale }\n : authoredTransform,\n localMatrix = compatibility === COMPATIBILITY_CARBON && parentIndex === -1\n ? composeSimpleTransform(transform.position, [ 0, 0, 0 ], transform.scale, DEFAULT_ROTATION_ORDER)\n : authoredLocalMatrix,\n recordIndex = records.length;\n\n visited.add(bone.key);\n recordIndexByKey.set(bone.key, recordIndex);\n records.push({ bone, parentIndex, localMatrix, transform });\n pending.splice(index, 1);\n index--;\n progressed = true;\n }\n\n if (!progressed)\n {\n throw new Error(`fbx: skeleton ${JSON.stringify(root.name || root.key)} contains a cyclic bone hierarchy`);\n }\n }\n\n const\n authoredName = compatibility === COMPATIBILITY_SOURCE\n ? readProperties70(root.node).properties.CjsSkeletonName?.value\n : undefined,\n name = authoredName === undefined ? root.name || \"fbx_skeleton\" : String(authoredName),\n invBindTransforms = buildInvBindTransforms(records, bindPoseMatrices);\n\n return {\n name,\n boneKeys: records.map(record => record.bone.key),\n gr2Skeleton: {\n name,\n bones: records.map(record => buildGr2Bone(record))\n },\n cmfSkeleton: {\n name,\n bones: records.map(record => record.bone.name || \"bone\"),\n parents: records.map(record => record.parentIndex === -1 ? 0xffffffff : record.parentIndex),\n restTransforms: records.map(record => ({\n position: record.transform.position,\n rotation: record.transform.rotation,\n scale: record.transform.scale\n })),\n invBindTransforms,\n boneMasks: buildCmfBoneMasks(records)\n }\n };\n}\n\n/**\n * Build CMF bone masks from user-defined numeric bone properties.\n *\n * @param {object[]} records Imported skeleton bone records.\n * @returns {object[]} CMF bone masks.\n */\nfunction buildCmfBoneMasks(records)\n{\n const\n masks = [],\n byName = new Map();\n\n records.forEach((record, index) =>\n {\n const properties = readProperties70(record.bone.node).properties;\n for (const [ name, definition ] of Object.entries(properties))\n {\n if (!isUserDefinedNumericPropertyDefinition(definition))\n {\n continue;\n }\n\n let mask = byName.get(name);\n if (!mask)\n {\n mask = { name, weights: [] };\n byName.set(name, mask);\n masks.push(mask);\n }\n mask.weights.push({ index, weight: cleanFloat(clamp01(definition.value)) });\n }\n });\n\n return masks;\n}\n\n/**\n * Check whether a Properties70 definition should become a CMF bone-mask weight.\n *\n * @param {object} definition Parsed Properties70 definition.\n * @returns {boolean} True when the property is user-defined and numeric.\n */\nfunction isUserDefinedNumericPropertyDefinition(definition)\n{\n return !!definition && String(definition.flags || \"\").includes(\"U\") && typeof definition.value === \"number\";\n}\n\n/**\n * Clamp a numeric value to the unit interval.\n *\n * @param {number} value Input value.\n * @returns {number} Clamped value.\n */\nfunction clamp01(value)\n{\n return Math.min(1, Math.max(0, finiteNumber(value, \"bone mask weight\")));\n}\n\nfunction buildGr2Models(skeletons, meshes)\n{\n return skeletons.map((skeleton, skeletonIndex) => ({\n name: skeleton.name,\n skeleton: skeleton.gr2Skeleton,\n meshBindings: meshes\n .map((mesh, meshIndex) => mesh.skeleton === skeletonIndex ? meshIndex : -1)\n .filter(meshIndex => meshIndex !== -1)\n }));\n}\n\nfunction buildGr2Bone(record)\n{\n const transform = record.transform;\n return {\n name: record.bone.name || \"bone\",\n parentIndex: record.parentIndex,\n flag: 7,\n position: transform.position,\n orientation: transform.rotation,\n scaleShear: [\n transform.scale[0], 0, 0,\n 0, transform.scale[1], 0,\n 0, 0, transform.scale[2]\n ]\n };\n}\n\nfunction buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n if (parentIndex === -1)\n {\n return transformMatrixScene(\n buildModelTransformState(bone, objectIndex, connections, modelWorldCache).nodeToWorld,\n sceneTransform\n );\n }\n\n return scaleMatrixTranslation(buildModelLocalTransform(bone), sceneTransform.scale);\n}\n\nfunction buildInvBindTransforms(records, bindPoseMatrices)\n{\n const invBindTransforms = [];\n for (const record of records)\n {\n const poseMatrix = bindPoseMatrices.get(record.bone.key);\n if (poseMatrix)\n {\n invBindTransforms.push(cleanMatrix4(invertMatrix4(poseMatrix)));\n continue;\n }\n const parentInvTransform = record.parentIndex === -1\n ? IDENTITY_MATRIX4\n : invBindTransforms[record.parentIndex];\n invBindTransforms.push(cleanMatrix4(multiplyMatrix4(\n invertMatrix4(record.localMatrix),\n parentInvTransform\n )));\n }\n return invBindTransforms.map((matrix) => transposeMatrix4(matrix));\n}\n\nfunction readBindPoseMatrices(objectIndex, connections, sceneTransform)\n{\n const matrices = new Map();\n for (const pose of objectIndex.list.filter(entry => entry.nodeName === \"Pose\"))\n {\n const type = String(readFirstChildProperty(pose.node, \"Type\") || pose.className || pose.name || \"\");\n if (!/bindpose/iu.test(type))\n {\n continue;\n }\n\n for (const poseNode of pose.node.children.filter(child => child.name === \"PoseNode\"))\n {\n const\n nodeId = readFirstChildProperty(poseNode, \"Node\"),\n matrix = readChildArray(poseNode, \"Matrix\");\n\n if (nodeId === undefined || !Array.isArray(matrix) || matrix.length !== 16)\n {\n continue;\n }\n\n matrices.set(toObjectKey(nodeId), transformMatrixScene(matrix, sceneTransform));\n }\n }\n for (const cluster of objectIndex.list.filter(entry => entry.nodeName === \"Deformer\" && isClusterDeformer(entry)))\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n matrix = readChildArray(cluster.node, \"TransformLink\");\n if (!bone || matrices.has(bone.key) || !Array.isArray(matrix) || matrix.length !== 16)\n {\n continue;\n }\n matrices.set(bone.key, transformMatrixScene(\n matrix.map(value => finiteNumber(value, \"TransformLink\")),\n sceneTransform\n ));\n }\n return matrices;\n}\n\nfunction isBoneModel(entry)\n{\n return entry?.nodeName === \"Model\" && (entry.className === \"LimbNode\" || /LimbNode/iu.test(entry.fullName));\n}\n\nfunction buildSceneTransform(globalSettingsNode)\n{\n const properties = readProperties70(globalSettingsNode).properties;\n const unitScaleFactor = propertyNumber(properties, \"UnitScaleFactor\", null);\n return {\n scale: unitScaleFactor === null ? 1 : unitScaleFactor * 0.01,\n right: axisVector(\n propertyNumber(properties, \"CoordAxis\", 0),\n propertyNumber(properties, \"CoordAxisSign\", 1)\n ),\n up: axisVector(\n propertyNumber(properties, \"UpAxis\", 1),\n propertyNumber(properties, \"UpAxisSign\", 1)\n ),\n forward: axisVector(\n propertyNumber(properties, \"FrontAxis\", 2),\n propertyNumber(properties, \"FrontAxisSign\", 1)\n )\n };\n}\n\nfunction buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache)\n{\n if (!owner)\n {\n return IDENTITY_MATRIX4;\n }\n\n return multiplyMatrix4(\n buildModelTransformState(owner, objectIndex, connections, modelWorldCache).nodeToWorld,\n buildModelGeometricTransform(owner)\n );\n}\n\nfunction buildModelTransformState(model, objectIndex, connections, cache)\n{\n if (cache.has(model.key))\n {\n return cache.get(model.key);\n }\n\n const\n local = buildModelLocalState(model),\n parents = connectedParentObjects(model, objectIndex, connections, \"Model\"),\n parent = parents[0],\n parentState = parent ? buildModelTransformState(parent, objectIndex, connections, cache) : null,\n state = parentState\n ? composeInheritedModelState(local, parentState)\n : {\n nodeToWorld: local.matrix,\n unscaledNodeToWorld: local.unscaledMatrix,\n inheritScale: local.scale\n };\n\n cache.set(model.key, state);\n return state;\n}\n\nfunction buildModelLocalTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeModelTransform(properties);\n}\n\nfunction buildModelLocalState(model)\n{\n const\n properties = readProperties70(model.node).properties,\n translation = propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]),\n scale = propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n\n return {\n properties,\n translation,\n scale,\n inheritType: propertyNumber(properties, \"InheritType\", 1),\n matrix: composeModelTransform(properties, { translation, scale }),\n unscaledMatrix: composeModelTransform(properties, { translation, scale: [ 1, 1, 1 ] })\n };\n}\n\nfunction composeInheritedModelState(local, parentState)\n{\n const inheritType = integerNumber(local.inheritType, \"InheritType\");\n\n if (inheritType === 0 || inheritType === 2)\n {\n const\n translation = multiplyVector3(local.translation, parentState.inheritScale),\n scale = inheritType === 0 ? multiplyVector3(local.scale, parentState.inheritScale) : local.scale,\n matrix = composeModelTransform(local.properties, { translation, scale }),\n unscaledMatrix = composeModelTransform(local.properties, { translation, scale: [ 1, 1, 1 ] });\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, unscaledMatrix),\n inheritScale: scale\n };\n }\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.nodeToWorld, local.matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, local.unscaledMatrix),\n inheritScale: multiplyVector3(parentState.inheritScale, local.scale)\n };\n}\n\nfunction buildModelGeometricTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeSimpleTransform(\n propertyVector3(properties, \"GeometricTranslation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricRotation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricScaling\", [ 1, 1, 1 ]),\n DEFAULT_ROTATION_ORDER\n );\n}\n\nfunction composeModelTransform(properties, overrides = {})\n{\n const\n rotationOrder = propertyRotationOrder(properties),\n rotationPivot = propertyVector3(properties, \"RotationPivot\", [ 0, 0, 0 ]),\n scalingPivot = propertyVector3(properties, \"ScalingPivot\", [ 0, 0, 0 ]);\n\n return multiplyMatrix4List([\n translationMatrix4(overrides.translation ?? propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ])),\n translationMatrix4(propertyVector3(properties, \"RotationOffset\", [ 0, 0, 0 ])),\n translationMatrix4(rotationPivot),\n rotationMatrix4(propertyVector3(properties, \"PreRotation\", [ 0, 0, 0 ]), DEFAULT_ROTATION_ORDER),\n rotationMatrix4(overrides.rotation ?? propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]), rotationOrder),\n inverseRotationMatrix4(propertyVector3(properties, \"PostRotation\", [ 0, 0, 0 ]), DEFAULT_ROTATION_ORDER),\n translationMatrix4(negateVector3(rotationPivot)),\n translationMatrix4(propertyVector3(properties, \"ScalingOffset\", [ 0, 0, 0 ])),\n translationMatrix4(scalingPivot),\n scaleMatrix4(overrides.scale ?? propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ])),\n translationMatrix4(negateVector3(scalingPivot))\n ]);\n}\n\nfunction composeSimpleTransform(translation, rotationDegrees, scale, rotationOrder)\n{\n return multiplyMatrix4(\n translationMatrix4(translation),\n multiplyMatrix4(rotationMatrix4(rotationDegrees, rotationOrder), scaleMatrix4(scale))\n );\n}\n\nfunction transformPoints(values, matrix, sceneTransform)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const point = transformPointMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...transformScenePoint(point, sceneTransform));\n }\n return output;\n}\n\nfunction transformDirections(values, matrix, sceneTransform)\n{\n if (!values.length)\n {\n return values;\n }\n\n // Carbon's Matrix::TransformNormal applies the ordinary upper 3x3 and the\n // FBX importer uses it for normals and tangents. Keep that convention here\n // even though an inverse-transpose is common in other render pipelines.\n const output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const vector = transformVectorMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...normalizeVector3(transformSceneVector(vector, sceneTransform)));\n }\n\n return output;\n}\n\nfunction transformScenePoint(point, sceneTransform)\n{\n const vector = transformSceneVector(point, sceneTransform);\n return vector.map(value => value * sceneTransform.scale);\n}\n\nfunction transformSceneVector(vector, sceneTransform)\n{\n return [\n dotVector3(vector, sceneTransform.right),\n dotVector3(vector, sceneTransform.up),\n dotVector3(vector, sceneTransform.forward)\n ];\n}\n\nfunction transformMatrixScene(matrix, sceneTransform)\n{\n const\n column0 = transformSceneVector([ matrix[0], matrix[4], matrix[8] ], sceneTransform),\n column1 = transformSceneVector([ matrix[1], matrix[5], matrix[9] ], sceneTransform),\n column2 = transformSceneVector([ matrix[2], matrix[6], matrix[10] ], sceneTransform),\n translation = transformScenePoint([ matrix[3], matrix[7], matrix[11] ], sceneTransform);\n\n return cleanMatrix4([\n column0[0], column1[0], column2[0], translation[0],\n column0[1], column1[1], column2[1], translation[1],\n column0[2], column1[2], column2[2], translation[2],\n 0, 0, 0, 1\n ]);\n}\n\nfunction scaleMatrixTranslation(matrix, scale)\n{\n const output = matrix.slice();\n output[3] *= scale;\n output[7] *= scale;\n output[11] *= scale;\n return cleanMatrix4(output);\n}\n\nfunction decomposeMatrix4(matrix)\n{\n const\n scale = [\n Math.hypot(matrix[0], matrix[4], matrix[8]) || 1,\n Math.hypot(matrix[1], matrix[5], matrix[9]) || 1,\n Math.hypot(matrix[2], matrix[6], matrix[10]) || 1\n ],\n rotationMatrix = [\n matrix[0] / scale[0], matrix[1] / scale[1], matrix[2] / scale[2],\n matrix[4] / scale[0], matrix[5] / scale[1], matrix[6] / scale[2],\n matrix[8] / scale[0], matrix[9] / scale[1], matrix[10] / scale[2]\n ];\n\n return {\n position: cleanVector3([ matrix[3], matrix[7], matrix[11] ]),\n rotation: matrixToQuaternion(rotationMatrix),\n scale: cleanVector3(scale)\n };\n}\n\nfunction matrixToQuaternion(matrix)\n{\n const\n m00 = matrix[0],\n m01 = matrix[1],\n m02 = matrix[2],\n m10 = matrix[3],\n m11 = matrix[4],\n m12 = matrix[5],\n m20 = matrix[6],\n m21 = matrix[7],\n m22 = matrix[8],\n trace = m00 + m11 + m22;\n\n let x, y, z, w;\n if (trace > 0)\n {\n const s = Math.sqrt(trace + 1) * 2;\n w = 0.25 * s;\n x = (m21 - m12) / s;\n y = (m02 - m20) / s;\n z = (m10 - m01) / s;\n }\n else if (m00 > m11 && m00 > m22)\n {\n const s = Math.sqrt(1 + m00 - m11 - m22) * 2;\n w = (m21 - m12) / s;\n x = 0.25 * s;\n y = (m01 + m10) / s;\n z = (m02 + m20) / s;\n }\n else if (m11 > m22)\n {\n const s = Math.sqrt(1 + m11 - m00 - m22) * 2;\n w = (m02 - m20) / s;\n x = (m01 + m10) / s;\n y = 0.25 * s;\n z = (m12 + m21) / s;\n }\n else\n {\n const s = Math.sqrt(1 + m22 - m00 - m11) * 2;\n w = (m10 - m01) / s;\n x = (m02 + m20) / s;\n y = (m12 + m21) / s;\n z = 0.25 * s;\n }\n\n return normalizeQuaternion([ x, y, z, w ]);\n}\n\nfunction propertyVector3(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (Array.isArray(value))\n {\n return [\n finiteNumber(value[0] ?? fallback[0], name),\n finiteNumber(value[1] ?? fallback[1], name),\n finiteNumber(value[2] ?? fallback[2], name)\n ];\n }\n return fallback;\n}\n\nfunction propertyNumber(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (value === undefined || value === null || Array.isArray(value))\n {\n return fallback;\n }\n return finiteNumber(value, name);\n}\n\nfunction propertyRotationOrder(properties)\n{\n const value = propertyNumber(properties, \"RotationOrder\", null);\n if (value === null)\n {\n return DEFAULT_ROTATION_ORDER;\n }\n return FBX_ROTATION_ORDERS[value] || DEFAULT_ROTATION_ORDER;\n}\n\nfunction axisVector(axis, sign)\n{\n const vector = [ 0, 0, 0 ];\n const index = Math.max(0, Math.min(2, integerNumber(axis, \"Axis\")));\n vector[index] = sign < 0 ? -1 : 1;\n return vector;\n}\n\nfunction translationMatrix4(translation)\n{\n return [\n 1, 0, 0, translation[0],\n 0, 1, 0, translation[1],\n 0, 0, 1, translation[2],\n 0, 0, 0, 1\n ];\n}\n\nfunction scaleMatrix4(scale)\n{\n return [\n scale[0], 0, 0, 0,\n 0, scale[1], 0, 0,\n 0, 0, scale[2], 0,\n 0, 0, 0, 1\n ];\n}\n\nfunction rotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (let i = order.length - 1; i >= 0; i--)\n {\n const axis = order[i];\n const radians = degreesToRadians(rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction inverseRotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (const axis of order)\n {\n const radians = degreesToRadians(-rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction multiplyMatrix4List(matrices)\n{\n return matrices.reduce((matrix, next) => multiplyMatrix4(matrix, next), IDENTITY_MATRIX4);\n}\n\nfunction negateVector3(vector)\n{\n return [ -vector[0], -vector[1], -vector[2] ];\n}\n\nfunction multiplyVector3(a, b)\n{\n return [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ];\n}\n\nfunction axisIndex(axis)\n{\n return axis === \"X\" ? 0 : axis === \"Y\" ? 1 : 2;\n}\n\nfunction axisRotationMatrix4(axis, radians)\n{\n const\n c = Math.cos(radians),\n s = Math.sin(radians);\n\n switch (axis)\n {\n case \"X\":\n return [\n 1, 0, 0, 0,\n 0, c, -s, 0,\n 0, s, c, 0,\n 0, 0, 0, 1\n ];\n case \"Y\":\n return [\n c, 0, s, 0,\n 0, 1, 0, 0,\n -s, 0, c, 0,\n 0, 0, 0, 1\n ];\n default:\n return [\n c, -s, 0, 0,\n s, c, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n ];\n }\n}\n\nfunction invertMatrix4(matrix)\n{\n try\n {\n return cleanMatrix4(invertSharedMatrix4(matrix));\n }\n catch\n {\n throw new Error(\"fbx: transform matrix is not invertible\");\n }\n}\n\nfunction transformDirectionDeltas(values, matrix, sceneTransform)\n{\n const output = [];\n for (let index = 0; index < values.length; index += 3)\n {\n const source = [ values[index], values[index + 1], values[index + 2] ];\n const vector = transformVectorMatrix4(source, matrix);\n output.push(...transformSceneVector(vector, sceneTransform));\n }\n return output;\n}\n\nfunction transformPointMatrix4(point, matrix)\n{\n return [\n matrix[0] * point[0] + matrix[1] * point[1] + matrix[2] * point[2] + matrix[3],\n matrix[4] * point[0] + matrix[5] * point[1] + matrix[6] * point[2] + matrix[7],\n matrix[8] * point[0] + matrix[9] * point[1] + matrix[10] * point[2] + matrix[11]\n ];\n}\n\nfunction transformVectorMatrix4(vector, matrix)\n{\n return [\n matrix[0] * vector[0] + matrix[1] * vector[1] + matrix[2] * vector[2],\n matrix[4] * vector[0] + matrix[5] * vector[1] + matrix[6] * vector[2],\n matrix[8] * vector[0] + matrix[9] * vector[1] + matrix[10] * vector[2]\n ];\n}\n\nfunction normalizeVector3(vector)\n{\n const length = Math.hypot(vector[0], vector[1], vector[2]);\n if (length === 0)\n {\n return [ 0, 0, 0 ];\n }\n return vector.map(value => cleanFloat(value / length));\n}\n\nfunction normalizeQuaternion(quaternion)\n{\n const length = Math.hypot(quaternion[0], quaternion[1], quaternion[2], quaternion[3]);\n if (length === 0)\n {\n return [ 0, 0, 0, 1 ];\n }\n return quaternion.map(value => cleanFloat(value / length));\n}\n\nfunction dotVector3(a, b)\n{\n return cleanFloat(a[0] * b[0] + a[1] * b[1] + a[2] * b[2]);\n}\n\nfunction degreesToRadians(value)\n{\n return value * Math.PI / 180;\n}\n\nfunction cleanFloat(value)\n{\n return Math.abs(value) < 1e-12 ? 0 : value;\n}\n\nfunction cleanVector3(vector)\n{\n return vector.map(cleanFloat);\n}\n\nfunction cleanNumericArray(values)\n{\n return Array.from(values, cleanFloat);\n}\n\nfunction hasArrayValues(values)\n{\n return (Array.isArray(values) || ArrayBuffer.isView(values)) && values.length > 0;\n}\n\nfunction cleanMatrix4(matrix)\n{\n return matrix.map(cleanFloat);\n}\n\nfunction indexObjectNodes(objectsNode)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n for (const node of objectsNode.children)\n {\n if (!node.properties.length)\n {\n continue;\n }\n\n const summary = readObjectEntry(node);\n const entry = { ...summary, node };\n list.push(entry);\n byId[entry.key] = entry;\n pushIndex(byType, entry.nodeName, entry);\n }\n\n return { list, byId, byType };\n}\n\nfunction connectedParentObjects(entry, objectIndex, connections, nodeName)\n{\n return (connections.parentsByChild[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(parent => parent && parent.nodeName === nodeName);\n}\n\nfunction connectedChildObjects(entry, objectIndex, connections, nodeName)\n{\n if (!entry)\n {\n return [];\n }\n\n return (connections.childrenByParent[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(child => child && child.nodeName === nodeName);\n}\n\nfunction requireChildArray(node, childName)\n{\n const values = readChildArray(node, childName);\n if (!values)\n {\n throw new Error(`fbx: geometry is missing ${childName}`);\n }\n return values;\n}\n\nfunction readChildArray(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? readNodeArray(child, childName) : null;\n}\n\nfunction readNodeArray(node, feature)\n{\n for (const property of node.properties)\n {\n const values = arrayPropertyToNumbers(property, feature);\n if (values)\n {\n return values;\n }\n }\n\n const asciiArray = findFirstNode(node.children, \"a\");\n return asciiArray ? asciiArray.properties.map(value => finiteNumber(value, feature)) : null;\n}\n\nfunction arrayPropertyToNumbers(property, feature)\n{\n if (!property)\n {\n return null;\n }\n if (property.compressed)\n {\n const error = new Error(`fbx: GR2 output cannot read compressed ${feature} arrays yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = \"fbx\";\n error.emit = OUTPUT_GR2;\n error.feature = \"compressed-array\";\n throw error;\n }\n if (ArrayBuffer.isView(property))\n {\n return Array.from(property, value => finiteNumber(value, feature));\n }\n if (Array.isArray(property))\n {\n return property.map(value => finiteNumber(value, feature));\n }\n return null;\n}\n\nfunction decodePolygonCorners(controlPoints, polygonVertexIndex, geometry)\n{\n const\n controlPointCount = controlPoints.length / 3,\n positions = [],\n corners = [],\n polygons = [];\n\n let polygon = [];\n\n for (const rawValue of polygonVertexIndex)\n {\n const raw = integerNumber(rawValue, \"PolygonVertexIndex\");\n const end = raw < 0;\n const controlPointIndex = end ? -raw - 1 : raw;\n if (controlPointIndex < 0 || controlPointIndex >= controlPointCount)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has PolygonVertexIndex ${raw} out of range`);\n }\n\n const source = controlPointIndex * 3;\n const outputIndex = positions.length / 3;\n const polygonIndex = polygons.length;\n positions.push(\n finiteNumber(controlPoints[source], \"Vertices\"),\n finiteNumber(controlPoints[source + 1], \"Vertices\"),\n finiteNumber(controlPoints[source + 2], \"Vertices\")\n );\n corners.push({\n outputIndex,\n controlPointIndex,\n polygonIndex,\n polygonCornerIndex: polygon.length\n });\n polygon.push(outputIndex);\n\n if (end)\n {\n if (polygon.length < 3)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has a polygon with fewer than three vertices`);\n }\n polygons.push(polygon);\n polygon = [];\n }\n }\n\n if (polygon.length)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has an unterminated polygon`);\n }\n\n return { positions, corners, polygons };\n}\n\nfunction readLayerElementChannel(geometryNode, layerName, layerIndex, valueNames, indexNames, elementSize, decoded, feature)\n{\n const layer = findLayerElementNode(geometryNode, layerName, layerIndex);\n if (!layer)\n {\n return [];\n }\n\n const values = readFirstChildArray(layer, valueNames);\n if (!values)\n {\n return [];\n }\n\n if (values.length % elementSize !== 0)\n {\n throw new Error(`fbx: ${feature} array length is not divisible by ${elementSize}`);\n }\n\n const\n indices = readFirstChildArray(layer, indexNames) || [],\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\"),\n output = [];\n\n for (const corner of decoded.corners)\n {\n const\n mappedIndex = resolveLayerMappingIndex(mapping, corner, feature),\n directIndex = resolveLayerReferenceIndex(reference, indices, mappedIndex, feature);\n\n appendLayerElement(output, values, directIndex, elementSize, feature);\n }\n\n return output;\n}\n\nfunction readGeometryLayerChannels(geometryNode, decoded, values, meshTransform, sceneTransform)\n{\n const output = {};\n for (const spec of [\n [ \"LayerElementNormal\", \"normal\", [ \"Normals\" ], [ \"NormalsIndex\", \"NormalIndex\" ], 3, \"Normals\", true ],\n [ \"LayerElementTangent\", \"tangent\", [ \"Tangents\" ], [ \"TangentsIndex\", \"TangentIndex\" ], 3, \"Tangents\", true ],\n [ \"LayerElementBinormal\", \"binormal\", [ \"Binormals\" ], [ \"BinormalsIndex\", \"BinormalIndex\" ], 3, \"Binormals\", true ],\n [ \"LayerElementUV\", \"texcoord\", [ \"UV\" ], [ \"UVIndex\", \"UVIndices\" ], 2, \"UV\", false ],\n [ \"LayerElementColor\", \"color\", [ \"Colors\" ], [ \"ColorIndex\", \"ColorsIndex\", \"ColorIndices\" ], 4, \"Colors\", false ]\n ])\n {\n const [ layerName, channelName, valueNames, indexNames, width, feature, directional ] = spec;\n if (values.compatibility === COMPATIBILITY_CARBON && channelName === \"binormal\") continue;\n for (const usageIndex of layerUsageIndices(geometryNode, layerName))\n {\n let channel = readLayerElementChannel(\n geometryNode,\n layerName,\n usageIndex,\n valueNames,\n indexNames,\n width,\n decoded,\n feature\n );\n if (directional) channel = transformDirections(channel, meshTransform, sceneTransform);\n if (channelName === \"texcoord\" && values.flipV) channel = flipTexcoordV(channel);\n if (channel.length) output[usageIndex === 0 && [ \"normal\", \"tangent\", \"binormal\" ].includes(channelName)\n ? channelName\n : `${channelName}${usageIndex}`] = channel;\n }\n }\n return output;\n}\n\nfunction layerUsageIndices(geometryNode, layerName)\n{\n const routed = [];\n for (const layer of geometryNode.children.filter(child => child.name === \"Layer\"))\n {\n for (const reference of layer.children.filter(child => child.name === \"LayerElement\" &&\n String(readFirstChildProperty(child, \"Type\") || \"\") === layerName))\n {\n const typedIndex = integerNumber(\n readFirstChildProperty(reference, \"TypedIndex\") ?? 0,\n \"TypedIndex\"\n );\n if (typedIndex < 0 || typedIndex > 255)\n {\n throw new Error(`fbx: ${layerName} TypedIndex ${typedIndex} is outside CMF usage range 0..255`);\n }\n routed.push(typedIndex);\n }\n }\n if (routed.length) return Array.from(new Set(routed)).sort((left, right) => left - right);\n\n const direct = geometryNode.children.filter(child => child.name === layerName).map((child, index) =>\n {\n const value = child.properties.length ? Number(child.properties[0]) : index;\n if (!Number.isInteger(value) || value < 0 || value > 255)\n {\n throw new Error(`fbx: ${layerName} index ${value} is outside CMF usage range 0..255`);\n }\n return value;\n });\n return Array.from(new Set(direct)).sort((left, right) => left - right);\n}\n\n/**\n * Flip the V coordinate of an expanded UV channel.\n *\n * @param {number[]} texcoord Expanded UV channel.\n * @returns {number[]} Flipped UV channel.\n */\nfunction flipTexcoordV(texcoord)\n{\n const flipped = texcoord.slice();\n for (let i = 1; i < flipped.length; i += 2)\n {\n flipped[i] = 1 - flipped[i];\n }\n return flipped;\n}\n\nfunction findLayerElementNode(geometryNode, layerName, layerIndex)\n{\n const layers = geometryNode.children.filter(child => child.name === layerName);\n return layers.find((child, index) =>\n {\n const id = child.properties.length ? Number(child.properties[0]) : index;\n return Number.isFinite(id) && id === layerIndex;\n }) || layers[layerIndex] || null;\n}\n\nfunction findRoutedLayerElementNode(geometryNode, layerName, layerIndex)\n{\n const layerNodes = geometryNode.children.filter(child => child.name === \"Layer\");\n const layerNode = layerNodes.find((child, index) =>\n {\n const id = child.properties.length ? Number(child.properties[0]) : index;\n return Number.isFinite(id) && id === layerIndex;\n }) || layerNodes[layerIndex];\n\n if (layerNode)\n {\n for (const reference of layerNode.children.filter(child => child.name === \"LayerElement\"))\n {\n if (String(readFirstChildProperty(reference, \"Type\") || \"\") !== layerName) continue;\n const typedIndex = integerNumber(\n readFirstChildProperty(reference, \"TypedIndex\") ?? 0,\n \"TypedIndex\"\n );\n return findLayerElementNode(geometryNode, layerName, typedIndex);\n }\n }\n return findLayerElementNode(geometryNode, layerName, layerIndex);\n}\n\nfunction readFirstChildArray(node, childNames)\n{\n for (const childName of childNames)\n {\n const values = readChildArray(node, childName);\n if (values)\n {\n return values;\n }\n }\n return null;\n}\n\nfunction resolveLayerMappingIndex(mapping, corner, feature)\n{\n switch (mapping)\n {\n case \"ByPolygonVertex\":\n return corner.outputIndex;\n case \"ByControlPoint\":\n case \"ByVertice\":\n case \"ByVertex\":\n return corner.controlPointIndex;\n case \"ByPolygon\":\n return corner.polygonIndex;\n case \"AllSame\":\n return 0;\n default:\n throw new Error(`fbx: unsupported ${feature} MappingInformationType ${JSON.stringify(mapping)}`);\n }\n}\n\nfunction resolveLayerReferenceIndex(reference, indices, mappedIndex, feature)\n{\n switch (reference)\n {\n case \"Direct\":\n return mappedIndex;\n case \"IndexToDirect\":\n case \"Index\":\n {\n if (mappedIndex >= indices.length)\n {\n throw new Error(`fbx: ${feature} index array is too short`);\n }\n return integerNumber(indices[mappedIndex], feature);\n }\n default:\n throw new Error(`fbx: unsupported ${feature} ReferenceInformationType ${JSON.stringify(reference)}`);\n }\n}\n\nfunction appendLayerElement(output, values, directIndex, elementSize, feature)\n{\n const offset = directIndex * elementSize;\n if (directIndex < 0 || offset + elementSize > values.length)\n {\n throw new Error(`fbx: ${feature} direct index ${directIndex} is out of range`);\n }\n\n for (let i = 0; i < elementSize; i++)\n {\n output.push(finiteNumber(values[offset + i], feature));\n }\n}\n\nfunction buildIndexGroups(polygonTriangles, materialSelection)\n{\n const groups = materialSelection.slots.map(slot => ({\n name: slot.name,\n bytesPerIndex: 2,\n faces: []\n }));\n let maxIndex = 0;\n\n for (let polygonIndex = 0; polygonIndex < polygonTriangles.length; polygonIndex++)\n {\n const\n triangles = polygonTriangles[polygonIndex],\n slot = materialSelection.polygonSlots[polygonIndex] ?? 0,\n group = groups[slot];\n\n if (!group)\n {\n throw new Error(`fbx: polygon ${polygonIndex} references missing material slot ${slot}`);\n }\n\n for (const triangle of triangles)\n {\n group.faces.push(triangle[0], triangle[1], triangle[2]);\n maxIndex = Math.max(maxIndex, triangle[0], triangle[1], triangle[2]);\n }\n }\n\n const bytesPerIndex = maxIndex > 0xffff ? 4 : 2;\n for (const group of groups)\n {\n group.bytesPerIndex = bytesPerIndex;\n }\n return groups;\n}\n\nfunction triangulatePolygonList(polygons, positions)\n{\n return polygons.map(polygon => triangulatePolygon(polygon, positions));\n}\n\nfunction triangulatePolygon(polygon, positions)\n{\n if (polygon.length === 3)\n {\n return [ polygon.slice() ];\n }\n\n const projected = projectPolygonTo2D(polygon, positions);\n if (!projected)\n {\n return triangulatePolygonFan(polygon);\n }\n\n const area = signedArea2D(projected);\n if (Math.abs(area) <= TRIANGULATION_EPSILON)\n {\n return triangulatePolygonFan(polygon);\n }\n if (isConvexPolygon2D(projected, area))\n {\n return triangulatePolygonFan(polygon);\n }\n\n const\n triangles = [],\n remaining = polygon.map((value, index) => index);\n\n let guard = polygon.length * polygon.length;\n while (remaining.length > 3 && guard-- > 0)\n {\n let clipped = false;\n for (let index = 0; index < remaining.length; index++)\n {\n const\n previous = remaining[(index + remaining.length - 1) % remaining.length],\n current = remaining[index],\n next = remaining[(index + 1) % remaining.length];\n\n if (!isEar2D(previous, current, next, remaining, projected, area))\n {\n continue;\n }\n\n triangles.push([ polygon[previous], polygon[current], polygon[next] ]);\n remaining.splice(index, 1);\n clipped = true;\n break;\n }\n\n if (!clipped)\n {\n return triangulatePolygonFan(polygon);\n }\n }\n\n if (remaining.length === 3)\n {\n triangles.push([ polygon[remaining[0]], polygon[remaining[1]], polygon[remaining[2]] ]);\n }\n\n return triangles.length ? triangles : triangulatePolygonFan(polygon);\n}\n\nfunction flattenPolygonTriangles(polygonTriangles)\n{\n const faces = [];\n for (const triangles of polygonTriangles)\n {\n for (const triangle of triangles)\n {\n faces.push(triangle[0], triangle[1], triangle[2]);\n }\n }\n return faces;\n}\n\nfunction orientPolygonTriangles(polygonTriangles, reflected)\n{\n if (!reflected) return polygonTriangles;\n return polygonTriangles.map(triangles => triangles.map(triangle => [\n triangle[0], triangle[2], triangle[1]\n ]));\n}\n\nfunction isReflectedTransform(matrix, sceneTransform)\n{\n const matrixDeterminant = determinant3(\n matrix[0], matrix[1], matrix[2],\n matrix[4], matrix[5], matrix[6],\n matrix[8], matrix[9], matrix[10]\n );\n const sceneDeterminant = determinant3(\n ...sceneTransform.right,\n ...sceneTransform.up,\n ...sceneTransform.forward\n ) * sceneTransform.scale ** 3;\n return matrixDeterminant * sceneDeterminant < 0;\n}\n\nfunction determinant3(a00, a01, a02, a10, a11, a12, a20, a21, a22)\n{\n return a00 * (a11 * a22 - a12 * a21) -\n a01 * (a10 * a22 - a12 * a20) +\n a02 * (a10 * a21 - a11 * a20);\n}\n\nfunction triangulatePolygonFan(polygon)\n{\n const triangles = [];\n for (let i = 1; i < polygon.length - 1; i++)\n {\n triangles.push([ polygon[0], polygon[i], polygon[i + 1] ]);\n }\n return triangles;\n}\n\nfunction projectPolygonTo2D(polygon, positions)\n{\n const normal = computePolygonNormal(polygon, positions);\n const\n absX = Math.abs(normal[0]),\n absY = Math.abs(normal[1]),\n absZ = Math.abs(normal[2]);\n\n if (Math.max(absX, absY, absZ) <= TRIANGULATION_EPSILON)\n {\n return null;\n }\n\n const dropAxis = absX > absY && absX > absZ ? 0 : absY > absZ ? 1 : 2;\n return polygon.map(index =>\n {\n const offset = index * 3;\n if (dropAxis === 0)\n {\n return [ positions[offset + 1], positions[offset + 2] ];\n }\n if (dropAxis === 1)\n {\n return [ positions[offset], positions[offset + 2] ];\n }\n return [ positions[offset], positions[offset + 1] ];\n });\n}\n\nfunction computePolygonNormal(polygon, positions)\n{\n const normal = [ 0, 0, 0 ];\n for (let i = 0; i < polygon.length; i++)\n {\n const\n current = polygon[i] * 3,\n next = polygon[(i + 1) % polygon.length] * 3,\n x0 = positions[current],\n y0 = positions[current + 1],\n z0 = positions[current + 2],\n x1 = positions[next],\n y1 = positions[next + 1],\n z1 = positions[next + 2];\n\n normal[0] += (y0 - y1) * (z0 + z1);\n normal[1] += (z0 - z1) * (x0 + x1);\n normal[2] += (x0 - x1) * (y0 + y1);\n }\n return normal;\n}\n\nfunction signedArea2D(points)\n{\n let area = 0;\n for (let i = 0; i < points.length; i++)\n {\n const\n current = points[i],\n next = points[(i + 1) % points.length];\n\n area += current[0] * next[1] - next[0] * current[1];\n }\n return area * 0.5;\n}\n\nfunction isEar2D(previous, current, next, remaining, points, area)\n{\n const cross = cross2D(points[previous], points[current], points[next]);\n if (area > 0 ? cross <= TRIANGULATION_EPSILON : cross >= -TRIANGULATION_EPSILON)\n {\n return false;\n }\n\n for (const pointIndex of remaining)\n {\n if (pointIndex === previous || pointIndex === current || pointIndex === next)\n {\n continue;\n }\n if (pointInTriangle2D(points[pointIndex], points[previous], points[current], points[next]))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isConvexPolygon2D(points, area)\n{\n for (let i = 0; i < points.length; i++)\n {\n const cross = cross2D(points[i], points[(i + 1) % points.length], points[(i + 2) % points.length]);\n if (Math.abs(cross) <= TRIANGULATION_EPSILON)\n {\n continue;\n }\n if (area > 0 ? cross < -TRIANGULATION_EPSILON : cross > TRIANGULATION_EPSILON)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction cross2D(a, b, c)\n{\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n\nfunction pointInTriangle2D(point, a, b, c)\n{\n const\n ab = cross2D(a, b, point),\n bc = cross2D(b, c, point),\n ca = cross2D(c, a, point),\n hasNegative = ab < -TRIANGULATION_EPSILON || bc < -TRIANGULATION_EPSILON || ca < -TRIANGULATION_EPSILON,\n hasPositive = ab > TRIANGULATION_EPSILON || bc > TRIANGULATION_EPSILON || ca > TRIANGULATION_EPSILON;\n\n return !(hasNegative && hasPositive);\n}\n\nfunction readPolygonMaterials(geometry, owner, objectIndex, connections, polygonCount)\n{\n const slots = readMaterialSlots(geometry, owner, objectIndex, connections);\n if (!slots.length)\n {\n slots.push({ key: \"default\", name: \"default\" });\n }\n\n const layer = findRoutedLayerElementNode(geometry.node, \"LayerElementMaterial\", 0);\n if (!layer)\n {\n return { slots, polygonSlots: new Array(polygonCount).fill(0) };\n }\n\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\"),\n materials = readChildArray(layer, \"Materials\") || [],\n polygonSlots = [];\n\n for (let i = 0; i < polygonCount; i++)\n {\n const slot = mapping === \"ByPolygon\"\n ? integerNumber(materials[i] ?? 0, \"Materials\")\n : integerNumber(materials[0] ?? 0, \"Materials\");\n if (slot < 0 || slot >= slots.length)\n {\n throw new Error(`fbx: Materials slot ${slot} is outside 0..${slots.length - 1}`);\n }\n polygonSlots.push(slot);\n }\n\n return { slots, polygonSlots };\n}\n\nfunction readMaterialSlots(geometry, owner, objectIndex, connections)\n{\n const materials = [\n ...connectedChildObjects(owner, objectIndex, connections, \"Material\"),\n ...connectedChildObjects(geometry, objectIndex, connections, \"Material\")\n ];\n const seen = new Set();\n const slots = [];\n\n for (const material of materials)\n {\n if (seen.has(material.key))\n {\n continue;\n }\n seen.add(material.key);\n slots.push({ key: material.key, name: material.name ?? `material_${slots.length}` });\n }\n\n return slots;\n}\n\nfunction meshNameFromFbx(geometry, owner)\n{\n return owner?.name || geometry.name || \"fbx_mesh\";\n}\n\nfunction createGr2Vertex(position, channels = {})\n{\n return {\n position,\n blendIndice: [],\n tangent: [],\n normal: [],\n texcoord0: [],\n texcoord1: [],\n color0: [],\n binormal: [],\n blendWeight: [],\n ...channels\n };\n}\n\nfunction computeBounds(positions)\n{\n if (!positions.length)\n {\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\n }\n\n const\n minBounds = [ positions[0], positions[1], positions[2] ],\n maxBounds = [ positions[0], positions[1], positions[2] ];\n\n for (let i = 3; i < positions.length; i += 3)\n {\n for (let c = 0; c < 3; c++)\n {\n const value = positions[i + c];\n if (value < minBounds[c])\n {\n minBounds[c] = value;\n }\n if (value > maxBounds[c])\n {\n maxBounds[c] = value;\n }\n }\n }\n\n return { minBounds, maxBounds };\n}\n\nfunction hydrateGr2(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n grannyFileFormatRevision: root.grannyFileFormatRevision,\n grannyFileSource: root.grannyFileSource,\n meshes: root.meshes.map(mesh => hydrate(\"Mesh\", {\n name: mesh.name,\n morphTargets: mesh.morphTargets.map(target => hydrate(\"MorphTarget\", target, hydrationClasses)),\n minBounds: mesh.minBounds,\n maxBounds: mesh.maxBounds,\n boneBindings: mesh.boneBindings.map(binding => hydrate(\"BoneBinding\", binding, hydrationClasses)),\n vertex: mesh.vertex,\n indices: mesh.indices.map(group => hydrate(\"IndexGroup\", group, hydrationClasses))\n }, hydrationClasses)),\n models: root.models.map(model => hydrateGr2Model(model, hydrationClasses)),\n animations: root.animations.map(animation => hydrateGr2Animation(animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateGr2Animation(animation, classes)\n{\n return hydrate(\"Animation\", {\n ...animation,\n trackGroups: (animation.trackGroups ?? []).map(trackGroup => hydrate(\"TrackGroup\", {\n ...trackGroup,\n transformTracks: (trackGroup.transformTracks ?? []).map(track => hydrate(\"TransformTrack\", {\n ...track,\n orientation: hydrate(\"Curve\", track.orientation, classes),\n position: hydrate(\"Curve\", track.position, classes),\n scaleShear: hydrate(\"Curve\", track.scaleShear, classes)\n }, classes)),\n vectorTracks: (trackGroup.vectorTracks ?? []).map(track => hydrate(\"VectorTrack\", {\n ...track,\n valueCurve: hydrate(\"Curve\", track.valueCurve, classes)\n }, classes))\n }, classes))\n }, classes);\n}\n\nfunction hydrateGr2Model(model, classes)\n{\n return hydrate(\"Model\", {\n ...model,\n skeleton: hydrateGr2Skeleton(model.skeleton, classes)\n }, classes);\n}\n\nfunction hydrateGr2Skeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", {\n ...skeleton,\n bones: skeleton.bones.map(bone => hydrate(\"Bone\", bone, classes))\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n if (!Class)\n {\n return fields;\n }\n\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return populate(new Class(), fields, options);\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsFbxFormat class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n\nfunction buildFbxRoot(nodes)\n{\n const headerNode = findFirstNode(nodes, \"FBXHeaderExtension\");\n const globalSettingsNode = findFirstNode(nodes, \"GlobalSettings\");\n const definitionsNode = findFirstNode(nodes, \"Definitions\");\n const objectsNode = findFirstNode(nodes, \"Objects\");\n const connectionsNode = findFirstNode(nodes, \"Connections\");\n\n return {\n rootNodeNames: nodes.map(node => node.name),\n header: readHeader(headerNode),\n globalSettings: readProperties70(globalSettingsNode),\n definitions: readDefinitions(definitionsNode),\n objects: readObjects(objectsNode),\n connections: readConnections(connectionsNode)\n };\n}\n\nfunction readHeader(node)\n{\n if (!node)\n {\n return {};\n }\n\n return {\n fbxHeaderVersion: readFirstChildProperty(node, \"FBXHeaderVersion\"),\n fbxVersion: readFirstChildProperty(node, \"FBXVersion\"),\n creator: readFirstChildProperty(node, \"Creator\")\n };\n}\n\nfunction readDefinitions(node)\n{\n if (!node)\n {\n return {\n version: 0,\n count: 0,\n objectTypes: []\n };\n }\n\n return {\n version: readFirstChildProperty(node, \"Version\") || 0,\n count: readFirstChildProperty(node, \"Count\") || 0,\n objectTypes: node.children\n .filter(child => child.name === \"ObjectType\")\n .map(readObjectType)\n };\n}\n\nfunction readObjectType(node)\n{\n return {\n type: node.properties[0] || \"\",\n count: readFirstChildProperty(node, \"Count\") || 0\n };\n}\n\nfunction readObjects(node)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n if (!node)\n {\n return { count: 0, list, byId, byType };\n }\n\n for (const child of node.children)\n {\n if (child.properties.length === 0)\n {\n continue;\n }\n\n const entry = readObjectEntry(child);\n list.push(entry);\n byId[entry.key] = entry;\n if (!byType[entry.nodeName])\n {\n byType[entry.nodeName] = [];\n }\n byType[entry.nodeName].push(entry.key);\n }\n\n return {\n count: list.length,\n list,\n byId,\n byType\n };\n}\n\nfunction readObjectEntry(node)\n{\n const id = node.properties[0];\n const fullName = node.properties[1] || \"\";\n const className = node.properties[2] || \"\";\n\n return {\n id,\n key: toObjectKey(id),\n nodeName: node.name,\n name: getShortObjectName(fullName),\n fullName,\n className,\n propertyCount: node.properties.length,\n childCount: node.children.length,\n attributeNames: node.children.map(child => child.name)\n };\n}\n\nfunction readConnections(node)\n{\n const list = [];\n const parentsByChild = {};\n const childrenByParent = {};\n\n if (node)\n {\n for (const child of node.children)\n {\n if (child.name !== \"C\")\n {\n continue;\n }\n\n const entry = {\n relation: child.properties[0] || \"\",\n childId: child.properties[1],\n parentId: child.properties[2],\n property: child.properties[3] || \"\"\n };\n entry.childKey = toObjectKey(entry.childId);\n entry.parentKey = toObjectKey(entry.parentId);\n list.push(entry);\n pushIndex(parentsByChild, entry.childKey, entry.parentKey);\n pushIndex(childrenByParent, entry.parentKey, entry.childKey);\n }\n }\n\n return {\n count: list.length,\n list,\n parentsByChild,\n childrenByParent\n };\n}\n\nfunction readProperties70(node)\n{\n const properties = {};\n const properties70 = node ? findFirstNode(node.children, \"Properties70\") : null;\n\n if (!properties70)\n {\n return { properties };\n }\n\n for (const child of properties70.children)\n {\n if (child.name !== \"P\" || child.properties.length === 0)\n {\n continue;\n }\n\n const key = child.properties[0];\n properties[key] = {\n type: child.properties[1] || \"\",\n label: child.properties[2] || \"\",\n flags: child.properties[3] || \"\",\n value: getProperty70Value(child.properties)\n };\n }\n\n return { properties };\n}\n\nfunction getProperty70Value(properties)\n{\n if (properties.length <= 5)\n {\n return properties[4];\n }\n return properties.slice(4);\n}\n\nfunction readFirstChildProperty(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? child.properties[0] : undefined;\n}\n\nfunction findFirstNode(nodes, name)\n{\n return nodes.find(node => node.name === name) || null;\n}\n\nfunction getShortObjectName(fullName)\n{\n if (typeof fullName !== \"string\")\n {\n return \"\";\n }\n const\n fbxClassMarker = fullName.indexOf(\"\\u0000\\u0001\"),\n objectName = fbxClassMarker === -1 ? fullName : fullName.slice(0, fbxClassMarker),\n namespaceMarker = objectName.lastIndexOf(\"::\");\n\n return namespaceMarker === -1 ? objectName : objectName.slice(namespaceMarker + 2);\n}\n\nfunction pushIndex(index, key, value)\n{\n if (!index[key])\n {\n index[key] = [];\n }\n index[key].push(value);\n}\n\nfunction toObjectKey(value)\n{\n return value === undefined || value === null ? \"\" : String(value);\n}\n\nfunction appendAsciiArrayContinuation(stack, line, values)\n{\n const\n siblings = stack[stack.length - 1].children,\n arrayNode = siblings[siblings.length - 1];\n\n if (arrayNode?.name !== \"a\") return;\n arrayNode.properties.push(...parseAsciiProperties(line));\n if (arrayNode.properties.length > values.maxProperties)\n {\n throw new Error(`fbx: ASCII node a exceeds maxProperties (${values.maxProperties})`);\n }\n}\n\nfunction parseAsciiLine(line, values)\n{\n const match = /^([A-Za-z_][\\w.]*)\\s*:\\s*(.*)$/u.exec(line);\n if (!match)\n {\n return null;\n }\n\n let body = match[2].trim();\n const opensBlock = body.endsWith(\"{\");\n if (opensBlock)\n {\n body = body.slice(0, -1).trim();\n }\n\n const properties = body ? parseAsciiProperties(body) : [];\n if (properties.length > values.maxProperties)\n {\n throw new Error(`fbx: ASCII node ${match[1]} exceeds maxProperties (${values.maxProperties})`);\n }\n\n return {\n name: match[1],\n properties,\n propertyTypes: [],\n children: [],\n opensBlock\n };\n}\n\nfunction parseAsciiProperties(body)\n{\n return splitAsciiProperties(body).map(parseAsciiValue);\n}\n\nfunction splitAsciiProperties(body)\n{\n const parts = [];\n let current = \"\";\n let quoted = false;\n let escaped = false;\n\n for (let i = 0; i < body.length; i++)\n {\n const char = body[i];\n if (escaped)\n {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n current += char;\n continue;\n }\n if (char === \",\" && !quoted)\n {\n parts.push(current.trim());\n current = \"\";\n continue;\n }\n current += char;\n }\n\n if (current.trim())\n {\n parts.push(current.trim());\n }\n\n return parts;\n}\n\nfunction parseAsciiValue(value)\n{\n if (/^\".*\"$/u.test(value))\n {\n return value.slice(1, -1).replace(/\\\\\"/gu, \"\\\"\").replace(/\\\\\\\\/gu, \"\\\\\");\n }\n if (/^(true|false)$/iu.test(value))\n {\n return value.toLowerCase() === \"true\";\n }\n if (/^[+-]?\\d+$/u.test(value))\n {\n const number = Number(value);\n return Number.isSafeInteger(number) ? number : BigInt(value).toString();\n }\n if (/^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?$/iu.test(value))\n {\n return Number(value);\n }\n return value;\n}\n\nfunction stripAsciiComment(line)\n{\n let quoted = false;\n let escaped = false;\n for (let i = 0; i < line.length; i++)\n {\n const char = line[i];\n if (escaped)\n {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n continue;\n }\n if (char === \";\" && !quoted)\n {\n return line.slice(0, i);\n }\n }\n return line;\n}\n\nfunction isBinaryFBX(bytes)\n{\n if (bytes.byteLength < BINARY_HEADER_SIZE)\n {\n return false;\n }\n for (let i = 0; i < BINARY_SIGNATURE.length; i++)\n {\n if (bytes[i] !== BINARY_SIGNATURE.charCodeAt(i))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isAsciiFBXText(text)\n{\n return /(^|\\n)\\s*FBXHeaderExtension\\s*:/u.test(text) ||\n /(^|\\n)\\s*Objects\\s*:/u.test(text) ||\n /;\\s*FBX\\s+\\d+\\.\\d+\\.\\d+/iu.test(text);\n}\n\nfunction countAsciiRootNodes(text)\n{\n return collectAsciiRootNames(text).length;\n}\n\nfunction collectAsciiRootNames(text)\n{\n const names = [];\n let depth = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n if (line.startsWith(\"}\"))\n {\n depth = Math.max(depth - 1, 0);\n continue;\n }\n\n const match = /^([A-Za-z_][\\w.]*)\\s*:/u.exec(line);\n if (match && depth === 0)\n {\n names.push(match[1]);\n }\n if (line.endsWith(\"{\"))\n {\n depth++;\n }\n }\n\n return names;\n}\n\nfunction readAsciiVersion(text)\n{\n const direct = /FBXVersion\\s*:\\s*(\\d+)/u.exec(text);\n if (direct)\n {\n return Number(direct[1]);\n }\n\n const comment = /;\\s*FBX\\s+(\\d+)\\.(\\d+)\\.(\\d+)/iu.exec(text);\n if (!comment)\n {\n return 0;\n }\n return Number(`${comment[1]}${comment[2].padStart(2, \"0\")}${comment[3].padStart(2, \"0\")}`);\n}\n\nfunction decodeAsciiPrefix(bytes, length)\n{\n let text = \"\";\n const count = Math.min(bytes.byteLength, length);\n for (let i = 0; i < count; i++)\n {\n const byte = bytes[i];\n if (byte === 0)\n {\n break;\n }\n text += String.fromCharCode(byte);\n }\n return text;\n}\n\nfunction getBinaryNodeHeaderSize(version)\n{\n return version >= 7500 ? NODE_HEADER_64_SIZE : NODE_HEADER_32_SIZE;\n}\n\nfunction isNullRecord(bytes, offset, length)\n{\n if (offset + length > bytes.byteLength)\n {\n return false;\n }\n for (let i = 0; i < length; i++)\n {\n if (bytes[offset + i] !== 0)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction getArrayElementSize(type)\n{\n if (type === \"d\" || type === \"l\")\n {\n return 8;\n }\n if (type === \"f\" || type === \"i\")\n {\n return 4;\n }\n return 1;\n}\n\nfunction normalizeIntegerLimit(value, fieldName, readerName)\n{\n if (!Number.isInteger(value) || value < 1)\n {\n throw new TypeError(`${readerName}: ${fieldName} must be a positive integer`);\n }\n return value;\n}\n\n/**\n * Normalize a boolean reader option.\n *\n * @param {boolean|0|1} value Option value.\n * @param {string} fieldName Option name.\n * @param {string} readerName Reader name for errors.\n * @returns {boolean} Normalized boolean.\n */\nfunction normalizeBooleanOption(value, fieldName, readerName)\n{\n if (typeof value === \"boolean\")\n {\n return value;\n }\n if (value === 0 || value === 1)\n {\n return Boolean(value);\n }\n throw new TypeError(`${readerName}: ${fieldName} must be a boolean`);\n}\n\nfunction normalizeCompatibility(value, readerName)\n{\n if (value === COMPATIBILITY_SOURCE || value === COMPATIBILITY_CARBON) return value;\n throw new TypeError(\n `${readerName}: compatibility must be ${JSON.stringify(COMPATIBILITY_SOURCE)} or ${JSON.stringify(COMPATIBILITY_CARBON)}`\n );\n}\n\nfunction normalizeClasses(classes, readerName)\n{\n if (!classes)\n {\n return {};\n }\n if (typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = {};\n for (const [ key, Class ] of Object.entries(classes))\n {\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = normalizeClasses(base, readerName);\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(key, readerName);\n delete normalized[key];\n continue;\n }\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some(Class => typeof Class === \"function\");\n}\n\nfunction finiteNumber(value, feature)\n{\n const number = Number(value);\n if (!Number.isFinite(number))\n {\n throw new Error(`fbx: ${feature} contains a non-finite number`);\n }\n return number;\n}\n\nfunction integerNumber(value, feature)\n{\n const number = finiteNumber(value, feature);\n if (!Number.isInteger(number))\n {\n throw new Error(`fbx: ${feature} contains a non-integer value`);\n }\n return number;\n}\n\nfunction ensureRange(bytes, offset, length, message)\n{\n if (offset + length > bytes.byteLength)\n {\n throw new Error(message);\n }\n}\n\nfunction readString(bytes, offset, length)\n{\n ensureRange(bytes, offset, length, \"fbx: string is truncated\");\n return TEXT_DECODER.decode(bytes.subarray(offset, offset + length));\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction readU32BE(bytes, offset)\n{\n return (((bytes[offset] << 24) >>> 0) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n}\n\nfunction readI16LE(bytes, offset)\n{\n const value = bytes[offset] | (bytes[offset + 1] << 8);\n return value & 0x8000 ? value - 0x10000 : value;\n}\n\nfunction readI32LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] << 24);\n}\n\nfunction readU64LEAsNumber(bytes, offset)\n{\n const low = readU32LE(bytes, offset);\n const high = readU32LE(bytes, offset + 4);\n return high * 0x100000000 + low;\n}\n\nfunction readI64LEValue(bytes, offset)\n{\n const\n low = BigInt(readU32LE(bytes, offset)),\n high = BigInt(readU32LE(bytes, offset + 4)),\n value = BigInt.asIntN(64, low | (high << 32n)),\n number = Number(value);\n\n return Number.isSafeInteger(number) ? number : value.toString();\n}\n\nfunction readF32LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getFloat32(0, true);\n}\n\nfunction readF64LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 8).getFloat64(0, true);\n}\n"],"names":["OUTPUT_CMF","OUTPUT_GR2","OUTPUT_RAW","OUTPUT_JSON","OUTPUT_FBX_JSON","COMPATIBILITY_SOURCE","COMPATIBILITY_CARBON","CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","DEFAULT_VALUES","emit","inputType","source","flipV","compatibility","classes","maxBytes","maxNodes","maxDepth","maxProperties","maxArrayLength","BINARY_SIGNATURE","BINARY_HEADER_SIZE","NODE_HEADER_32_SIZE","NODE_HEADER_64_SIZE","ASCII_PREFIX_LENGTH","BASE64_ALPHABET","TEXT_DECODER","TextDecoder","OPTION_KEYS","DEFLATE_CODE_LENGTH_ORDER","DEFLATE_LENGTH_BASE","DEFLATE_LENGTH_EXTRA","DEFLATE_DISTANCE_BASE","DEFLATE_DISTANCE_EXTRA","TRIANGULATION_EPSILON","IDENTITY_MATRIX4","DEFAULT_ROTATION_ORDER","FBX_ROTATION_ORDERS","FBX_TICKS_PER_SECOND","CMF_VERTEX_CHANNELS","slice","FEATURE_SCAN_ROOT_NODES","SUPPORTED_GEOMETRY_CLASSES","SUPPORTED_LAYER_ELEMENTS","SUPPORTED_LAYER_MAPPINGS","SUPPORTED_LAYER_REFERENCES","SUPPORTED_MATERIAL_MAPPINGS","fixedDeflateTables","normalizeValues","base","options","readerName","TypeError","key","keys","has","JSON","stringify","baseValues","values","String","replace","toLowerCase","normalizeEmit","normalizeIntegerLimit","normalizeBooleanOption","normalizeCompatibility","hasOwn","mergeClasses","normalizeClasses","hasClasses","validateClassKey","includes","Error","join","validateClass","Class","undefined","readWithValues","input","bytes","asUint8Array","metadata","inspectWithValues","payloadType","sourceFormat","parseWithValues","readGr2WithValues","readCmfWithValues","detected","inspectBytes","mediaTypes","byteLength","parseDocumentWithValues","document","parseGr2DocumentWithValues","hydrateGr2","buildGr2FromFbxNodes","nodes","hydrateCmf","buildCanonicalCmfFromShared","buildCmfMetadata","meshes","skeletons","animations","cmfAnimations","boneIndexType","root","grannyFileSource","entries","value","push","encoding","parseBinaryDocument","parseAsciiDocument","error","code","readBinaryTargetNodes","readAsciiTargetNodes","probeSupportWithValues","recognized","diagnostics","inspectFbxFeatureSupport","warnings","errors","format","supported","confidence","preferredOutput","reason","variants","kind","codec","message","targetNames","collectFbxFeatureSupport","objectsNode","findFirstNode","objectIndex","indexObjectNodes","connections","readConnections","collectGeometryFeatureWarnings","collectLayerElementFeatureWarnings","collectSkinFeatureWarnings","collectBlendShapeFeatureWarnings","collectAnimationFeatureWarnings","geometry","list","filter","entry","nodeName","className","addWarning","objectLabel","node","children","layer","child","name","startsWith","collectMaterialLayerFeatureWarnings","collectVertexLayerFeatureWarnings","mapping","readFirstChildProperty","reference","skins","connectedChildObjects","isSkinDeformer","length","skin","clusters","isClusterDeformer","cluster","bone","clusterBone","indexes","readChildArray","weights","hasPositiveClusterWeight","hasControlPointInfluenceOverflow","buildSkinClusterRecords","fullName","records","controlPointInfluences","buildControlPointInfluences","influences","influence","weight","channels","isBlendShapeChannel","channel","shapes","readBlendShapeChannelShapes","isUnsupportedBlendShapeInBetween","stack","layers","validateAnimationLayer","curve","keyCount","readAnimationCurveInterpolation","isBinaryFBX","inspectBinaryBytes","text","decodeAsciiPrefix","ascii","isAsciiFBXText","version","readAsciiVersion","signature","rootNodeCount","countAsciiRootNodes","rootNodeNames","collectAsciiRootNames","isFBX","toJsonValue","Uint8Array","ArrayBuffer","isView","type","constructor","isArray","map","output","readU32LE","headerSize","getBinaryNodeHeaderSize","offset","isNullRecord","header","readBinaryNodeHeader","endOffset","readString","nameOffset","nameLength","nodeCount","result","readBinaryNode","count","buildFbxRoot","depth","propertyCount","cursor","propertiesOffset","properties","propertyTypes","i","readBinaryProperty","propertyEnd","propertyListLength","large","readU64LEAsNumber","Number","isSafeInteger","ensureRange","fromCharCode","readI16LE","readI32LE","readF32LE","readF64LE","readI64LEValue","readBinaryBlobProperty","readBinaryArrayProperty","dataOffset","subarray","readUncompressedArray","expectedByteLength","getArrayElementSize","expanded","inflateZlib","arrayType","byteOffset","compressed","expected","Float32Array","Float64Array","Int32Array","expectedLength","cmf","flg","expectedAdler","readU32BE","inflateDeflate","actualAdler","adler32","reader","DeflateBitReader","state","finalBlock","readBits","blockType","inflateStoredBlock","tables","getFixedDeflateTables","inflateHuffmanBlock","literalLength","distance","readDynamicDeflateTables","alignByte","readAlignedU16LE","inverseLength","writeInflatedByte","readAlignedByte","literalLengthTable","distanceTable","symbol","decode","lengthIndex","distanceSymbol","copyInflatedBytes","literalLengths","fill","DeflateHuffmanTable","literalLengthCount","distanceCount","codeLengthCount","codeLengthLengths","codeLengthTable","totalCount","lengths","repeatCodeLength","bitBuffer","bitCount","shift","remaining","take","Math","min","low","high","maxBits","counts","max","nextCodes","bits","reversed","reverseBits","table","rawLine","split","line","stripAsciiComment","trim","pop","parseAsciiLine","appendAsciiArrayContinuation","opensBlock","collecting","isRoot","parent","sceneTransform","buildSceneTransform","modelWorldCache","Map","skeletonContext","buildSkeletonContext","owners","connectedParentObjects","owner","buildGr2MeshFromGeometry","readCmfAnimations","grannyFileFormatRevision","models","buildGr2Models","skeleton","cmfSkeleton","buildGr2Animations","controlPoints","requireChildArray","polygonVertexIndex","decoded","decodePolygonCorners","meshTransform","buildMeshGeometryToWorld","positions","transformPoints","layerChannels","readGeometryLayerChannels","normal","explicitTangent","tangent","explicitBinormal","binormal","texcoord0","polygonTriangles","orientPolygonTriangles","triangulatePolygonList","polygons","isReflectedTransform","triangleFaces","flattenPolygonTriangles","generateBaseTangents","generateBaseBinormals","materialSelection","readPolygonMaterials","indices","buildIndexGroups","readSkinning","morphTargets","readMorphTargets","bounds","computeBounds","vertex","createGr2Vertex","blendIndice","blendWeight","deriveIndexedBinormals","hasArrayValues","some","target","cleanNumericArray","generateNormals","meshNameFromFbx","minBounds","maxBounds","boneBindings","match","exec","binormalName","find","emptySkinning","clusterRecords","boneKeys","record","boneKey","outputInfluences","corners","corner","normalizeInfluences","get","controlPointIndex","buildBoneBindingsFromInfluences","findSkinSkeletonIndex","boneIndex","generateTangents","generateBiNormals","basePositions","baseVertex","blendShapes","deformer","targets","blendShape","shape","buildMorphTarget","vertices","controlTargetPositions","integerNumber","targetOffset","controlOffset","finiteNumber","vertexChannels","buildMorphTargetVertexChannels","dataIsDeltas","maxDisplacement","computeMaxDisplacement","readMorphTargetShapeNormals","readMorphTargetCustomNormals","byControlPoint","index","set","deltas","transformDirectionDeltas","encoded","readMorphTargetCustomNormalString","transformDirections","decodeBase64Float32Vector3Array","propertyName","readProperties70","vertexCount","feature","decodeBase64Bytes","view","DataView","buffer","getFloat32","char","test","indexOf","targetPositions","hypot","cleanFloat","morphTargetNames","buildMorphTargetNameSet","boneTargets","buildCmfBoneTargetMap","animation","readCmfAnimation","reverse","names","mesh","add","bones","parents","curveNodeParents","curveNodes","uniqueEntries","flatMap","curveNode","readMorphAnimationRecords","readRootPropertyMorphAnimationRecords","boneRecord","readBoneAnimationRecord","compatibleRecords","bakeCarbonBoneAnimationRecords","normalizedRecords","deduplicateMorphAnimationRecords","stackTimeSpan","readAnimationStackTimeSpan","ticks","tick","startTick","stopTick","curves","duration","sourceCurve","interpolation","carbonLinearizeStepCurve","valueDimension","knots","curveValues","curveIndex","knot","knotType","valueType","knotCount","packFloat32Values","targetType","dimension","interpolations","propertyNumber","start","stop","Infinity","readMorphAnimationTargets","readMorphAnimationCurve","targetConnection","connection","relation","childKey","isBoneAnimationProperty","property","parentKey","isBoneModel","byId","isUserDefinedNumericProperty","size","readAnyScalarAnimationCurve","morphs","previous","sameScalarAnimationCurve","left","right","every","abs","isMorphAnimationProperty","readBlendShapeChannelMorphNames","Boolean","readBlendShapeChannelFullWeights","scale","predicate","item","animationCurveAxis","readScalarAnimationCurve","keyValueFloat","keyValue","valueFeature","readAnimationCurveInterpolations","pairs","time","sort","a","b","sortedInterpolations","pair","modes","flags","referenceCounts","repeat","flag","numeric","mode","normalizeBoneAnimationProperty","vectorCurve","readVectorAnimationCurve","animationCurveNodeFallback","boneAnimationFallback","_bone","_boneTarget","_property","_vectorCurve","packBonePositionValues","relativeRootPositions","baked","packBoneRotationCurve","relativeRootRotations","morphRecords","groups","group","boneOrder","orderedGroups","fallback","position","rotation","allTicks","forEach","rotationCurve","rotationTicks","firstTick","positionCurves","positionTicks","modelTransformCanMovePivot","sampleTransform","sample","local","composeModelTransform","translation","sampleVectorAnimationCurve","before","decomposeMatrix4","transformMatrixScene","positionSamples","animationSampleDescriptors","rotationSamples","scaleCurve","scaleSamples","cleanVector3","rotations","scales","normalizeQuaternionSeries","propertyVector3","ordered","samples","hasStepTransition","first","lastIndexOf","axis","scalar","_","sampleScalarAnimationCurve","origin","initialInverse","quaternionInverse","quaternionMultiply","lengthSquared","reduce","sum","component","ax","ay","az","aw","bx","by","bz","bw","axes","components","sourceTicks","uniqueSortedTicks","sourceValues","intervalModes","allStep","flat","firstExact","lastExact","amount","transformScenePoint","packBoneRotationValues","matrix","transformed","quaternions","euler","quaternion","sourceIndex","sourceStart","sourceEnd","appendSegment","end","alpha0","alpha1","quaternionSegmentMidpointTick","authoredTurnRequiresSubdivision","needsSubdivision","quaternionSegmentNeedsSubdivision","_tick","alpha","interpolated","normalizedLerpQuaternion","quaternionAngularDifference","middle","definition","seen","unique","setFloat32","recordsByBone","existing","boneName","best","total","bindingMatrix","buildBoneBindingMatrix","bindingPositions","vertexIndex","transformPointMatrix4","invertMatrix4","skeletonIndex","boneToSkeletonIndex","roots","bindPoseMatrices","readBindPoseMatrices","visited","buildSkeleton","componentKeys","collectBone","pending","recordIndexByKey","progressed","parentIndex","authoredLocalMatrix","buildBoneLocalMatrix","authoredTransform","transform","localMatrix","composeSimpleTransform","recordIndex","splice","authoredName","CjsSkeletonName","invBindTransforms","buildInvBindTransforms","gr2Skeleton","buildGr2Bone","restTransforms","boneMasks","buildCmfBoneMasks","masks","byName","isUserDefinedNumericPropertyDefinition","mask","clamp01","meshBindings","meshIndex","orientation","scaleShear","buildModelTransformState","nodeToWorld","scaleMatrixTranslation","buildModelLocalTransform","poseMatrix","cleanMatrix4","parentInvTransform","multiplyMatrix4","transposeMatrix4","matrices","pose","poseNode","nodeId","toObjectKey","globalSettingsNode","unitScaleFactor","axisVector","up","forward","buildModelGeometricTransform","model","cache","buildModelLocalState","parentState","composeInheritedModelState","unscaledNodeToWorld","unscaledMatrix","inheritScale","inheritType","multiplyVector3","overrides","rotationOrder","propertyRotationOrder","rotationPivot","scalingPivot","multiplyMatrix4List","translationMatrix4","rotationMatrix4","inverseRotationMatrix4","negateVector3","scaleMatrix4","rotationDegrees","point","vector","transformVectorMatrix4","normalizeVector3","transformSceneVector","dotVector3","column0","column1","column2","rotationMatrix","matrixToQuaternion","m00","m01","m02","m10","m11","m12","m20","m21","m22","trace","x","y","z","w","s","sqrt","normalizeQuaternion","sign","order","radians","degreesToRadians","axisIndex","axisRotationMatrix4","next","c","cos","sin","invertSharedMatrix4","PI","byType","summary","readObjectEntry","pushIndex","parentsByChild","childrenByParent","childName","readNodeArray","arrayPropertyToNumbers","asciiArray","controlPointCount","polygon","rawValue","raw","outputIndex","polygonIndex","polygonCornerIndex","readLayerElementChannel","geometryNode","layerName","layerIndex","valueNames","indexNames","elementSize","findLayerElementNode","readFirstChildArray","mappedIndex","resolveLayerMappingIndex","directIndex","resolveLayerReferenceIndex","appendLayerElement","spec","channelName","width","directional","usageIndex","layerUsageIndices","flipTexcoordV","routed","typedIndex","direct","isInteger","texcoord","flipped","id","isFinite","findRoutedLayerElementNode","layerNodes","layerNode","childNames","slots","slot","bytesPerIndex","faces","maxIndex","triangles","polygonSlots","triangle","triangulatePolygon","projected","projectPolygonTo2D","triangulatePolygonFan","area","signedArea2D","isConvexPolygon2D","guard","clipped","current","isEar2D","reflected","matrixDeterminant","determinant3","sceneDeterminant","a00","a01","a02","a10","a11","a12","a20","a21","a22","computePolygonNormal","absX","absY","absZ","dropAxis","x0","y0","z0","x1","y1","z1","points","cross","cross2D","pointIndex","pointInTriangle2D","ab","bc","ca","hasNegative","hasPositive","polygonCount","readMaterialSlots","materials","material","texcoord1","color0","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","binding","hydrateGr2Model","hydrateGr2Animation","trackGroups","trackGroup","transformTracks","track","vectorTracks","valueCurve","hydrateGr2Skeleton","fields","__hydrationOptions","populate","instance","SetValues","skipUpdate","skipEvents","create","defineProperty","enumerable","headerNode","definitionsNode","connectionsNode","readHeader","globalSettings","definitions","readDefinitions","objects","readObjects","fbxHeaderVersion","fbxVersion","creator","objectTypes","readObjectType","getShortObjectName","childCount","attributeNames","childId","parentId","properties70","label","getProperty70Value","fbxClassMarker","objectName","namespaceMarker","siblings","arrayNode","parseAsciiProperties","body","endsWith","splitAsciiProperties","parseAsciiValue","parts","quoted","escaped","number","BigInt","toString","charCodeAt","comment","padStart","byte","fieldName","normalized","asIntN","getFloat64"],"mappings":"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"}