@aura3d/assets 1.0.6

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 (324) hide show
  1. package/README.md +17 -0
  2. package/dist/AdvancedAssetCorpus.d.ts +124 -0
  3. package/dist/AdvancedAssetCorpus.d.ts.map +1 -0
  4. package/dist/AdvancedAssetCorpus.js +266 -0
  5. package/dist/AdvancedAssetCorpus.js.map +1 -0
  6. package/dist/AssetBundleCacheFixtures.d.ts +62 -0
  7. package/dist/AssetBundleCacheFixtures.d.ts.map +1 -0
  8. package/dist/AssetBundleCacheFixtures.js +222 -0
  9. package/dist/AssetBundleCacheFixtures.js.map +1 -0
  10. package/dist/AssetCache.d.ts +21 -0
  11. package/dist/AssetCache.d.ts.map +1 -0
  12. package/dist/AssetCache.js +54 -0
  13. package/dist/AssetCache.js.map +1 -0
  14. package/dist/AssetCompatibility.d.ts +54 -0
  15. package/dist/AssetCompatibility.d.ts.map +1 -0
  16. package/dist/AssetCompatibility.js +122 -0
  17. package/dist/AssetCompatibility.js.map +1 -0
  18. package/dist/AssetCorpus.d.ts +88 -0
  19. package/dist/AssetCorpus.d.ts.map +1 -0
  20. package/dist/AssetCorpus.js +215 -0
  21. package/dist/AssetCorpus.js.map +1 -0
  22. package/dist/AssetDependencyGraph.d.ts +12 -0
  23. package/dist/AssetDependencyGraph.d.ts.map +1 -0
  24. package/dist/AssetDependencyGraph.js +66 -0
  25. package/dist/AssetDependencyGraph.js.map +1 -0
  26. package/dist/AssetHandle.d.ts +26 -0
  27. package/dist/AssetHandle.d.ts.map +1 -0
  28. package/dist/AssetHandle.js +53 -0
  29. package/dist/AssetHandle.js.map +1 -0
  30. package/dist/AssetImportPreflight.d.ts +43 -0
  31. package/dist/AssetImportPreflight.d.ts.map +1 -0
  32. package/dist/AssetImportPreflight.js +117 -0
  33. package/dist/AssetImportPreflight.js.map +1 -0
  34. package/dist/AssetInspection.d.ts +183 -0
  35. package/dist/AssetInspection.d.ts.map +1 -0
  36. package/dist/AssetInspection.js +397 -0
  37. package/dist/AssetInspection.js.map +1 -0
  38. package/dist/AssetLoader.d.ts +26 -0
  39. package/dist/AssetLoader.d.ts.map +1 -0
  40. package/dist/AssetLoader.js +12 -0
  41. package/dist/AssetLoader.js.map +1 -0
  42. package/dist/AssetManager.d.ts +37 -0
  43. package/dist/AssetManager.d.ts.map +1 -0
  44. package/dist/AssetManager.js +161 -0
  45. package/dist/AssetManager.js.map +1 -0
  46. package/dist/AssetRegistry.d.ts +10 -0
  47. package/dist/AssetRegistry.d.ts.map +1 -0
  48. package/dist/AssetRegistry.js +34 -0
  49. package/dist/AssetRegistry.js.map +1 -0
  50. package/dist/AssetRenderDefaults.d.ts +13 -0
  51. package/dist/AssetRenderDefaults.d.ts.map +1 -0
  52. package/dist/AssetRenderDefaults.js +23 -0
  53. package/dist/AssetRenderDefaults.js.map +1 -0
  54. package/dist/AudioLoader.d.ts +17 -0
  55. package/dist/AudioLoader.d.ts.map +1 -0
  56. package/dist/AudioLoader.js +23 -0
  57. package/dist/AudioLoader.js.map +1 -0
  58. package/dist/BlenderExportValidation.d.ts +64 -0
  59. package/dist/BlenderExportValidation.d.ts.map +1 -0
  60. package/dist/BlenderExportValidation.js +143 -0
  61. package/dist/BlenderExportValidation.js.map +1 -0
  62. package/dist/CarConceptMaterialStability.d.ts +28 -0
  63. package/dist/CarConceptMaterialStability.d.ts.map +1 -0
  64. package/dist/CarConceptMaterialStability.js +1308 -0
  65. package/dist/CarConceptMaterialStability.js.map +1 -0
  66. package/dist/EXRLoader.d.ts +2 -0
  67. package/dist/EXRLoader.d.ts.map +1 -0
  68. package/dist/EXRLoader.js +2 -0
  69. package/dist/EXRLoader.js.map +1 -0
  70. package/dist/ExternalParityGLTFCorpus.d.ts +39 -0
  71. package/dist/ExternalParityGLTFCorpus.d.ts.map +1 -0
  72. package/dist/ExternalParityGLTFCorpus.js +32 -0
  73. package/dist/ExternalParityGLTFCorpus.js.map +1 -0
  74. package/dist/GLTFAnimationRuntime.d.ts +243 -0
  75. package/dist/GLTFAnimationRuntime.d.ts.map +1 -0
  76. package/dist/GLTFAnimationRuntime.js +954 -0
  77. package/dist/GLTFAnimationRuntime.js.map +1 -0
  78. package/dist/GLTFCompressionDecoders.d.ts +42 -0
  79. package/dist/GLTFCompressionDecoders.d.ts.map +1 -0
  80. package/dist/GLTFCompressionDecoders.js +99 -0
  81. package/dist/GLTFCompressionDecoders.js.map +1 -0
  82. package/dist/GLTFExtensionSupport.d.ts +33 -0
  83. package/dist/GLTFExtensionSupport.d.ts.map +1 -0
  84. package/dist/GLTFExtensionSupport.js +85 -0
  85. package/dist/GLTFExtensionSupport.js.map +1 -0
  86. package/dist/GLTFLoader.d.ts +361 -0
  87. package/dist/GLTFLoader.d.ts.map +1 -0
  88. package/dist/GLTFLoader.js +2735 -0
  89. package/dist/GLTFLoader.js.map +1 -0
  90. package/dist/GLTFRenderResources.d.ts +162 -0
  91. package/dist/GLTFRenderResources.d.ts.map +1 -0
  92. package/dist/GLTFRenderResources.js +1684 -0
  93. package/dist/GLTFRenderResources.js.map +1 -0
  94. package/dist/HDRLoader.d.ts +2 -0
  95. package/dist/HDRLoader.d.ts.map +1 -0
  96. package/dist/HDRLoader.js +2 -0
  97. package/dist/HDRLoader.js.map +1 -0
  98. package/dist/ImageLoader.d.ts +15 -0
  99. package/dist/ImageLoader.d.ts.map +1 -0
  100. package/dist/ImageLoader.js +36 -0
  101. package/dist/ImageLoader.js.map +1 -0
  102. package/dist/ImportPipeline.d.ts +39 -0
  103. package/dist/ImportPipeline.d.ts.map +1 -0
  104. package/dist/ImportPipeline.js +105 -0
  105. package/dist/ImportPipeline.js.map +1 -0
  106. package/dist/KTX2BasisTextureTranscoder.d.ts +9 -0
  107. package/dist/KTX2BasisTextureTranscoder.d.ts.map +1 -0
  108. package/dist/KTX2BasisTextureTranscoder.js +178 -0
  109. package/dist/KTX2BasisTextureTranscoder.js.map +1 -0
  110. package/dist/LoadContext.d.ts +20 -0
  111. package/dist/LoadContext.d.ts.map +1 -0
  112. package/dist/LoadContext.js +42 -0
  113. package/dist/LoadContext.js.map +1 -0
  114. package/dist/MaterialLoader.d.ts +17 -0
  115. package/dist/MaterialLoader.d.ts.map +1 -0
  116. package/dist/MaterialLoader.js +138 -0
  117. package/dist/MaterialLoader.js.map +1 -0
  118. package/dist/MeshOptimization.d.ts +20 -0
  119. package/dist/MeshOptimization.d.ts.map +1 -0
  120. package/dist/MeshOptimization.js +65 -0
  121. package/dist/MeshOptimization.js.map +1 -0
  122. package/dist/OBJLoader.d.ts +13 -0
  123. package/dist/OBJLoader.d.ts.map +1 -0
  124. package/dist/OBJLoader.js +492 -0
  125. package/dist/OBJLoader.js.map +1 -0
  126. package/dist/SceneAnalysisFixtures.d.ts +100 -0
  127. package/dist/SceneAnalysisFixtures.d.ts.map +1 -0
  128. package/dist/SceneAnalysisFixtures.js +331 -0
  129. package/dist/SceneAnalysisFixtures.js.map +1 -0
  130. package/dist/SceneLoader.d.ts +27 -0
  131. package/dist/SceneLoader.d.ts.map +1 -0
  132. package/dist/SceneLoader.js +40 -0
  133. package/dist/SceneLoader.js.map +1 -0
  134. package/dist/ShaderLoader.d.ts +12 -0
  135. package/dist/ShaderLoader.d.ts.map +1 -0
  136. package/dist/ShaderLoader.js +18 -0
  137. package/dist/ShaderLoader.js.map +1 -0
  138. package/dist/TextureLoader.d.ts +16 -0
  139. package/dist/TextureLoader.d.ts.map +1 -0
  140. package/dist/TextureLoader.js +17 -0
  141. package/dist/TextureLoader.js.map +1 -0
  142. package/dist/TexturePipeline.d.ts +24 -0
  143. package/dist/TexturePipeline.d.ts.map +1 -0
  144. package/dist/TexturePipeline.js +64 -0
  145. package/dist/TexturePipeline.js.map +1 -0
  146. package/dist/TextureStreaming.d.ts +10 -0
  147. package/dist/TextureStreaming.d.ts.map +1 -0
  148. package/dist/TextureStreaming.js +11 -0
  149. package/dist/TextureStreaming.js.map +1 -0
  150. package/dist/WorkerAssetJobs.d.ts +18 -0
  151. package/dist/WorkerAssetJobs.d.ts.map +1 -0
  152. package/dist/WorkerAssetJobs.js +37 -0
  153. package/dist/WorkerAssetJobs.js.map +1 -0
  154. package/dist/advanced-gallery/index.d.ts +3 -0
  155. package/dist/advanced-gallery/index.d.ts.map +1 -0
  156. package/dist/advanced-gallery/index.js +2 -0
  157. package/dist/advanced-gallery/index.js.map +1 -0
  158. package/dist/asset-corpus/GLTFSceneLoader.d.ts +3 -0
  159. package/dist/asset-corpus/GLTFSceneLoader.d.ts.map +1 -0
  160. package/dist/asset-corpus/GLTFSceneLoader.js +2 -0
  161. package/dist/asset-corpus/GLTFSceneLoader.js.map +1 -0
  162. package/dist/asset-corpus/ProductionAssetCorpus.d.ts +89 -0
  163. package/dist/asset-corpus/ProductionAssetCorpus.d.ts.map +1 -0
  164. package/dist/asset-corpus/ProductionAssetCorpus.js +116 -0
  165. package/dist/asset-corpus/ProductionAssetCorpus.js.map +1 -0
  166. package/dist/asset-corpus/ProductionAssetPipeline.d.ts +3 -0
  167. package/dist/asset-corpus/ProductionAssetPipeline.d.ts.map +1 -0
  168. package/dist/asset-corpus/ProductionAssetPipeline.js +3 -0
  169. package/dist/asset-corpus/ProductionAssetPipeline.js.map +1 -0
  170. package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts +65 -0
  171. package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -0
  172. package/dist/asset-corpus/ProductionGLTFRenderPipeline.js +110 -0
  173. package/dist/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -0
  174. package/dist/asset-corpus/ProductionHDRTextureLoader.d.ts +8 -0
  175. package/dist/asset-corpus/ProductionHDRTextureLoader.d.ts.map +1 -0
  176. package/dist/asset-corpus/ProductionHDRTextureLoader.js +2 -0
  177. package/dist/asset-corpus/ProductionHDRTextureLoader.js.map +1 -0
  178. package/dist/asset-corpus/ProductionKTX2TextureLoader.d.ts +7 -0
  179. package/dist/asset-corpus/ProductionKTX2TextureLoader.d.ts.map +1 -0
  180. package/dist/asset-corpus/ProductionKTX2TextureLoader.js +2 -0
  181. package/dist/asset-corpus/ProductionKTX2TextureLoader.js.map +1 -0
  182. package/dist/asset-corpus/ProductionTextureLoader.d.ts +7 -0
  183. package/dist/asset-corpus/ProductionTextureLoader.d.ts.map +1 -0
  184. package/dist/asset-corpus/ProductionTextureLoader.js +2 -0
  185. package/dist/asset-corpus/ProductionTextureLoader.js.map +1 -0
  186. package/dist/asset-corpus/index.d.ts +10 -0
  187. package/dist/asset-corpus/index.d.ts.map +1 -0
  188. package/dist/asset-corpus/index.js +8 -0
  189. package/dist/asset-corpus/index.js.map +1 -0
  190. package/dist/browser-index.d.ts +48 -0
  191. package/dist/browser-index.d.ts.map +1 -0
  192. package/dist/browser-index.js +26 -0
  193. package/dist/browser-index.js.map +1 -0
  194. package/dist/createRenderableScene.d.ts +23 -0
  195. package/dist/createRenderableScene.d.ts.map +1 -0
  196. package/dist/createRenderableScene.js +94 -0
  197. package/dist/createRenderableScene.js.map +1 -0
  198. package/dist/index.d.ts +82 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +45 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/loadRenderableAsset.d.ts +16 -0
  203. package/dist/loadRenderableAsset.d.ts.map +1 -0
  204. package/dist/loadRenderableAsset.js +50 -0
  205. package/dist/loadRenderableAsset.js.map +1 -0
  206. package/dist/loaders/CubeTextureLoader.d.ts +4 -0
  207. package/dist/loaders/CubeTextureLoader.d.ts.map +1 -0
  208. package/dist/loaders/CubeTextureLoader.js +9 -0
  209. package/dist/loaders/CubeTextureLoader.js.map +1 -0
  210. package/dist/loaders/EXRLoader.d.ts +4 -0
  211. package/dist/loaders/EXRLoader.d.ts.map +1 -0
  212. package/dist/loaders/EXRLoader.js +10 -0
  213. package/dist/loaders/EXRLoader.js.map +1 -0
  214. package/dist/loaders/HDRLoader.d.ts +4 -0
  215. package/dist/loaders/HDRLoader.d.ts.map +1 -0
  216. package/dist/loaders/HDRLoader.js +7 -0
  217. package/dist/loaders/HDRLoader.js.map +1 -0
  218. package/dist/loaders/KTX2Loader.d.ts +4 -0
  219. package/dist/loaders/KTX2Loader.d.ts.map +1 -0
  220. package/dist/loaders/KTX2Loader.js +7 -0
  221. package/dist/loaders/KTX2Loader.js.map +1 -0
  222. package/dist/loaders/LoaderDiagnostics.d.ts +18 -0
  223. package/dist/loaders/LoaderDiagnostics.d.ts.map +1 -0
  224. package/dist/loaders/LoaderDiagnostics.js +18 -0
  225. package/dist/loaders/LoaderDiagnostics.js.map +1 -0
  226. package/dist/loaders/MTLLoader.d.ts +10 -0
  227. package/dist/loaders/MTLLoader.d.ts.map +1 -0
  228. package/dist/loaders/MTLLoader.js +14 -0
  229. package/dist/loaders/MTLLoader.js.map +1 -0
  230. package/dist/loaders/OBJLoader.d.ts +12 -0
  231. package/dist/loaders/OBJLoader.d.ts.map +1 -0
  232. package/dist/loaders/OBJLoader.js +16 -0
  233. package/dist/loaders/OBJLoader.js.map +1 -0
  234. package/dist/loaders/TextureLoader.d.ts +6 -0
  235. package/dist/loaders/TextureLoader.d.ts.map +1 -0
  236. package/dist/loaders/TextureLoader.js +11 -0
  237. package/dist/loaders/TextureLoader.js.map +1 -0
  238. package/dist/loaders/ThreeCompatGLTFLoader.d.ts +10 -0
  239. package/dist/loaders/ThreeCompatGLTFLoader.d.ts.map +1 -0
  240. package/dist/loaders/ThreeCompatGLTFLoader.js +13 -0
  241. package/dist/loaders/ThreeCompatGLTFLoader.js.map +1 -0
  242. package/dist/loaders/index.d.ts +15 -0
  243. package/dist/loaders/index.d.ts.map +1 -0
  244. package/dist/loaders/index.js +10 -0
  245. package/dist/loaders/index.js.map +1 -0
  246. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.d.ts +34 -0
  247. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.d.ts.map +1 -0
  248. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.js +16 -0
  249. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.js.map +1 -0
  250. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.d.ts +29 -0
  251. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.d.ts.map +1 -0
  252. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.js +33 -0
  253. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.js.map +1 -0
  254. package/dist/threejs-example-parity/index.d.ts +20 -0
  255. package/dist/threejs-example-parity/index.d.ts.map +1 -0
  256. package/dist/threejs-example-parity/index.js +218 -0
  257. package/dist/threejs-example-parity/index.js.map +1 -0
  258. package/package.json +23 -0
  259. package/src/AdvancedAssetCorpus.ts +454 -0
  260. package/src/AssetBundleCacheFixtures.ts +290 -0
  261. package/src/AssetCache.ts +76 -0
  262. package/src/AssetCompatibility.ts +224 -0
  263. package/src/AssetCorpus.ts +329 -0
  264. package/src/AssetDependencyGraph.ts +83 -0
  265. package/src/AssetHandle.ts +74 -0
  266. package/src/AssetImportPreflight.ts +179 -0
  267. package/src/AssetInspection.ts +706 -0
  268. package/src/AssetLoader.ts +36 -0
  269. package/src/AssetManager.ts +211 -0
  270. package/src/AssetRegistry.ts +44 -0
  271. package/src/AssetRenderDefaults.ts +36 -0
  272. package/src/AudioLoader.ts +41 -0
  273. package/src/BlenderExportValidation.ts +227 -0
  274. package/src/CarConceptMaterialStability.ts +1405 -0
  275. package/src/EXRLoader.ts +1 -0
  276. package/src/ExternalParityGLTFCorpus.ts +65 -0
  277. package/src/GLTFAnimationRuntime.ts +1221 -0
  278. package/src/GLTFCompressionDecoders.ts +190 -0
  279. package/src/GLTFExtensionSupport.ts +138 -0
  280. package/src/GLTFLoader.ts +4001 -0
  281. package/src/GLTFRenderResources.ts +2105 -0
  282. package/src/HDRLoader.ts +1 -0
  283. package/src/ImageLoader.ts +52 -0
  284. package/src/ImportPipeline.ts +148 -0
  285. package/src/KTX2BasisTextureTranscoder.ts +224 -0
  286. package/src/LoadContext.ts +60 -0
  287. package/src/MaterialLoader.ts +166 -0
  288. package/src/MeshOptimization.ts +93 -0
  289. package/src/OBJLoader.ts +551 -0
  290. package/src/SceneAnalysisFixtures.ts +438 -0
  291. package/src/SceneLoader.ts +62 -0
  292. package/src/ShaderLoader.ts +30 -0
  293. package/src/TextureLoader.ts +30 -0
  294. package/src/TexturePipeline.ts +96 -0
  295. package/src/TextureStreaming.ts +20 -0
  296. package/src/WorkerAssetJobs.ts +56 -0
  297. package/src/advanced-gallery/index.ts +18 -0
  298. package/src/asset-corpus/GLTFSceneLoader.ts +9 -0
  299. package/src/asset-corpus/ProductionAssetCorpus.ts +230 -0
  300. package/src/asset-corpus/ProductionAssetPipeline.ts +5 -0
  301. package/src/asset-corpus/ProductionGLTFRenderPipeline.ts +182 -0
  302. package/src/asset-corpus/ProductionHDRTextureLoader.ts +2 -0
  303. package/src/asset-corpus/ProductionKTX2TextureLoader.ts +2 -0
  304. package/src/asset-corpus/ProductionTextureLoader.ts +2 -0
  305. package/src/asset-corpus/index.ts +29 -0
  306. package/src/browser-index.ts +224 -0
  307. package/src/createRenderableScene.ts +128 -0
  308. package/src/index.ts +317 -0
  309. package/src/loadRenderableAsset.ts +67 -0
  310. package/src/loaders/CubeTextureLoader.ts +8 -0
  311. package/src/loaders/EXRLoader.ts +10 -0
  312. package/src/loaders/HDRLoader.ts +7 -0
  313. package/src/loaders/KTX2Loader.ts +7 -0
  314. package/src/loaders/LoaderDiagnostics.ts +36 -0
  315. package/src/loaders/MTLLoader.ts +20 -0
  316. package/src/loaders/OBJLoader.ts +24 -0
  317. package/src/loaders/TextureLoader.ts +14 -0
  318. package/src/loaders/ThreeCompatGLTFLoader.ts +19 -0
  319. package/src/loaders/index.ts +14 -0
  320. package/src/threejs-compatibility/ThreeCompatAssetProvenance.ts +51 -0
  321. package/src/threejs-compatibility/ThreeCompatAssetRegistry.ts +61 -0
  322. package/src/threejs-example-parity/index.ts +262 -0
  323. package/tests/assets.test.ts +311 -0
  324. package/tsconfig.json +7 -0
@@ -0,0 +1,492 @@
1
+ import { GLTFLoader } from "./GLTFLoader.js";
2
+ export class OBJLoader {
3
+ type = "obj";
4
+ gltfLoader;
5
+ innerAssets = new WeakMap();
6
+ constructor(gltfLoader = new GLTFLoader()) {
7
+ this.gltfLoader = gltfLoader;
8
+ }
9
+ canLoad(request) {
10
+ return request.type === "obj" || /\.obj(?:[?#]|$)/i.test(request.url) || request.url.startsWith("data:model/obj") || request.url.startsWith("data:text/plain");
11
+ }
12
+ async load(request, context) {
13
+ context.throwIfAborted(request.url);
14
+ const source = await loadOBJText(request, context);
15
+ context.throwIfAborted(request.url);
16
+ const parsed = parseOBJ(source, objNameFromUrl(request.url));
17
+ const materials = await loadOBJMaterialDefinitions(request, parsed, context);
18
+ const gltfUrl = createGLTFDataUrl(parsed, materials);
19
+ const inner = await this.gltfLoader.load({ url: gltfUrl, type: "gltf", signal: request.signal, onProgress: request.onProgress }, context);
20
+ const wrapped = wrapOBJAsset(request.url, inner, parsed);
21
+ this.innerAssets.set(wrapped, inner);
22
+ return wrapped;
23
+ }
24
+ dispose(asset) {
25
+ this.gltfLoader.dispose(this.innerAssets.get(asset) ?? asset);
26
+ }
27
+ }
28
+ function wrapOBJAsset(url, inner, parsed) {
29
+ const loaderDiagnostics = augmentDiagnostics(inner.loaderDiagnostics, parsed);
30
+ const wrapped = {
31
+ url,
32
+ get disposed() {
33
+ return inner.disposed;
34
+ },
35
+ loaderDiagnostics,
36
+ images: inner.images,
37
+ textures: inner.textures,
38
+ materials: inner.materials,
39
+ materialVariants: inner.materialVariants,
40
+ scenes: inner.scenes,
41
+ defaultScene: inner.defaultScene,
42
+ meshes: inner.meshes,
43
+ cameras: inner.cameras,
44
+ lights: inner.lights,
45
+ skins: inner.skins,
46
+ animations: inner.animations,
47
+ createScene: (options) => inner.createScene(options),
48
+ toJSON: () => ({
49
+ ...inner.toJSON(),
50
+ url,
51
+ loaderDiagnostics
52
+ }),
53
+ __objInnerAsset: inner
54
+ };
55
+ return wrapped;
56
+ }
57
+ function augmentDiagnostics(diagnostics, parsed) {
58
+ const features = new Set(diagnostics.features);
59
+ features.add("obj");
60
+ features.add("obj-native-import");
61
+ features.add("obj-triangulated-faces");
62
+ if (parsed.source.generatedNormals)
63
+ features.add("obj-generated-normals");
64
+ if (parsed.source.texcoordCount > 0)
65
+ features.add("obj-texcoords");
66
+ if (parsed.source.normalCount > 0)
67
+ features.add("obj-normals");
68
+ if (parsed.materialLibraries.length > 0)
69
+ features.add("obj-mtllib");
70
+ if (parsed.materialNames.length > 0)
71
+ features.add("obj-usemtl");
72
+ if (parsed.materialNames.length > 1)
73
+ features.add("obj-multi-material");
74
+ return {
75
+ ...diagnostics,
76
+ features: [...features].sort()
77
+ };
78
+ }
79
+ async function loadOBJText(request, context) {
80
+ if (request.url.startsWith("data:")) {
81
+ const bytes = decodeOBJDataUri(request.url);
82
+ reportProgress(request, "document", bytes.byteLength, bytes.byteLength);
83
+ return new TextDecoder().decode(bytes);
84
+ }
85
+ if (typeof fetch !== "function") {
86
+ throw new Error("OBJLoader requires fetch for non-data URLs");
87
+ }
88
+ const response = await fetch(request.url, { signal: request.signal });
89
+ if (!response.ok) {
90
+ throw new Error(`OBJ request failed with ${response.status}`);
91
+ }
92
+ const bytes = new Uint8Array(await response.arrayBuffer());
93
+ context.throwIfAborted(request.url);
94
+ reportProgress(request, "document", bytes.byteLength, bytes.byteLength);
95
+ return new TextDecoder().decode(bytes);
96
+ }
97
+ function reportProgress(request, phase, loadedBytes, totalBytes) {
98
+ request.onProgress?.({ url: request.url, phase, loadedBytes, totalBytes });
99
+ }
100
+ function parseOBJ(source, name) {
101
+ const sourcePositions = [];
102
+ const sourceNormals = [];
103
+ const sourceTexcoords = [];
104
+ const positions = [];
105
+ const normals = [];
106
+ const texcoords = [];
107
+ const indices = [];
108
+ const materialLibraries = [];
109
+ const materialNames = new Set();
110
+ const triangleMaterials = [];
111
+ const min = [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY];
112
+ const max = [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY];
113
+ let faceCount = 0;
114
+ let generatedNormals = false;
115
+ let activeMaterial = "obj-default-pbr-material";
116
+ for (const [lineIndex, rawLine] of source.split(/\r?\n/).entries()) {
117
+ const line = rawLine.split("#", 1)[0]?.trim() ?? "";
118
+ if (!line)
119
+ continue;
120
+ const [keyword, ...fields] = line.split(/\s+/);
121
+ if (keyword === "v") {
122
+ sourcePositions.push(parseVec3(fields, `OBJ line ${lineIndex + 1} vertex`));
123
+ }
124
+ else if (keyword === "vn") {
125
+ sourceNormals.push(normalizeVec3(parseVec3(fields, `OBJ line ${lineIndex + 1} normal`)));
126
+ }
127
+ else if (keyword === "vt") {
128
+ sourceTexcoords.push(parseVec2(fields, `OBJ line ${lineIndex + 1} texcoord`));
129
+ }
130
+ else if (keyword === "mtllib") {
131
+ if (fields.length === 0)
132
+ throw new Error(`OBJ line ${lineIndex + 1} mtllib must reference a material library`);
133
+ materialLibraries.push(fields.join(" "));
134
+ }
135
+ else if (keyword === "usemtl") {
136
+ if (fields.length === 0)
137
+ throw new Error(`OBJ line ${lineIndex + 1} usemtl must reference a material name`);
138
+ activeMaterial = fields.join(" ");
139
+ materialNames.add(activeMaterial);
140
+ }
141
+ else if (keyword === "f") {
142
+ if (fields.length < 3)
143
+ throw new Error(`OBJ line ${lineIndex + 1} face must have at least 3 vertices`);
144
+ const refs = fields.map((field) => parseFaceRef(field, sourcePositions.length, sourceTexcoords.length, sourceNormals.length, lineIndex + 1));
145
+ for (let index = 1; index < refs.length - 1; index += 1) {
146
+ const triangle = [refs[0], refs[index], refs[index + 1]];
147
+ const fallbackNormal = faceNormal(sourcePositions[triangle[0].position], sourcePositions[triangle[1].position], sourcePositions[triangle[2].position]);
148
+ for (const ref of triangle) {
149
+ const position = sourcePositions[ref.position];
150
+ const normal = ref.normal === undefined ? fallbackNormal : sourceNormals[ref.normal];
151
+ const texcoord = ref.texcoord === undefined ? [0, 0] : sourceTexcoords[ref.texcoord];
152
+ if (ref.normal === undefined)
153
+ generatedNormals = true;
154
+ positions.push(position);
155
+ normals.push(normal);
156
+ texcoords.push(texcoord);
157
+ indices.push(indices.length);
158
+ updateBounds(min, max, position);
159
+ }
160
+ triangleMaterials.push(activeMaterial);
161
+ }
162
+ faceCount += 1;
163
+ }
164
+ }
165
+ if (sourcePositions.length === 0)
166
+ throw new Error("OBJ asset must contain at least one vertex.");
167
+ if (indices.length === 0)
168
+ throw new Error("OBJ asset must contain at least one triangulatable face.");
169
+ return {
170
+ name,
171
+ materialLibraries,
172
+ materialNames: [...materialNames],
173
+ triangleMaterials,
174
+ positions,
175
+ normals,
176
+ texcoords: sourceTexcoords.length > 0 ? texcoords : [],
177
+ indices,
178
+ min,
179
+ max,
180
+ source: {
181
+ vertexCount: sourcePositions.length,
182
+ normalCount: sourceNormals.length,
183
+ texcoordCount: sourceTexcoords.length,
184
+ faceCount,
185
+ triangulatedFaceCount: indices.length / 3,
186
+ generatedNormals
187
+ }
188
+ };
189
+ }
190
+ async function loadOBJMaterialDefinitions(request, parsed, context) {
191
+ const materials = new Map();
192
+ const inline = request.mtl;
193
+ if (inline) {
194
+ mergeMaterials(materials, parseMTL(inline));
195
+ }
196
+ for (const library of parsed.materialLibraries) {
197
+ const librarySource = request.materialLibraries?.[library];
198
+ if (librarySource !== undefined) {
199
+ mergeMaterials(materials, parseMTL(librarySource));
200
+ continue;
201
+ }
202
+ if (request.url.startsWith("data:"))
203
+ continue;
204
+ if (typeof fetch !== "function")
205
+ continue;
206
+ const url = new URL(library, request.url).toString();
207
+ const response = await fetch(url, { signal: request.signal });
208
+ if (!response.ok)
209
+ continue;
210
+ context.throwIfAborted(url);
211
+ mergeMaterials(materials, parseMTL(await response.text()));
212
+ }
213
+ return materials;
214
+ }
215
+ function mergeMaterials(target, source) {
216
+ for (const [name, material] of source)
217
+ target.set(name, material);
218
+ }
219
+ function parseMTL(source) {
220
+ const materials = new Map();
221
+ let current;
222
+ const flush = () => {
223
+ if (!current)
224
+ return;
225
+ materials.set(current.name, {
226
+ name: current.name,
227
+ baseColorFactor: [current.kd[0], current.kd[1], current.kd[2], current.alpha],
228
+ metallicFactor: 0,
229
+ roughnessFactor: current.roughness,
230
+ alphaMode: current.alpha < 0.999 ? "BLEND" : "OPAQUE"
231
+ });
232
+ };
233
+ for (const [lineIndex, rawLine] of source.split(/\r?\n/).entries()) {
234
+ const line = rawLine.split("#", 1)[0]?.trim() ?? "";
235
+ if (!line)
236
+ continue;
237
+ const [keyword, ...fields] = line.split(/\s+/);
238
+ if (keyword === "newmtl") {
239
+ flush();
240
+ if (fields.length === 0)
241
+ throw new Error(`MTL line ${lineIndex + 1} newmtl must include a material name`);
242
+ current = { name: fields.join(" "), kd: [0.72, 0.72, 0.68], alpha: 1, roughness: 0.62 };
243
+ }
244
+ else if (current && keyword === "Kd") {
245
+ current.kd = parseColor3(fields, `MTL line ${lineIndex + 1} Kd`);
246
+ }
247
+ else if (current && keyword === "d") {
248
+ current.alpha = clamp01(parseFinite(fields[0], `MTL line ${lineIndex + 1} d`));
249
+ }
250
+ else if (current && keyword === "Tr") {
251
+ current.alpha = 1 - clamp01(parseFinite(fields[0], `MTL line ${lineIndex + 1} Tr`));
252
+ }
253
+ else if (current && keyword === "Ns") {
254
+ const shininess = Math.max(0, parseFinite(fields[0], `MTL line ${lineIndex + 1} Ns`));
255
+ current.roughness = clamp01(Math.sqrt(2 / (shininess + 2)));
256
+ }
257
+ }
258
+ flush();
259
+ return materials;
260
+ }
261
+ function createGLTFDataUrl(parsed, materialDefinitions = new Map()) {
262
+ const buffer = new BinaryBufferBuilder();
263
+ const positionView = buffer.appendFloat32(parsed.positions.flatMap((position) => [...position]));
264
+ const normalView = buffer.appendFloat32(parsed.normals.flatMap((normal) => [...normal]));
265
+ const texcoordView = parsed.texcoords.length > 0
266
+ ? buffer.appendFloat32(parsed.texcoords.flatMap((texcoord) => [...texcoord]))
267
+ : undefined;
268
+ const materialNames = parsed.materialNames.length > 0 ? parsed.materialNames : ["obj-default-pbr-material"];
269
+ const materialIndexByName = new Map(materialNames.map((name, index) => [name, index]));
270
+ const indicesUseUint32 = parsed.positions.length > 65_535;
271
+ const attributes = { POSITION: 0, NORMAL: 1 };
272
+ const accessors = [
273
+ { bufferView: positionView, componentType: 5126, count: parsed.positions.length, type: "VEC3", min: parsed.min, max: parsed.max },
274
+ { bufferView: normalView, componentType: 5126, count: parsed.normals.length, type: "VEC3" }
275
+ ];
276
+ if (texcoordView !== undefined) {
277
+ attributes.TEXCOORD_0 = accessors.length;
278
+ accessors.push({ bufferView: texcoordView, componentType: 5126, count: parsed.texcoords.length, type: "VEC2" });
279
+ }
280
+ const primitives = materialNames.map((name, materialIndex) => {
281
+ const indices = indicesForMaterial(parsed, materialIndexByName, materialIndex, name);
282
+ const indexView = indicesUseUint32 ? buffer.appendUint32(indices) : buffer.appendUint16(indices);
283
+ const indexAccessor = accessors.length;
284
+ accessors.push({ bufferView: indexView, componentType: indicesUseUint32 ? 5125 : 5123, count: indices.length, type: "SCALAR" });
285
+ return { attributes, indices: indexAccessor, material: materialIndex };
286
+ }).filter((primitive) => {
287
+ const accessor = accessors[primitive.indices];
288
+ return accessor.count > 0;
289
+ });
290
+ const bytes = buffer.bytes();
291
+ const gltf = {
292
+ asset: { version: "2.0", generator: "Aura3D OBJLoader geometry and MTL importer" },
293
+ buffers: [{ uri: `data:application/octet-stream;base64,${bytesToBase64(bytes)}`, byteLength: bytes.byteLength }],
294
+ bufferViews: buffer.views,
295
+ accessors,
296
+ materials: materialNames.map((name) => gltfMaterialFromOBJ(name, materialDefinitions.get(name))),
297
+ meshes: [{
298
+ name: parsed.name,
299
+ primitives
300
+ }],
301
+ nodes: [{ name: `${parsed.name}-node`, mesh: 0 }],
302
+ scenes: [{ name: `${parsed.name}-scene`, nodes: [0] }],
303
+ scene: 0
304
+ };
305
+ return `data:model/gltf+json,${encodeURIComponent(JSON.stringify(gltf))}`;
306
+ }
307
+ function indicesForMaterial(parsed, materialIndexByName, materialIndex, materialName) {
308
+ const indices = [];
309
+ for (let triangle = 0; triangle < parsed.triangleMaterials.length; triangle += 1) {
310
+ const name = parsed.triangleMaterials[triangle] ?? "obj-default-pbr-material";
311
+ const index = materialIndexByName.get(name) ?? materialIndexByName.get(materialName);
312
+ if (index !== materialIndex)
313
+ continue;
314
+ const offset = triangle * 3;
315
+ indices.push(parsed.indices[offset], parsed.indices[offset + 1], parsed.indices[offset + 2]);
316
+ }
317
+ return indices;
318
+ }
319
+ function gltfMaterialFromOBJ(name, material) {
320
+ const resolved = material ?? {
321
+ name,
322
+ baseColorFactor: [0.72, 0.72, 0.68, 1],
323
+ metallicFactor: 0,
324
+ roughnessFactor: 0.62,
325
+ alphaMode: "OPAQUE"
326
+ };
327
+ return {
328
+ name: resolved.name,
329
+ alphaMode: resolved.alphaMode,
330
+ pbrMetallicRoughness: {
331
+ baseColorFactor: resolved.baseColorFactor,
332
+ metallicFactor: resolved.metallicFactor,
333
+ roughnessFactor: resolved.roughnessFactor
334
+ }
335
+ };
336
+ }
337
+ class BinaryBufferBuilder {
338
+ views = [];
339
+ chunks = [];
340
+ byteLength = 0;
341
+ appendFloat32(values) {
342
+ const data = new Float32Array(values);
343
+ return this.appendBytes(new Uint8Array(data.buffer));
344
+ }
345
+ appendUint16(values) {
346
+ const data = new Uint16Array(values);
347
+ return this.appendBytes(new Uint8Array(data.buffer));
348
+ }
349
+ appendUint32(values) {
350
+ const data = new Uint32Array(values);
351
+ return this.appendBytes(new Uint8Array(data.buffer));
352
+ }
353
+ appendBytes(bytes) {
354
+ this.pad4();
355
+ const viewIndex = this.views.length;
356
+ this.views.push({ buffer: 0, byteOffset: this.byteLength, byteLength: bytes.byteLength });
357
+ this.chunks.push(bytes);
358
+ this.byteLength += bytes.byteLength;
359
+ return viewIndex;
360
+ }
361
+ bytes() {
362
+ this.pad4();
363
+ const output = new Uint8Array(this.byteLength);
364
+ let offset = 0;
365
+ for (const chunk of this.chunks) {
366
+ output.set(chunk, offset);
367
+ offset += chunk.byteLength;
368
+ }
369
+ return output;
370
+ }
371
+ pad4() {
372
+ const padding = (4 - (this.byteLength % 4)) % 4;
373
+ if (padding === 0)
374
+ return;
375
+ this.chunks.push(new Uint8Array(padding));
376
+ this.byteLength += padding;
377
+ }
378
+ }
379
+ function parseFaceRef(field, positionCount, texcoordCount, normalCount, line) {
380
+ const parts = field.split("/");
381
+ const position = resolveOBJIndex(parts[0], positionCount, `OBJ line ${line} face position`);
382
+ const texcoord = parts[1] ? resolveOBJIndex(parts[1], texcoordCount, `OBJ line ${line} face texcoord`) : undefined;
383
+ const normal = parts[2] ? resolveOBJIndex(parts[2], normalCount, `OBJ line ${line} face normal`) : undefined;
384
+ return {
385
+ position,
386
+ ...(texcoord !== undefined ? { texcoord } : {}),
387
+ ...(normal !== undefined ? { normal } : {})
388
+ };
389
+ }
390
+ function resolveOBJIndex(value, count, label) {
391
+ const parsed = Number(value);
392
+ if (!Number.isInteger(parsed) || parsed === 0)
393
+ throw new Error(`${label} index must be a non-zero integer.`);
394
+ const index = parsed > 0 ? parsed - 1 : count + parsed;
395
+ if (index < 0 || index >= count)
396
+ throw new RangeError(`${label} index ${parsed} is outside available count ${count}.`);
397
+ return index;
398
+ }
399
+ function parseVec3(fields, label) {
400
+ if (fields.length < 3)
401
+ throw new Error(`${label} must contain three numeric components.`);
402
+ const value = [Number(fields[0]), Number(fields[1]), Number(fields[2])];
403
+ if (value.some((component) => !Number.isFinite(component)))
404
+ throw new Error(`${label} must contain finite numeric components.`);
405
+ return value;
406
+ }
407
+ function parseVec2(fields, label) {
408
+ if (fields.length < 2)
409
+ throw new Error(`${label} must contain two numeric components.`);
410
+ const value = [Number(fields[0]), Number(fields[1])];
411
+ if (value.some((component) => !Number.isFinite(component)))
412
+ throw new Error(`${label} must contain finite numeric components.`);
413
+ return value;
414
+ }
415
+ function parseColor3(fields, label) {
416
+ if (fields.length < 3)
417
+ throw new Error(`${label} must contain three numeric components.`);
418
+ const value = [
419
+ clamp01(Number(fields[0])),
420
+ clamp01(Number(fields[1])),
421
+ clamp01(Number(fields[2]))
422
+ ];
423
+ if (value.some((component) => !Number.isFinite(component)))
424
+ throw new Error(`${label} must contain finite numeric components.`);
425
+ return value;
426
+ }
427
+ function parseFinite(value, label) {
428
+ const parsed = Number(value);
429
+ if (!Number.isFinite(parsed))
430
+ throw new Error(`${label} must be finite.`);
431
+ return parsed;
432
+ }
433
+ function clamp01(value) {
434
+ return Math.min(1, Math.max(0, value));
435
+ }
436
+ function faceNormal(a, b, c) {
437
+ const ab = [b[0] - a[0], b[1] - a[1], b[2] - a[2]];
438
+ const ac = [c[0] - a[0], c[1] - a[1], c[2] - a[2]];
439
+ return normalizeVec3([
440
+ ab[1] * ac[2] - ab[2] * ac[1],
441
+ ab[2] * ac[0] - ab[0] * ac[2],
442
+ ab[0] * ac[1] - ab[1] * ac[0]
443
+ ]);
444
+ }
445
+ function normalizeVec3(value) {
446
+ const length = Math.hypot(value[0], value[1], value[2]);
447
+ if (length <= 1e-8)
448
+ return [0, 0, 1];
449
+ return [value[0] / length, value[1] / length, value[2] / length];
450
+ }
451
+ function updateBounds(min, max, position) {
452
+ min[0] = Math.min(min[0], position[0]);
453
+ min[1] = Math.min(min[1], position[1]);
454
+ min[2] = Math.min(min[2], position[2]);
455
+ max[0] = Math.max(max[0], position[0]);
456
+ max[1] = Math.max(max[1], position[1]);
457
+ max[2] = Math.max(max[2], position[2]);
458
+ }
459
+ function objNameFromUrl(url) {
460
+ const path = url.split(/[?#]/, 1)[0] ?? url;
461
+ const match = /([^/\\]+?)(?:\.obj)?$/i.exec(path);
462
+ return sanitizeName(match?.[1] ?? "obj-asset");
463
+ }
464
+ function sanitizeName(value) {
465
+ const normalized = value.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "");
466
+ return normalized.length > 0 ? normalized : "obj-asset";
467
+ }
468
+ function decodeOBJDataUri(uri) {
469
+ const separator = uri.indexOf(",");
470
+ if (separator < 0)
471
+ throw new Error("OBJ data uri must include a comma separator.");
472
+ const header = uri.slice(5, separator).toLowerCase();
473
+ const payload = uri.slice(separator + 1);
474
+ if (header.endsWith(";base64"))
475
+ return base64ToBytes(payload);
476
+ return new TextEncoder().encode(decodeURIComponent(payload));
477
+ }
478
+ function bytesToBase64(bytes) {
479
+ let binary = "";
480
+ for (const byte of bytes)
481
+ binary += String.fromCharCode(byte);
482
+ return btoa(binary);
483
+ }
484
+ function base64ToBytes(payload) {
485
+ const binary = atob(decodeURIComponent(payload).replace(/\s+/g, ""));
486
+ const bytes = new Uint8Array(binary.length);
487
+ for (let index = 0; index < binary.length; index += 1) {
488
+ bytes[index] = binary.charCodeAt(index);
489
+ }
490
+ return bytes;
491
+ }
492
+ //# sourceMappingURL=OBJLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OBJLoader.js","sourceRoot":"","sources":["../../../../packages/assets/src/OBJLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import type { GLTFAsset } from "./GLTFLoader";
2
+ export interface GLTFSceneAnalysisOptions {
3
+ readonly asset: GLTFAsset;
4
+ readonly url?: string;
5
+ readonly maskWidth?: number;
6
+ readonly maskHeight?: number;
7
+ readonly minCoverage?: number;
8
+ readonly topCategories?: number;
9
+ }
10
+ export interface GLTFSemanticSegment {
11
+ readonly label: string;
12
+ readonly classIndex: number;
13
+ readonly pixelCount: number;
14
+ readonly coverage: number;
15
+ readonly confidence: number;
16
+ readonly source: "geometry" | "material" | "texture" | "animation" | "scene";
17
+ }
18
+ export type GLTFComputerVisionBoundingBox = readonly [number, number, number, number];
19
+ export interface GLTFObjectDetectionEvidence {
20
+ readonly label: string;
21
+ readonly confidence: number;
22
+ readonly bbox: GLTFComputerVisionBoundingBox;
23
+ readonly classIndex: number;
24
+ readonly meshName: string;
25
+ readonly materialName: string;
26
+ }
27
+ export interface GLTFObjectTrackEvidence {
28
+ readonly id: number;
29
+ readonly label: string;
30
+ readonly bbox: GLTFComputerVisionBoundingBox;
31
+ readonly confidence: number;
32
+ readonly age: number;
33
+ readonly timeSinceUpdate: number;
34
+ readonly velocity: GLTFComputerVisionBoundingBox;
35
+ readonly historyLength: number;
36
+ }
37
+ export interface GLTFPoseKeypointEvidence {
38
+ readonly name: string;
39
+ readonly x: number;
40
+ readonly y: number;
41
+ readonly confidence: number;
42
+ }
43
+ export interface GLTFPoseEvidence {
44
+ readonly label: string;
45
+ readonly confidence: number;
46
+ readonly bbox: GLTFComputerVisionBoundingBox;
47
+ readonly keypoints: readonly GLTFPoseKeypointEvidence[];
48
+ }
49
+ export interface GLTFSceneAnalysisEvidence {
50
+ readonly source: "origin-master-scene-analyzer-adapted";
51
+ readonly analyzer: "deterministic-gltf-scene-analysis";
52
+ readonly assetId: string;
53
+ readonly mask: {
54
+ readonly width: number;
55
+ readonly height: number;
56
+ readonly classCount: number;
57
+ readonly hash: string;
58
+ readonly dominantClassIndex: number;
59
+ };
60
+ readonly segments: readonly GLTFSemanticSegment[];
61
+ readonly dominantCategories: readonly string[];
62
+ readonly confidence: number;
63
+ readonly objectDetections: readonly GLTFObjectDetectionEvidence[];
64
+ readonly objectTracks: readonly GLTFObjectTrackEvidence[];
65
+ readonly poses: readonly GLTFPoseEvidence[];
66
+ readonly cvSystem: {
67
+ readonly source: "gltf-metadata-not-camera";
68
+ readonly classificationTelemetry: boolean;
69
+ readonly detectionTelemetry: boolean;
70
+ readonly trackingTelemetry: boolean;
71
+ readonly poseTelemetry: boolean;
72
+ readonly inferenceRuntime: "not-used";
73
+ readonly modelLoading: "not-used";
74
+ };
75
+ readonly sceneComplexity: {
76
+ readonly meshCount: number;
77
+ readonly materialCount: number;
78
+ readonly textureCount: number;
79
+ readonly vertexCount: number;
80
+ readonly indexCount: number;
81
+ readonly animationCount: number;
82
+ readonly skinCount: number;
83
+ readonly morphTargetCount: number;
84
+ readonly extensionCount: number;
85
+ };
86
+ readonly productionReadiness: {
87
+ readonly semanticSegmentTelemetry: true;
88
+ readonly deterministicMaskSummary: true;
89
+ readonly deterministicObjectTelemetry: true;
90
+ readonly deterministicTrackingTelemetry: true;
91
+ readonly skeletalPoseTelemetry: boolean;
92
+ readonly complexityBudgetTelemetry: true;
93
+ readonly browserAssetViewerEvidence: true;
94
+ };
95
+ readonly blockedClaims: readonly string[];
96
+ readonly claimBoundary: string;
97
+ readonly hash: string;
98
+ }
99
+ export declare function createGLTFSceneAnalysisEvidence(options: GLTFSceneAnalysisOptions): GLTFSceneAnalysisEvidence;
100
+ //# sourceMappingURL=SceneAnalysisFixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneAnalysisFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/SceneAnalysisFixtures.ts"],"names":[],"mappings":"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"}