@needle-tools/three 0.145.0

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 (1160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +84 -0
  3. package/build/three.cjs +36042 -0
  4. package/build/three.js +36048 -0
  5. package/build/three.min.js +6 -0
  6. package/build/three.module.js +49769 -0
  7. package/examples/fonts/LICENSE +13 -0
  8. package/examples/fonts/README.md +11 -0
  9. package/examples/fonts/droid/NOTICE +190 -0
  10. package/examples/fonts/droid/README.txt +18 -0
  11. package/examples/fonts/droid/droid_sans_bold.typeface.json +1 -0
  12. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +1 -0
  13. package/examples/fonts/droid/droid_sans_regular.typeface.json +1 -0
  14. package/examples/fonts/droid/droid_serif_bold.typeface.json +1 -0
  15. package/examples/fonts/droid/droid_serif_regular.typeface.json +1 -0
  16. package/examples/fonts/gentilis_bold.typeface.json +1 -0
  17. package/examples/fonts/gentilis_regular.typeface.json +1 -0
  18. package/examples/fonts/helvetiker_bold.typeface.json +1 -0
  19. package/examples/fonts/helvetiker_regular.typeface.json +1 -0
  20. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  21. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  22. package/examples/fonts/open-sans/open-sans.css +9 -0
  23. package/examples/fonts/optimer_bold.typeface.json +1 -0
  24. package/examples/fonts/optimer_regular.typeface.json +1 -0
  25. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  26. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  27. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  28. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  29. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  30. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  31. package/examples/fonts/ttf/README.md +9 -0
  32. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  33. package/examples/js/animation/AnimationClipCreator.js +97 -0
  34. package/examples/js/animation/CCDIKSolver.js +433 -0
  35. package/examples/js/animation/MMDAnimationHelper.js +1117 -0
  36. package/examples/js/animation/MMDPhysics.js +1238 -0
  37. package/examples/js/cameras/CinematicCamera.js +157 -0
  38. package/examples/js/controls/ArcballControls.js +3037 -0
  39. package/examples/js/controls/DragControls.js +230 -0
  40. package/examples/js/controls/FirstPersonControls.js +334 -0
  41. package/examples/js/controls/FlyControls.js +347 -0
  42. package/examples/js/controls/OrbitControls.js +1075 -0
  43. package/examples/js/controls/PointerLockControls.js +153 -0
  44. package/examples/js/controls/TrackballControls.js +782 -0
  45. package/examples/js/controls/TransformControls.js +1386 -0
  46. package/examples/js/csm/CSM.js +382 -0
  47. package/examples/js/csm/CSMFrustum.js +133 -0
  48. package/examples/js/csm/CSMHelper.js +145 -0
  49. package/examples/js/csm/CSMShader.js +257 -0
  50. package/examples/js/curves/CurveExtras.js +348 -0
  51. package/examples/js/curves/NURBSCurve.js +75 -0
  52. package/examples/js/curves/NURBSSurface.js +54 -0
  53. package/examples/js/curves/NURBSUtils.js +476 -0
  54. package/examples/js/effects/AnaglyphEffect.js +100 -0
  55. package/examples/js/effects/AsciiEffect.js +259 -0
  56. package/examples/js/effects/OutlineEffect.js +454 -0
  57. package/examples/js/effects/ParallaxBarrierEffect.js +75 -0
  58. package/examples/js/effects/PeppersGhostEffect.js +166 -0
  59. package/examples/js/effects/StereoEffect.js +50 -0
  60. package/examples/js/environments/DebugEnvironment.js +53 -0
  61. package/examples/js/environments/RoomEnvironment.js +122 -0
  62. package/examples/js/exporters/ColladaExporter.js +504 -0
  63. package/examples/js/exporters/DRACOExporter.js +212 -0
  64. package/examples/js/exporters/EXRExporter.js +458 -0
  65. package/examples/js/exporters/GLTFExporter.js +2543 -0
  66. package/examples/js/exporters/MMDExporter.js +194 -0
  67. package/examples/js/exporters/OBJExporter.js +251 -0
  68. package/examples/js/exporters/PLYExporter.js +422 -0
  69. package/examples/js/exporters/STLExporter.js +190 -0
  70. package/examples/js/exporters/USDZExporter.js +523 -0
  71. package/examples/js/geometries/BoxLineGeometry.js +60 -0
  72. package/examples/js/geometries/ConvexGeometry.js +48 -0
  73. package/examples/js/geometries/DecalGeometry.js +291 -0
  74. package/examples/js/geometries/LightningStrike.js +874 -0
  75. package/examples/js/geometries/ParametricGeometries.js +215 -0
  76. package/examples/js/geometries/ParametricGeometry.js +108 -0
  77. package/examples/js/geometries/RoundedBoxGeometry.js +140 -0
  78. package/examples/js/geometries/TeapotGeometry.js +331 -0
  79. package/examples/js/geometries/TextGeometry.js +51 -0
  80. package/examples/js/helpers/LightProbeHelper.js +49 -0
  81. package/examples/js/helpers/OctreeHelper.js +74 -0
  82. package/examples/js/helpers/PositionalAudioHelper.js +89 -0
  83. package/examples/js/helpers/RectAreaLightHelper.js +74 -0
  84. package/examples/js/helpers/VertexNormalsHelper.js +72 -0
  85. package/examples/js/helpers/VertexTangentsHelper.js +62 -0
  86. package/examples/js/helpers/ViewHelper.js +266 -0
  87. package/examples/js/interactive/HTMLMesh.js +508 -0
  88. package/examples/js/interactive/InteractiveGroup.js +101 -0
  89. package/examples/js/interactive/SelectionBox.js +262 -0
  90. package/examples/js/interactive/SelectionHelper.js +91 -0
  91. package/examples/js/libs/ammo.wasm.js +822 -0
  92. package/examples/js/libs/ammo.wasm.wasm +0 -0
  93. package/examples/js/libs/basis/README.md +46 -0
  94. package/examples/js/libs/basis/basis_transcoder.js +21 -0
  95. package/examples/js/libs/basis/basis_transcoder.wasm +0 -0
  96. package/examples/js/libs/chevrotain.min.js +3 -0
  97. package/examples/js/libs/draco/README.md +32 -0
  98. package/examples/js/libs/draco/draco_decoder.js +52 -0
  99. package/examples/js/libs/draco/draco_decoder.wasm +0 -0
  100. package/examples/js/libs/draco/draco_encoder.js +33 -0
  101. package/examples/js/libs/draco/draco_wasm_wrapper.js +104 -0
  102. package/examples/js/libs/draco/gltf/draco_decoder.js +48 -0
  103. package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
  104. package/examples/js/libs/draco/gltf/draco_encoder.js +33 -0
  105. package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +104 -0
  106. package/examples/js/libs/fflate.min.js +7 -0
  107. package/examples/js/libs/ktx-parse.umd.js +1 -0
  108. package/examples/js/libs/lottie_canvas.js +12751 -0
  109. package/examples/js/libs/meshopt_decoder.js +188 -0
  110. package/examples/js/libs/opentype.min.js +1 -0
  111. package/examples/js/libs/stats.min.js +5 -0
  112. package/examples/js/lights/LightProbeGenerator.js +228 -0
  113. package/examples/js/lights/RectAreaLightUniformsLib.js +56 -0
  114. package/examples/js/lines/Line2.js +19 -0
  115. package/examples/js/lines/LineGeometry.js +71 -0
  116. package/examples/js/lines/LineMaterial.js +642 -0
  117. package/examples/js/lines/LineSegments2.js +362 -0
  118. package/examples/js/lines/LineSegmentsGeometry.js +219 -0
  119. package/examples/js/lines/Wireframe.js +52 -0
  120. package/examples/js/lines/WireframeGeometry2.js +18 -0
  121. package/examples/js/loaders/3DMLoader.js +1370 -0
  122. package/examples/js/loaders/3MFLoader.js +1340 -0
  123. package/examples/js/loaders/AMFLoader.js +529 -0
  124. package/examples/js/loaders/BVHLoader.js +394 -0
  125. package/examples/js/loaders/BasisTextureLoader.js +736 -0
  126. package/examples/js/loaders/ColladaLoader.js +3821 -0
  127. package/examples/js/loaders/DDSLoader.js +245 -0
  128. package/examples/js/loaders/DRACOLoader.js +548 -0
  129. package/examples/js/loaders/EXRLoader.js +2136 -0
  130. package/examples/js/loaders/FBXLoader.js +3835 -0
  131. package/examples/js/loaders/FontLoader.js +169 -0
  132. package/examples/js/loaders/GCodeLoader.js +256 -0
  133. package/examples/js/loaders/GLTFLoader.js +4159 -0
  134. package/examples/js/loaders/HDRCubeTextureLoader.js +93 -0
  135. package/examples/js/loaders/KMZLoader.js +125 -0
  136. package/examples/js/loaders/KTXLoader.js +177 -0
  137. package/examples/js/loaders/LDrawLoader.js +2374 -0
  138. package/examples/js/loaders/LUT3dlLoader.js +139 -0
  139. package/examples/js/loaders/LUTCubeLoader.js +140 -0
  140. package/examples/js/loaders/LWOLoader.js +966 -0
  141. package/examples/js/loaders/LogLuvLoader.js +765 -0
  142. package/examples/js/loaders/LottieLoader.js +62 -0
  143. package/examples/js/loaders/MD2Loader.js +249 -0
  144. package/examples/js/loaders/MDDLoader.js +95 -0
  145. package/examples/js/loaders/MMDLoader.js +1924 -0
  146. package/examples/js/loaders/MTLLoader.js +501 -0
  147. package/examples/js/loaders/NRRDLoader.js +649 -0
  148. package/examples/js/loaders/OBJLoader.js +804 -0
  149. package/examples/js/loaders/PCDLoader.js +408 -0
  150. package/examples/js/loaders/PDBLoader.js +313 -0
  151. package/examples/js/loaders/PLYLoader.js +562 -0
  152. package/examples/js/loaders/PRWMLoader.js +260 -0
  153. package/examples/js/loaders/PVRLoader.js +227 -0
  154. package/examples/js/loaders/RGBELoader.js +467 -0
  155. package/examples/js/loaders/RGBMLoader.js +1415 -0
  156. package/examples/js/loaders/STLLoader.js +371 -0
  157. package/examples/js/loaders/SVGLoader.js +2655 -0
  158. package/examples/js/loaders/TDSLoader.js +1029 -0
  159. package/examples/js/loaders/TGALoader.js +486 -0
  160. package/examples/js/loaders/TIFFLoader.js +31 -0
  161. package/examples/js/loaders/TTFLoader.js +211 -0
  162. package/examples/js/loaders/TiltLoader.js +460 -0
  163. package/examples/js/loaders/VOXLoader.js +248 -0
  164. package/examples/js/loaders/VRMLLoader.js +3237 -0
  165. package/examples/js/loaders/VTKLoader.js +1095 -0
  166. package/examples/js/loaders/XYZLoader.js +91 -0
  167. package/examples/js/loaders/lwo/IFFParser.js +1148 -0
  168. package/examples/js/loaders/lwo/LWO2Parser.js +448 -0
  169. package/examples/js/loaders/lwo/LWO3Parser.js +402 -0
  170. package/examples/js/materials/MeshGouraudMaterial.js +385 -0
  171. package/examples/js/math/Capsule.js +120 -0
  172. package/examples/js/math/ColorConverter.js +33 -0
  173. package/examples/js/math/ConvexHull.js +1110 -0
  174. package/examples/js/math/ImprovedNoise.js +66 -0
  175. package/examples/js/math/Lut.js +171 -0
  176. package/examples/js/math/MeshSurfaceSampler.js +193 -0
  177. package/examples/js/math/OBB.js +341 -0
  178. package/examples/js/math/Octree.js +465 -0
  179. package/examples/js/math/SimplexNoise.js +459 -0
  180. package/examples/js/misc/ConvexObjectBreaker.js +485 -0
  181. package/examples/js/misc/GPUComputationRenderer.js +397 -0
  182. package/examples/js/misc/Gyroscope.js +60 -0
  183. package/examples/js/misc/MD2Character.js +244 -0
  184. package/examples/js/misc/MD2CharacterComplex.js +494 -0
  185. package/examples/js/misc/MorphAnimMesh.js +69 -0
  186. package/examples/js/misc/MorphBlendMesh.js +292 -0
  187. package/examples/js/misc/ProgressiveLightMap.js +331 -0
  188. package/examples/js/misc/RollerCoaster.js +437 -0
  189. package/examples/js/misc/TubePainter.js +161 -0
  190. package/examples/js/misc/Volume.js +466 -0
  191. package/examples/js/misc/VolumeSlice.js +224 -0
  192. package/examples/js/modifiers/CurveModifier.js +311 -0
  193. package/examples/js/modifiers/EdgeSplitModifier.js +258 -0
  194. package/examples/js/modifiers/SimplifyModifier.js +468 -0
  195. package/examples/js/modifiers/TessellateModifier.js +283 -0
  196. package/examples/js/objects/GroundProjectedEnv.js +193 -0
  197. package/examples/js/objects/Lensflare.js +347 -0
  198. package/examples/js/objects/LightningStorm.js +209 -0
  199. package/examples/js/objects/MarchingCubes.js +738 -0
  200. package/examples/js/objects/Reflector.js +214 -0
  201. package/examples/js/objects/ReflectorForSSRPass.js +319 -0
  202. package/examples/js/objects/Refractor.js +261 -0
  203. package/examples/js/objects/ShadowMesh.js +60 -0
  204. package/examples/js/objects/Sky.js +223 -0
  205. package/examples/js/objects/Water.js +287 -0
  206. package/examples/js/objects/Water2.js +306 -0
  207. package/examples/js/physics/AmmoPhysics.js +256 -0
  208. package/examples/js/physics/OimoPhysics.js +215 -0
  209. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +342 -0
  210. package/examples/js/postprocessing/AfterimagePass.js +70 -0
  211. package/examples/js/postprocessing/BloomPass.js +114 -0
  212. package/examples/js/postprocessing/BokehPass.js +103 -0
  213. package/examples/js/postprocessing/ClearPass.js +44 -0
  214. package/examples/js/postprocessing/CubeTexturePass.js +57 -0
  215. package/examples/js/postprocessing/DotScreenPass.js +49 -0
  216. package/examples/js/postprocessing/EffectComposer.js +279 -0
  217. package/examples/js/postprocessing/FilmPass.js +50 -0
  218. package/examples/js/postprocessing/GlitchPass.js +105 -0
  219. package/examples/js/postprocessing/HalftonePass.js +75 -0
  220. package/examples/js/postprocessing/LUTPass.js +184 -0
  221. package/examples/js/postprocessing/MaskPass.js +92 -0
  222. package/examples/js/postprocessing/OutlinePass.js +589 -0
  223. package/examples/js/postprocessing/Pass.js +75 -0
  224. package/examples/js/postprocessing/RenderPass.js +74 -0
  225. package/examples/js/postprocessing/SAOPass.js +366 -0
  226. package/examples/js/postprocessing/SMAAPass.js +153 -0
  227. package/examples/js/postprocessing/SSAARenderPass.js +156 -0
  228. package/examples/js/postprocessing/SSAOPass.js +351 -0
  229. package/examples/js/postprocessing/SSRPass.js +550 -0
  230. package/examples/js/postprocessing/SavePass.js +51 -0
  231. package/examples/js/postprocessing/ShaderPass.js +63 -0
  232. package/examples/js/postprocessing/TAARenderPass.js +128 -0
  233. package/examples/js/postprocessing/TexturePass.js +46 -0
  234. package/examples/js/postprocessing/UnrealBloomPass.js +357 -0
  235. package/examples/js/renderers/CSS2DRenderer.js +197 -0
  236. package/examples/js/renderers/CSS3DRenderer.js +258 -0
  237. package/examples/js/renderers/Projector.js +874 -0
  238. package/examples/js/renderers/SVGRenderer.js +537 -0
  239. package/examples/js/shaders/ACESFilmicToneMappingShader.js +92 -0
  240. package/examples/js/shaders/AfterimageShader.js +63 -0
  241. package/examples/js/shaders/BasicShader.js +30 -0
  242. package/examples/js/shaders/BleachBypassShader.js +65 -0
  243. package/examples/js/shaders/BlendShader.js +57 -0
  244. package/examples/js/shaders/BokehShader.js +159 -0
  245. package/examples/js/shaders/BokehShader2.js +428 -0
  246. package/examples/js/shaders/BrightnessContrastShader.js +61 -0
  247. package/examples/js/shaders/ColorCorrectionShader.js +56 -0
  248. package/examples/js/shaders/ColorifyShader.js +51 -0
  249. package/examples/js/shaders/ConvolutionShader.js +97 -0
  250. package/examples/js/shaders/CopyShader.js +48 -0
  251. package/examples/js/shaders/DOFMipMapShader.js +63 -0
  252. package/examples/js/shaders/DepthLimitedBlurShader.js +180 -0
  253. package/examples/js/shaders/DigitalGlitch.js +130 -0
  254. package/examples/js/shaders/DotScreenShader.js +76 -0
  255. package/examples/js/shaders/FXAAShader.js +286 -0
  256. package/examples/js/shaders/FilmShader.js +113 -0
  257. package/examples/js/shaders/FocusShader.js +98 -0
  258. package/examples/js/shaders/FreiChenShader.js +97 -0
  259. package/examples/js/shaders/GammaCorrectionShader.js +44 -0
  260. package/examples/js/shaders/GodRaysShader.js +297 -0
  261. package/examples/js/shaders/HalftoneShader.js +339 -0
  262. package/examples/js/shaders/HorizontalBlurShader.js +62 -0
  263. package/examples/js/shaders/HorizontalTiltShiftShader.js +68 -0
  264. package/examples/js/shaders/HueSaturationShader.js +72 -0
  265. package/examples/js/shaders/KaleidoShader.js +63 -0
  266. package/examples/js/shaders/LuminosityHighPassShader.js +71 -0
  267. package/examples/js/shaders/LuminosityShader.js +49 -0
  268. package/examples/js/shaders/MMDToonShader.js +100 -0
  269. package/examples/js/shaders/MirrorShader.js +59 -0
  270. package/examples/js/shaders/NormalMapShader.js +59 -0
  271. package/examples/js/shaders/PixelShader.js +51 -0
  272. package/examples/js/shaders/RGBShiftShader.js +59 -0
  273. package/examples/js/shaders/SAOShader.js +213 -0
  274. package/examples/js/shaders/SMAAShader.js +466 -0
  275. package/examples/js/shaders/SSAOShader.js +299 -0
  276. package/examples/js/shaders/SSRShader.js +393 -0
  277. package/examples/js/shaders/SepiaShader.js +55 -0
  278. package/examples/js/shaders/SobelOperatorShader.js +92 -0
  279. package/examples/js/shaders/SubsurfaceScatteringShader.js +49 -0
  280. package/examples/js/shaders/TechnicolorShader.js +46 -0
  281. package/examples/js/shaders/ToneMapShader.js +87 -0
  282. package/examples/js/shaders/ToonShader.js +351 -0
  283. package/examples/js/shaders/TriangleBlurShader.js +74 -0
  284. package/examples/js/shaders/UnpackDepthRGBAShader.js +50 -0
  285. package/examples/js/shaders/VerticalBlurShader.js +62 -0
  286. package/examples/js/shaders/VerticalTiltShiftShader.js +68 -0
  287. package/examples/js/shaders/VignetteShader.js +56 -0
  288. package/examples/js/shaders/VolumeShader.js +300 -0
  289. package/examples/js/shaders/WaterRefractionShader.js +88 -0
  290. package/examples/js/textures/FlakesTexture.js +41 -0
  291. package/examples/js/utils/BufferGeometryUtils.js +1094 -0
  292. package/examples/js/utils/CameraUtils.js +86 -0
  293. package/examples/js/utils/GPUStatsPanel.js +134 -0
  294. package/examples/js/utils/GeometryCompressionUtils.js +574 -0
  295. package/examples/js/utils/GeometryUtils.js +173 -0
  296. package/examples/js/utils/LDrawUtils.js +182 -0
  297. package/examples/js/utils/PackedPhongMaterial.js +107 -0
  298. package/examples/js/utils/SceneUtils.js +103 -0
  299. package/examples/js/utils/ShadowMapViewer.js +180 -0
  300. package/examples/js/utils/SkeletonUtils.js +507 -0
  301. package/examples/js/utils/UVsDebug.js +135 -0
  302. package/examples/js/utils/WorkerPool.js +115 -0
  303. package/examples/jsm/animation/AnimationClipCreator.js +114 -0
  304. package/examples/jsm/animation/CCDIKSolver.js +482 -0
  305. package/examples/jsm/animation/MMDAnimationHelper.js +1207 -0
  306. package/examples/jsm/animation/MMDPhysics.js +1406 -0
  307. package/examples/jsm/cameras/CinematicCamera.js +209 -0
  308. package/examples/jsm/capabilities/WebGL.js +91 -0
  309. package/examples/jsm/capabilities/WebGPU.js +39 -0
  310. package/examples/jsm/controls/ArcballControls.js +3216 -0
  311. package/examples/jsm/controls/DragControls.js +220 -0
  312. package/examples/jsm/controls/FirstPersonControls.js +325 -0
  313. package/examples/jsm/controls/FlyControls.js +284 -0
  314. package/examples/jsm/controls/OrbitControls.js +1249 -0
  315. package/examples/jsm/controls/PointerLockControls.js +157 -0
  316. package/examples/jsm/controls/TrackballControls.js +814 -0
  317. package/examples/jsm/controls/TransformControls.js +1558 -0
  318. package/examples/jsm/csm/CSM.js +378 -0
  319. package/examples/jsm/csm/CSMFrustum.js +152 -0
  320. package/examples/jsm/csm/CSMHelper.js +193 -0
  321. package/examples/jsm/csm/CSMShader.js +251 -0
  322. package/examples/jsm/curves/CurveExtras.js +422 -0
  323. package/examples/jsm/curves/NURBSCurve.js +80 -0
  324. package/examples/jsm/curves/NURBSSurface.js +52 -0
  325. package/examples/jsm/curves/NURBSUtils.js +487 -0
  326. package/examples/jsm/effects/AnaglyphEffect.js +168 -0
  327. package/examples/jsm/effects/AsciiEffect.js +266 -0
  328. package/examples/jsm/effects/OutlineEffect.js +553 -0
  329. package/examples/jsm/effects/ParallaxBarrierEffect.js +116 -0
  330. package/examples/jsm/effects/PeppersGhostEffect.js +153 -0
  331. package/examples/jsm/effects/StereoEffect.js +55 -0
  332. package/examples/jsm/environments/DebugEnvironment.js +52 -0
  333. package/examples/jsm/environments/RoomEnvironment.js +144 -0
  334. package/examples/jsm/exporters/ColladaExporter.js +713 -0
  335. package/examples/jsm/exporters/DRACOExporter.js +225 -0
  336. package/examples/jsm/exporters/EXRExporter.js +507 -0
  337. package/examples/jsm/exporters/GLTFExporter.js +2870 -0
  338. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  339. package/examples/jsm/exporters/MMDExporter.js +217 -0
  340. package/examples/jsm/exporters/OBJExporter.js +284 -0
  341. package/examples/jsm/exporters/PLYExporter.js +521 -0
  342. package/examples/jsm/exporters/STLExporter.js +195 -0
  343. package/examples/jsm/exporters/USDZExporter.js +1112 -0
  344. package/examples/jsm/geometries/BoxLineGeometry.js +69 -0
  345. package/examples/jsm/geometries/ConvexGeometry.js +59 -0
  346. package/examples/jsm/geometries/DecalGeometry.js +356 -0
  347. package/examples/jsm/geometries/LightningStrike.js +1017 -0
  348. package/examples/jsm/geometries/ParametricGeometries.js +254 -0
  349. package/examples/jsm/geometries/ParametricGeometry.js +129 -0
  350. package/examples/jsm/geometries/RoundedBoxGeometry.js +155 -0
  351. package/examples/jsm/geometries/TeapotGeometry.js +704 -0
  352. package/examples/jsm/geometries/TextGeometry.js +57 -0
  353. package/examples/jsm/helpers/LightProbeHelper.js +130 -0
  354. package/examples/jsm/helpers/OctreeHelper.js +72 -0
  355. package/examples/jsm/helpers/PositionalAudioHelper.js +109 -0
  356. package/examples/jsm/helpers/RectAreaLightHelper.js +85 -0
  357. package/examples/jsm/helpers/VertexNormalsHelper.js +96 -0
  358. package/examples/jsm/helpers/VertexTangentsHelper.js +88 -0
  359. package/examples/jsm/helpers/ViewHelper.js +319 -0
  360. package/examples/jsm/interactive/HTMLMesh.js +550 -0
  361. package/examples/jsm/interactive/InteractiveGroup.js +116 -0
  362. package/examples/jsm/interactive/SelectionBox.js +227 -0
  363. package/examples/jsm/interactive/SelectionHelper.js +97 -0
  364. package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +37071 -0
  365. package/examples/jsm/libs/OimoPhysics/index.js +43 -0
  366. package/examples/jsm/libs/chevrotain.module.min.js +141 -0
  367. package/examples/jsm/libs/ecsy.module.js +1792 -0
  368. package/examples/jsm/libs/fflate.module.js +2474 -0
  369. package/examples/jsm/libs/flow.module.js +4552 -0
  370. package/examples/jsm/libs/ktx-parse.module.js +1 -0
  371. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  372. package/examples/jsm/libs/meshopt_decoder.module.js +178 -0
  373. package/examples/jsm/libs/mikktspace.module.js +128 -0
  374. package/examples/jsm/libs/mmdparser.module.js +11530 -0
  375. package/examples/jsm/libs/motion-controllers.module.js +397 -0
  376. package/examples/jsm/libs/opentype.module.js +14568 -0
  377. package/examples/jsm/libs/potpack.module.js +125 -0
  378. package/examples/jsm/libs/rhino3dm/rhino3dm.js +21 -0
  379. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +16 -0
  380. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  381. package/examples/jsm/libs/stats.module.js +167 -0
  382. package/examples/jsm/libs/tween.module.min.js +3 -0
  383. package/examples/jsm/libs/utif.module.js +1579 -0
  384. package/examples/jsm/libs/zstddec.module.js +1 -0
  385. package/examples/jsm/lights/LightProbeGenerator.js +250 -0
  386. package/examples/jsm/lights/RectAreaLightUniformsLib.js +79 -0
  387. package/examples/jsm/lines/Line2.js +19 -0
  388. package/examples/jsm/lines/LineGeometry.js +79 -0
  389. package/examples/jsm/lines/LineMaterial.js +702 -0
  390. package/examples/jsm/lines/LineSegments2.js +355 -0
  391. package/examples/jsm/lines/LineSegmentsGeometry.js +241 -0
  392. package/examples/jsm/lines/Wireframe.js +56 -0
  393. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  394. package/examples/jsm/loaders/3DMLoader.js +1495 -0
  395. package/examples/jsm/loaders/3MFLoader.js +1473 -0
  396. package/examples/jsm/loaders/AMFLoader.js +518 -0
  397. package/examples/jsm/loaders/BVHLoader.js +437 -0
  398. package/examples/jsm/loaders/BasisTextureLoader.js +790 -0
  399. package/examples/jsm/loaders/ColladaLoader.js +4092 -0
  400. package/examples/jsm/loaders/DDSLoader.js +274 -0
  401. package/examples/jsm/loaders/DRACOLoader.js +561 -0
  402. package/examples/jsm/loaders/EXRLoader.js +2310 -0
  403. package/examples/jsm/loaders/FBXLoader.js +4137 -0
  404. package/examples/jsm/loaders/FontLoader.js +183 -0
  405. package/examples/jsm/loaders/GCodeLoader.js +262 -0
  406. package/examples/jsm/loaders/GLTFLoader.js +5221 -0
  407. package/examples/jsm/loaders/HDRCubeTextureLoader.js +115 -0
  408. package/examples/jsm/loaders/IFCLoader.js +2431 -0
  409. package/examples/jsm/loaders/KMZLoader.js +130 -0
  410. package/examples/jsm/loaders/KTX2Loader.js +753 -0
  411. package/examples/jsm/loaders/KTXLoader.js +176 -0
  412. package/examples/jsm/loaders/LDrawLoader.js +2464 -0
  413. package/examples/jsm/loaders/LUT3dlLoader.js +151 -0
  414. package/examples/jsm/loaders/LUTCubeLoader.js +153 -0
  415. package/examples/jsm/loaders/LWOLoader.js +1069 -0
  416. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  417. package/examples/jsm/loaders/LottieLoader.js +73 -0
  418. package/examples/jsm/loaders/MD2Loader.js +399 -0
  419. package/examples/jsm/loaders/MDDLoader.js +102 -0
  420. package/examples/jsm/loaders/MMDLoader.js +2242 -0
  421. package/examples/jsm/loaders/MTLLoader.js +567 -0
  422. package/examples/jsm/loaders/NRRDLoader.js +671 -0
  423. package/examples/jsm/loaders/OBJLoader.js +905 -0
  424. package/examples/jsm/loaders/PCDLoader.js +453 -0
  425. package/examples/jsm/loaders/PDBLoader.js +227 -0
  426. package/examples/jsm/loaders/PLYLoader.js +564 -0
  427. package/examples/jsm/loaders/PRWMLoader.js +299 -0
  428. package/examples/jsm/loaders/PVRLoader.js +251 -0
  429. package/examples/jsm/loaders/RGBELoader.js +468 -0
  430. package/examples/jsm/loaders/RGBMLoader.js +1065 -0
  431. package/examples/jsm/loaders/STLLoader.js +399 -0
  432. package/examples/jsm/loaders/SVGLoader.js +2950 -0
  433. package/examples/jsm/loaders/TDSLoader.js +1124 -0
  434. package/examples/jsm/loaders/TGALoader.js +517 -0
  435. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  436. package/examples/jsm/loaders/TTFLoader.js +221 -0
  437. package/examples/jsm/loaders/TiltLoader.js +514 -0
  438. package/examples/jsm/loaders/USDZLoader.js +618 -0
  439. package/examples/jsm/loaders/VOXLoader.js +305 -0
  440. package/examples/jsm/loaders/VRMLLoader.js +3493 -0
  441. package/examples/jsm/loaders/VTKLoader.js +1154 -0
  442. package/examples/jsm/loaders/XYZLoader.js +100 -0
  443. package/examples/jsm/loaders/ifc/web-ifc-api.js +47504 -0
  444. package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
  445. package/examples/jsm/loaders/lwo/IFFParser.js +1218 -0
  446. package/examples/jsm/loaders/lwo/LWO2Parser.js +414 -0
  447. package/examples/jsm/loaders/lwo/LWO3Parser.js +373 -0
  448. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  449. package/examples/jsm/math/Capsule.js +137 -0
  450. package/examples/jsm/math/ColorConverter.js +36 -0
  451. package/examples/jsm/math/ConvexHull.js +1271 -0
  452. package/examples/jsm/math/ImprovedNoise.js +71 -0
  453. package/examples/jsm/math/Lut.js +203 -0
  454. package/examples/jsm/math/MeshSurfaceSampler.js +211 -0
  455. package/examples/jsm/math/OBB.js +423 -0
  456. package/examples/jsm/math/Octree.js +462 -0
  457. package/examples/jsm/math/SimplexNoise.js +444 -0
  458. package/examples/jsm/misc/ConvexObjectBreaker.js +525 -0
  459. package/examples/jsm/misc/GPUComputationRenderer.js +454 -0
  460. package/examples/jsm/misc/Gyroscope.js +66 -0
  461. package/examples/jsm/misc/MD2Character.js +276 -0
  462. package/examples/jsm/misc/MD2CharacterComplex.js +576 -0
  463. package/examples/jsm/misc/MorphAnimMesh.js +75 -0
  464. package/examples/jsm/misc/MorphBlendMesh.js +322 -0
  465. package/examples/jsm/misc/ProgressiveLightMap.js +321 -0
  466. package/examples/jsm/misc/RollerCoaster.js +560 -0
  467. package/examples/jsm/misc/TubePainter.js +205 -0
  468. package/examples/jsm/misc/Volume.js +460 -0
  469. package/examples/jsm/misc/VolumeSlice.js +227 -0
  470. package/examples/jsm/modifiers/CurveModifier.js +325 -0
  471. package/examples/jsm/modifiers/EdgeSplitModifier.js +279 -0
  472. package/examples/jsm/modifiers/SimplifyModifier.js +525 -0
  473. package/examples/jsm/modifiers/TessellateModifier.js +307 -0
  474. package/examples/jsm/node-editor/NodeEditor.js +857 -0
  475. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  476. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  477. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  478. package/examples/jsm/node-editor/accessors/UVEditor.js +25 -0
  479. package/examples/jsm/node-editor/core/BaseNode.js +96 -0
  480. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  481. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  482. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  483. package/examples/jsm/node-editor/display/BlendEditor.js +44 -0
  484. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  485. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  486. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  487. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  488. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  489. package/examples/jsm/node-editor/examples/rim.json +1 -0
  490. package/examples/jsm/node-editor/inputs/ColorEditor.js +96 -0
  491. package/examples/jsm/node-editor/inputs/FloatEditor.js +23 -0
  492. package/examples/jsm/node-editor/inputs/SliderEditor.js +67 -0
  493. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  494. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  495. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  496. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  497. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +84 -0
  498. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
  499. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +118 -0
  500. package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
  501. package/examples/jsm/node-editor/math/DotEditor.js +35 -0
  502. package/examples/jsm/node-editor/math/InvertEditor.js +39 -0
  503. package/examples/jsm/node-editor/math/LimiterEditor.js +62 -0
  504. package/examples/jsm/node-editor/math/NormalizeEditor.js +28 -0
  505. package/examples/jsm/node-editor/math/OperatorEditor.js +63 -0
  506. package/examples/jsm/node-editor/math/PowerEditor.js +44 -0
  507. package/examples/jsm/node-editor/math/TrigonometryEditor.js +45 -0
  508. package/examples/jsm/node-editor/procedural/CheckerEditor.js +27 -0
  509. package/examples/jsm/node-editor/scene/MeshEditor.js +102 -0
  510. package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
  511. package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
  512. package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
  513. package/examples/jsm/node-editor/utils/OscillatorEditor.js +43 -0
  514. package/examples/jsm/node-editor/utils/PreviewEditor.js +170 -0
  515. package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
  516. package/examples/jsm/node-editor/utils/TimerEditor.js +58 -0
  517. package/examples/jsm/nodes/Nodes.js +346 -0
  518. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  519. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  520. package/examples/jsm/nodes/accessors/CameraNode.js +67 -0
  521. package/examples/jsm/nodes/accessors/CubeTextureNode.js +107 -0
  522. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  523. package/examples/jsm/nodes/accessors/MaterialNode.js +152 -0
  524. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +23 -0
  525. package/examples/jsm/nodes/accessors/ModelNode.js +21 -0
  526. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +30 -0
  527. package/examples/jsm/nodes/accessors/NormalNode.js +79 -0
  528. package/examples/jsm/nodes/accessors/Object3DNode.js +122 -0
  529. package/examples/jsm/nodes/accessors/PointUVNode.js +21 -0
  530. package/examples/jsm/nodes/accessors/PositionNode.js +83 -0
  531. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  532. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  533. package/examples/jsm/nodes/accessors/SkinningNode.js +109 -0
  534. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  535. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  536. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  537. package/examples/jsm/nodes/accessors/UVNode.js +41 -0
  538. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  539. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  540. package/examples/jsm/nodes/core/AttributeNode.js +94 -0
  541. package/examples/jsm/nodes/core/BypassNode.js +38 -0
  542. package/examples/jsm/nodes/core/CodeNode.js +50 -0
  543. package/examples/jsm/nodes/core/ConstNode.js +29 -0
  544. package/examples/jsm/nodes/core/ContextNode.js +52 -0
  545. package/examples/jsm/nodes/core/ExpressionNode.js +32 -0
  546. package/examples/jsm/nodes/core/FunctionCallNode.js +82 -0
  547. package/examples/jsm/nodes/core/FunctionNode.js +105 -0
  548. package/examples/jsm/nodes/core/InputNode.js +62 -0
  549. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  550. package/examples/jsm/nodes/core/Node.js +354 -0
  551. package/examples/jsm/nodes/core/NodeAttribute.js +14 -0
  552. package/examples/jsm/nodes/core/NodeBuilder.js +815 -0
  553. package/examples/jsm/nodes/core/NodeCode.js +15 -0
  554. package/examples/jsm/nodes/core/NodeFrame.js +59 -0
  555. package/examples/jsm/nodes/core/NodeFunction.js +22 -0
  556. package/examples/jsm/nodes/core/NodeFunctionInput.js +17 -0
  557. package/examples/jsm/nodes/core/NodeKeywords.js +80 -0
  558. package/examples/jsm/nodes/core/NodeParser.js +11 -0
  559. package/examples/jsm/nodes/core/NodeUniform.js +28 -0
  560. package/examples/jsm/nodes/core/NodeUtils.js +125 -0
  561. package/examples/jsm/nodes/core/NodeVar.js +14 -0
  562. package/examples/jsm/nodes/core/NodeVarying.js +14 -0
  563. package/examples/jsm/nodes/core/PropertyNode.js +36 -0
  564. package/examples/jsm/nodes/core/TempNode.js +50 -0
  565. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  566. package/examples/jsm/nodes/core/VarNode.js +97 -0
  567. package/examples/jsm/nodes/core/VaryingNode.js +54 -0
  568. package/examples/jsm/nodes/core/constants.js +21 -0
  569. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  570. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
  571. package/examples/jsm/nodes/display/ColorSpaceNode.js +95 -0
  572. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  573. package/examples/jsm/nodes/display/NormalMapNode.js +93 -0
  574. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  575. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  576. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  577. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  578. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  579. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  580. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  581. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  582. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  583. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  584. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  585. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  586. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  587. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  588. package/examples/jsm/nodes/gpgpu/ComputeNode.js +65 -0
  589. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  590. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  591. package/examples/jsm/nodes/lighting/EnvironmentNode.js +66 -0
  592. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  593. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  594. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  595. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  596. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  597. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  598. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +73 -0
  599. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  600. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +46 -0
  601. package/examples/jsm/nodes/materials/Materials.js +53 -0
  602. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +48 -0
  603. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  604. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +168 -0
  605. package/examples/jsm/nodes/materials/NodeMaterial.js +229 -0
  606. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +52 -0
  607. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +106 -0
  608. package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
  609. package/examples/jsm/nodes/materialx/MaterialXNodes.js +55 -0
  610. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
  611. package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
  612. package/examples/jsm/nodes/math/CondNode.js +60 -0
  613. package/examples/jsm/nodes/math/MathNode.js +243 -0
  614. package/examples/jsm/nodes/math/OperatorNode.js +214 -0
  615. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +152 -0
  616. package/examples/jsm/nodes/parsers/GLSLNodeParser.js +14 -0
  617. package/examples/jsm/nodes/parsers/WGSLNodeFunction.js +104 -0
  618. package/examples/jsm/nodes/parsers/WGSLNodeParser.js +14 -0
  619. package/examples/jsm/nodes/procedural/CheckerNode.js +34 -0
  620. package/examples/jsm/nodes/shadernode/ShaderNode.js +264 -0
  621. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +299 -0
  622. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +131 -0
  623. package/examples/jsm/nodes/utils/ArrayElementNode.js +31 -0
  624. package/examples/jsm/nodes/utils/ConvertNode.js +47 -0
  625. package/examples/jsm/nodes/utils/JoinNode.js +42 -0
  626. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  627. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +33 -0
  628. package/examples/jsm/nodes/utils/OscNode.js +74 -0
  629. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  630. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  631. package/examples/jsm/nodes/utils/SplitNode.js +102 -0
  632. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +58 -0
  633. package/examples/jsm/nodes/utils/TimerNode.js +84 -0
  634. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  635. package/examples/jsm/objects/Lensflare.js +378 -0
  636. package/examples/jsm/objects/LightningStorm.js +245 -0
  637. package/examples/jsm/objects/MarchingCubes.js +1172 -0
  638. package/examples/jsm/objects/Reflector.js +269 -0
  639. package/examples/jsm/objects/ReflectorForSSRPass.js +349 -0
  640. package/examples/jsm/objects/Refractor.js +332 -0
  641. package/examples/jsm/objects/ShadowMesh.js +80 -0
  642. package/examples/jsm/objects/Sky.js +219 -0
  643. package/examples/jsm/objects/Water.js +329 -0
  644. package/examples/jsm/objects/Water2.js +358 -0
  645. package/examples/jsm/offscreen/jank.js +45 -0
  646. package/examples/jsm/offscreen/offscreen.js +8 -0
  647. package/examples/jsm/offscreen/scene.js +86 -0
  648. package/examples/jsm/physics/AmmoPhysics.js +286 -0
  649. package/examples/jsm/physics/OimoPhysics.js +231 -0
  650. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +369 -0
  651. package/examples/jsm/postprocessing/AfterimagePass.js +90 -0
  652. package/examples/jsm/postprocessing/BloomPass.js +150 -0
  653. package/examples/jsm/postprocessing/BokehPass.js +131 -0
  654. package/examples/jsm/postprocessing/ClearPass.js +46 -0
  655. package/examples/jsm/postprocessing/CubeTexturePass.js +78 -0
  656. package/examples/jsm/postprocessing/DotScreenPass.js +58 -0
  657. package/examples/jsm/postprocessing/EffectComposer.js +310 -0
  658. package/examples/jsm/postprocessing/FilmPass.js +59 -0
  659. package/examples/jsm/postprocessing/GlitchPass.js +118 -0
  660. package/examples/jsm/postprocessing/HalftonePass.js +77 -0
  661. package/examples/jsm/postprocessing/LUTPass.js +173 -0
  662. package/examples/jsm/postprocessing/MaskPass.js +101 -0
  663. package/examples/jsm/postprocessing/OutlinePass.js +646 -0
  664. package/examples/jsm/postprocessing/Pass.js +80 -0
  665. package/examples/jsm/postprocessing/RenderPass.js +81 -0
  666. package/examples/jsm/postprocessing/SAOPass.js +413 -0
  667. package/examples/jsm/postprocessing/SMAAPass.js +188 -0
  668. package/examples/jsm/postprocessing/SSAARenderPass.js +224 -0
  669. package/examples/jsm/postprocessing/SSAOPass.js +450 -0
  670. package/examples/jsm/postprocessing/SSRPass.js +645 -0
  671. package/examples/jsm/postprocessing/SavePass.js +62 -0
  672. package/examples/jsm/postprocessing/ShaderPass.js +68 -0
  673. package/examples/jsm/postprocessing/TAARenderPass.js +167 -0
  674. package/examples/jsm/postprocessing/TexturePass.js +60 -0
  675. package/examples/jsm/postprocessing/UnrealBloomPass.js +403 -0
  676. package/examples/jsm/renderers/CSS2DRenderer.js +210 -0
  677. package/examples/jsm/renderers/CSS3DRenderer.js +313 -0
  678. package/examples/jsm/renderers/Projector.js +918 -0
  679. package/examples/jsm/renderers/SVGRenderer.js +553 -0
  680. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +26 -0
  681. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +733 -0
  682. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +49 -0
  683. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +129 -0
  684. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +144 -0
  685. package/examples/jsm/renderers/webgpu/WebGPUBinding.js +22 -0
  686. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +255 -0
  687. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  688. package/examples/jsm/renderers/webgpu/WebGPUBufferUtils.js +33 -0
  689. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +78 -0
  690. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +82 -0
  691. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +74 -0
  692. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +36 -0
  693. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +22 -0
  694. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +38 -0
  695. package/examples/jsm/renderers/webgpu/WebGPURenderLists.js +199 -0
  696. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +735 -0
  697. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +296 -0
  698. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  699. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +969 -0
  700. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +73 -0
  701. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +29 -0
  702. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +20 -0
  703. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +40 -0
  704. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +183 -0
  705. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +794 -0
  706. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +136 -0
  707. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +18 -0
  708. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +299 -0
  709. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  710. package/examples/jsm/renderers/webgpu/constants.js +261 -0
  711. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +801 -0
  712. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +39 -0
  713. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampler.js +21 -0
  714. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniform.js +135 -0
  715. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +83 -0
  716. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +87 -0
  717. package/examples/jsm/shaders/AfterimageShader.js +56 -0
  718. package/examples/jsm/shaders/BasicShader.js +27 -0
  719. package/examples/jsm/shaders/BleachBypassShader.js +60 -0
  720. package/examples/jsm/shaders/BlendShader.js +48 -0
  721. package/examples/jsm/shaders/BokehShader.js +143 -0
  722. package/examples/jsm/shaders/BokehShader2.js +390 -0
  723. package/examples/jsm/shaders/BrightnessContrastShader.js +54 -0
  724. package/examples/jsm/shaders/ColorCorrectionShader.js +50 -0
  725. package/examples/jsm/shaders/ColorifyShader.js +49 -0
  726. package/examples/jsm/shaders/ConvolutionShader.js +101 -0
  727. package/examples/jsm/shaders/CopyShader.js +43 -0
  728. package/examples/jsm/shaders/DOFMipMapShader.js +54 -0
  729. package/examples/jsm/shaders/DepthLimitedBlurShader.js +166 -0
  730. package/examples/jsm/shaders/DigitalGlitch.js +101 -0
  731. package/examples/jsm/shaders/DotScreenShader.js +68 -0
  732. package/examples/jsm/shaders/FXAAShader.js +286 -0
  733. package/examples/jsm/shaders/FilmShader.js +100 -0
  734. package/examples/jsm/shaders/FocusShader.js +87 -0
  735. package/examples/jsm/shaders/FreiChenShader.js +94 -0
  736. package/examples/jsm/shaders/GammaCorrectionShader.js +41 -0
  737. package/examples/jsm/shaders/GodRaysShader.js +313 -0
  738. package/examples/jsm/shaders/HalftoneShader.js +310 -0
  739. package/examples/jsm/shaders/HorizontalBlurShader.js +57 -0
  740. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +61 -0
  741. package/examples/jsm/shaders/HueSaturationShader.js +65 -0
  742. package/examples/jsm/shaders/KaleidoShader.js +56 -0
  743. package/examples/jsm/shaders/LuminosityHighPassShader.js +64 -0
  744. package/examples/jsm/shaders/LuminosityShader.js +46 -0
  745. package/examples/jsm/shaders/MMDToonShader.js +123 -0
  746. package/examples/jsm/shaders/MirrorShader.js +54 -0
  747. package/examples/jsm/shaders/NormalMapShader.js +53 -0
  748. package/examples/jsm/shaders/PixelShader.js +44 -0
  749. package/examples/jsm/shaders/RGBShiftShader.js +52 -0
  750. package/examples/jsm/shaders/SAOShader.js +188 -0
  751. package/examples/jsm/shaders/SMAAShader.js +460 -0
  752. package/examples/jsm/shaders/SSAOShader.js +288 -0
  753. package/examples/jsm/shaders/SSRShader.js +364 -0
  754. package/examples/jsm/shaders/SepiaShader.js +50 -0
  755. package/examples/jsm/shaders/SobelOperatorShader.js +90 -0
  756. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +88 -0
  757. package/examples/jsm/shaders/TechnicolorShader.js +43 -0
  758. package/examples/jsm/shaders/ToneMapShader.js +73 -0
  759. package/examples/jsm/shaders/ToonShader.js +318 -0
  760. package/examples/jsm/shaders/TriangleBlurShader.js +72 -0
  761. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +45 -0
  762. package/examples/jsm/shaders/VerticalBlurShader.js +57 -0
  763. package/examples/jsm/shaders/VerticalTiltShiftShader.js +61 -0
  764. package/examples/jsm/shaders/VignetteShader.js +49 -0
  765. package/examples/jsm/shaders/VolumeShader.js +289 -0
  766. package/examples/jsm/shaders/WaterRefractionShader.js +90 -0
  767. package/examples/jsm/textures/FlakesTexture.js +40 -0
  768. package/examples/jsm/utils/BufferGeometryUtils.js +1222 -0
  769. package/examples/jsm/utils/CameraUtils.js +73 -0
  770. package/examples/jsm/utils/GPUStatsPanel.js +128 -0
  771. package/examples/jsm/utils/GeometryCompressionUtils.js +639 -0
  772. package/examples/jsm/utils/GeometryUtils.js +221 -0
  773. package/examples/jsm/utils/LDrawUtils.js +202 -0
  774. package/examples/jsm/utils/PackedPhongMaterial.js +251 -0
  775. package/examples/jsm/utils/SceneUtils.js +125 -0
  776. package/examples/jsm/utils/ShadowMapViewer.js +210 -0
  777. package/examples/jsm/utils/SkeletonUtils.js +596 -0
  778. package/examples/jsm/utils/UVsDebug.js +165 -0
  779. package/examples/jsm/utils/WorkerPool.js +102 -0
  780. package/examples/jsm/webxr/ARButton.js +208 -0
  781. package/examples/jsm/webxr/OculusHandModel.js +108 -0
  782. package/examples/jsm/webxr/OculusHandPointerModel.js +394 -0
  783. package/examples/jsm/webxr/Text2D.js +38 -0
  784. package/examples/jsm/webxr/VRButton.js +201 -0
  785. package/examples/jsm/webxr/XRControllerModelFactory.js +310 -0
  786. package/examples/jsm/webxr/XREstimatedLight.js +223 -0
  787. package/examples/jsm/webxr/XRHandMeshModel.js +108 -0
  788. package/examples/jsm/webxr/XRHandModelFactory.js +105 -0
  789. package/examples/jsm/webxr/XRHandPrimitiveModel.js +103 -0
  790. package/package.json +179 -0
  791. package/src/Three.Legacy.js +320 -0
  792. package/src/Three.js +180 -0
  793. package/src/animation/AnimationAction.js +700 -0
  794. package/src/animation/AnimationClip.js +473 -0
  795. package/src/animation/AnimationMixer.js +770 -0
  796. package/src/animation/AnimationObjectGroup.js +387 -0
  797. package/src/animation/AnimationUtils.js +361 -0
  798. package/src/animation/KeyframeTrack.js +462 -0
  799. package/src/animation/PropertyBinding.js +719 -0
  800. package/src/animation/PropertyMixer.js +318 -0
  801. package/src/animation/tracks/BooleanKeyframeTrack.js +19 -0
  802. package/src/animation/tracks/ColorKeyframeTrack.js +15 -0
  803. package/src/animation/tracks/NumberKeyframeTrack.js +12 -0
  804. package/src/animation/tracks/QuaternionKeyframeTrack.js +23 -0
  805. package/src/animation/tracks/StringKeyframeTrack.js +15 -0
  806. package/src/animation/tracks/VectorKeyframeTrack.js +12 -0
  807. package/src/audio/Audio.js +391 -0
  808. package/src/audio/AudioAnalyser.js +40 -0
  809. package/src/audio/AudioContext.js +25 -0
  810. package/src/audio/AudioListener.js +137 -0
  811. package/src/audio/PositionalAudio.js +138 -0
  812. package/src/cameras/ArrayCamera.js +17 -0
  813. package/src/cameras/Camera.js +68 -0
  814. package/src/cameras/CubeCamera.js +107 -0
  815. package/src/cameras/OrthographicCamera.js +136 -0
  816. package/src/cameras/PerspectiveCamera.js +233 -0
  817. package/src/cameras/StereoCamera.js +100 -0
  818. package/src/constants.js +181 -0
  819. package/src/core/BufferAttribute.js +493 -0
  820. package/src/core/BufferGeometry.js +1092 -0
  821. package/src/core/Clock.js +74 -0
  822. package/src/core/EventDispatcher.js +87 -0
  823. package/src/core/GLBufferAttribute.js +58 -0
  824. package/src/core/InstancedBufferAttribute.js +39 -0
  825. package/src/core/InstancedBufferGeometry.js +46 -0
  826. package/src/core/InstancedInterleavedBuffer.js +48 -0
  827. package/src/core/InterleavedBuffer.js +145 -0
  828. package/src/core/InterleavedBufferAttribute.js +331 -0
  829. package/src/core/Layers.js +60 -0
  830. package/src/core/Object3D.js +944 -0
  831. package/src/core/Raycaster.js +110 -0
  832. package/src/core/Uniform.js +17 -0
  833. package/src/core/UniformsGroup.js +92 -0
  834. package/src/extras/DataUtils.js +170 -0
  835. package/src/extras/Earcut.js +789 -0
  836. package/src/extras/ImageUtils.js +129 -0
  837. package/src/extras/PMREMGenerator.js +900 -0
  838. package/src/extras/ShapeUtils.js +92 -0
  839. package/src/extras/core/Curve.js +416 -0
  840. package/src/extras/core/CurvePath.js +252 -0
  841. package/src/extras/core/Interpolations.js +79 -0
  842. package/src/extras/core/Path.js +196 -0
  843. package/src/extras/core/Shape.js +102 -0
  844. package/src/extras/core/ShapePath.js +291 -0
  845. package/src/extras/curves/ArcCurve.js +17 -0
  846. package/src/extras/curves/CatmullRomCurve3.js +255 -0
  847. package/src/extras/curves/CubicBezierCurve.js +78 -0
  848. package/src/extras/curves/CubicBezierCurve3.js +79 -0
  849. package/src/extras/curves/Curves.js +10 -0
  850. package/src/extras/curves/EllipseCurve.js +156 -0
  851. package/src/extras/curves/LineCurve.js +90 -0
  852. package/src/extras/curves/LineCurve3.js +75 -0
  853. package/src/extras/curves/QuadraticBezierCurve.js +74 -0
  854. package/src/extras/curves/QuadraticBezierCurve3.js +75 -0
  855. package/src/extras/curves/SplineCurve.js +97 -0
  856. package/src/geometries/BoxGeometry.js +170 -0
  857. package/src/geometries/CapsuleGeometry.js +33 -0
  858. package/src/geometries/CircleGeometry.js +91 -0
  859. package/src/geometries/ConeGeometry.js +31 -0
  860. package/src/geometries/CylinderGeometry.js +276 -0
  861. package/src/geometries/DodecahedronGeometry.js +66 -0
  862. package/src/geometries/EdgesGeometry.js +142 -0
  863. package/src/geometries/ExtrudeGeometry.js +804 -0
  864. package/src/geometries/Geometries.js +21 -0
  865. package/src/geometries/IcosahedronGeometry.js +42 -0
  866. package/src/geometries/LatheGeometry.js +179 -0
  867. package/src/geometries/OctahedronGeometry.js +37 -0
  868. package/src/geometries/PlaneGeometry.js +88 -0
  869. package/src/geometries/PolyhedronGeometry.js +309 -0
  870. package/src/geometries/RingGeometry.js +118 -0
  871. package/src/geometries/ShapeGeometry.js +185 -0
  872. package/src/geometries/SphereGeometry.js +127 -0
  873. package/src/geometries/TetrahedronGeometry.js +34 -0
  874. package/src/geometries/TorusGeometry.js +110 -0
  875. package/src/geometries/TorusKnotGeometry.js +157 -0
  876. package/src/geometries/TubeGeometry.js +193 -0
  877. package/src/geometries/WireframeGeometry.js +137 -0
  878. package/src/helpers/ArrowHelper.js +114 -0
  879. package/src/helpers/AxesHelper.js +68 -0
  880. package/src/helpers/Box3Helper.js +56 -0
  881. package/src/helpers/BoxHelper.js +113 -0
  882. package/src/helpers/CameraHelper.js +269 -0
  883. package/src/helpers/DirectionalLightHelper.js +89 -0
  884. package/src/helpers/GridHelper.js +56 -0
  885. package/src/helpers/HemisphereLightHelper.js +85 -0
  886. package/src/helpers/PlaneHelper.js +63 -0
  887. package/src/helpers/PointLightHelper.js +91 -0
  888. package/src/helpers/PolarGridHelper.js +96 -0
  889. package/src/helpers/SkeletonHelper.js +128 -0
  890. package/src/helpers/SpotLightHelper.js +92 -0
  891. package/src/lights/AmbientLight.js +17 -0
  892. package/src/lights/AmbientLightProbe.js +21 -0
  893. package/src/lights/DirectionalLight.js +43 -0
  894. package/src/lights/DirectionalLightShadow.js +16 -0
  895. package/src/lights/HemisphereLight.js +34 -0
  896. package/src/lights/HemisphereLightProbe.js +30 -0
  897. package/src/lights/Light.js +58 -0
  898. package/src/lights/LightProbe.js +47 -0
  899. package/src/lights/LightShadow.js +147 -0
  900. package/src/lights/PointLight.js +57 -0
  901. package/src/lights/PointLightShadow.js +96 -0
  902. package/src/lights/RectAreaLight.js +56 -0
  903. package/src/lights/SpotLight.js +71 -0
  904. package/src/lights/SpotLightShadow.js +50 -0
  905. package/src/loaders/AnimationLoader.js +66 -0
  906. package/src/loaders/AudioLoader.js +60 -0
  907. package/src/loaders/BufferGeometryLoader.js +224 -0
  908. package/src/loaders/Cache.js +42 -0
  909. package/src/loaders/CompressedTextureLoader.js +134 -0
  910. package/src/loaders/CubeTextureLoader.js +56 -0
  911. package/src/loaders/DataTextureLoader.js +114 -0
  912. package/src/loaders/FileLoader.js +281 -0
  913. package/src/loaders/ImageBitmapLoader.js +99 -0
  914. package/src/loaders/ImageLoader.js +91 -0
  915. package/src/loaders/Loader.js +70 -0
  916. package/src/loaders/LoaderUtils.js +75 -0
  917. package/src/loaders/LoadingManager.js +142 -0
  918. package/src/loaders/MaterialLoader.js +355 -0
  919. package/src/loaders/ObjectLoader.js +1081 -0
  920. package/src/loaders/TextureLoader.js +41 -0
  921. package/src/materials/LineBasicMaterial.js +45 -0
  922. package/src/materials/LineDashedMaterial.js +35 -0
  923. package/src/materials/Material.js +493 -0
  924. package/src/materials/Materials.js +39 -0
  925. package/src/materials/MeshBasicMaterial.js +81 -0
  926. package/src/materials/MeshDepthMaterial.js +54 -0
  927. package/src/materials/MeshDistanceMaterial.js +52 -0
  928. package/src/materials/MeshLambertMaterial.js +116 -0
  929. package/src/materials/MeshMatcapMaterial.js +81 -0
  930. package/src/materials/MeshNormalMaterial.js +61 -0
  931. package/src/materials/MeshPhongMaterial.js +120 -0
  932. package/src/materials/MeshPhysicalMaterial.js +198 -0
  933. package/src/materials/MeshStandardMaterial.js +124 -0
  934. package/src/materials/MeshToonMaterial.js +102 -0
  935. package/src/materials/PointsMaterial.js +50 -0
  936. package/src/materials/RawShaderMaterial.js +17 -0
  937. package/src/materials/ShaderMaterial.js +182 -0
  938. package/src/materials/ShadowMaterial.js +37 -0
  939. package/src/materials/SpriteMaterial.js +54 -0
  940. package/src/math/Box2.js +203 -0
  941. package/src/math/Box3.js +532 -0
  942. package/src/math/Color.js +605 -0
  943. package/src/math/ColorManagement.js +74 -0
  944. package/src/math/Cylindrical.js +61 -0
  945. package/src/math/Euler.js +324 -0
  946. package/src/math/Frustum.js +162 -0
  947. package/src/math/Interpolant.js +241 -0
  948. package/src/math/Line3.js +115 -0
  949. package/src/math/MathUtils.js +321 -0
  950. package/src/math/Matrix3.js +333 -0
  951. package/src/math/Matrix4.js +860 -0
  952. package/src/math/Plane.js +205 -0
  953. package/src/math/Quaternion.js +678 -0
  954. package/src/math/Ray.js +496 -0
  955. package/src/math/Sphere.js +250 -0
  956. package/src/math/Spherical.js +86 -0
  957. package/src/math/SphericalHarmonics3.js +243 -0
  958. package/src/math/Triangle.js +299 -0
  959. package/src/math/Vector2.js +464 -0
  960. package/src/math/Vector3.js +715 -0
  961. package/src/math/Vector4.js +644 -0
  962. package/src/math/interpolants/CubicInterpolant.js +151 -0
  963. package/src/math/interpolants/DiscreteInterpolant.js +26 -0
  964. package/src/math/interpolants/LinearInterpolant.js +38 -0
  965. package/src/math/interpolants/QuaternionLinearInterpolant.js +39 -0
  966. package/src/objects/Bone.js +17 -0
  967. package/src/objects/Group.js +17 -0
  968. package/src/objects/InstancedMesh.js +126 -0
  969. package/src/objects/LOD.js +195 -0
  970. package/src/objects/Line.js +222 -0
  971. package/src/objects/LineLoop.js +17 -0
  972. package/src/objects/LineSegments.js +55 -0
  973. package/src/objects/Mesh.js +397 -0
  974. package/src/objects/Points.js +166 -0
  975. package/src/objects/Skeleton.js +281 -0
  976. package/src/objects/SkinnedMesh.js +151 -0
  977. package/src/objects/Sprite.js +181 -0
  978. package/src/renderers/WebGL1Renderer.js +7 -0
  979. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  980. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  981. package/src/renderers/WebGLCubeRenderTarget.js +146 -0
  982. package/src/renderers/WebGLMultipleRenderTargets.js +82 -0
  983. package/src/renderers/WebGLRenderTarget.js +110 -0
  984. package/src/renderers/WebGLRenderer.js +2280 -0
  985. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +7 -0
  986. package/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl.js +7 -0
  987. package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +7 -0
  988. package/src/renderers/shaders/ShaderChunk/alphatest_pars_fragment.glsl.js +5 -0
  989. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +18 -0
  990. package/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl.js +8 -0
  991. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +3 -0
  992. package/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl.js +9 -0
  993. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +304 -0
  994. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +42 -0
  995. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +7 -0
  996. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +18 -0
  997. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +21 -0
  998. package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +33 -0
  999. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl.js +9 -0
  1000. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl.js +7 -0
  1001. package/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl.js +7 -0
  1002. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +11 -0
  1003. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +11 -0
  1004. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +11 -0
  1005. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +23 -0
  1006. package/src/renderers/shaders/ShaderChunk/common.glsl.js +118 -0
  1007. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +191 -0
  1008. package/src/renderers/shaders/ShaderChunk/default_fragment.glsl.js +5 -0
  1009. package/src/renderers/shaders/ShaderChunk/default_vertex.glsl.js +5 -0
  1010. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +36 -0
  1011. package/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl.js +9 -0
  1012. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +7 -0
  1013. package/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl.js +7 -0
  1014. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +20 -0
  1015. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +9 -0
  1016. package/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl.js +7 -0
  1017. package/src/renderers/shaders/ShaderChunk/encodings_fragment.glsl.js +3 -0
  1018. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +11 -0
  1019. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +14 -0
  1020. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +66 -0
  1021. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +21 -0
  1022. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +22 -0
  1023. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +46 -0
  1024. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +37 -0
  1025. package/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +17 -0
  1026. package/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +19 -0
  1027. package/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +7 -0
  1028. package/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +7 -0
  1029. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +27 -0
  1030. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +121 -0
  1031. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  1032. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +10 -0
  1033. package/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl.js +8 -0
  1034. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +199 -0
  1035. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +13 -0
  1036. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +32 -0
  1037. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  1038. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
  1039. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +223 -0
  1040. package/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl.js +7 -0
  1041. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +34 -0
  1042. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +120 -0
  1043. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +264 -0
  1044. package/src/renderers/shaders/ShaderChunk/lights_toon_fragment.glsl.js +4 -0
  1045. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +28 -0
  1046. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +9 -0
  1047. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +9 -0
  1048. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +16 -0
  1049. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +22 -0
  1050. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +17 -0
  1051. package/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl.js +7 -0
  1052. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +19 -0
  1053. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +19 -0
  1054. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +12 -0
  1055. package/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl.js +7 -0
  1056. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  1057. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +27 -0
  1058. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +38 -0
  1059. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +36 -0
  1060. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +46 -0
  1061. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +41 -0
  1062. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +14 -0
  1063. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +14 -0
  1064. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +14 -0
  1065. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +43 -0
  1066. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +12 -0
  1067. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +54 -0
  1068. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +8 -0
  1069. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +13 -0
  1070. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -0
  1071. package/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl.js +7 -0
  1072. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +321 -0
  1073. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +68 -0
  1074. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +63 -0
  1075. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +66 -0
  1076. package/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl.js +10 -0
  1077. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +33 -0
  1078. package/src/renderers/shaders/ShaderChunk/skinning_vertex.glsl.js +15 -0
  1079. package/src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl.js +20 -0
  1080. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +14 -0
  1081. package/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl.js +7 -0
  1082. package/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl.js +7 -0
  1083. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +77 -0
  1084. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +36 -0
  1085. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +116 -0
  1086. package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +7 -0
  1087. package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +10 -0
  1088. package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +7 -0
  1089. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +7 -0
  1090. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +17 -0
  1091. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +7 -0
  1092. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +15 -0
  1093. package/src/renderers/shaders/ShaderChunk.js +265 -0
  1094. package/src/renderers/shaders/ShaderLib/background.glsl.js +35 -0
  1095. package/src/renderers/shaders/ShaderLib/cube.glsl.js +38 -0
  1096. package/src/renderers/shaders/ShaderLib/depth.glsl.js +92 -0
  1097. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +73 -0
  1098. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +35 -0
  1099. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +70 -0
  1100. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +115 -0
  1101. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +123 -0
  1102. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +107 -0
  1103. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +82 -0
  1104. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +125 -0
  1105. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +216 -0
  1106. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +117 -0
  1107. package/src/renderers/shaders/ShaderLib/points.glsl.js +71 -0
  1108. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +49 -0
  1109. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +79 -0
  1110. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +53 -0
  1111. package/src/renderers/shaders/ShaderLib.js +331 -0
  1112. package/src/renderers/shaders/UniformsLib.js +218 -0
  1113. package/src/renderers/shaders/UniformsUtils.js +80 -0
  1114. package/src/renderers/webgl/WebGLAnimation.js +53 -0
  1115. package/src/renderers/webgl/WebGLAttributes.js +193 -0
  1116. package/src/renderers/webgl/WebGLBackground.js +228 -0
  1117. package/src/renderers/webgl/WebGLBindingStates.js +623 -0
  1118. package/src/renderers/webgl/WebGLBufferRenderer.js +61 -0
  1119. package/src/renderers/webgl/WebGLCapabilities.js +121 -0
  1120. package/src/renderers/webgl/WebGLClipping.js +167 -0
  1121. package/src/renderers/webgl/WebGLCubeMaps.js +99 -0
  1122. package/src/renderers/webgl/WebGLCubeUVMaps.js +130 -0
  1123. package/src/renderers/webgl/WebGLExtensions.js +96 -0
  1124. package/src/renderers/webgl/WebGLGeometries.js +195 -0
  1125. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +71 -0
  1126. package/src/renderers/webgl/WebGLInfo.js +72 -0
  1127. package/src/renderers/webgl/WebGLLights.js +574 -0
  1128. package/src/renderers/webgl/WebGLMaterials.js +677 -0
  1129. package/src/renderers/webgl/WebGLMorphtargets.js +300 -0
  1130. package/src/renderers/webgl/WebGLObjects.js +72 -0
  1131. package/src/renderers/webgl/WebGLProgram.js +901 -0
  1132. package/src/renderers/webgl/WebGLPrograms.js +542 -0
  1133. package/src/renderers/webgl/WebGLProperties.js +48 -0
  1134. package/src/renderers/webgl/WebGLRenderLists.js +238 -0
  1135. package/src/renderers/webgl/WebGLRenderStates.js +107 -0
  1136. package/src/renderers/webgl/WebGLShader.js +12 -0
  1137. package/src/renderers/webgl/WebGLShaderCache.js +124 -0
  1138. package/src/renderers/webgl/WebGLShadowMap.js +374 -0
  1139. package/src/renderers/webgl/WebGLState.js +1263 -0
  1140. package/src/renderers/webgl/WebGLTextures.js +1944 -0
  1141. package/src/renderers/webgl/WebGLUniforms.js +1050 -0
  1142. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  1143. package/src/renderers/webgl/WebGLUtils.js +266 -0
  1144. package/src/renderers/webxr/WebXRController.js +307 -0
  1145. package/src/renderers/webxr/WebXRManager.js +731 -0
  1146. package/src/scenes/Fog.js +37 -0
  1147. package/src/scenes/FogExp2.js +34 -0
  1148. package/src/scenes/Scene.js +71 -0
  1149. package/src/textures/CanvasTexture.js +17 -0
  1150. package/src/textures/CompressedTexture.js +28 -0
  1151. package/src/textures/CubeTexture.js +33 -0
  1152. package/src/textures/Data3DTexture.js +35 -0
  1153. package/src/textures/DataArrayTexture.js +27 -0
  1154. package/src/textures/DataTexture.js +22 -0
  1155. package/src/textures/DepthTexture.js +36 -0
  1156. package/src/textures/FramebufferTexture.js +25 -0
  1157. package/src/textures/Source.js +123 -0
  1158. package/src/textures/Texture.js +308 -0
  1159. package/src/textures/VideoTexture.js +55 -0
  1160. package/src/utils.js +71 -0
@@ -0,0 +1,2431 @@
1
+ import {
2
+ IFCRELAGGREGATES,
3
+ IFCRELCONTAINEDINSPATIALSTRUCTURE,
4
+ IFCRELDEFINESBYPROPERTIES,
5
+ IFCRELASSOCIATESMATERIAL,
6
+ IFCRELDEFINESBYTYPE,
7
+ IFCPROJECT,
8
+ IfcAPI
9
+ } from './ifc/web-ifc-api.js';
10
+ import {
11
+ BufferAttribute,
12
+ Mesh,
13
+ Matrix4,
14
+ BufferGeometry,
15
+ Color,
16
+ MeshLambertMaterial,
17
+ DoubleSide,
18
+ Loader,
19
+ FileLoader
20
+ } from 'three';
21
+ import { mergeBufferGeometries } from '../utils/BufferGeometryUtils.js';
22
+
23
+ const IdAttrName = 'expressID';
24
+ const merge = ( geoms, createGroups = false ) => {
25
+
26
+ return mergeBufferGeometries( geoms, createGroups );
27
+
28
+ };
29
+
30
+ const newFloatAttr = ( data, size ) => {
31
+
32
+ return new BufferAttribute( new Float32Array( data ), size );
33
+
34
+ };
35
+
36
+ const newIntAttr = ( data, size ) => {
37
+
38
+ return new BufferAttribute( new Uint32Array( data ), size );
39
+
40
+ };
41
+
42
+ const DEFAULT = 'default';
43
+ const PropsNames = {
44
+ aggregates: {
45
+ name: IFCRELAGGREGATES,
46
+ relating: 'RelatingObject',
47
+ related: 'RelatedObjects',
48
+ key: 'children'
49
+ },
50
+ spatial: {
51
+ name: IFCRELCONTAINEDINSPATIALSTRUCTURE,
52
+ relating: 'RelatingStructure',
53
+ related: 'RelatedElements',
54
+ key: 'children'
55
+ },
56
+ psets: {
57
+ name: IFCRELDEFINESBYPROPERTIES,
58
+ relating: 'RelatingPropertyDefinition',
59
+ related: 'RelatedObjects',
60
+ key: 'hasPsets'
61
+ },
62
+ materials: {
63
+ name: IFCRELASSOCIATESMATERIAL,
64
+ relating: 'RelatingMaterial',
65
+ related: 'RelatedObjects',
66
+ key: 'hasMaterial'
67
+ },
68
+ type: {
69
+ name: IFCRELDEFINESBYTYPE,
70
+ relating: 'RelatingType',
71
+ related: 'RelatedObjects',
72
+ key: 'hasType'
73
+ }
74
+ };
75
+
76
+ class IFCParser {
77
+
78
+ constructor( state, BVH ) {
79
+
80
+ this.state = state;
81
+ this.BVH = BVH;
82
+ this.loadedModels = 0;
83
+ this.currentWebIfcID = - 1;
84
+ this.currentModelID = - 1;
85
+
86
+ }
87
+
88
+ async parse( buffer ) {
89
+
90
+ if ( this.state.api.wasmModule === undefined )
91
+ await this.state.api.Init();
92
+ this.newIfcModel( buffer );
93
+ this.loadedModels ++;
94
+ return this.loadAllGeometry();
95
+
96
+ }
97
+
98
+ newIfcModel( buffer ) {
99
+
100
+ const data = new Uint8Array( buffer );
101
+ this.currentWebIfcID = this.state.api.OpenModel( data, this.state.webIfcSettings );
102
+ this.currentModelID = this.state.useJSON ? this.loadedModels : this.currentWebIfcID;
103
+ this.state.models[ this.currentModelID ] = {
104
+ modelID: this.currentModelID,
105
+ mesh: {},
106
+ items: {},
107
+ types: {},
108
+ jsonData: {}
109
+ };
110
+
111
+ }
112
+
113
+ loadAllGeometry() {
114
+
115
+ this.saveAllPlacedGeometriesByMaterial();
116
+ return this.generateAllGeometriesByMaterial();
117
+
118
+ }
119
+
120
+ generateAllGeometriesByMaterial() {
121
+
122
+ const { geometry, materials } = this.getGeometryAndMaterials();
123
+ this.BVH.applyThreeMeshBVH( geometry );
124
+ const mesh = new Mesh( geometry, materials );
125
+ mesh.modelID = this.currentModelID;
126
+ this.state.models[ this.currentModelID ].mesh = mesh;
127
+ return mesh;
128
+
129
+ }
130
+
131
+ getGeometryAndMaterials() {
132
+
133
+ const items = this.state.models[ this.currentModelID ].items;
134
+ const mergedByMaterial = [];
135
+ const materials = [];
136
+ for ( const materialID in items ) {
137
+
138
+ materials.push( items[ materialID ].material );
139
+ const geometries = Object.values( items[ materialID ].geometries );
140
+ mergedByMaterial.push( merge( geometries ) );
141
+
142
+ }
143
+
144
+ const geometry = merge( mergedByMaterial, true );
145
+ return {
146
+ geometry,
147
+ materials
148
+ };
149
+
150
+ }
151
+
152
+ saveAllPlacedGeometriesByMaterial() {
153
+
154
+ const flatMeshes = this.state.api.LoadAllGeometry( this.currentWebIfcID );
155
+ for ( let i = 0; i < flatMeshes.size(); i ++ ) {
156
+
157
+ const flatMesh = flatMeshes.get( i );
158
+ const placedGeom = flatMesh.geometries;
159
+ for ( let j = 0; j < placedGeom.size(); j ++ ) {
160
+
161
+ this.savePlacedGeometry( placedGeom.get( j ), flatMesh.expressID );
162
+
163
+ }
164
+
165
+ }
166
+
167
+ }
168
+
169
+ savePlacedGeometry( placedGeometry, id ) {
170
+
171
+ const geometry = this.getBufferGeometry( placedGeometry );
172
+ geometry.computeVertexNormals();
173
+ const matrix = this.getMeshMatrix( placedGeometry.flatTransformation );
174
+ geometry.applyMatrix4( matrix );
175
+ this.saveGeometryByMaterial( geometry, placedGeometry, id );
176
+
177
+ }
178
+
179
+ getBufferGeometry( placed ) {
180
+
181
+ const geometry = this.state.api.GetGeometry( this.currentWebIfcID, placed.geometryExpressID );
182
+ const vertexData = this.getVertices( geometry );
183
+ const indices = this.getIndices( geometry );
184
+ const { vertices, normals } = this.extractVertexData( vertexData );
185
+ return this.ifcGeomToBufferGeom( vertices, normals, indices );
186
+
187
+ }
188
+
189
+ getVertices( geometry ) {
190
+
191
+ const vData = geometry.GetVertexData();
192
+ const vDataSize = geometry.GetVertexDataSize();
193
+ return this.state.api.GetVertexArray( vData, vDataSize );
194
+
195
+ }
196
+
197
+ getIndices( geometry ) {
198
+
199
+ const iData = geometry.GetIndexData();
200
+ const iDataSize = geometry.GetIndexDataSize();
201
+ return this.state.api.GetIndexArray( iData, iDataSize );
202
+
203
+ }
204
+
205
+ getMeshMatrix( matrix ) {
206
+
207
+ const mat = new Matrix4();
208
+ mat.fromArray( matrix );
209
+ return mat;
210
+
211
+ }
212
+
213
+ ifcGeomToBufferGeom( vertices, normals, indexData ) {
214
+
215
+ const geometry = new BufferGeometry();
216
+ geometry.setAttribute( 'position', newFloatAttr( vertices, 3 ) );
217
+ geometry.setAttribute( 'normal', newFloatAttr( normals, 3 ) );
218
+ geometry.setIndex( new BufferAttribute( indexData, 1 ) );
219
+ return geometry;
220
+
221
+ }
222
+
223
+ extractVertexData( vertexData ) {
224
+
225
+ const vertices = [];
226
+ const normals = [];
227
+ let isNormalData = false;
228
+ for ( let i = 0; i < vertexData.length; i ++ ) {
229
+
230
+ isNormalData ? normals.push( vertexData[ i ] ) : vertices.push( vertexData[ i ] );
231
+ if ( ( i + 1 ) % 3 == 0 )
232
+ isNormalData = ! isNormalData;
233
+
234
+ }
235
+
236
+ return {
237
+ vertices,
238
+ normals
239
+ };
240
+
241
+ }
242
+
243
+ saveGeometryByMaterial( geom, placedGeom, id ) {
244
+
245
+ const color = placedGeom.color;
246
+ const colorID = `${color.x}${color.y}${color.z}${color.w}`;
247
+ this.storeGeometryAttribute( id, geom );
248
+ this.createMaterial( colorID, color );
249
+ const item = this.state.models[ this.currentModelID ].items[ colorID ];
250
+ const currentGeom = item.geometries[ id ];
251
+ if ( ! currentGeom )
252
+ return ( item.geometries[ id ] = geom );
253
+ const merged = merge( [ currentGeom, geom ] );
254
+ item.geometries[ id ] = merged;
255
+
256
+ }
257
+
258
+ storeGeometryAttribute( id, geometry ) {
259
+
260
+ const size = geometry.attributes.position.count;
261
+ const idAttribute = new Array( size ).fill( id );
262
+ geometry.setAttribute( IdAttrName, newIntAttr( idAttribute, 1 ) );
263
+
264
+ }
265
+
266
+ createMaterial( colorID, color ) {
267
+
268
+ const items = this.state.models[ this.currentModelID ].items;
269
+ if ( items[ colorID ] )
270
+ return;
271
+ const col = new Color( color.x, color.y, color.z );
272
+ const newMaterial = new MeshLambertMaterial( {
273
+ color: col,
274
+ side: DoubleSide
275
+ } );
276
+ newMaterial.transparent = color.w !== 1;
277
+ if ( newMaterial.transparent )
278
+ newMaterial.opacity = color.w;
279
+ items[ colorID ] = {
280
+ material: newMaterial,
281
+ geometries: {}
282
+ };
283
+
284
+ }
285
+
286
+ }
287
+
288
+ class SubsetManager {
289
+
290
+ constructor( state, BVH ) {
291
+
292
+ this.selected = {};
293
+ this.state = state;
294
+ this.BVH = BVH;
295
+
296
+ }
297
+
298
+ getSubset( modelID, material ) {
299
+
300
+ const currentMat = this.matIDNoConfig( modelID, material );
301
+ if ( ! this.selected[ currentMat ] )
302
+ return null;
303
+ return this.selected[ currentMat ].mesh;
304
+
305
+ }
306
+
307
+ removeSubset( modelID, parent, material ) {
308
+
309
+ const currentMat = this.matIDNoConfig( modelID, material );
310
+ if ( ! this.selected[ currentMat ] )
311
+ return;
312
+ if ( parent )
313
+ parent.remove( this.selected[ currentMat ].mesh );
314
+ delete this.selected[ currentMat ];
315
+
316
+ }
317
+
318
+ createSubset( config ) {
319
+
320
+ if ( ! this.isConfigValid( config ) )
321
+ return;
322
+ if ( this.isPreviousSelection( config ) )
323
+ return;
324
+ if ( this.isEasySelection( config ) )
325
+ return this.addToPreviousSelection( config );
326
+ this.updatePreviousSelection( config.scene, config );
327
+ return this.createSelectionInScene( config );
328
+
329
+ }
330
+
331
+ createSelectionInScene( config ) {
332
+
333
+ const filtered = this.filter( config );
334
+ const { geomsByMaterial, materials } = this.getGeomAndMat( filtered );
335
+ const isDefMaterial = this.isDefaultMat( config );
336
+ const geometry = this.getMergedGeometry( geomsByMaterial, isDefMaterial );
337
+ const mats = isDefMaterial ? materials : config.material;
338
+ this.BVH.applyThreeMeshBVH( geometry );
339
+ const mesh = new Mesh( geometry, mats );
340
+ this.selected[ this.matID( config ) ].mesh = mesh;
341
+ mesh.modelID = config.modelID;
342
+ config.scene.add( mesh );
343
+ return mesh;
344
+
345
+ }
346
+
347
+ getMergedGeometry( geomsByMaterial, hasDefaultMaterial ) {
348
+
349
+ return geomsByMaterial.length > 0
350
+ ? merge( geomsByMaterial, hasDefaultMaterial )
351
+ : new BufferGeometry();
352
+
353
+ }
354
+
355
+ isConfigValid( config ) {
356
+
357
+ return ( this.isValid( config.scene ) &&
358
+ this.isValid( config.modelID ) &&
359
+ this.isValid( config.ids ) &&
360
+ this.isValid( config.removePrevious ) );
361
+
362
+ }
363
+
364
+ isValid( item ) {
365
+
366
+ return item != undefined && item != null;
367
+
368
+ }
369
+
370
+ getGeomAndMat( filtered ) {
371
+
372
+ const geomsByMaterial = [];
373
+ const materials = [];
374
+ for ( const matID in filtered ) {
375
+
376
+ const geoms = Object.values( filtered[ matID ].geometries );
377
+ if ( ! geoms.length )
378
+ continue;
379
+ materials.push( filtered[ matID ].material );
380
+ if ( geoms.length > 1 )
381
+ geomsByMaterial.push( merge( geoms ) );
382
+ else
383
+ geomsByMaterial.push( ...geoms );
384
+
385
+ }
386
+
387
+ return {
388
+ geomsByMaterial,
389
+ materials
390
+ };
391
+
392
+ }
393
+
394
+ updatePreviousSelection( parent, config ) {
395
+
396
+ const previous = this.selected[ this.matID( config ) ];
397
+ if ( ! previous )
398
+ return this.newSelectionGroup( config );
399
+ parent.remove( previous.mesh );
400
+ config.removePrevious
401
+ ? ( previous.ids = new Set( config.ids ) )
402
+ : config.ids.forEach( ( id ) => previous.ids.add( id ) );
403
+
404
+ }
405
+
406
+ newSelectionGroup( config ) {
407
+
408
+ this.selected[ this.matID( config ) ] = {
409
+ ids: new Set( config.ids ),
410
+ mesh: {}
411
+ };
412
+
413
+ }
414
+
415
+ isPreviousSelection( config ) {
416
+
417
+ if ( ! this.selected[ this.matID( config ) ] )
418
+ return false;
419
+ if ( this.containsIds( config ) )
420
+ return true;
421
+ const previousIds = this.selected[ this.matID( config ) ].ids;
422
+ return JSON.stringify( config.ids ) === JSON.stringify( previousIds );
423
+
424
+ }
425
+
426
+ containsIds( config ) {
427
+
428
+ const newIds = config.ids;
429
+ const previous = Array.from( this.selected[ this.matID( config ) ].ids );
430
+ return newIds.every( ( i => v => ( i = previous.indexOf( v, i ) + 1 ) )( 0 ) );
431
+
432
+ }
433
+
434
+ addToPreviousSelection( config ) {
435
+
436
+ const previous = this.selected[ this.matID( config ) ];
437
+ const filtered = this.filter( config );
438
+ const geometries = Object.values( filtered ).map( ( i ) => Object.values( i.geometries ) ).flat();
439
+ const previousGeom = previous.mesh.geometry;
440
+ previous.mesh.geometry = merge( [ previousGeom, ...geometries ] );
441
+ config.ids.forEach( ( id ) => previous.ids.add( id ) );
442
+
443
+ }
444
+
445
+ filter( config ) {
446
+
447
+ const ids = this.selected[ this.matID( config ) ].ids;
448
+ const items = this.state.models[ config.modelID ].items;
449
+ const filtered = {};
450
+ for ( const matID in items ) {
451
+
452
+ filtered[ matID ] = {
453
+ material: items[ matID ].material,
454
+ geometries: this.filterGeometries( ids, items[ matID ].geometries )
455
+ };
456
+
457
+ }
458
+
459
+ return filtered;
460
+
461
+ }
462
+
463
+ filterGeometries( selectedIDs, geometries ) {
464
+
465
+ const ids = Array.from( selectedIDs );
466
+ return Object.keys( geometries )
467
+ .filter( ( key ) => ids.includes( parseInt( key, 10 ) ) )
468
+ .reduce( ( obj, key ) => {
469
+
470
+ return {
471
+ ...obj,
472
+ [ key ]: geometries[ key ]
473
+ };
474
+
475
+ }, {} );
476
+
477
+ }
478
+
479
+ isEasySelection( config ) {
480
+
481
+ const matID = this.matID( config );
482
+ if ( ! config.removePrevious && ! this.isDefaultMat( config ) && this.selected[ matID ] )
483
+ return true;
484
+
485
+ }
486
+
487
+ isDefaultMat( config ) {
488
+
489
+ return this.matIDNoConfig( config.modelID ) === this.matID( config );
490
+
491
+ }
492
+
493
+ matID( config ) {
494
+
495
+ let name;
496
+ if ( ! config.material )
497
+ name = DEFAULT;
498
+ else
499
+ name = config.material.uuid || DEFAULT;
500
+ return name.concat( ' - ' ).concat( config.modelID.toString() );
501
+
502
+ }
503
+
504
+ matIDNoConfig( modelID, material ) {
505
+
506
+ let name = DEFAULT;
507
+ if ( material )
508
+ name = material.uuid;
509
+ return name.concat( ' - ' ).concat( modelID.toString() );
510
+
511
+ }
512
+
513
+ }
514
+
515
+ const IfcElements = {
516
+ 103090709: 'IFCPROJECT',
517
+ 4097777520: 'IFCSITE',
518
+ 4031249490: 'IFCBUILDING',
519
+ 3124254112: 'IFCBUILDINGSTOREY',
520
+ 3856911033: 'IFCSPACE',
521
+ 1674181508: 'IFCANNOTATION',
522
+ 25142252: 'IFCCONTROLLER',
523
+ 32344328: 'IFCBOILER',
524
+ 76236018: 'IFCLAMP',
525
+ 90941305: 'IFCPUMP',
526
+ 177149247: 'IFCAIRTERMINALBOX',
527
+ 182646315: 'IFCFLOWINSTRUMENT',
528
+ 263784265: 'IFCFURNISHINGELEMENT',
529
+ 264262732: 'IFCELECTRICGENERATOR',
530
+ 277319702: 'IFCAUDIOVISUALAPPLIANCE',
531
+ 310824031: 'IFCPIPEFITTING',
532
+ 331165859: 'IFCSTAIR',
533
+ 342316401: 'IFCDUCTFITTING',
534
+ 377706215: 'IFCMECHANICALFASTENER',
535
+ 395920057: 'IFCDOOR',
536
+ 402227799: 'IFCELECTRICMOTOR',
537
+ 413509423: 'IFCSYSTEMFURNITUREELEMENT',
538
+ 484807127: 'IFCEVAPORATOR',
539
+ 486154966: 'IFCWINDOWSTANDARDCASE',
540
+ 629592764: 'IFCLIGHTFIXTURE',
541
+ 630975310: 'IFCUNITARYCONTROLELEMENT',
542
+ 635142910: 'IFCCABLECARRIERFITTING',
543
+ 639361253: 'IFCCOIL',
544
+ 647756555: 'IFCFASTENER',
545
+ 707683696: 'IFCFLOWSTORAGEDEVICE',
546
+ 738039164: 'IFCPROTECTIVEDEVICE',
547
+ 753842376: 'IFCBEAM',
548
+ 812556717: 'IFCTANK',
549
+ 819412036: 'IFCFILTER',
550
+ 843113511: 'IFCCOLUMN',
551
+ 862014818: 'IFCELECTRICDISTRIBUTIONBOARD',
552
+ 900683007: 'IFCFOOTING',
553
+ 905975707: 'IFCCOLUMNSTANDARDCASE',
554
+ 926996030: 'IFCVOIDINGFEATURE',
555
+ 979691226: 'IFCREINFORCINGBAR',
556
+ 987401354: 'IFCFLOWSEGMENT',
557
+ 1003880860: 'IFCELECTRICTIMECONTROL',
558
+ 1051757585: 'IFCCABLEFITTING',
559
+ 1052013943: 'IFCDISTRIBUTIONCHAMBERELEMENT',
560
+ 1062813311: 'IFCDISTRIBUTIONCONTROLELEMENT',
561
+ 1073191201: 'IFCMEMBER',
562
+ 1095909175: 'IFCBUILDINGELEMENTPROXY',
563
+ 1156407060: 'IFCPLATESTANDARDCASE',
564
+ 1162798199: 'IFCSWITCHINGDEVICE',
565
+ 1329646415: 'IFCSHADINGDEVICE',
566
+ 1335981549: 'IFCDISCRETEACCESSORY',
567
+ 1360408905: 'IFCDUCTSILENCER',
568
+ 1404847402: 'IFCSTACKTERMINAL',
569
+ 1426591983: 'IFCFIRESUPPRESSIONTERMINAL',
570
+ 1437502449: 'IFCMEDICALDEVICE',
571
+ 1509553395: 'IFCFURNITURE',
572
+ 1529196076: 'IFCSLAB',
573
+ 1620046519: 'IFCTRANSPORTELEMENT',
574
+ 1634111441: 'IFCAIRTERMINAL',
575
+ 1658829314: 'IFCENERGYCONVERSIONDEVICE',
576
+ 1677625105: 'IFCCIVILELEMENT',
577
+ 1687234759: 'IFCPILE',
578
+ 1904799276: 'IFCELECTRICAPPLIANCE',
579
+ 1911478936: 'IFCMEMBERSTANDARDCASE',
580
+ 1945004755: 'IFCDISTRIBUTIONELEMENT',
581
+ 1973544240: 'IFCCOVERING',
582
+ 1999602285: 'IFCSPACEHEATER',
583
+ 2016517767: 'IFCROOF',
584
+ 2056796094: 'IFCAIRTOAIRHEATRECOVERY',
585
+ 2058353004: 'IFCFLOWCONTROLLER',
586
+ 2068733104: 'IFCHUMIDIFIER',
587
+ 2176052936: 'IFCJUNCTIONBOX',
588
+ 2188021234: 'IFCFLOWMETER',
589
+ 2223149337: 'IFCFLOWTERMINAL',
590
+ 2262370178: 'IFCRAILING',
591
+ 2272882330: 'IFCCONDENSER',
592
+ 2295281155: 'IFCPROTECTIVEDEVICETRIPPINGUNIT',
593
+ 2320036040: 'IFCREINFORCINGMESH',
594
+ 2347447852: 'IFCTENDONANCHOR',
595
+ 2391383451: 'IFCVIBRATIONISOLATOR',
596
+ 2391406946: 'IFCWALL',
597
+ 2474470126: 'IFCMOTORCONNECTION',
598
+ 2769231204: 'IFCVIRTUALELEMENT',
599
+ 2814081492: 'IFCENGINE',
600
+ 2906023776: 'IFCBEAMSTANDARDCASE',
601
+ 2938176219: 'IFCBURNER',
602
+ 2979338954: 'IFCBUILDINGELEMENTPART',
603
+ 3024970846: 'IFCRAMP',
604
+ 3026737570: 'IFCTUBEBUNDLE',
605
+ 3027962421: 'IFCSLABSTANDARDCASE',
606
+ 3040386961: 'IFCDISTRIBUTIONFLOWELEMENT',
607
+ 3053780830: 'IFCSANITARYTERMINAL',
608
+ 3079942009: 'IFCOPENINGSTANDARDCASE',
609
+ 3087945054: 'IFCALARM',
610
+ 3101698114: 'IFCSURFACEFEATURE',
611
+ 3127900445: 'IFCSLABELEMENTEDCASE',
612
+ 3132237377: 'IFCFLOWMOVINGDEVICE',
613
+ 3171933400: 'IFCPLATE',
614
+ 3221913625: 'IFCCOMMUNICATIONSAPPLIANCE',
615
+ 3242481149: 'IFCDOORSTANDARDCASE',
616
+ 3283111854: 'IFCRAMPFLIGHT',
617
+ 3296154744: 'IFCCHIMNEY',
618
+ 3304561284: 'IFCWINDOW',
619
+ 3310460725: 'IFCELECTRICFLOWSTORAGEDEVICE',
620
+ 3319311131: 'IFCHEATEXCHANGER',
621
+ 3415622556: 'IFCFAN',
622
+ 3420628829: 'IFCSOLARDEVICE',
623
+ 3493046030: 'IFCGEOGRAPHICELEMENT',
624
+ 3495092785: 'IFCCURTAINWALL',
625
+ 3508470533: 'IFCFLOWTREATMENTDEVICE',
626
+ 3512223829: 'IFCWALLSTANDARDCASE',
627
+ 3518393246: 'IFCDUCTSEGMENT',
628
+ 3571504051: 'IFCCOMPRESSOR',
629
+ 3588315303: 'IFCOPENINGELEMENT',
630
+ 3612865200: 'IFCPIPESEGMENT',
631
+ 3640358203: 'IFCCOOLINGTOWER',
632
+ 3651124850: 'IFCPROJECTIONELEMENT',
633
+ 3694346114: 'IFCOUTLET',
634
+ 3747195512: 'IFCEVAPORATIVECOOLER',
635
+ 3758799889: 'IFCCABLECARRIERSEGMENT',
636
+ 3824725483: 'IFCTENDON',
637
+ 3825984169: 'IFCTRANSFORMER',
638
+ 3902619387: 'IFCCHILLER',
639
+ 4074379575: 'IFCDAMPER',
640
+ 4086658281: 'IFCSENSOR',
641
+ 4123344466: 'IFCELEMENTASSEMBLY',
642
+ 4136498852: 'IFCCOOLEDBEAM',
643
+ 4156078855: 'IFCWALLELEMENTEDCASE',
644
+ 4175244083: 'IFCINTERCEPTOR',
645
+ 4207607924: 'IFCVALVE',
646
+ 4217484030: 'IFCCABLESEGMENT',
647
+ 4237592921: 'IFCWASTETERMINAL',
648
+ 4252922144: 'IFCSTAIRFLIGHT',
649
+ 4278956645: 'IFCFLOWFITTING',
650
+ 4288193352: 'IFCACTUATOR',
651
+ 4292641817: 'IFCUNITARYEQUIPMENT',
652
+ 3009204131: 'IFCGRID'
653
+ };
654
+
655
+ const IfcTypesMap = {
656
+ 3821786052: 'IFCACTIONREQUEST',
657
+ 2296667514: 'IFCACTOR',
658
+ 3630933823: 'IFCACTORROLE',
659
+ 4288193352: 'IFCACTUATOR',
660
+ 2874132201: 'IFCACTUATORTYPE',
661
+ 618182010: 'IFCADDRESS',
662
+ 1635779807: 'IFCADVANCEDBREP',
663
+ 2603310189: 'IFCADVANCEDBREPWITHVOIDS',
664
+ 3406155212: 'IFCADVANCEDFACE',
665
+ 1634111441: 'IFCAIRTERMINAL',
666
+ 177149247: 'IFCAIRTERMINALBOX',
667
+ 1411407467: 'IFCAIRTERMINALBOXTYPE',
668
+ 3352864051: 'IFCAIRTERMINALTYPE',
669
+ 2056796094: 'IFCAIRTOAIRHEATRECOVERY',
670
+ 1871374353: 'IFCAIRTOAIRHEATRECOVERYTYPE',
671
+ 3087945054: 'IFCALARM',
672
+ 3001207471: 'IFCALARMTYPE',
673
+ 325726236: 'IFCALIGNMENT',
674
+ 749761778: 'IFCALIGNMENT2DHORIZONTAL',
675
+ 3199563722: 'IFCALIGNMENT2DHORIZONTALSEGMENT',
676
+ 2483840362: 'IFCALIGNMENT2DSEGMENT',
677
+ 3379348081: 'IFCALIGNMENT2DVERSEGCIRCULARARC',
678
+ 3239324667: 'IFCALIGNMENT2DVERSEGLINE',
679
+ 4263986512: 'IFCALIGNMENT2DVERSEGPARABOLICARC',
680
+ 53199957: 'IFCALIGNMENT2DVERTICAL',
681
+ 2029264950: 'IFCALIGNMENT2DVERTICALSEGMENT',
682
+ 3512275521: 'IFCALIGNMENTCURVE',
683
+ 1674181508: 'IFCANNOTATION',
684
+ 669184980: 'IFCANNOTATIONFILLAREA',
685
+ 639542469: 'IFCAPPLICATION',
686
+ 411424972: 'IFCAPPLIEDVALUE',
687
+ 130549933: 'IFCAPPROVAL',
688
+ 3869604511: 'IFCAPPROVALRELATIONSHIP',
689
+ 3798115385: 'IFCARBITRARYCLOSEDPROFILEDEF',
690
+ 1310608509: 'IFCARBITRARYOPENPROFILEDEF',
691
+ 2705031697: 'IFCARBITRARYPROFILEDEFWITHVOIDS',
692
+ 3460190687: 'IFCASSET',
693
+ 3207858831: 'IFCASYMMETRICISHAPEPROFILEDEF',
694
+ 277319702: 'IFCAUDIOVISUALAPPLIANCE',
695
+ 1532957894: 'IFCAUDIOVISUALAPPLIANCETYPE',
696
+ 4261334040: 'IFCAXIS1PLACEMENT',
697
+ 3125803723: 'IFCAXIS2PLACEMENT2D',
698
+ 2740243338: 'IFCAXIS2PLACEMENT3D',
699
+ 1967976161: 'IFCBSPLINECURVE',
700
+ 2461110595: 'IFCBSPLINECURVEWITHKNOTS',
701
+ 2887950389: 'IFCBSPLINESURFACE',
702
+ 167062518: 'IFCBSPLINESURFACEWITHKNOTS',
703
+ 753842376: 'IFCBEAM',
704
+ 2906023776: 'IFCBEAMSTANDARDCASE',
705
+ 819618141: 'IFCBEAMTYPE',
706
+ 4196446775: 'IFCBEARING',
707
+ 3649138523: 'IFCBEARINGTYPE',
708
+ 616511568: 'IFCBLOBTEXTURE',
709
+ 1334484129: 'IFCBLOCK',
710
+ 32344328: 'IFCBOILER',
711
+ 231477066: 'IFCBOILERTYPE',
712
+ 3649129432: 'IFCBOOLEANCLIPPINGRESULT',
713
+ 2736907675: 'IFCBOOLEANRESULT',
714
+ 4037036970: 'IFCBOUNDARYCONDITION',
715
+ 1136057603: 'IFCBOUNDARYCURVE',
716
+ 1560379544: 'IFCBOUNDARYEDGECONDITION',
717
+ 3367102660: 'IFCBOUNDARYFACECONDITION',
718
+ 1387855156: 'IFCBOUNDARYNODECONDITION',
719
+ 2069777674: 'IFCBOUNDARYNODECONDITIONWARPING',
720
+ 1260505505: 'IFCBOUNDEDCURVE',
721
+ 4182860854: 'IFCBOUNDEDSURFACE',
722
+ 2581212453: 'IFCBOUNDINGBOX',
723
+ 2713105998: 'IFCBOXEDHALFSPACE',
724
+ 644574406: 'IFCBRIDGE',
725
+ 963979645: 'IFCBRIDGEPART',
726
+ 4031249490: 'IFCBUILDING',
727
+ 3299480353: 'IFCBUILDINGELEMENT',
728
+ 2979338954: 'IFCBUILDINGELEMENTPART',
729
+ 39481116: 'IFCBUILDINGELEMENTPARTTYPE',
730
+ 1095909175: 'IFCBUILDINGELEMENTPROXY',
731
+ 1909888760: 'IFCBUILDINGELEMENTPROXYTYPE',
732
+ 1950629157: 'IFCBUILDINGELEMENTTYPE',
733
+ 3124254112: 'IFCBUILDINGSTOREY',
734
+ 1177604601: 'IFCBUILDINGSYSTEM',
735
+ 2938176219: 'IFCBURNER',
736
+ 2188180465: 'IFCBURNERTYPE',
737
+ 2898889636: 'IFCCSHAPEPROFILEDEF',
738
+ 635142910: 'IFCCABLECARRIERFITTING',
739
+ 395041908: 'IFCCABLECARRIERFITTINGTYPE',
740
+ 3758799889: 'IFCCABLECARRIERSEGMENT',
741
+ 3293546465: 'IFCCABLECARRIERSEGMENTTYPE',
742
+ 1051757585: 'IFCCABLEFITTING',
743
+ 2674252688: 'IFCCABLEFITTINGTYPE',
744
+ 4217484030: 'IFCCABLESEGMENT',
745
+ 1285652485: 'IFCCABLESEGMENTTYPE',
746
+ 3999819293: 'IFCCAISSONFOUNDATION',
747
+ 3203706013: 'IFCCAISSONFOUNDATIONTYPE',
748
+ 1123145078: 'IFCCARTESIANPOINT',
749
+ 574549367: 'IFCCARTESIANPOINTLIST',
750
+ 1675464909: 'IFCCARTESIANPOINTLIST2D',
751
+ 2059837836: 'IFCCARTESIANPOINTLIST3D',
752
+ 59481748: 'IFCCARTESIANTRANSFORMATIONOPERATOR',
753
+ 3749851601: 'IFCCARTESIANTRANSFORMATIONOPERATOR2D',
754
+ 3486308946: 'IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM',
755
+ 3331915920: 'IFCCARTESIANTRANSFORMATIONOPERATOR3D',
756
+ 1416205885: 'IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM',
757
+ 3150382593: 'IFCCENTERLINEPROFILEDEF',
758
+ 3902619387: 'IFCCHILLER',
759
+ 2951183804: 'IFCCHILLERTYPE',
760
+ 3296154744: 'IFCCHIMNEY',
761
+ 2197970202: 'IFCCHIMNEYTYPE',
762
+ 2611217952: 'IFCCIRCLE',
763
+ 2937912522: 'IFCCIRCLEHOLLOWPROFILEDEF',
764
+ 1383045692: 'IFCCIRCLEPROFILEDEF',
765
+ 1062206242: 'IFCCIRCULARARCSEGMENT2D',
766
+ 1677625105: 'IFCCIVILELEMENT',
767
+ 3893394355: 'IFCCIVILELEMENTTYPE',
768
+ 747523909: 'IFCCLASSIFICATION',
769
+ 647927063: 'IFCCLASSIFICATIONREFERENCE',
770
+ 2205249479: 'IFCCLOSEDSHELL',
771
+ 639361253: 'IFCCOIL',
772
+ 2301859152: 'IFCCOILTYPE',
773
+ 776857604: 'IFCCOLOURRGB',
774
+ 3285139300: 'IFCCOLOURRGBLIST',
775
+ 3264961684: 'IFCCOLOURSPECIFICATION',
776
+ 843113511: 'IFCCOLUMN',
777
+ 905975707: 'IFCCOLUMNSTANDARDCASE',
778
+ 300633059: 'IFCCOLUMNTYPE',
779
+ 3221913625: 'IFCCOMMUNICATIONSAPPLIANCE',
780
+ 400855858: 'IFCCOMMUNICATIONSAPPLIANCETYPE',
781
+ 2542286263: 'IFCCOMPLEXPROPERTY',
782
+ 3875453745: 'IFCCOMPLEXPROPERTYTEMPLATE',
783
+ 3732776249: 'IFCCOMPOSITECURVE',
784
+ 15328376: 'IFCCOMPOSITECURVEONSURFACE',
785
+ 2485617015: 'IFCCOMPOSITECURVESEGMENT',
786
+ 1485152156: 'IFCCOMPOSITEPROFILEDEF',
787
+ 3571504051: 'IFCCOMPRESSOR',
788
+ 3850581409: 'IFCCOMPRESSORTYPE',
789
+ 2272882330: 'IFCCONDENSER',
790
+ 2816379211: 'IFCCONDENSERTYPE',
791
+ 2510884976: 'IFCCONIC',
792
+ 370225590: 'IFCCONNECTEDFACESET',
793
+ 1981873012: 'IFCCONNECTIONCURVEGEOMETRY',
794
+ 2859738748: 'IFCCONNECTIONGEOMETRY',
795
+ 45288368: 'IFCCONNECTIONPOINTECCENTRICITY',
796
+ 2614616156: 'IFCCONNECTIONPOINTGEOMETRY',
797
+ 2732653382: 'IFCCONNECTIONSURFACEGEOMETRY',
798
+ 775493141: 'IFCCONNECTIONVOLUMEGEOMETRY',
799
+ 1959218052: 'IFCCONSTRAINT',
800
+ 3898045240: 'IFCCONSTRUCTIONEQUIPMENTRESOURCE',
801
+ 2185764099: 'IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE',
802
+ 1060000209: 'IFCCONSTRUCTIONMATERIALRESOURCE',
803
+ 4105962743: 'IFCCONSTRUCTIONMATERIALRESOURCETYPE',
804
+ 488727124: 'IFCCONSTRUCTIONPRODUCTRESOURCE',
805
+ 1525564444: 'IFCCONSTRUCTIONPRODUCTRESOURCETYPE',
806
+ 2559216714: 'IFCCONSTRUCTIONRESOURCE',
807
+ 2574617495: 'IFCCONSTRUCTIONRESOURCETYPE',
808
+ 3419103109: 'IFCCONTEXT',
809
+ 3050246964: 'IFCCONTEXTDEPENDENTUNIT',
810
+ 3293443760: 'IFCCONTROL',
811
+ 25142252: 'IFCCONTROLLER',
812
+ 578613899: 'IFCCONTROLLERTYPE',
813
+ 2889183280: 'IFCCONVERSIONBASEDUNIT',
814
+ 2713554722: 'IFCCONVERSIONBASEDUNITWITHOFFSET',
815
+ 4136498852: 'IFCCOOLEDBEAM',
816
+ 335055490: 'IFCCOOLEDBEAMTYPE',
817
+ 3640358203: 'IFCCOOLINGTOWER',
818
+ 2954562838: 'IFCCOOLINGTOWERTYPE',
819
+ 1785450214: 'IFCCOORDINATEOPERATION',
820
+ 1466758467: 'IFCCOORDINATEREFERENCESYSTEM',
821
+ 3895139033: 'IFCCOSTITEM',
822
+ 1419761937: 'IFCCOSTSCHEDULE',
823
+ 602808272: 'IFCCOSTVALUE',
824
+ 1973544240: 'IFCCOVERING',
825
+ 1916426348: 'IFCCOVERINGTYPE',
826
+ 3295246426: 'IFCCREWRESOURCE',
827
+ 1815067380: 'IFCCREWRESOURCETYPE',
828
+ 2506170314: 'IFCCSGPRIMITIVE3D',
829
+ 2147822146: 'IFCCSGSOLID',
830
+ 539742890: 'IFCCURRENCYRELATIONSHIP',
831
+ 3495092785: 'IFCCURTAINWALL',
832
+ 1457835157: 'IFCCURTAINWALLTYPE',
833
+ 2601014836: 'IFCCURVE',
834
+ 2827736869: 'IFCCURVEBOUNDEDPLANE',
835
+ 2629017746: 'IFCCURVEBOUNDEDSURFACE',
836
+ 1186437898: 'IFCCURVESEGMENT2D',
837
+ 3800577675: 'IFCCURVESTYLE',
838
+ 1105321065: 'IFCCURVESTYLEFONT',
839
+ 2367409068: 'IFCCURVESTYLEFONTANDSCALING',
840
+ 3510044353: 'IFCCURVESTYLEFONTPATTERN',
841
+ 1213902940: 'IFCCYLINDRICALSURFACE',
842
+ 4074379575: 'IFCDAMPER',
843
+ 3961806047: 'IFCDAMPERTYPE',
844
+ 3426335179: 'IFCDEEPFOUNDATION',
845
+ 1306400036: 'IFCDEEPFOUNDATIONTYPE',
846
+ 3632507154: 'IFCDERIVEDPROFILEDEF',
847
+ 1765591967: 'IFCDERIVEDUNIT',
848
+ 1045800335: 'IFCDERIVEDUNITELEMENT',
849
+ 2949456006: 'IFCDIMENSIONALEXPONENTS',
850
+ 32440307: 'IFCDIRECTION',
851
+ 1335981549: 'IFCDISCRETEACCESSORY',
852
+ 2635815018: 'IFCDISCRETEACCESSORYTYPE',
853
+ 1945343521: 'IFCDISTANCEEXPRESSION',
854
+ 1052013943: 'IFCDISTRIBUTIONCHAMBERELEMENT',
855
+ 1599208980: 'IFCDISTRIBUTIONCHAMBERELEMENTTYPE',
856
+ 562808652: 'IFCDISTRIBUTIONCIRCUIT',
857
+ 1062813311: 'IFCDISTRIBUTIONCONTROLELEMENT',
858
+ 2063403501: 'IFCDISTRIBUTIONCONTROLELEMENTTYPE',
859
+ 1945004755: 'IFCDISTRIBUTIONELEMENT',
860
+ 3256556792: 'IFCDISTRIBUTIONELEMENTTYPE',
861
+ 3040386961: 'IFCDISTRIBUTIONFLOWELEMENT',
862
+ 3849074793: 'IFCDISTRIBUTIONFLOWELEMENTTYPE',
863
+ 3041715199: 'IFCDISTRIBUTIONPORT',
864
+ 3205830791: 'IFCDISTRIBUTIONSYSTEM',
865
+ 1154170062: 'IFCDOCUMENTINFORMATION',
866
+ 770865208: 'IFCDOCUMENTINFORMATIONRELATIONSHIP',
867
+ 3732053477: 'IFCDOCUMENTREFERENCE',
868
+ 395920057: 'IFCDOOR',
869
+ 2963535650: 'IFCDOORLININGPROPERTIES',
870
+ 1714330368: 'IFCDOORPANELPROPERTIES',
871
+ 3242481149: 'IFCDOORSTANDARDCASE',
872
+ 526551008: 'IFCDOORSTYLE',
873
+ 2323601079: 'IFCDOORTYPE',
874
+ 445594917: 'IFCDRAUGHTINGPREDEFINEDCOLOUR',
875
+ 4006246654: 'IFCDRAUGHTINGPREDEFINEDCURVEFONT',
876
+ 342316401: 'IFCDUCTFITTING',
877
+ 869906466: 'IFCDUCTFITTINGTYPE',
878
+ 3518393246: 'IFCDUCTSEGMENT',
879
+ 3760055223: 'IFCDUCTSEGMENTTYPE',
880
+ 1360408905: 'IFCDUCTSILENCER',
881
+ 2030761528: 'IFCDUCTSILENCERTYPE',
882
+ 3900360178: 'IFCEDGE',
883
+ 476780140: 'IFCEDGECURVE',
884
+ 1472233963: 'IFCEDGELOOP',
885
+ 1904799276: 'IFCELECTRICAPPLIANCE',
886
+ 663422040: 'IFCELECTRICAPPLIANCETYPE',
887
+ 862014818: 'IFCELECTRICDISTRIBUTIONBOARD',
888
+ 2417008758: 'IFCELECTRICDISTRIBUTIONBOARDTYPE',
889
+ 3310460725: 'IFCELECTRICFLOWSTORAGEDEVICE',
890
+ 3277789161: 'IFCELECTRICFLOWSTORAGEDEVICETYPE',
891
+ 264262732: 'IFCELECTRICGENERATOR',
892
+ 1534661035: 'IFCELECTRICGENERATORTYPE',
893
+ 402227799: 'IFCELECTRICMOTOR',
894
+ 1217240411: 'IFCELECTRICMOTORTYPE',
895
+ 1003880860: 'IFCELECTRICTIMECONTROL',
896
+ 712377611: 'IFCELECTRICTIMECONTROLTYPE',
897
+ 1758889154: 'IFCELEMENT',
898
+ 4123344466: 'IFCELEMENTASSEMBLY',
899
+ 2397081782: 'IFCELEMENTASSEMBLYTYPE',
900
+ 1623761950: 'IFCELEMENTCOMPONENT',
901
+ 2590856083: 'IFCELEMENTCOMPONENTTYPE',
902
+ 1883228015: 'IFCELEMENTQUANTITY',
903
+ 339256511: 'IFCELEMENTTYPE',
904
+ 2777663545: 'IFCELEMENTARYSURFACE',
905
+ 1704287377: 'IFCELLIPSE',
906
+ 2835456948: 'IFCELLIPSEPROFILEDEF',
907
+ 1658829314: 'IFCENERGYCONVERSIONDEVICE',
908
+ 2107101300: 'IFCENERGYCONVERSIONDEVICETYPE',
909
+ 2814081492: 'IFCENGINE',
910
+ 132023988: 'IFCENGINETYPE',
911
+ 3747195512: 'IFCEVAPORATIVECOOLER',
912
+ 3174744832: 'IFCEVAPORATIVECOOLERTYPE',
913
+ 484807127: 'IFCEVAPORATOR',
914
+ 3390157468: 'IFCEVAPORATORTYPE',
915
+ 4148101412: 'IFCEVENT',
916
+ 211053100: 'IFCEVENTTIME',
917
+ 4024345920: 'IFCEVENTTYPE',
918
+ 297599258: 'IFCEXTENDEDPROPERTIES',
919
+ 4294318154: 'IFCEXTERNALINFORMATION',
920
+ 3200245327: 'IFCEXTERNALREFERENCE',
921
+ 1437805879: 'IFCEXTERNALREFERENCERELATIONSHIP',
922
+ 1209101575: 'IFCEXTERNALSPATIALELEMENT',
923
+ 2853485674: 'IFCEXTERNALSPATIALSTRUCTUREELEMENT',
924
+ 2242383968: 'IFCEXTERNALLYDEFINEDHATCHSTYLE',
925
+ 1040185647: 'IFCEXTERNALLYDEFINEDSURFACESTYLE',
926
+ 3548104201: 'IFCEXTERNALLYDEFINEDTEXTFONT',
927
+ 477187591: 'IFCEXTRUDEDAREASOLID',
928
+ 2804161546: 'IFCEXTRUDEDAREASOLIDTAPERED',
929
+ 2556980723: 'IFCFACE',
930
+ 2047409740: 'IFCFACEBASEDSURFACEMODEL',
931
+ 1809719519: 'IFCFACEBOUND',
932
+ 803316827: 'IFCFACEOUTERBOUND',
933
+ 3008276851: 'IFCFACESURFACE',
934
+ 807026263: 'IFCFACETEDBREP',
935
+ 3737207727: 'IFCFACETEDBREPWITHVOIDS',
936
+ 24185140: 'IFCFACILITY',
937
+ 1310830890: 'IFCFACILITYPART',
938
+ 4219587988: 'IFCFAILURECONNECTIONCONDITION',
939
+ 3415622556: 'IFCFAN',
940
+ 346874300: 'IFCFANTYPE',
941
+ 647756555: 'IFCFASTENER',
942
+ 2489546625: 'IFCFASTENERTYPE',
943
+ 2827207264: 'IFCFEATUREELEMENT',
944
+ 2143335405: 'IFCFEATUREELEMENTADDITION',
945
+ 1287392070: 'IFCFEATUREELEMENTSUBTRACTION',
946
+ 738692330: 'IFCFILLAREASTYLE',
947
+ 374418227: 'IFCFILLAREASTYLEHATCHING',
948
+ 315944413: 'IFCFILLAREASTYLETILES',
949
+ 819412036: 'IFCFILTER',
950
+ 1810631287: 'IFCFILTERTYPE',
951
+ 1426591983: 'IFCFIRESUPPRESSIONTERMINAL',
952
+ 4222183408: 'IFCFIRESUPPRESSIONTERMINALTYPE',
953
+ 2652556860: 'IFCFIXEDREFERENCESWEPTAREASOLID',
954
+ 2058353004: 'IFCFLOWCONTROLLER',
955
+ 3907093117: 'IFCFLOWCONTROLLERTYPE',
956
+ 4278956645: 'IFCFLOWFITTING',
957
+ 3198132628: 'IFCFLOWFITTINGTYPE',
958
+ 182646315: 'IFCFLOWINSTRUMENT',
959
+ 4037862832: 'IFCFLOWINSTRUMENTTYPE',
960
+ 2188021234: 'IFCFLOWMETER',
961
+ 3815607619: 'IFCFLOWMETERTYPE',
962
+ 3132237377: 'IFCFLOWMOVINGDEVICE',
963
+ 1482959167: 'IFCFLOWMOVINGDEVICETYPE',
964
+ 987401354: 'IFCFLOWSEGMENT',
965
+ 1834744321: 'IFCFLOWSEGMENTTYPE',
966
+ 707683696: 'IFCFLOWSTORAGEDEVICE',
967
+ 1339347760: 'IFCFLOWSTORAGEDEVICETYPE',
968
+ 2223149337: 'IFCFLOWTERMINAL',
969
+ 2297155007: 'IFCFLOWTERMINALTYPE',
970
+ 3508470533: 'IFCFLOWTREATMENTDEVICE',
971
+ 3009222698: 'IFCFLOWTREATMENTDEVICETYPE',
972
+ 900683007: 'IFCFOOTING',
973
+ 1893162501: 'IFCFOOTINGTYPE',
974
+ 263784265: 'IFCFURNISHINGELEMENT',
975
+ 4238390223: 'IFCFURNISHINGELEMENTTYPE',
976
+ 1509553395: 'IFCFURNITURE',
977
+ 1268542332: 'IFCFURNITURETYPE',
978
+ 3493046030: 'IFCGEOGRAPHICELEMENT',
979
+ 4095422895: 'IFCGEOGRAPHICELEMENTTYPE',
980
+ 987898635: 'IFCGEOMETRICCURVESET',
981
+ 3448662350: 'IFCGEOMETRICREPRESENTATIONCONTEXT',
982
+ 2453401579: 'IFCGEOMETRICREPRESENTATIONITEM',
983
+ 4142052618: 'IFCGEOMETRICREPRESENTATIONSUBCONTEXT',
984
+ 3590301190: 'IFCGEOMETRICSET',
985
+ 3009204131: 'IFCGRID',
986
+ 852622518: 'IFCGRIDAXIS',
987
+ 178086475: 'IFCGRIDPLACEMENT',
988
+ 2706460486: 'IFCGROUP',
989
+ 812098782: 'IFCHALFSPACESOLID',
990
+ 3319311131: 'IFCHEATEXCHANGER',
991
+ 1251058090: 'IFCHEATEXCHANGERTYPE',
992
+ 2068733104: 'IFCHUMIDIFIER',
993
+ 1806887404: 'IFCHUMIDIFIERTYPE',
994
+ 1484403080: 'IFCISHAPEPROFILEDEF',
995
+ 3905492369: 'IFCIMAGETEXTURE',
996
+ 3570813810: 'IFCINDEXEDCOLOURMAP',
997
+ 2571569899: 'IFCINDEXEDPOLYCURVE',
998
+ 178912537: 'IFCINDEXEDPOLYGONALFACE',
999
+ 2294589976: 'IFCINDEXEDPOLYGONALFACEWITHVOIDS',
1000
+ 1437953363: 'IFCINDEXEDTEXTUREMAP',
1001
+ 2133299955: 'IFCINDEXEDTRIANGLETEXTUREMAP',
1002
+ 4175244083: 'IFCINTERCEPTOR',
1003
+ 3946677679: 'IFCINTERCEPTORTYPE',
1004
+ 3113134337: 'IFCINTERSECTIONCURVE',
1005
+ 2391368822: 'IFCINVENTORY',
1006
+ 3741457305: 'IFCIRREGULARTIMESERIES',
1007
+ 3020489413: 'IFCIRREGULARTIMESERIESVALUE',
1008
+ 2176052936: 'IFCJUNCTIONBOX',
1009
+ 4288270099: 'IFCJUNCTIONBOXTYPE',
1010
+ 572779678: 'IFCLSHAPEPROFILEDEF',
1011
+ 3827777499: 'IFCLABORRESOURCE',
1012
+ 428585644: 'IFCLABORRESOURCETYPE',
1013
+ 1585845231: 'IFCLAGTIME',
1014
+ 76236018: 'IFCLAMP',
1015
+ 1051575348: 'IFCLAMPTYPE',
1016
+ 2655187982: 'IFCLIBRARYINFORMATION',
1017
+ 3452421091: 'IFCLIBRARYREFERENCE',
1018
+ 4162380809: 'IFCLIGHTDISTRIBUTIONDATA',
1019
+ 629592764: 'IFCLIGHTFIXTURE',
1020
+ 1161773419: 'IFCLIGHTFIXTURETYPE',
1021
+ 1566485204: 'IFCLIGHTINTENSITYDISTRIBUTION',
1022
+ 1402838566: 'IFCLIGHTSOURCE',
1023
+ 125510826: 'IFCLIGHTSOURCEAMBIENT',
1024
+ 2604431987: 'IFCLIGHTSOURCEDIRECTIONAL',
1025
+ 4266656042: 'IFCLIGHTSOURCEGONIOMETRIC',
1026
+ 1520743889: 'IFCLIGHTSOURCEPOSITIONAL',
1027
+ 3422422726: 'IFCLIGHTSOURCESPOT',
1028
+ 1281925730: 'IFCLINE',
1029
+ 3092502836: 'IFCLINESEGMENT2D',
1030
+ 388784114: 'IFCLINEARPLACEMENT',
1031
+ 1154579445: 'IFCLINEARPOSITIONINGELEMENT',
1032
+ 2624227202: 'IFCLOCALPLACEMENT',
1033
+ 1008929658: 'IFCLOOP',
1034
+ 1425443689: 'IFCMANIFOLDSOLIDBREP',
1035
+ 3057273783: 'IFCMAPCONVERSION',
1036
+ 2347385850: 'IFCMAPPEDITEM',
1037
+ 1838606355: 'IFCMATERIAL',
1038
+ 1847130766: 'IFCMATERIALCLASSIFICATIONRELATIONSHIP',
1039
+ 3708119000: 'IFCMATERIALCONSTITUENT',
1040
+ 2852063980: 'IFCMATERIALCONSTITUENTSET',
1041
+ 760658860: 'IFCMATERIALDEFINITION',
1042
+ 2022407955: 'IFCMATERIALDEFINITIONREPRESENTATION',
1043
+ 248100487: 'IFCMATERIALLAYER',
1044
+ 3303938423: 'IFCMATERIALLAYERSET',
1045
+ 1303795690: 'IFCMATERIALLAYERSETUSAGE',
1046
+ 1847252529: 'IFCMATERIALLAYERWITHOFFSETS',
1047
+ 2199411900: 'IFCMATERIALLIST',
1048
+ 2235152071: 'IFCMATERIALPROFILE',
1049
+ 164193824: 'IFCMATERIALPROFILESET',
1050
+ 3079605661: 'IFCMATERIALPROFILESETUSAGE',
1051
+ 3404854881: 'IFCMATERIALPROFILESETUSAGETAPERING',
1052
+ 552965576: 'IFCMATERIALPROFILEWITHOFFSETS',
1053
+ 3265635763: 'IFCMATERIALPROPERTIES',
1054
+ 853536259: 'IFCMATERIALRELATIONSHIP',
1055
+ 1507914824: 'IFCMATERIALUSAGEDEFINITION',
1056
+ 2597039031: 'IFCMEASUREWITHUNIT',
1057
+ 377706215: 'IFCMECHANICALFASTENER',
1058
+ 2108223431: 'IFCMECHANICALFASTENERTYPE',
1059
+ 1437502449: 'IFCMEDICALDEVICE',
1060
+ 1114901282: 'IFCMEDICALDEVICETYPE',
1061
+ 1073191201: 'IFCMEMBER',
1062
+ 1911478936: 'IFCMEMBERSTANDARDCASE',
1063
+ 3181161470: 'IFCMEMBERTYPE',
1064
+ 3368373690: 'IFCMETRIC',
1065
+ 2998442950: 'IFCMIRROREDPROFILEDEF',
1066
+ 2706619895: 'IFCMONETARYUNIT',
1067
+ 2474470126: 'IFCMOTORCONNECTION',
1068
+ 977012517: 'IFCMOTORCONNECTIONTYPE',
1069
+ 1918398963: 'IFCNAMEDUNIT',
1070
+ 3888040117: 'IFCOBJECT',
1071
+ 219451334: 'IFCOBJECTDEFINITION',
1072
+ 3701648758: 'IFCOBJECTPLACEMENT',
1073
+ 2251480897: 'IFCOBJECTIVE',
1074
+ 4143007308: 'IFCOCCUPANT',
1075
+ 590820931: 'IFCOFFSETCURVE',
1076
+ 3388369263: 'IFCOFFSETCURVE2D',
1077
+ 3505215534: 'IFCOFFSETCURVE3D',
1078
+ 2485787929: 'IFCOFFSETCURVEBYDISTANCES',
1079
+ 2665983363: 'IFCOPENSHELL',
1080
+ 3588315303: 'IFCOPENINGELEMENT',
1081
+ 3079942009: 'IFCOPENINGSTANDARDCASE',
1082
+ 4251960020: 'IFCORGANIZATION',
1083
+ 1411181986: 'IFCORGANIZATIONRELATIONSHIP',
1084
+ 643959842: 'IFCORIENTATIONEXPRESSION',
1085
+ 1029017970: 'IFCORIENTEDEDGE',
1086
+ 144952367: 'IFCOUTERBOUNDARYCURVE',
1087
+ 3694346114: 'IFCOUTLET',
1088
+ 2837617999: 'IFCOUTLETTYPE',
1089
+ 1207048766: 'IFCOWNERHISTORY',
1090
+ 2529465313: 'IFCPARAMETERIZEDPROFILEDEF',
1091
+ 2519244187: 'IFCPATH',
1092
+ 1682466193: 'IFCPCURVE',
1093
+ 2382730787: 'IFCPERFORMANCEHISTORY',
1094
+ 3566463478: 'IFCPERMEABLECOVERINGPROPERTIES',
1095
+ 3327091369: 'IFCPERMIT',
1096
+ 2077209135: 'IFCPERSON',
1097
+ 101040310: 'IFCPERSONANDORGANIZATION',
1098
+ 3021840470: 'IFCPHYSICALCOMPLEXQUANTITY',
1099
+ 2483315170: 'IFCPHYSICALQUANTITY',
1100
+ 2226359599: 'IFCPHYSICALSIMPLEQUANTITY',
1101
+ 1687234759: 'IFCPILE',
1102
+ 1158309216: 'IFCPILETYPE',
1103
+ 310824031: 'IFCPIPEFITTING',
1104
+ 804291784: 'IFCPIPEFITTINGTYPE',
1105
+ 3612865200: 'IFCPIPESEGMENT',
1106
+ 4231323485: 'IFCPIPESEGMENTTYPE',
1107
+ 597895409: 'IFCPIXELTEXTURE',
1108
+ 2004835150: 'IFCPLACEMENT',
1109
+ 603570806: 'IFCPLANARBOX',
1110
+ 1663979128: 'IFCPLANAREXTENT',
1111
+ 220341763: 'IFCPLANE',
1112
+ 3171933400: 'IFCPLATE',
1113
+ 1156407060: 'IFCPLATESTANDARDCASE',
1114
+ 4017108033: 'IFCPLATETYPE',
1115
+ 2067069095: 'IFCPOINT',
1116
+ 4022376103: 'IFCPOINTONCURVE',
1117
+ 1423911732: 'IFCPOINTONSURFACE',
1118
+ 2924175390: 'IFCPOLYLOOP',
1119
+ 2775532180: 'IFCPOLYGONALBOUNDEDHALFSPACE',
1120
+ 2839578677: 'IFCPOLYGONALFACESET',
1121
+ 3724593414: 'IFCPOLYLINE',
1122
+ 3740093272: 'IFCPORT',
1123
+ 1946335990: 'IFCPOSITIONINGELEMENT',
1124
+ 3355820592: 'IFCPOSTALADDRESS',
1125
+ 759155922: 'IFCPREDEFINEDCOLOUR',
1126
+ 2559016684: 'IFCPREDEFINEDCURVEFONT',
1127
+ 3727388367: 'IFCPREDEFINEDITEM',
1128
+ 3778827333: 'IFCPREDEFINEDPROPERTIES',
1129
+ 3967405729: 'IFCPREDEFINEDPROPERTYSET',
1130
+ 1775413392: 'IFCPREDEFINEDTEXTFONT',
1131
+ 677532197: 'IFCPRESENTATIONITEM',
1132
+ 2022622350: 'IFCPRESENTATIONLAYERASSIGNMENT',
1133
+ 1304840413: 'IFCPRESENTATIONLAYERWITHSTYLE',
1134
+ 3119450353: 'IFCPRESENTATIONSTYLE',
1135
+ 2417041796: 'IFCPRESENTATIONSTYLEASSIGNMENT',
1136
+ 2744685151: 'IFCPROCEDURE',
1137
+ 569719735: 'IFCPROCEDURETYPE',
1138
+ 2945172077: 'IFCPROCESS',
1139
+ 4208778838: 'IFCPRODUCT',
1140
+ 673634403: 'IFCPRODUCTDEFINITIONSHAPE',
1141
+ 2095639259: 'IFCPRODUCTREPRESENTATION',
1142
+ 3958567839: 'IFCPROFILEDEF',
1143
+ 2802850158: 'IFCPROFILEPROPERTIES',
1144
+ 103090709: 'IFCPROJECT',
1145
+ 653396225: 'IFCPROJECTLIBRARY',
1146
+ 2904328755: 'IFCPROJECTORDER',
1147
+ 3843373140: 'IFCPROJECTEDCRS',
1148
+ 3651124850: 'IFCPROJECTIONELEMENT',
1149
+ 2598011224: 'IFCPROPERTY',
1150
+ 986844984: 'IFCPROPERTYABSTRACTION',
1151
+ 871118103: 'IFCPROPERTYBOUNDEDVALUE',
1152
+ 1680319473: 'IFCPROPERTYDEFINITION',
1153
+ 148025276: 'IFCPROPERTYDEPENDENCYRELATIONSHIP',
1154
+ 4166981789: 'IFCPROPERTYENUMERATEDVALUE',
1155
+ 3710013099: 'IFCPROPERTYENUMERATION',
1156
+ 2752243245: 'IFCPROPERTYLISTVALUE',
1157
+ 941946838: 'IFCPROPERTYREFERENCEVALUE',
1158
+ 1451395588: 'IFCPROPERTYSET',
1159
+ 3357820518: 'IFCPROPERTYSETDEFINITION',
1160
+ 492091185: 'IFCPROPERTYSETTEMPLATE',
1161
+ 3650150729: 'IFCPROPERTYSINGLEVALUE',
1162
+ 110355661: 'IFCPROPERTYTABLEVALUE',
1163
+ 3521284610: 'IFCPROPERTYTEMPLATE',
1164
+ 1482703590: 'IFCPROPERTYTEMPLATEDEFINITION',
1165
+ 738039164: 'IFCPROTECTIVEDEVICE',
1166
+ 2295281155: 'IFCPROTECTIVEDEVICETRIPPINGUNIT',
1167
+ 655969474: 'IFCPROTECTIVEDEVICETRIPPINGUNITTYPE',
1168
+ 1842657554: 'IFCPROTECTIVEDEVICETYPE',
1169
+ 3219374653: 'IFCPROXY',
1170
+ 90941305: 'IFCPUMP',
1171
+ 2250791053: 'IFCPUMPTYPE',
1172
+ 2044713172: 'IFCQUANTITYAREA',
1173
+ 2093928680: 'IFCQUANTITYCOUNT',
1174
+ 931644368: 'IFCQUANTITYLENGTH',
1175
+ 2090586900: 'IFCQUANTITYSET',
1176
+ 3252649465: 'IFCQUANTITYTIME',
1177
+ 2405470396: 'IFCQUANTITYVOLUME',
1178
+ 825690147: 'IFCQUANTITYWEIGHT',
1179
+ 2262370178: 'IFCRAILING',
1180
+ 2893384427: 'IFCRAILINGTYPE',
1181
+ 3024970846: 'IFCRAMP',
1182
+ 3283111854: 'IFCRAMPFLIGHT',
1183
+ 2324767716: 'IFCRAMPFLIGHTTYPE',
1184
+ 1469900589: 'IFCRAMPTYPE',
1185
+ 1232101972: 'IFCRATIONALBSPLINECURVEWITHKNOTS',
1186
+ 683857671: 'IFCRATIONALBSPLINESURFACEWITHKNOTS',
1187
+ 2770003689: 'IFCRECTANGLEHOLLOWPROFILEDEF',
1188
+ 3615266464: 'IFCRECTANGLEPROFILEDEF',
1189
+ 2798486643: 'IFCRECTANGULARPYRAMID',
1190
+ 3454111270: 'IFCRECTANGULARTRIMMEDSURFACE',
1191
+ 3915482550: 'IFCRECURRENCEPATTERN',
1192
+ 2433181523: 'IFCREFERENCE',
1193
+ 4021432810: 'IFCREFERENT',
1194
+ 3413951693: 'IFCREGULARTIMESERIES',
1195
+ 1580146022: 'IFCREINFORCEMENTBARPROPERTIES',
1196
+ 3765753017: 'IFCREINFORCEMENTDEFINITIONPROPERTIES',
1197
+ 979691226: 'IFCREINFORCINGBAR',
1198
+ 2572171363: 'IFCREINFORCINGBARTYPE',
1199
+ 3027567501: 'IFCREINFORCINGELEMENT',
1200
+ 964333572: 'IFCREINFORCINGELEMENTTYPE',
1201
+ 2320036040: 'IFCREINFORCINGMESH',
1202
+ 2310774935: 'IFCREINFORCINGMESHTYPE',
1203
+ 160246688: 'IFCRELAGGREGATES',
1204
+ 3939117080: 'IFCRELASSIGNS',
1205
+ 1683148259: 'IFCRELASSIGNSTOACTOR',
1206
+ 2495723537: 'IFCRELASSIGNSTOCONTROL',
1207
+ 1307041759: 'IFCRELASSIGNSTOGROUP',
1208
+ 1027710054: 'IFCRELASSIGNSTOGROUPBYFACTOR',
1209
+ 4278684876: 'IFCRELASSIGNSTOPROCESS',
1210
+ 2857406711: 'IFCRELASSIGNSTOPRODUCT',
1211
+ 205026976: 'IFCRELASSIGNSTORESOURCE',
1212
+ 1865459582: 'IFCRELASSOCIATES',
1213
+ 4095574036: 'IFCRELASSOCIATESAPPROVAL',
1214
+ 919958153: 'IFCRELASSOCIATESCLASSIFICATION',
1215
+ 2728634034: 'IFCRELASSOCIATESCONSTRAINT',
1216
+ 982818633: 'IFCRELASSOCIATESDOCUMENT',
1217
+ 3840914261: 'IFCRELASSOCIATESLIBRARY',
1218
+ 2655215786: 'IFCRELASSOCIATESMATERIAL',
1219
+ 826625072: 'IFCRELCONNECTS',
1220
+ 1204542856: 'IFCRELCONNECTSELEMENTS',
1221
+ 3945020480: 'IFCRELCONNECTSPATHELEMENTS',
1222
+ 4201705270: 'IFCRELCONNECTSPORTTOELEMENT',
1223
+ 3190031847: 'IFCRELCONNECTSPORTS',
1224
+ 2127690289: 'IFCRELCONNECTSSTRUCTURALACTIVITY',
1225
+ 1638771189: 'IFCRELCONNECTSSTRUCTURALMEMBER',
1226
+ 504942748: 'IFCRELCONNECTSWITHECCENTRICITY',
1227
+ 3678494232: 'IFCRELCONNECTSWITHREALIZINGELEMENTS',
1228
+ 3242617779: 'IFCRELCONTAINEDINSPATIALSTRUCTURE',
1229
+ 886880790: 'IFCRELCOVERSBLDGELEMENTS',
1230
+ 2802773753: 'IFCRELCOVERSSPACES',
1231
+ 2565941209: 'IFCRELDECLARES',
1232
+ 2551354335: 'IFCRELDECOMPOSES',
1233
+ 693640335: 'IFCRELDEFINES',
1234
+ 1462361463: 'IFCRELDEFINESBYOBJECT',
1235
+ 4186316022: 'IFCRELDEFINESBYPROPERTIES',
1236
+ 307848117: 'IFCRELDEFINESBYTEMPLATE',
1237
+ 781010003: 'IFCRELDEFINESBYTYPE',
1238
+ 3940055652: 'IFCRELFILLSELEMENT',
1239
+ 279856033: 'IFCRELFLOWCONTROLELEMENTS',
1240
+ 427948657: 'IFCRELINTERFERESELEMENTS',
1241
+ 3268803585: 'IFCRELNESTS',
1242
+ 1441486842: 'IFCRELPOSITIONS',
1243
+ 750771296: 'IFCRELPROJECTSELEMENT',
1244
+ 1245217292: 'IFCRELREFERENCEDINSPATIALSTRUCTURE',
1245
+ 4122056220: 'IFCRELSEQUENCE',
1246
+ 366585022: 'IFCRELSERVICESBUILDINGS',
1247
+ 3451746338: 'IFCRELSPACEBOUNDARY',
1248
+ 3523091289: 'IFCRELSPACEBOUNDARY1STLEVEL',
1249
+ 1521410863: 'IFCRELSPACEBOUNDARY2NDLEVEL',
1250
+ 1401173127: 'IFCRELVOIDSELEMENT',
1251
+ 478536968: 'IFCRELATIONSHIP',
1252
+ 816062949: 'IFCREPARAMETRISEDCOMPOSITECURVESEGMENT',
1253
+ 1076942058: 'IFCREPRESENTATION',
1254
+ 3377609919: 'IFCREPRESENTATIONCONTEXT',
1255
+ 3008791417: 'IFCREPRESENTATIONITEM',
1256
+ 1660063152: 'IFCREPRESENTATIONMAP',
1257
+ 2914609552: 'IFCRESOURCE',
1258
+ 2943643501: 'IFCRESOURCEAPPROVALRELATIONSHIP',
1259
+ 1608871552: 'IFCRESOURCECONSTRAINTRELATIONSHIP',
1260
+ 2439245199: 'IFCRESOURCELEVELRELATIONSHIP',
1261
+ 1042787934: 'IFCRESOURCETIME',
1262
+ 1856042241: 'IFCREVOLVEDAREASOLID',
1263
+ 3243963512: 'IFCREVOLVEDAREASOLIDTAPERED',
1264
+ 4158566097: 'IFCRIGHTCIRCULARCONE',
1265
+ 3626867408: 'IFCRIGHTCIRCULARCYLINDER',
1266
+ 2016517767: 'IFCROOF',
1267
+ 2781568857: 'IFCROOFTYPE',
1268
+ 2341007311: 'IFCROOT',
1269
+ 2778083089: 'IFCROUNDEDRECTANGLEPROFILEDEF',
1270
+ 448429030: 'IFCSIUNIT',
1271
+ 3053780830: 'IFCSANITARYTERMINAL',
1272
+ 1768891740: 'IFCSANITARYTERMINALTYPE',
1273
+ 1054537805: 'IFCSCHEDULINGTIME',
1274
+ 2157484638: 'IFCSEAMCURVE',
1275
+ 2042790032: 'IFCSECTIONPROPERTIES',
1276
+ 4165799628: 'IFCSECTIONREINFORCEMENTPROPERTIES',
1277
+ 1862484736: 'IFCSECTIONEDSOLID',
1278
+ 1290935644: 'IFCSECTIONEDSOLIDHORIZONTAL',
1279
+ 1509187699: 'IFCSECTIONEDSPINE',
1280
+ 4086658281: 'IFCSENSOR',
1281
+ 1783015770: 'IFCSENSORTYPE',
1282
+ 1329646415: 'IFCSHADINGDEVICE',
1283
+ 4074543187: 'IFCSHADINGDEVICETYPE',
1284
+ 867548509: 'IFCSHAPEASPECT',
1285
+ 3982875396: 'IFCSHAPEMODEL',
1286
+ 4240577450: 'IFCSHAPEREPRESENTATION',
1287
+ 4124623270: 'IFCSHELLBASEDSURFACEMODEL',
1288
+ 3692461612: 'IFCSIMPLEPROPERTY',
1289
+ 3663146110: 'IFCSIMPLEPROPERTYTEMPLATE',
1290
+ 4097777520: 'IFCSITE',
1291
+ 1529196076: 'IFCSLAB',
1292
+ 3127900445: 'IFCSLABELEMENTEDCASE',
1293
+ 3027962421: 'IFCSLABSTANDARDCASE',
1294
+ 2533589738: 'IFCSLABTYPE',
1295
+ 2609359061: 'IFCSLIPPAGECONNECTIONCONDITION',
1296
+ 3420628829: 'IFCSOLARDEVICE',
1297
+ 1072016465: 'IFCSOLARDEVICETYPE',
1298
+ 723233188: 'IFCSOLIDMODEL',
1299
+ 3856911033: 'IFCSPACE',
1300
+ 1999602285: 'IFCSPACEHEATER',
1301
+ 1305183839: 'IFCSPACEHEATERTYPE',
1302
+ 3812236995: 'IFCSPACETYPE',
1303
+ 1412071761: 'IFCSPATIALELEMENT',
1304
+ 710998568: 'IFCSPATIALELEMENTTYPE',
1305
+ 2706606064: 'IFCSPATIALSTRUCTUREELEMENT',
1306
+ 3893378262: 'IFCSPATIALSTRUCTUREELEMENTTYPE',
1307
+ 463610769: 'IFCSPATIALZONE',
1308
+ 2481509218: 'IFCSPATIALZONETYPE',
1309
+ 451544542: 'IFCSPHERE',
1310
+ 4015995234: 'IFCSPHERICALSURFACE',
1311
+ 1404847402: 'IFCSTACKTERMINAL',
1312
+ 3112655638: 'IFCSTACKTERMINALTYPE',
1313
+ 331165859: 'IFCSTAIR',
1314
+ 4252922144: 'IFCSTAIRFLIGHT',
1315
+ 1039846685: 'IFCSTAIRFLIGHTTYPE',
1316
+ 338393293: 'IFCSTAIRTYPE',
1317
+ 682877961: 'IFCSTRUCTURALACTION',
1318
+ 3544373492: 'IFCSTRUCTURALACTIVITY',
1319
+ 2515109513: 'IFCSTRUCTURALANALYSISMODEL',
1320
+ 1179482911: 'IFCSTRUCTURALCONNECTION',
1321
+ 2273995522: 'IFCSTRUCTURALCONNECTIONCONDITION',
1322
+ 1004757350: 'IFCSTRUCTURALCURVEACTION',
1323
+ 4243806635: 'IFCSTRUCTURALCURVECONNECTION',
1324
+ 214636428: 'IFCSTRUCTURALCURVEMEMBER',
1325
+ 2445595289: 'IFCSTRUCTURALCURVEMEMBERVARYING',
1326
+ 2757150158: 'IFCSTRUCTURALCURVEREACTION',
1327
+ 3136571912: 'IFCSTRUCTURALITEM',
1328
+ 1807405624: 'IFCSTRUCTURALLINEARACTION',
1329
+ 2162789131: 'IFCSTRUCTURALLOAD',
1330
+ 385403989: 'IFCSTRUCTURALLOADCASE',
1331
+ 3478079324: 'IFCSTRUCTURALLOADCONFIGURATION',
1332
+ 1252848954: 'IFCSTRUCTURALLOADGROUP',
1333
+ 1595516126: 'IFCSTRUCTURALLOADLINEARFORCE',
1334
+ 609421318: 'IFCSTRUCTURALLOADORRESULT',
1335
+ 2668620305: 'IFCSTRUCTURALLOADPLANARFORCE',
1336
+ 2473145415: 'IFCSTRUCTURALLOADSINGLEDISPLACEMENT',
1337
+ 1973038258: 'IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION',
1338
+ 1597423693: 'IFCSTRUCTURALLOADSINGLEFORCE',
1339
+ 1190533807: 'IFCSTRUCTURALLOADSINGLEFORCEWARPING',
1340
+ 2525727697: 'IFCSTRUCTURALLOADSTATIC',
1341
+ 3408363356: 'IFCSTRUCTURALLOADTEMPERATURE',
1342
+ 530289379: 'IFCSTRUCTURALMEMBER',
1343
+ 1621171031: 'IFCSTRUCTURALPLANARACTION',
1344
+ 2082059205: 'IFCSTRUCTURALPOINTACTION',
1345
+ 734778138: 'IFCSTRUCTURALPOINTCONNECTION',
1346
+ 1235345126: 'IFCSTRUCTURALPOINTREACTION',
1347
+ 3689010777: 'IFCSTRUCTURALREACTION',
1348
+ 2986769608: 'IFCSTRUCTURALRESULTGROUP',
1349
+ 3657597509: 'IFCSTRUCTURALSURFACEACTION',
1350
+ 1975003073: 'IFCSTRUCTURALSURFACECONNECTION',
1351
+ 3979015343: 'IFCSTRUCTURALSURFACEMEMBER',
1352
+ 2218152070: 'IFCSTRUCTURALSURFACEMEMBERVARYING',
1353
+ 603775116: 'IFCSTRUCTURALSURFACEREACTION',
1354
+ 2830218821: 'IFCSTYLEMODEL',
1355
+ 3958052878: 'IFCSTYLEDITEM',
1356
+ 3049322572: 'IFCSTYLEDREPRESENTATION',
1357
+ 148013059: 'IFCSUBCONTRACTRESOURCE',
1358
+ 4095615324: 'IFCSUBCONTRACTRESOURCETYPE',
1359
+ 2233826070: 'IFCSUBEDGE',
1360
+ 2513912981: 'IFCSURFACE',
1361
+ 699246055: 'IFCSURFACECURVE',
1362
+ 2028607225: 'IFCSURFACECURVESWEPTAREASOLID',
1363
+ 3101698114: 'IFCSURFACEFEATURE',
1364
+ 2809605785: 'IFCSURFACEOFLINEAREXTRUSION',
1365
+ 4124788165: 'IFCSURFACEOFREVOLUTION',
1366
+ 2934153892: 'IFCSURFACEREINFORCEMENTAREA',
1367
+ 1300840506: 'IFCSURFACESTYLE',
1368
+ 3303107099: 'IFCSURFACESTYLELIGHTING',
1369
+ 1607154358: 'IFCSURFACESTYLEREFRACTION',
1370
+ 1878645084: 'IFCSURFACESTYLERENDERING',
1371
+ 846575682: 'IFCSURFACESTYLESHADING',
1372
+ 1351298697: 'IFCSURFACESTYLEWITHTEXTURES',
1373
+ 626085974: 'IFCSURFACETEXTURE',
1374
+ 2247615214: 'IFCSWEPTAREASOLID',
1375
+ 1260650574: 'IFCSWEPTDISKSOLID',
1376
+ 1096409881: 'IFCSWEPTDISKSOLIDPOLYGONAL',
1377
+ 230924584: 'IFCSWEPTSURFACE',
1378
+ 1162798199: 'IFCSWITCHINGDEVICE',
1379
+ 2315554128: 'IFCSWITCHINGDEVICETYPE',
1380
+ 2254336722: 'IFCSYSTEM',
1381
+ 413509423: 'IFCSYSTEMFURNITUREELEMENT',
1382
+ 1580310250: 'IFCSYSTEMFURNITUREELEMENTTYPE',
1383
+ 3071757647: 'IFCTSHAPEPROFILEDEF',
1384
+ 985171141: 'IFCTABLE',
1385
+ 2043862942: 'IFCTABLECOLUMN',
1386
+ 531007025: 'IFCTABLEROW',
1387
+ 812556717: 'IFCTANK',
1388
+ 5716631: 'IFCTANKTYPE',
1389
+ 3473067441: 'IFCTASK',
1390
+ 1549132990: 'IFCTASKTIME',
1391
+ 2771591690: 'IFCTASKTIMERECURRING',
1392
+ 3206491090: 'IFCTASKTYPE',
1393
+ 912023232: 'IFCTELECOMADDRESS',
1394
+ 3824725483: 'IFCTENDON',
1395
+ 2347447852: 'IFCTENDONANCHOR',
1396
+ 3081323446: 'IFCTENDONANCHORTYPE',
1397
+ 3663046924: 'IFCTENDONCONDUIT',
1398
+ 2281632017: 'IFCTENDONCONDUITTYPE',
1399
+ 2415094496: 'IFCTENDONTYPE',
1400
+ 2387106220: 'IFCTESSELLATEDFACESET',
1401
+ 901063453: 'IFCTESSELLATEDITEM',
1402
+ 4282788508: 'IFCTEXTLITERAL',
1403
+ 3124975700: 'IFCTEXTLITERALWITHEXTENT',
1404
+ 1447204868: 'IFCTEXTSTYLE',
1405
+ 1983826977: 'IFCTEXTSTYLEFONTMODEL',
1406
+ 2636378356: 'IFCTEXTSTYLEFORDEFINEDFONT',
1407
+ 1640371178: 'IFCTEXTSTYLETEXTMODEL',
1408
+ 280115917: 'IFCTEXTURECOORDINATE',
1409
+ 1742049831: 'IFCTEXTURECOORDINATEGENERATOR',
1410
+ 2552916305: 'IFCTEXTUREMAP',
1411
+ 1210645708: 'IFCTEXTUREVERTEX',
1412
+ 3611470254: 'IFCTEXTUREVERTEXLIST',
1413
+ 1199560280: 'IFCTIMEPERIOD',
1414
+ 3101149627: 'IFCTIMESERIES',
1415
+ 581633288: 'IFCTIMESERIESVALUE',
1416
+ 1377556343: 'IFCTOPOLOGICALREPRESENTATIONITEM',
1417
+ 1735638870: 'IFCTOPOLOGYREPRESENTATION',
1418
+ 1935646853: 'IFCTOROIDALSURFACE',
1419
+ 3825984169: 'IFCTRANSFORMER',
1420
+ 1692211062: 'IFCTRANSFORMERTYPE',
1421
+ 2595432518: 'IFCTRANSITIONCURVESEGMENT2D',
1422
+ 1620046519: 'IFCTRANSPORTELEMENT',
1423
+ 2097647324: 'IFCTRANSPORTELEMENTTYPE',
1424
+ 2715220739: 'IFCTRAPEZIUMPROFILEDEF',
1425
+ 2916149573: 'IFCTRIANGULATEDFACESET',
1426
+ 1229763772: 'IFCTRIANGULATEDIRREGULARNETWORK',
1427
+ 3593883385: 'IFCTRIMMEDCURVE',
1428
+ 3026737570: 'IFCTUBEBUNDLE',
1429
+ 1600972822: 'IFCTUBEBUNDLETYPE',
1430
+ 1628702193: 'IFCTYPEOBJECT',
1431
+ 3736923433: 'IFCTYPEPROCESS',
1432
+ 2347495698: 'IFCTYPEPRODUCT',
1433
+ 3698973494: 'IFCTYPERESOURCE',
1434
+ 427810014: 'IFCUSHAPEPROFILEDEF',
1435
+ 180925521: 'IFCUNITASSIGNMENT',
1436
+ 630975310: 'IFCUNITARYCONTROLELEMENT',
1437
+ 3179687236: 'IFCUNITARYCONTROLELEMENTTYPE',
1438
+ 4292641817: 'IFCUNITARYEQUIPMENT',
1439
+ 1911125066: 'IFCUNITARYEQUIPMENTTYPE',
1440
+ 4207607924: 'IFCVALVE',
1441
+ 728799441: 'IFCVALVETYPE',
1442
+ 1417489154: 'IFCVECTOR',
1443
+ 2799835756: 'IFCVERTEX',
1444
+ 2759199220: 'IFCVERTEXLOOP',
1445
+ 1907098498: 'IFCVERTEXPOINT',
1446
+ 1530820697: 'IFCVIBRATIONDAMPER',
1447
+ 3956297820: 'IFCVIBRATIONDAMPERTYPE',
1448
+ 2391383451: 'IFCVIBRATIONISOLATOR',
1449
+ 3313531582: 'IFCVIBRATIONISOLATORTYPE',
1450
+ 2769231204: 'IFCVIRTUALELEMENT',
1451
+ 891718957: 'IFCVIRTUALGRIDINTERSECTION',
1452
+ 926996030: 'IFCVOIDINGFEATURE',
1453
+ 2391406946: 'IFCWALL',
1454
+ 4156078855: 'IFCWALLELEMENTEDCASE',
1455
+ 3512223829: 'IFCWALLSTANDARDCASE',
1456
+ 1898987631: 'IFCWALLTYPE',
1457
+ 4237592921: 'IFCWASTETERMINAL',
1458
+ 1133259667: 'IFCWASTETERMINALTYPE',
1459
+ 3304561284: 'IFCWINDOW',
1460
+ 336235671: 'IFCWINDOWLININGPROPERTIES',
1461
+ 512836454: 'IFCWINDOWPANELPROPERTIES',
1462
+ 486154966: 'IFCWINDOWSTANDARDCASE',
1463
+ 1299126871: 'IFCWINDOWSTYLE',
1464
+ 4009809668: 'IFCWINDOWTYPE',
1465
+ 4088093105: 'IFCWORKCALENDAR',
1466
+ 1028945134: 'IFCWORKCONTROL',
1467
+ 4218914973: 'IFCWORKPLAN',
1468
+ 3342526732: 'IFCWORKSCHEDULE',
1469
+ 1236880293: 'IFCWORKTIME',
1470
+ 2543172580: 'IFCZSHAPEPROFILEDEF',
1471
+ 1033361043: 'IFCZONE',
1472
+ };
1473
+
1474
+ class PropertyManager {
1475
+
1476
+ constructor( state ) {
1477
+
1478
+ this.state = state;
1479
+
1480
+ }
1481
+
1482
+ getExpressId( geometry, faceIndex ) {
1483
+
1484
+ if ( ! geometry.index )
1485
+ return;
1486
+ const geoIndex = geometry.index.array;
1487
+ return geometry.attributes[ IdAttrName ].getX( geoIndex[ 3 * faceIndex ] );
1488
+
1489
+ }
1490
+
1491
+ getItemProperties( modelID, id, recursive = false ) {
1492
+
1493
+ return this.state.useJSON ?
1494
+ {
1495
+ ...this.state.models[ modelID ].jsonData[ id ]
1496
+ } :
1497
+ this.state.api.GetLine( modelID, id, recursive );
1498
+
1499
+ }
1500
+
1501
+ getAllItemsOfType( modelID, type, verbose ) {
1502
+
1503
+ return this.state.useJSON ?
1504
+ this.getAllItemsOfTypeJSON( modelID, type, verbose ) :
1505
+ this.getAllItemsOfTypeWebIfcAPI( modelID, type, verbose );
1506
+
1507
+ }
1508
+
1509
+ getPropertySets( modelID, elementID, recursive = false ) {
1510
+
1511
+ return this.state.useJSON ?
1512
+ this.getPropertyJSON( modelID, elementID, recursive, PropsNames.psets ) :
1513
+ this.getPropertyWebIfcAPI( modelID, elementID, recursive, PropsNames.psets );
1514
+
1515
+ }
1516
+
1517
+ getTypeProperties( modelID, elementID, recursive = false ) {
1518
+
1519
+ return this.state.useJSON ?
1520
+ this.getPropertyJSON( modelID, elementID, recursive, PropsNames.type ) :
1521
+ this.getPropertyWebIfcAPI( modelID, elementID, recursive, PropsNames.type );
1522
+
1523
+ }
1524
+
1525
+ getMaterialsProperties( modelID, elementID, recursive = false ) {
1526
+
1527
+ return this.state.useJSON ?
1528
+ this.getPropertyJSON( modelID, elementID, recursive, PropsNames.materials ) :
1529
+ this.getPropertyWebIfcAPI( modelID, elementID, recursive, PropsNames.materials );
1530
+
1531
+ }
1532
+
1533
+ getSpatialStructure( modelID ) {
1534
+
1535
+ return this.state.useJSON ?
1536
+ this.getSpatialStructureJSON( modelID ) :
1537
+ this.getSpatialStructureWebIfcAPI( modelID );
1538
+
1539
+ }
1540
+
1541
+ getSpatialStructureJSON( modelID ) {
1542
+
1543
+ const chunks = this.getSpatialTreeChunks( modelID );
1544
+ const projectID = this.getAllItemsOfTypeJSON( modelID, IFCPROJECT, false )[ 0 ];
1545
+ const project = this.newIfcProject( projectID );
1546
+ this.getSpatialNode( modelID, project, chunks );
1547
+ return {
1548
+ ...project
1549
+ };
1550
+
1551
+ }
1552
+
1553
+ getSpatialStructureWebIfcAPI( modelID ) {
1554
+
1555
+ const chunks = this.getSpatialTreeChunks( modelID );
1556
+ const projectID = this.state.api.GetLineIDsWithType( modelID, IFCPROJECT ).get( 0 );
1557
+ const project = this.newIfcProject( projectID );
1558
+ this.getSpatialNode( modelID, project, chunks );
1559
+ return project;
1560
+
1561
+ }
1562
+
1563
+ getAllItemsOfTypeJSON( modelID, type, verbose ) {
1564
+
1565
+ const data = this.state.models[ modelID ].jsonData;
1566
+ const typeName = IfcTypesMap[ type ];
1567
+ if ( ! typeName ) {
1568
+
1569
+ throw new Error( `Type not found: ${type}` );
1570
+
1571
+ }
1572
+
1573
+ return this.filterJSONItemsByType( data, typeName, verbose );
1574
+
1575
+ }
1576
+
1577
+ filterJSONItemsByType( data, typeName, verbose ) {
1578
+
1579
+ const result = [];
1580
+ Object.keys( data ).forEach( key => {
1581
+
1582
+ const numKey = parseInt( key );
1583
+ if ( data[ numKey ].type.toUpperCase() === typeName ) {
1584
+
1585
+ result.push( verbose ? {
1586
+ ...data[ numKey ]
1587
+ } : numKey );
1588
+
1589
+ }
1590
+
1591
+ } );
1592
+ return result;
1593
+
1594
+ }
1595
+
1596
+ getItemsByIDJSON( modelID, ids ) {
1597
+
1598
+ const data = this.state.models[ modelID ].jsonData;
1599
+ const result = [];
1600
+ ids.forEach( id => result.push( {
1601
+ ...data[ id ]
1602
+ } ) );
1603
+ return result;
1604
+
1605
+ }
1606
+
1607
+ getPropertyJSON( modelID, elementID, recursive = false, propName ) {
1608
+
1609
+ const resultIDs = this.getAllRelatedItemsOfTypeJSON( modelID, elementID, propName );
1610
+ const result = this.getItemsByIDJSON( modelID, resultIDs );
1611
+ if ( recursive ) {
1612
+
1613
+ result.forEach( result => this.getJSONReferencesRecursively( modelID, result ) );
1614
+
1615
+ }
1616
+
1617
+ return result;
1618
+
1619
+ }
1620
+
1621
+ getJSONReferencesRecursively( modelID, jsonObject ) {
1622
+
1623
+ if ( jsonObject == undefined )
1624
+ return;
1625
+ const keys = Object.keys( jsonObject );
1626
+ for ( let i = 0; i < keys.length; i ++ ) {
1627
+
1628
+ const key = keys[ i ];
1629
+ this.getJSONItem( modelID, jsonObject, key );
1630
+
1631
+ }
1632
+
1633
+ }
1634
+
1635
+ getJSONItem( modelID, jsonObject, key ) {
1636
+
1637
+ if ( Array.isArray( jsonObject[ key ] ) ) {
1638
+
1639
+ return this.getMultipleJSONItems( modelID, jsonObject, key );
1640
+
1641
+ }
1642
+
1643
+ if ( jsonObject[ key ] && jsonObject[ key ].type === 5 ) {
1644
+
1645
+ jsonObject[ key ] = this.getItemsByIDJSON( modelID, [ jsonObject[ key ].value ] )[ 0 ];
1646
+ this.getJSONReferencesRecursively( modelID, jsonObject[ key ] );
1647
+
1648
+ }
1649
+
1650
+ }
1651
+
1652
+ getMultipleJSONItems( modelID, jsonObject, key ) {
1653
+
1654
+ jsonObject[ key ] = jsonObject[ key ].map( ( item ) => {
1655
+
1656
+ if ( item.type === 5 ) {
1657
+
1658
+ item = this.getItemsByIDJSON( modelID, [ item.value ] )[ 0 ];
1659
+ this.getJSONReferencesRecursively( modelID, item );
1660
+
1661
+ }
1662
+
1663
+ return item;
1664
+
1665
+ } );
1666
+
1667
+ }
1668
+
1669
+ getPropertyWebIfcAPI( modelID, elementID, recursive = false, propName ) {
1670
+
1671
+ const propSetIds = this.getAllRelatedItemsOfTypeWebIfcAPI( modelID, elementID, propName );
1672
+ return propSetIds.map( ( id ) => this.state.api.GetLine( modelID, id, recursive ) );
1673
+
1674
+ }
1675
+
1676
+ getAllItemsOfTypeWebIfcAPI( modelID, type, verbose ) {
1677
+
1678
+ const items = [];
1679
+ const lines = this.state.api.GetLineIDsWithType( modelID, type );
1680
+ for ( let i = 0; i < lines.size(); i ++ )
1681
+ items.push( lines.get( i ) );
1682
+ if ( verbose )
1683
+ return items.map( ( id ) => this.state.api.GetLine( modelID, id ) );
1684
+ return items;
1685
+
1686
+ }
1687
+
1688
+ newIfcProject( id ) {
1689
+
1690
+ return {
1691
+ expressID: id,
1692
+ type: 'IFCPROJECT',
1693
+ children: []
1694
+ };
1695
+
1696
+ }
1697
+
1698
+ getSpatialTreeChunks( modelID ) {
1699
+
1700
+ const treeChunks = {};
1701
+ const json = this.state.useJSON;
1702
+ if ( json ) {
1703
+
1704
+ this.getChunksJSON( modelID, treeChunks, PropsNames.aggregates );
1705
+ this.getChunksJSON( modelID, treeChunks, PropsNames.spatial );
1706
+
1707
+ } else {
1708
+
1709
+ this.getChunksWebIfcAPI( modelID, treeChunks, PropsNames.aggregates );
1710
+ this.getChunksWebIfcAPI( modelID, treeChunks, PropsNames.spatial );
1711
+
1712
+ }
1713
+
1714
+ return treeChunks;
1715
+
1716
+ }
1717
+
1718
+ getChunksJSON( modelID, chunks, propNames ) {
1719
+
1720
+ const relation = this.getAllItemsOfTypeJSON( modelID, propNames.name, true );
1721
+ relation.forEach( rel => {
1722
+
1723
+ this.saveChunk( chunks, propNames, rel );
1724
+
1725
+ } );
1726
+
1727
+ }
1728
+
1729
+ getChunksWebIfcAPI( modelID, chunks, propNames ) {
1730
+
1731
+ const relation = this.state.api.GetLineIDsWithType( modelID, propNames.name );
1732
+ for ( let i = 0; i < relation.size(); i ++ ) {
1733
+
1734
+ const rel = this.state.api.GetLine( modelID, relation.get( i ), false );
1735
+ this.saveChunk( chunks, propNames, rel );
1736
+
1737
+ }
1738
+
1739
+ }
1740
+
1741
+ saveChunk( chunks, propNames, rel ) {
1742
+
1743
+ const relating = rel[ propNames.relating ].value;
1744
+ const related = rel[ propNames.related ].map( ( r ) => r.value );
1745
+ if ( chunks[ relating ] == undefined ) {
1746
+
1747
+ chunks[ relating ] = related;
1748
+
1749
+ } else {
1750
+
1751
+ chunks[ relating ] = chunks[ relating ].concat( related );
1752
+
1753
+ }
1754
+
1755
+ }
1756
+
1757
+ getSpatialNode( modelID, node, treeChunks ) {
1758
+
1759
+ this.getChildren( modelID, node, treeChunks, PropsNames.aggregates );
1760
+ this.getChildren( modelID, node, treeChunks, PropsNames.spatial );
1761
+
1762
+ }
1763
+
1764
+ getChildren( modelID, node, treeChunks, propNames ) {
1765
+
1766
+ const children = treeChunks[ node.expressID ];
1767
+ if ( children == undefined )
1768
+ return;
1769
+ const prop = propNames.key;
1770
+ node[ prop ] = children.map( ( child ) => {
1771
+
1772
+ const node = this.newNode( modelID, child );
1773
+ this.getSpatialNode( modelID, node, treeChunks );
1774
+ return node;
1775
+
1776
+ } );
1777
+
1778
+ }
1779
+
1780
+ newNode( modelID, id ) {
1781
+
1782
+ const typeName = this.getNodeType( modelID, id );
1783
+ return {
1784
+ expressID: id,
1785
+ type: typeName,
1786
+ children: []
1787
+ };
1788
+
1789
+ }
1790
+
1791
+ getNodeType( modelID, id ) {
1792
+
1793
+ if ( this.state.useJSON )
1794
+ return this.state.models[ modelID ].jsonData[ id ].type;
1795
+ const typeID = this.state.models[ modelID ].types[ id ];
1796
+ return IfcElements[ typeID ];
1797
+
1798
+ }
1799
+
1800
+ getAllRelatedItemsOfTypeJSON( modelID, id, propNames ) {
1801
+
1802
+ const lines = this.getAllItemsOfTypeJSON( modelID, propNames.name, true );
1803
+ const IDs = [];
1804
+ lines.forEach( line => {
1805
+
1806
+ const isRelated = this.isRelated( id, line, propNames );
1807
+ if ( isRelated )
1808
+ this.getRelated( line, propNames, IDs );
1809
+
1810
+ } );
1811
+ return IDs;
1812
+
1813
+ }
1814
+
1815
+ getAllRelatedItemsOfTypeWebIfcAPI( modelID, id, propNames ) {
1816
+
1817
+ const lines = this.state.api.GetLineIDsWithType( modelID, propNames.name );
1818
+ const IDs = [];
1819
+ for ( let i = 0; i < lines.size(); i ++ ) {
1820
+
1821
+ const rel = this.state.api.GetLine( modelID, lines.get( i ) );
1822
+ const isRelated = this.isRelated( id, rel, propNames );
1823
+ if ( isRelated )
1824
+ this.getRelated( rel, propNames, IDs );
1825
+
1826
+ }
1827
+
1828
+ return IDs;
1829
+
1830
+ }
1831
+
1832
+ getRelated( rel, propNames, IDs ) {
1833
+
1834
+ const element = rel[ propNames.relating ];
1835
+ if ( ! Array.isArray( element ) )
1836
+ IDs.push( element.value );
1837
+ else
1838
+ element.forEach( ( ele ) => IDs.push( ele.value ) );
1839
+
1840
+ }
1841
+
1842
+ isRelated( id, rel, propNames ) {
1843
+
1844
+ const relatedItems = rel[ propNames.related ];
1845
+ if ( Array.isArray( relatedItems ) ) {
1846
+
1847
+ const values = relatedItems.map( ( item ) => item.value );
1848
+ return values.includes( id );
1849
+
1850
+ }
1851
+
1852
+ return relatedItems.value === id;
1853
+
1854
+ }
1855
+
1856
+ }
1857
+
1858
+ class TypeManager {
1859
+
1860
+ constructor( state ) {
1861
+
1862
+ this.state = state;
1863
+
1864
+ }
1865
+
1866
+ getAllTypes() {
1867
+
1868
+ for ( const modelID in this.state.models ) {
1869
+
1870
+ const types = this.state.models[ modelID ].types;
1871
+ if ( Object.keys( types ).length == 0 )
1872
+ this.getAllTypesOfModel( parseInt( modelID ) );
1873
+
1874
+ }
1875
+
1876
+ }
1877
+
1878
+ getAllTypesOfModel( modelID ) {
1879
+
1880
+ this.state.models[ modelID ].types;
1881
+ const elements = Object.keys( IfcElements ).map( ( e ) => parseInt( e ) );
1882
+ const types = this.state.models[ modelID ].types;
1883
+ elements.forEach( ( type ) => {
1884
+
1885
+ const lines = this.state.api.GetLineIDsWithType( modelID, type );
1886
+ for ( let i = 0; i < lines.size(); i ++ )
1887
+ types[ lines.get( i ) ] = type;
1888
+
1889
+ } );
1890
+
1891
+ }
1892
+
1893
+ }
1894
+
1895
+ let modelIdCounter = 0;
1896
+ const nullIfcManagerErrorMessage = 'IfcManager is null!';
1897
+
1898
+ class IFCModel extends Mesh {
1899
+
1900
+ constructor() {
1901
+
1902
+ super( ...arguments );
1903
+ this.modelID = modelIdCounter ++;
1904
+ this.ifcManager = null;
1905
+ this.mesh = this;
1906
+
1907
+ }
1908
+
1909
+ setIFCManager( manager ) {
1910
+
1911
+ this.ifcManager = manager;
1912
+
1913
+ }
1914
+
1915
+ setWasmPath( path ) {
1916
+
1917
+ if ( this.ifcManager === null )
1918
+ throw new Error( nullIfcManagerErrorMessage );
1919
+ this.ifcManager.setWasmPath( path );
1920
+
1921
+ }
1922
+
1923
+ close( scene ) {
1924
+
1925
+ if ( this.ifcManager === null )
1926
+ throw new Error( nullIfcManagerErrorMessage );
1927
+ this.ifcManager.close( this.modelID, scene );
1928
+
1929
+ }
1930
+
1931
+ getExpressId( geometry, faceIndex ) {
1932
+
1933
+ if ( this.ifcManager === null )
1934
+ throw new Error( nullIfcManagerErrorMessage );
1935
+ return this.ifcManager.getExpressId( geometry, faceIndex );
1936
+
1937
+ }
1938
+
1939
+ getAllItemsOfType( type, verbose ) {
1940
+
1941
+ if ( this.ifcManager === null )
1942
+ throw new Error( nullIfcManagerErrorMessage );
1943
+ return this.ifcManager.getAllItemsOfType( this.modelID, type, verbose );
1944
+
1945
+ }
1946
+
1947
+ getItemProperties( id, recursive = false ) {
1948
+
1949
+ if ( this.ifcManager === null )
1950
+ throw new Error( nullIfcManagerErrorMessage );
1951
+ return this.ifcManager.getItemProperties( this.modelID, id, recursive );
1952
+
1953
+ }
1954
+
1955
+ getPropertySets( id, recursive = false ) {
1956
+
1957
+ if ( this.ifcManager === null )
1958
+ throw new Error( nullIfcManagerErrorMessage );
1959
+ return this.ifcManager.getPropertySets( this.modelID, id, recursive );
1960
+
1961
+ }
1962
+
1963
+ getTypeProperties( id, recursive = false ) {
1964
+
1965
+ if ( this.ifcManager === null )
1966
+ throw new Error( nullIfcManagerErrorMessage );
1967
+ return this.ifcManager.getTypeProperties( this.modelID, id, recursive );
1968
+
1969
+ }
1970
+
1971
+ getIfcType( id ) {
1972
+
1973
+ if ( this.ifcManager === null )
1974
+ throw new Error( nullIfcManagerErrorMessage );
1975
+ return this.ifcManager.getIfcType( this.modelID, id );
1976
+
1977
+ }
1978
+
1979
+ getSpatialStructure() {
1980
+
1981
+ if ( this.ifcManager === null )
1982
+ throw new Error( nullIfcManagerErrorMessage );
1983
+ return this.ifcManager.getSpatialStructure( this.modelID );
1984
+
1985
+ }
1986
+
1987
+ getSubset( material ) {
1988
+
1989
+ if ( this.ifcManager === null )
1990
+ throw new Error( nullIfcManagerErrorMessage );
1991
+ return this.ifcManager.getSubset( this.modelID, material );
1992
+
1993
+ }
1994
+
1995
+ removeSubset( parent, material ) {
1996
+
1997
+ if ( this.ifcManager === null )
1998
+ throw new Error( nullIfcManagerErrorMessage );
1999
+ this.ifcManager.removeSubset( this.modelID, parent, material );
2000
+
2001
+ }
2002
+
2003
+ createSubset( config ) {
2004
+
2005
+ if ( this.ifcManager === null )
2006
+ throw new Error( nullIfcManagerErrorMessage );
2007
+ const modelConfig = {
2008
+ ...config,
2009
+ modelID: this.modelID
2010
+ };
2011
+ return this.ifcManager.createSubset( modelConfig );
2012
+
2013
+ }
2014
+
2015
+ hideItems( ids ) {
2016
+
2017
+ if ( this.ifcManager === null )
2018
+ throw new Error( nullIfcManagerErrorMessage );
2019
+ this.ifcManager.hideItems( this.modelID, ids );
2020
+
2021
+ }
2022
+
2023
+ hideAllItems() {
2024
+
2025
+ if ( this.ifcManager === null )
2026
+ throw new Error( nullIfcManagerErrorMessage );
2027
+ this.ifcManager.hideAllItems( this.modelID );
2028
+
2029
+ }
2030
+
2031
+ showItems( ids ) {
2032
+
2033
+ if ( this.ifcManager === null )
2034
+ throw new Error( nullIfcManagerErrorMessage );
2035
+ this.ifcManager.showItems( this.modelID, ids );
2036
+
2037
+ }
2038
+
2039
+ showAllItems() {
2040
+
2041
+ if ( this.ifcManager === null )
2042
+ throw new Error( nullIfcManagerErrorMessage );
2043
+ this.ifcManager.showAllItems( this.modelID );
2044
+
2045
+ }
2046
+
2047
+ }
2048
+
2049
+ class BvhManager {
2050
+
2051
+ initializeMeshBVH( computeBoundsTree, disposeBoundsTree, acceleratedRaycast ) {
2052
+
2053
+ this.computeBoundsTree = computeBoundsTree;
2054
+ this.disposeBoundsTree = disposeBoundsTree;
2055
+ this.acceleratedRaycast = acceleratedRaycast;
2056
+ this.setupThreeMeshBVH();
2057
+
2058
+ }
2059
+
2060
+ applyThreeMeshBVH( geometry ) {
2061
+
2062
+ if ( this.computeBoundsTree )
2063
+ geometry.computeBoundsTree();
2064
+
2065
+ }
2066
+
2067
+ setupThreeMeshBVH() {
2068
+
2069
+ if ( ! this.computeBoundsTree || ! this.disposeBoundsTree || ! this.acceleratedRaycast )
2070
+ return;
2071
+ BufferGeometry.prototype.computeBoundsTree = this.computeBoundsTree;
2072
+ BufferGeometry.prototype.disposeBoundsTree = this.disposeBoundsTree;
2073
+ Mesh.prototype.raycast = this.acceleratedRaycast;
2074
+
2075
+ }
2076
+
2077
+ }
2078
+
2079
+ class ItemsHider {
2080
+
2081
+ constructor( state ) {
2082
+
2083
+ this.modelCoordinates = {};
2084
+ this.expressIDCoordinatesMap = {};
2085
+ this.state = state;
2086
+
2087
+ }
2088
+
2089
+
2090
+
2091
+ processCoordinates( modelID ) {
2092
+
2093
+ const attributes = this.getAttributes( modelID );
2094
+ const ids = Array.from( attributes.expressID.array );
2095
+ this.expressIDCoordinatesMap[ modelID ] = {};
2096
+ for ( let i = 0; i < ids.length; i ++ ) {
2097
+
2098
+ if ( ! this.expressIDCoordinatesMap[ modelID ][ ids[ i ] ] ) {
2099
+
2100
+ this.expressIDCoordinatesMap[ modelID ][ ids[ i ] ] = [];
2101
+
2102
+ }
2103
+
2104
+ const current = this.expressIDCoordinatesMap[ modelID ];
2105
+ current[ ids[ i ] ].push( 3 * i );
2106
+
2107
+ }
2108
+
2109
+ this.initializeCoordinates( modelID );
2110
+
2111
+ }
2112
+
2113
+ hideItems( modelID, ids ) {
2114
+
2115
+ this.editCoordinates( modelID, ids, true );
2116
+
2117
+ }
2118
+
2119
+ showItems( modelID, ids ) {
2120
+
2121
+ this.editCoordinates( modelID, ids, false );
2122
+
2123
+ }
2124
+
2125
+ editCoordinates( modelID, ids, hide ) {
2126
+
2127
+ const current = this.expressIDCoordinatesMap[ modelID ];
2128
+ const indices = [];
2129
+ ids.forEach( ( id ) => {
2130
+
2131
+ if ( current[ id ] )
2132
+ indices.push( ...current[ id ] );
2133
+
2134
+ } );
2135
+ const coords = this.getCoordinates( modelID );
2136
+ const initial = this.modelCoordinates[ modelID ];
2137
+ if ( hide )
2138
+ indices.forEach( i => coords.set( [ 0, 0, 0 ], i ) );
2139
+ else
2140
+ indices.forEach( i => coords.set( [ initial[ i ], initial[ i + 1 ], initial[ i + 2 ] ], i ) );
2141
+ this.getAttributes( modelID ).position.needsUpdate = true;
2142
+
2143
+ }
2144
+
2145
+ showAllItems( modelID ) {
2146
+
2147
+ if ( this.modelCoordinates[ modelID ] ) {
2148
+
2149
+ this.resetCoordinates( modelID );
2150
+ this.getAttributes( modelID ).position.needsUpdate = true;
2151
+
2152
+ }
2153
+
2154
+ }
2155
+
2156
+ hideAllItems( modelID ) {
2157
+
2158
+ this.getCoordinates( modelID ).fill( 0 );
2159
+ this.getAttributes( modelID ).position.needsUpdate = true;
2160
+
2161
+ }
2162
+
2163
+ initializeCoordinates( modelID ) {
2164
+
2165
+ const coordinates = this.getCoordinates( modelID );
2166
+ if ( ! this.modelCoordinates[ modelID ] ) {
2167
+
2168
+ this.modelCoordinates[ modelID ] = new Float32Array( coordinates );
2169
+
2170
+ }
2171
+
2172
+ }
2173
+
2174
+ resetCoordinates( modelID ) {
2175
+
2176
+ const initial = this.modelCoordinates[ modelID ];
2177
+ this.getCoordinates( modelID ).set( initial );
2178
+
2179
+ }
2180
+
2181
+ getCoordinates( modelID ) {
2182
+
2183
+ return this.getAttributes( modelID ).position.array;
2184
+
2185
+ }
2186
+
2187
+ getAttributes( modelID ) {
2188
+
2189
+ return this.state.models[ modelID ].mesh.geometry.attributes;
2190
+
2191
+ }
2192
+
2193
+ }
2194
+
2195
+ class IFCManager {
2196
+
2197
+ constructor() {
2198
+
2199
+ this.state = {
2200
+ models: [],
2201
+ api: new IfcAPI(),
2202
+ useJSON: false
2203
+ };
2204
+ this.BVH = new BvhManager();
2205
+ this.parser = new IFCParser( this.state, this.BVH );
2206
+ this.subsets = new SubsetManager( this.state, this.BVH );
2207
+ this.properties = new PropertyManager( this.state );
2208
+ this.types = new TypeManager( this.state );
2209
+ this.hider = new ItemsHider( this.state );
2210
+
2211
+ }
2212
+
2213
+ async parse( buffer ) {
2214
+
2215
+ const mesh = await this.parser.parse( buffer );
2216
+ this.state.useJSON ? this.disposeMemory() : this.types.getAllTypes();
2217
+ this.hider.processCoordinates( mesh.modelID );
2218
+ const model = new IFCModel( mesh.geometry, mesh.material );
2219
+ model.setIFCManager( this );
2220
+ return model;
2221
+
2222
+ }
2223
+
2224
+ setWasmPath( path ) {
2225
+
2226
+ this.state.api.SetWasmPath( path );
2227
+
2228
+ }
2229
+
2230
+ applyWebIfcConfig( settings ) {
2231
+
2232
+ this.state.webIfcSettings = settings;
2233
+
2234
+ }
2235
+
2236
+ useJSONData( useJSON = true ) {
2237
+
2238
+ this.state.useJSON = useJSON;
2239
+ this.disposeMemory();
2240
+
2241
+ }
2242
+
2243
+ addModelJSONData( modelID, data ) {
2244
+
2245
+ const model = this.state.models[ modelID ];
2246
+ if ( model ) {
2247
+
2248
+ model.jsonData = data;
2249
+
2250
+ }
2251
+
2252
+ }
2253
+
2254
+ disposeMemory() {
2255
+
2256
+ this.state.api = null;
2257
+ this.state.api = new IfcAPI();
2258
+
2259
+ }
2260
+
2261
+ setupThreeMeshBVH( computeBoundsTree, disposeBoundsTree, acceleratedRaycast ) {
2262
+
2263
+ this.BVH.initializeMeshBVH( computeBoundsTree, disposeBoundsTree, acceleratedRaycast );
2264
+
2265
+ }
2266
+
2267
+ close( modelID, scene ) {
2268
+
2269
+ this.state.api.CloseModel( modelID );
2270
+ if ( scene ) {
2271
+
2272
+ scene.remove( this.state.models[ modelID ].mesh );
2273
+
2274
+ }
2275
+
2276
+ delete this.state.models[ modelID ];
2277
+
2278
+ }
2279
+
2280
+ getExpressId( geometry, faceIndex ) {
2281
+
2282
+ return this.properties.getExpressId( geometry, faceIndex );
2283
+
2284
+ }
2285
+
2286
+ getAllItemsOfType( modelID, type, verbose ) {
2287
+
2288
+ return this.properties.getAllItemsOfType( modelID, type, verbose );
2289
+
2290
+ }
2291
+
2292
+ getItemProperties( modelID, id, recursive = false ) {
2293
+
2294
+ return this.properties.getItemProperties( modelID, id, recursive );
2295
+
2296
+ }
2297
+
2298
+ getPropertySets( modelID, id, recursive = false ) {
2299
+
2300
+ return this.properties.getPropertySets( modelID, id, recursive );
2301
+
2302
+ }
2303
+
2304
+ getTypeProperties( modelID, id, recursive = false ) {
2305
+
2306
+ return this.properties.getTypeProperties( modelID, id, recursive );
2307
+
2308
+ }
2309
+
2310
+ getMaterialsProperties( modelID, id, recursive = false ) {
2311
+
2312
+ return this.properties.getMaterialsProperties( modelID, id, recursive );
2313
+
2314
+ }
2315
+
2316
+ getIfcType( modelID, id ) {
2317
+
2318
+ const typeID = this.state.models[ modelID ].types[ id ];
2319
+ return IfcElements[ typeID ];
2320
+
2321
+ }
2322
+
2323
+ getSpatialStructure( modelID ) {
2324
+
2325
+ return this.properties.getSpatialStructure( modelID );
2326
+
2327
+ }
2328
+
2329
+ getSubset( modelID, material ) {
2330
+
2331
+ return this.subsets.getSubset( modelID, material );
2332
+
2333
+ }
2334
+
2335
+ removeSubset( modelID, parent, material ) {
2336
+
2337
+ this.subsets.removeSubset( modelID, parent, material );
2338
+
2339
+ }
2340
+
2341
+ createSubset( config ) {
2342
+
2343
+ return this.subsets.createSubset( config );
2344
+
2345
+ }
2346
+
2347
+ hideItems( modelID, ids ) {
2348
+
2349
+ this.hider.hideItems( modelID, ids );
2350
+
2351
+ }
2352
+
2353
+ hideAllItems( modelID ) {
2354
+
2355
+ this.hider.hideAllItems( modelID );
2356
+
2357
+ }
2358
+
2359
+ showItems( modelID, ids ) {
2360
+
2361
+ this.hider.showItems( modelID, ids );
2362
+
2363
+ }
2364
+
2365
+ showAllItems( modelID ) {
2366
+
2367
+ this.hider.showAllItems( modelID );
2368
+
2369
+ }
2370
+
2371
+ }
2372
+
2373
+ class IFCLoader extends Loader {
2374
+
2375
+ constructor( manager ) {
2376
+
2377
+ super( manager );
2378
+ this.ifcManager = new IFCManager();
2379
+
2380
+ }
2381
+
2382
+ load( url, onLoad, onProgress, onError ) {
2383
+
2384
+ const scope = this;
2385
+ const loader = new FileLoader( scope.manager );
2386
+ loader.setPath( scope.path );
2387
+ loader.setResponseType( 'arraybuffer' );
2388
+ loader.setRequestHeader( scope.requestHeader );
2389
+ loader.setWithCredentials( scope.withCredentials );
2390
+ loader.load( url, async function ( buffer ) {
2391
+
2392
+ try {
2393
+
2394
+ if ( typeof buffer == 'string' ) {
2395
+
2396
+ throw new Error( 'IFC files must be given as a buffer!' );
2397
+
2398
+ }
2399
+
2400
+ onLoad( await scope.parse( buffer ) );
2401
+
2402
+ } catch ( e ) {
2403
+
2404
+ if ( onError ) {
2405
+
2406
+ onError( e );
2407
+
2408
+ } else {
2409
+
2410
+ console.error( e );
2411
+
2412
+ }
2413
+
2414
+ scope.manager.itemError( url );
2415
+
2416
+ }
2417
+
2418
+ }, onProgress, onError );
2419
+
2420
+ }
2421
+
2422
+ parse( buffer ) {
2423
+
2424
+ return this.ifcManager.parse( buffer );
2425
+
2426
+ }
2427
+
2428
+ }
2429
+
2430
+ export { IFCLoader };
2431
+ //# sourceMappingURL=IFCLoader.js.map