@gnsx/three 0.184.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 (1182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/build/three.cjs +79695 -0
  4. package/build/three.core.js +59732 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +19552 -0
  7. package/build/three.module.min.js +6 -0
  8. package/build/three.tsl.js +654 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +83969 -0
  11. package/build/three.webgpu.min.js +6 -0
  12. package/build/three.webgpu.nodes.js +83702 -0
  13. package/build/three.webgpu.nodes.min.js +6 -0
  14. package/examples/fonts/LICENSE +13 -0
  15. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  16. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  17. package/examples/fonts/README.md +11 -0
  18. package/examples/fonts/droid/NOTICE +190 -0
  19. package/examples/fonts/droid/README.txt +18 -0
  20. package/examples/fonts/droid/droid_sans_bold.typeface.json +1 -0
  21. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +1 -0
  22. package/examples/fonts/droid/droid_sans_regular.typeface.json +1 -0
  23. package/examples/fonts/droid/droid_serif_bold.typeface.json +1 -0
  24. package/examples/fonts/droid/droid_serif_regular.typeface.json +1 -0
  25. package/examples/fonts/gentilis_bold.typeface.json +1 -0
  26. package/examples/fonts/gentilis_regular.typeface.json +1 -0
  27. package/examples/fonts/helvetiker_bold.typeface.json +1 -0
  28. package/examples/fonts/helvetiker_regular.typeface.json +1 -0
  29. package/examples/fonts/optimer_bold.typeface.json +1 -0
  30. package/examples/fonts/optimer_regular.typeface.json +1 -0
  31. package/examples/fonts/ttf/README.md +9 -0
  32. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  33. package/examples/jsm/Addons.js +293 -0
  34. package/examples/jsm/animation/AnimationClipCreator.js +168 -0
  35. package/examples/jsm/animation/CCDIKSolver.js +595 -0
  36. package/examples/jsm/capabilities/WebGL.js +113 -0
  37. package/examples/jsm/capabilities/WebGPU.js +59 -0
  38. package/examples/jsm/controls/ArcballControls.js +3539 -0
  39. package/examples/jsm/controls/DragControls.js +452 -0
  40. package/examples/jsm/controls/FirstPersonControls.js +451 -0
  41. package/examples/jsm/controls/FlyControls.js +384 -0
  42. package/examples/jsm/controls/MapControls.js +116 -0
  43. package/examples/jsm/controls/OrbitControls.js +1963 -0
  44. package/examples/jsm/controls/PointerLockControls.js +264 -0
  45. package/examples/jsm/controls/TrackballControls.js +1001 -0
  46. package/examples/jsm/controls/TransformControls.js +1950 -0
  47. package/examples/jsm/csm/CSM.js +598 -0
  48. package/examples/jsm/csm/CSMFrustum.js +209 -0
  49. package/examples/jsm/csm/CSMHelper.js +243 -0
  50. package/examples/jsm/csm/CSMShader.js +307 -0
  51. package/examples/jsm/csm/CSMShadowNode.js +603 -0
  52. package/examples/jsm/curves/CurveExtras.js +694 -0
  53. package/examples/jsm/curves/NURBSCurve.js +155 -0
  54. package/examples/jsm/curves/NURBSSurface.js +98 -0
  55. package/examples/jsm/curves/NURBSUtils.js +532 -0
  56. package/examples/jsm/curves/NURBSVolume.js +82 -0
  57. package/examples/jsm/effects/AnaglyphEffect.js +274 -0
  58. package/examples/jsm/effects/AsciiEffect.js +310 -0
  59. package/examples/jsm/effects/OutlineEffect.js +489 -0
  60. package/examples/jsm/effects/ParallaxBarrierEffect.js +155 -0
  61. package/examples/jsm/effects/StereoEffect.js +91 -0
  62. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  63. package/examples/jsm/environments/DebugEnvironment.js +102 -0
  64. package/examples/jsm/environments/RoomEnvironment.js +185 -0
  65. package/examples/jsm/exporters/DRACOExporter.js +311 -0
  66. package/examples/jsm/exporters/EXRExporter.js +618 -0
  67. package/examples/jsm/exporters/GLTFExporter.js +3738 -0
  68. package/examples/jsm/exporters/KTX2Exporter.js +347 -0
  69. package/examples/jsm/exporters/OBJExporter.js +308 -0
  70. package/examples/jsm/exporters/PLYExporter.js +562 -0
  71. package/examples/jsm/exporters/STLExporter.js +221 -0
  72. package/examples/jsm/exporters/USDZExporter.js +1254 -0
  73. package/examples/jsm/geometries/BoxLineGeometry.js +92 -0
  74. package/examples/jsm/geometries/ConvexGeometry.js +72 -0
  75. package/examples/jsm/geometries/DecalGeometry.js +420 -0
  76. package/examples/jsm/geometries/ParametricFunctions.js +100 -0
  77. package/examples/jsm/geometries/ParametricGeometry.js +172 -0
  78. package/examples/jsm/geometries/RoundedBoxGeometry.js +216 -0
  79. package/examples/jsm/geometries/TeapotGeometry.js +689 -0
  80. package/examples/jsm/geometries/TextGeometry.js +102 -0
  81. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  82. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  83. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  84. package/examples/jsm/helpers/LightProbeHelper.js +165 -0
  85. package/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
  86. package/examples/jsm/helpers/OctreeHelper.js +109 -0
  87. package/examples/jsm/helpers/PositionalAudioHelper.js +169 -0
  88. package/examples/jsm/helpers/RapierHelper.js +59 -0
  89. package/examples/jsm/helpers/RectAreaLightHelper.js +118 -0
  90. package/examples/jsm/helpers/TextureHelper.js +265 -0
  91. package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
  92. package/examples/jsm/helpers/VertexNormalsHelper.js +155 -0
  93. package/examples/jsm/helpers/VertexTangentsHelper.js +133 -0
  94. package/examples/jsm/helpers/ViewHelper.js +519 -0
  95. package/examples/jsm/inspector/Extension.js +13 -0
  96. package/examples/jsm/inspector/Inspector.js +542 -0
  97. package/examples/jsm/inspector/RendererInspector.js +425 -0
  98. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  99. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  100. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  101. package/examples/jsm/inspector/tabs/Console.js +238 -0
  102. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  103. package/examples/jsm/inspector/tabs/Parameters.js +380 -0
  104. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  105. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  106. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  107. package/examples/jsm/inspector/tabs/Viewer.js +268 -0
  108. package/examples/jsm/inspector/ui/Graph.js +95 -0
  109. package/examples/jsm/inspector/ui/Item.js +170 -0
  110. package/examples/jsm/inspector/ui/List.js +75 -0
  111. package/examples/jsm/inspector/ui/Profiler.js +2072 -0
  112. package/examples/jsm/inspector/ui/Style.js +1667 -0
  113. package/examples/jsm/inspector/ui/Tab.js +265 -0
  114. package/examples/jsm/inspector/ui/Values.js +476 -0
  115. package/examples/jsm/inspector/ui/utils.js +69 -0
  116. package/examples/jsm/interaction/InteractionManager.js +226 -0
  117. package/examples/jsm/interactive/HTMLMesh.js +601 -0
  118. package/examples/jsm/interactive/InteractiveGroup.js +224 -0
  119. package/examples/jsm/interactive/SelectionBox.js +324 -0
  120. package/examples/jsm/interactive/SelectionHelper.js +150 -0
  121. package/examples/jsm/libs/ammo.wasm.js +822 -0
  122. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  123. package/examples/jsm/libs/basis/README.md +46 -0
  124. package/examples/jsm/libs/basis/basis_transcoder.js +19 -0
  125. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  126. package/examples/jsm/libs/chevrotain.module.min.js +141 -0
  127. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  128. package/examples/jsm/libs/draco/README.md +32 -0
  129. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  130. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  131. package/examples/jsm/libs/draco/draco_encoder.js +33 -0
  132. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  133. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  134. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  135. package/examples/jsm/libs/draco/gltf/draco_encoder.js +33 -0
  136. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  137. package/examples/jsm/libs/ecsy.module.js +1792 -0
  138. package/examples/jsm/libs/fflate.module.js +2672 -0
  139. package/examples/jsm/libs/ktx-parse.module.js +1 -0
  140. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  141. package/examples/jsm/libs/lottie_canvas.module.js +14849 -0
  142. package/examples/jsm/libs/meshopt_decoder.module.js +196 -0
  143. package/examples/jsm/libs/mikktspace.module.js +128 -0
  144. package/examples/jsm/libs/motion-controllers.module.js +397 -0
  145. package/examples/jsm/libs/opentype.module.js +14506 -0
  146. package/examples/jsm/libs/potpack.module.js +125 -0
  147. package/examples/jsm/libs/rhino3dm/rhino3dm.js +21 -0
  148. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +16 -0
  149. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  150. package/examples/jsm/libs/stats.module.js +167 -0
  151. package/examples/jsm/libs/surfaceNet.js +201 -0
  152. package/examples/jsm/libs/tween.module.js +876 -0
  153. package/examples/jsm/libs/utif.module.js +1665 -0
  154. package/examples/jsm/libs/zstddec.module.js +1 -0
  155. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  156. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  157. package/examples/jsm/lighting/TiledLighting.js +42 -0
  158. package/examples/jsm/lights/LightProbeGenerator.js +337 -0
  159. package/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
  160. package/examples/jsm/lights/RectAreaLightUniformsLib.js +40 -0
  161. package/examples/jsm/lines/Line2.js +56 -0
  162. package/examples/jsm/lines/LineGeometry.js +157 -0
  163. package/examples/jsm/lines/LineMaterial.js +703 -0
  164. package/examples/jsm/lines/LineSegments2.js +426 -0
  165. package/examples/jsm/lines/LineSegmentsGeometry.js +298 -0
  166. package/examples/jsm/lines/Wireframe.js +108 -0
  167. package/examples/jsm/lines/WireframeGeometry2.js +49 -0
  168. package/examples/jsm/lines/webgpu/Line2.js +46 -0
  169. package/examples/jsm/lines/webgpu/LineSegments2.js +411 -0
  170. package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
  171. package/examples/jsm/loaders/3DMLoader.js +1836 -0
  172. package/examples/jsm/loaders/3MFLoader.js +1621 -0
  173. package/examples/jsm/loaders/AMFLoader.js +541 -0
  174. package/examples/jsm/loaders/BVHLoader.js +484 -0
  175. package/examples/jsm/loaders/ColladaLoader.js +153 -0
  176. package/examples/jsm/loaders/DDSLoader.js +385 -0
  177. package/examples/jsm/loaders/DRACOLoader.js +739 -0
  178. package/examples/jsm/loaders/EXRLoader.js +3423 -0
  179. package/examples/jsm/loaders/FBXLoader.js +4580 -0
  180. package/examples/jsm/loaders/FontLoader.js +260 -0
  181. package/examples/jsm/loaders/GCodeLoader.js +318 -0
  182. package/examples/jsm/loaders/GLTFLoader.js +4860 -0
  183. package/examples/jsm/loaders/HDRCubeTextureLoader.js +164 -0
  184. package/examples/jsm/loaders/HDRLoader.js +485 -0
  185. package/examples/jsm/loaders/IESLoader.js +379 -0
  186. package/examples/jsm/loaders/KMZLoader.js +163 -0
  187. package/examples/jsm/loaders/KTX2Loader.js +1257 -0
  188. package/examples/jsm/loaders/KTXLoader.js +197 -0
  189. package/examples/jsm/loaders/LDrawLoader.js +2510 -0
  190. package/examples/jsm/loaders/LUT3dlLoader.js +205 -0
  191. package/examples/jsm/loaders/LUTCubeLoader.js +190 -0
  192. package/examples/jsm/loaders/LUTImageLoader.js +190 -0
  193. package/examples/jsm/loaders/LWOLoader.js +1047 -0
  194. package/examples/jsm/loaders/LottieLoader.js +130 -0
  195. package/examples/jsm/loaders/MD2Loader.js +435 -0
  196. package/examples/jsm/loaders/MDDLoader.js +147 -0
  197. package/examples/jsm/loaders/MTLLoader.js +593 -0
  198. package/examples/jsm/loaders/MaterialXLoader.js +1104 -0
  199. package/examples/jsm/loaders/NRRDLoader.js +718 -0
  200. package/examples/jsm/loaders/OBJLoader.js +955 -0
  201. package/examples/jsm/loaders/PCDLoader.js +620 -0
  202. package/examples/jsm/loaders/PDBLoader.js +272 -0
  203. package/examples/jsm/loaders/PLYLoader.js +805 -0
  204. package/examples/jsm/loaders/PVRLoader.js +270 -0
  205. package/examples/jsm/loaders/RGBELoader.js +18 -0
  206. package/examples/jsm/loaders/STLLoader.js +421 -0
  207. package/examples/jsm/loaders/SVGLoader.js +3267 -0
  208. package/examples/jsm/loaders/TDSLoader.js +1142 -0
  209. package/examples/jsm/loaders/TGALoader.js +538 -0
  210. package/examples/jsm/loaders/TIFFLoader.js +59 -0
  211. package/examples/jsm/loaders/TTFLoader.js +261 -0
  212. package/examples/jsm/loaders/USDLoader.js +279 -0
  213. package/examples/jsm/loaders/USDZLoader.js +16 -0
  214. package/examples/jsm/loaders/UltraHDRLoader.js +755 -0
  215. package/examples/jsm/loaders/VOXLoader.js +919 -0
  216. package/examples/jsm/loaders/VRMLLoader.js +3646 -0
  217. package/examples/jsm/loaders/VTKLoader.js +1293 -0
  218. package/examples/jsm/loaders/XYZLoader.js +143 -0
  219. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  220. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  221. package/examples/jsm/loaders/lwo/IFFParser.js +1217 -0
  222. package/examples/jsm/loaders/lwo/LWO2Parser.js +414 -0
  223. package/examples/jsm/loaders/lwo/LWO3Parser.js +373 -0
  224. package/examples/jsm/loaders/usd/USDAParser.js +828 -0
  225. package/examples/jsm/loaders/usd/USDCParser.js +1878 -0
  226. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  227. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
  228. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
  229. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  230. package/examples/jsm/math/Capsule.js +159 -0
  231. package/examples/jsm/math/ColorConverter.js +58 -0
  232. package/examples/jsm/math/ColorSpaces.js +147 -0
  233. package/examples/jsm/math/ConvexHull.js +1695 -0
  234. package/examples/jsm/math/ImprovedNoise.js +88 -0
  235. package/examples/jsm/math/Lut.js +317 -0
  236. package/examples/jsm/math/MeshSurfaceSampler.js +315 -0
  237. package/examples/jsm/math/OBB.js +535 -0
  238. package/examples/jsm/math/Octree.js +822 -0
  239. package/examples/jsm/math/SimplexNoise.js +470 -0
  240. package/examples/jsm/misc/ConvexObjectBreaker.js +539 -0
  241. package/examples/jsm/misc/GPUComputationRenderer.js +508 -0
  242. package/examples/jsm/misc/Gyroscope.js +78 -0
  243. package/examples/jsm/misc/MD2Character.js +391 -0
  244. package/examples/jsm/misc/MD2CharacterComplex.js +740 -0
  245. package/examples/jsm/misc/MorphAnimMesh.js +119 -0
  246. package/examples/jsm/misc/MorphBlendMesh.js +425 -0
  247. package/examples/jsm/misc/ProgressiveLightMap.js +370 -0
  248. package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
  249. package/examples/jsm/misc/RollerCoaster.js +661 -0
  250. package/examples/jsm/misc/TubePainter.js +599 -0
  251. package/examples/jsm/misc/Volume.js +520 -0
  252. package/examples/jsm/misc/VolumeSlice.js +275 -0
  253. package/examples/jsm/modifiers/CurveModifier.js +374 -0
  254. package/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
  255. package/examples/jsm/modifiers/EdgeSplitModifier.js +299 -0
  256. package/examples/jsm/modifiers/SimplifyModifier.js +632 -0
  257. package/examples/jsm/modifiers/TessellateModifier.js +340 -0
  258. package/examples/jsm/objects/GroundedSkybox.js +69 -0
  259. package/examples/jsm/objects/Lensflare.js +489 -0
  260. package/examples/jsm/objects/LensflareMesh.js +376 -0
  261. package/examples/jsm/objects/MarchingCubes.js +1261 -0
  262. package/examples/jsm/objects/Reflector.js +386 -0
  263. package/examples/jsm/objects/ReflectorForSSRPass.js +393 -0
  264. package/examples/jsm/objects/Refractor.js +389 -0
  265. package/examples/jsm/objects/ShadowMesh.js +130 -0
  266. package/examples/jsm/objects/Sky.js +321 -0
  267. package/examples/jsm/objects/SkyMesh.js +377 -0
  268. package/examples/jsm/objects/Water.js +374 -0
  269. package/examples/jsm/objects/Water2.js +403 -0
  270. package/examples/jsm/objects/Water2Mesh.js +199 -0
  271. package/examples/jsm/objects/WaterMesh.js +194 -0
  272. package/examples/jsm/offscreen/jank.js +45 -0
  273. package/examples/jsm/offscreen/offscreen.js +8 -0
  274. package/examples/jsm/offscreen/scene.js +86 -0
  275. package/examples/jsm/physics/AmmoPhysics.js +359 -0
  276. package/examples/jsm/physics/JoltPhysics.js +334 -0
  277. package/examples/jsm/physics/RapierPhysics.js +436 -0
  278. package/examples/jsm/postprocessing/AfterimagePass.js +185 -0
  279. package/examples/jsm/postprocessing/BloomPass.js +274 -0
  280. package/examples/jsm/postprocessing/BokehPass.js +218 -0
  281. package/examples/jsm/postprocessing/ClearPass.js +97 -0
  282. package/examples/jsm/postprocessing/CubeTexturePass.js +146 -0
  283. package/examples/jsm/postprocessing/DotScreenPass.js +114 -0
  284. package/examples/jsm/postprocessing/EffectComposer.js +365 -0
  285. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  286. package/examples/jsm/postprocessing/FilmPass.js +113 -0
  287. package/examples/jsm/postprocessing/GTAOPass.js +727 -0
  288. package/examples/jsm/postprocessing/GlitchPass.js +177 -0
  289. package/examples/jsm/postprocessing/HalftonePass.js +134 -0
  290. package/examples/jsm/postprocessing/LUTPass.js +138 -0
  291. package/examples/jsm/postprocessing/MaskPass.js +195 -0
  292. package/examples/jsm/postprocessing/OutlinePass.js +776 -0
  293. package/examples/jsm/postprocessing/OutputPass.js +148 -0
  294. package/examples/jsm/postprocessing/Pass.js +191 -0
  295. package/examples/jsm/postprocessing/RenderPass.js +193 -0
  296. package/examples/jsm/postprocessing/RenderPixelatedPass.js +314 -0
  297. package/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
  298. package/examples/jsm/postprocessing/SAOPass.js +407 -0
  299. package/examples/jsm/postprocessing/SMAAPass.js +230 -0
  300. package/examples/jsm/postprocessing/SSAARenderPass.js +313 -0
  301. package/examples/jsm/postprocessing/SSAOPass.js +527 -0
  302. package/examples/jsm/postprocessing/SSRPass.js +856 -0
  303. package/examples/jsm/postprocessing/SavePass.js +132 -0
  304. package/examples/jsm/postprocessing/ShaderPass.js +135 -0
  305. package/examples/jsm/postprocessing/TAARenderPass.js +243 -0
  306. package/examples/jsm/postprocessing/TexturePass.js +131 -0
  307. package/examples/jsm/postprocessing/UnrealBloomPass.js +524 -0
  308. package/examples/jsm/renderers/CSS2DRenderer.js +328 -0
  309. package/examples/jsm/renderers/CSS3DRenderer.js +454 -0
  310. package/examples/jsm/renderers/Projector.js +1154 -0
  311. package/examples/jsm/renderers/SVGRenderer.js +799 -0
  312. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +96 -0
  313. package/examples/jsm/shaders/AfterimageShader.js +63 -0
  314. package/examples/jsm/shaders/BasicShader.js +36 -0
  315. package/examples/jsm/shaders/BleachBypassShader.js +68 -0
  316. package/examples/jsm/shaders/BlendShader.js +56 -0
  317. package/examples/jsm/shaders/BokehShader.js +151 -0
  318. package/examples/jsm/shaders/BokehShader2.js +404 -0
  319. package/examples/jsm/shaders/BrightnessContrastShader.js +62 -0
  320. package/examples/jsm/shaders/ColorCorrectionShader.js +59 -0
  321. package/examples/jsm/shaders/ColorifyShader.js +57 -0
  322. package/examples/jsm/shaders/ConvolutionShader.js +74 -0
  323. package/examples/jsm/shaders/CopyShader.js +52 -0
  324. package/examples/jsm/shaders/DOFMipMapShader.js +63 -0
  325. package/examples/jsm/shaders/DepthLimitedBlurShader.js +180 -0
  326. package/examples/jsm/shaders/DigitalGlitch.js +104 -0
  327. package/examples/jsm/shaders/DotScreenShader.js +75 -0
  328. package/examples/jsm/shaders/ExposureShader.js +51 -0
  329. package/examples/jsm/shaders/FXAAShader.js +298 -0
  330. package/examples/jsm/shaders/FilmShader.js +72 -0
  331. package/examples/jsm/shaders/FocusShader.js +94 -0
  332. package/examples/jsm/shaders/FreiChenShader.js +103 -0
  333. package/examples/jsm/shaders/GTAOShader.js +434 -0
  334. package/examples/jsm/shaders/GammaCorrectionShader.js +52 -0
  335. package/examples/jsm/shaders/HalftoneShader.js +332 -0
  336. package/examples/jsm/shaders/HorizontalBlurShader.js +68 -0
  337. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +70 -0
  338. package/examples/jsm/shaders/HueSaturationShader.js +74 -0
  339. package/examples/jsm/shaders/KaleidoShader.js +65 -0
  340. package/examples/jsm/shaders/LuminosityHighPassShader.js +68 -0
  341. package/examples/jsm/shaders/LuminosityShader.js +54 -0
  342. package/examples/jsm/shaders/MirrorShader.js +62 -0
  343. package/examples/jsm/shaders/NormalMapShader.js +60 -0
  344. package/examples/jsm/shaders/OutputShader.js +103 -0
  345. package/examples/jsm/shaders/PoissonDenoiseShader.js +239 -0
  346. package/examples/jsm/shaders/RGBShiftShader.js +61 -0
  347. package/examples/jsm/shaders/SAOShader.js +201 -0
  348. package/examples/jsm/shaders/SMAAShader.js +489 -0
  349. package/examples/jsm/shaders/SSAOShader.js +331 -0
  350. package/examples/jsm/shaders/SSRShader.js +396 -0
  351. package/examples/jsm/shaders/SepiaShader.js +57 -0
  352. package/examples/jsm/shaders/SobelOperatorShader.js +98 -0
  353. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +95 -0
  354. package/examples/jsm/shaders/TechnicolorShader.js +51 -0
  355. package/examples/jsm/shaders/ToonShader.js +349 -0
  356. package/examples/jsm/shaders/TriangleBlurShader.js +79 -0
  357. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +60 -0
  358. package/examples/jsm/shaders/VelocityShader.js +137 -0
  359. package/examples/jsm/shaders/VerticalBlurShader.js +66 -0
  360. package/examples/jsm/shaders/VerticalTiltShiftShader.js +70 -0
  361. package/examples/jsm/shaders/VignetteShader.js +56 -0
  362. package/examples/jsm/shaders/VolumeShader.js +298 -0
  363. package/examples/jsm/shaders/WaterRefractionShader.js +106 -0
  364. package/examples/jsm/textures/FlakesTexture.js +54 -0
  365. package/examples/jsm/transpiler/AST.js +675 -0
  366. package/examples/jsm/transpiler/GLSLDecoder.js +1228 -0
  367. package/examples/jsm/transpiler/Linker.js +327 -0
  368. package/examples/jsm/transpiler/ShaderToyDecoder.js +51 -0
  369. package/examples/jsm/transpiler/TSLEncoder.js +983 -0
  370. package/examples/jsm/transpiler/Transpiler.js +67 -0
  371. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  372. package/examples/jsm/transpiler/WGSLEncoder.js +839 -0
  373. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  374. package/examples/jsm/tsl/display/AfterImageNode.js +254 -0
  375. package/examples/jsm/tsl/display/AnaglyphPassNode.js +549 -0
  376. package/examples/jsm/tsl/display/AnamorphicNode.js +293 -0
  377. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  378. package/examples/jsm/tsl/display/BleachBypass.js +33 -0
  379. package/examples/jsm/tsl/display/BloomNode.js +534 -0
  380. package/examples/jsm/tsl/display/CRT.js +150 -0
  381. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +174 -0
  382. package/examples/jsm/tsl/display/DenoiseNode.js +334 -0
  383. package/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
  384. package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
  385. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  386. package/examples/jsm/tsl/display/FXAANode.js +365 -0
  387. package/examples/jsm/tsl/display/FilmNode.js +101 -0
  388. package/examples/jsm/tsl/display/GTAONode.js +572 -0
  389. package/examples/jsm/tsl/display/GaussianBlurNode.js +399 -0
  390. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  391. package/examples/jsm/tsl/display/LensflareNode.js +279 -0
  392. package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
  393. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  394. package/examples/jsm/tsl/display/OutlineNode.js +812 -0
  395. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
  396. package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
  397. package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
  398. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  399. package/examples/jsm/tsl/display/SMAANode.js +768 -0
  400. package/examples/jsm/tsl/display/SSAAPassNode.js +358 -0
  401. package/examples/jsm/tsl/display/SSGINode.js +638 -0
  402. package/examples/jsm/tsl/display/SSRNode.js +656 -0
  403. package/examples/jsm/tsl/display/SSSNode.js +490 -0
  404. package/examples/jsm/tsl/display/Sepia.js +24 -0
  405. package/examples/jsm/tsl/display/Shape.js +29 -0
  406. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  407. package/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
  408. package/examples/jsm/tsl/display/StereoCompositePassNode.js +192 -0
  409. package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
  410. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  411. package/examples/jsm/tsl/display/TRAANode.js +767 -0
  412. package/examples/jsm/tsl/display/TransitionNode.js +141 -0
  413. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  414. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  415. package/examples/jsm/tsl/display/hashBlur.js +54 -0
  416. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  417. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  418. package/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
  419. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  420. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  421. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  422. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  423. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  424. package/examples/jsm/tsl/math/Bayer.js +84 -0
  425. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  426. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  427. package/examples/jsm/tsl/utils/Raymarching.js +70 -0
  428. package/examples/jsm/utils/BufferGeometryUtils.js +1434 -0
  429. package/examples/jsm/utils/CameraUtils.js +82 -0
  430. package/examples/jsm/utils/ColorUtils.js +76 -0
  431. package/examples/jsm/utils/GeometryCompressionUtils.js +547 -0
  432. package/examples/jsm/utils/GeometryUtils.js +226 -0
  433. package/examples/jsm/utils/LDrawUtils.js +211 -0
  434. package/examples/jsm/utils/SceneOptimizer.js +458 -0
  435. package/examples/jsm/utils/SceneUtils.js +363 -0
  436. package/examples/jsm/utils/ShadowMapViewer.js +244 -0
  437. package/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
  438. package/examples/jsm/utils/SkeletonUtils.js +496 -0
  439. package/examples/jsm/utils/SortUtils.js +175 -0
  440. package/examples/jsm/utils/UVsDebug.js +173 -0
  441. package/examples/jsm/utils/WebGLTextureUtils.js +115 -0
  442. package/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
  443. package/examples/jsm/utils/WorkerPool.js +167 -0
  444. package/examples/jsm/webxr/ARButton.js +251 -0
  445. package/examples/jsm/webxr/OculusHandModel.js +194 -0
  446. package/examples/jsm/webxr/OculusHandPointerModel.js +539 -0
  447. package/examples/jsm/webxr/Text2D.js +52 -0
  448. package/examples/jsm/webxr/VRButton.js +264 -0
  449. package/examples/jsm/webxr/XRButton.js +246 -0
  450. package/examples/jsm/webxr/XRControllerModelFactory.js +403 -0
  451. package/examples/jsm/webxr/XREstimatedLight.js +254 -0
  452. package/examples/jsm/webxr/XRHandMeshModel.js +177 -0
  453. package/examples/jsm/webxr/XRHandModelFactory.js +198 -0
  454. package/examples/jsm/webxr/XRHandPrimitiveModel.js +147 -0
  455. package/examples/jsm/webxr/XRPlanes.js +118 -0
  456. package/package.json +123 -0
  457. package/src/Three.Core.js +187 -0
  458. package/src/Three.Legacy.js +0 -0
  459. package/src/Three.TSL.js +647 -0
  460. package/src/Three.WebGPU.Nodes.js +31 -0
  461. package/src/Three.WebGPU.js +37 -0
  462. package/src/Three.js +10 -0
  463. package/src/animation/AnimationAction.js +942 -0
  464. package/src/animation/AnimationClip.js +628 -0
  465. package/src/animation/AnimationMixer.js +860 -0
  466. package/src/animation/AnimationObjectGroup.js +411 -0
  467. package/src/animation/AnimationUtils.js +495 -0
  468. package/src/animation/KeyframeTrack.js +636 -0
  469. package/src/animation/PropertyBinding.js +794 -0
  470. package/src/animation/PropertyMixer.js +385 -0
  471. package/src/animation/tracks/BooleanKeyframeTrack.js +55 -0
  472. package/src/animation/tracks/ColorKeyframeTrack.js +36 -0
  473. package/src/animation/tracks/NumberKeyframeTrack.js +36 -0
  474. package/src/animation/tracks/QuaternionKeyframeTrack.js +51 -0
  475. package/src/animation/tracks/StringKeyframeTrack.js +55 -0
  476. package/src/animation/tracks/VectorKeyframeTrack.js +36 -0
  477. package/src/audio/Audio.js +778 -0
  478. package/src/audio/AudioAnalyser.js +97 -0
  479. package/src/audio/AudioContext.js +40 -0
  480. package/src/audio/AudioListener.js +218 -0
  481. package/src/audio/PositionalAudio.js +253 -0
  482. package/src/cameras/ArrayCamera.js +54 -0
  483. package/src/cameras/Camera.js +160 -0
  484. package/src/cameras/CubeCamera.js +259 -0
  485. package/src/cameras/OrthographicCamera.js +245 -0
  486. package/src/cameras/PerspectiveCamera.js +407 -0
  487. package/src/cameras/StereoCamera.js +146 -0
  488. package/src/constants.js +1760 -0
  489. package/src/core/BufferAttribute.js +1056 -0
  490. package/src/core/BufferGeometry.js +1458 -0
  491. package/src/core/Clock.js +135 -0
  492. package/src/core/EventDispatcher.js +131 -0
  493. package/src/core/GLBufferAttribute.js +171 -0
  494. package/src/core/InstancedBufferAttribute.js +68 -0
  495. package/src/core/InstancedBufferGeometry.js +60 -0
  496. package/src/core/InstancedInterleavedBuffer.js +74 -0
  497. package/src/core/InterleavedBuffer.js +291 -0
  498. package/src/core/InterleavedBufferAttribute.js +549 -0
  499. package/src/core/Layers.js +121 -0
  500. package/src/core/Object3D.js +1667 -0
  501. package/src/core/Raycaster.js +262 -0
  502. package/src/core/RenderTarget.js +392 -0
  503. package/src/core/RenderTarget3D.js +48 -0
  504. package/src/core/Timer.js +184 -0
  505. package/src/core/Uniform.js +46 -0
  506. package/src/core/UniformsGroup.js +180 -0
  507. package/src/extras/Controls.js +120 -0
  508. package/src/extras/DataUtils.js +217 -0
  509. package/src/extras/Earcut.js +28 -0
  510. package/src/extras/ImageUtils.js +137 -0
  511. package/src/extras/PMREMGenerator.js +1167 -0
  512. package/src/extras/ShapeUtils.js +114 -0
  513. package/src/extras/TextureUtils.js +297 -0
  514. package/src/extras/core/Curve.js +517 -0
  515. package/src/extras/core/CurvePath.js +296 -0
  516. package/src/extras/core/Interpolations.js +111 -0
  517. package/src/extras/core/Path.js +329 -0
  518. package/src/extras/core/Shape.js +165 -0
  519. package/src/extras/core/ShapePath.js +367 -0
  520. package/src/extras/curves/ArcCurve.js +39 -0
  521. package/src/extras/curves/CatmullRomCurve3.js +327 -0
  522. package/src/extras/curves/CubicBezierCurve.js +145 -0
  523. package/src/extras/curves/CubicBezierCurve3.js +129 -0
  524. package/src/extras/curves/Curves.js +10 -0
  525. package/src/extras/curves/EllipseCurve.js +258 -0
  526. package/src/extras/curves/LineCurve.js +128 -0
  527. package/src/extras/curves/LineCurve3.js +128 -0
  528. package/src/extras/curves/QuadraticBezierCurve.js +133 -0
  529. package/src/extras/curves/QuadraticBezierCurve3.js +118 -0
  530. package/src/extras/curves/SplineCurve.js +145 -0
  531. package/src/extras/lib/earcut.js +685 -0
  532. package/src/geometries/BoxGeometry.js +219 -0
  533. package/src/geometries/CapsuleGeometry.js +218 -0
  534. package/src/geometries/CircleGeometry.js +142 -0
  535. package/src/geometries/ConeGeometry.js +70 -0
  536. package/src/geometries/CylinderGeometry.js +333 -0
  537. package/src/geometries/DodecahedronGeometry.js +99 -0
  538. package/src/geometries/EdgesGeometry.js +180 -0
  539. package/src/geometries/ExtrudeGeometry.js +910 -0
  540. package/src/geometries/Geometries.js +21 -0
  541. package/src/geometries/IcosahedronGeometry.js +75 -0
  542. package/src/geometries/LatheGeometry.js +230 -0
  543. package/src/geometries/OctahedronGeometry.js +70 -0
  544. package/src/geometries/PlaneGeometry.js +133 -0
  545. package/src/geometries/PolyhedronGeometry.js +348 -0
  546. package/src/geometries/RingGeometry.js +165 -0
  547. package/src/geometries/ShapeGeometry.js +233 -0
  548. package/src/geometries/SphereGeometry.js +175 -0
  549. package/src/geometries/TetrahedronGeometry.js +67 -0
  550. package/src/geometries/TorusGeometry.js +161 -0
  551. package/src/geometries/TorusKnotGeometry.js +206 -0
  552. package/src/geometries/TubeGeometry.js +253 -0
  553. package/src/geometries/WireframeGeometry.js +179 -0
  554. package/src/helpers/ArrowHelper.js +171 -0
  555. package/src/helpers/AxesHelper.js +96 -0
  556. package/src/helpers/Box3Helper.js +83 -0
  557. package/src/helpers/BoxHelper.js +149 -0
  558. package/src/helpers/CameraHelper.js +345 -0
  559. package/src/helpers/DirectionalLightHelper.js +148 -0
  560. package/src/helpers/GridHelper.js +82 -0
  561. package/src/helpers/HemisphereLightHelper.js +130 -0
  562. package/src/helpers/PlaneHelper.js +96 -0
  563. package/src/helpers/PointLightHelper.js +111 -0
  564. package/src/helpers/PolarGridHelper.js +126 -0
  565. package/src/helpers/SkeletonHelper.js +194 -0
  566. package/src/helpers/SpotLightHelper.js +154 -0
  567. package/src/lights/AmbientLight.js +42 -0
  568. package/src/lights/DirectionalLight.js +113 -0
  569. package/src/lights/DirectionalLightShadow.js +31 -0
  570. package/src/lights/HemisphereLight.js +76 -0
  571. package/src/lights/Light.js +85 -0
  572. package/src/lights/LightProbe.js +75 -0
  573. package/src/lights/LightShadow.js +347 -0
  574. package/src/lights/PointLight.js +131 -0
  575. package/src/lights/PointLightShadow.js +31 -0
  576. package/src/lights/RectAreaLight.js +115 -0
  577. package/src/lights/SpotLight.js +194 -0
  578. package/src/lights/SpotLightShadow.js +80 -0
  579. package/src/lights/webgpu/IESSpotLight.js +47 -0
  580. package/src/lights/webgpu/ProjectorLight.js +46 -0
  581. package/src/loaders/AnimationLoader.js +98 -0
  582. package/src/loaders/AudioLoader.js +108 -0
  583. package/src/loaders/BufferGeometryLoader.js +242 -0
  584. package/src/loaders/Cache.js +115 -0
  585. package/src/loaders/CompressedTextureLoader.js +167 -0
  586. package/src/loaders/CubeTextureLoader.js +103 -0
  587. package/src/loaders/DataTextureLoader.js +174 -0
  588. package/src/loaders/FileLoader.js +367 -0
  589. package/src/loaders/ImageBitmapLoader.js +223 -0
  590. package/src/loaders/ImageLoader.js +168 -0
  591. package/src/loaders/Loader.js +222 -0
  592. package/src/loaders/LoaderUtils.js +59 -0
  593. package/src/loaders/LoadingManager.js +329 -0
  594. package/src/loaders/MaterialLoader.js +439 -0
  595. package/src/loaders/ObjectLoader.js +1304 -0
  596. package/src/loaders/TextureLoader.js +74 -0
  597. package/src/loaders/nodes/NodeLoader.js +194 -0
  598. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  599. package/src/loaders/nodes/NodeObjectLoader.js +169 -0
  600. package/src/materials/LineBasicMaterial.js +122 -0
  601. package/src/materials/LineDashedMaterial.js +86 -0
  602. package/src/materials/Material.js +1017 -0
  603. package/src/materials/Materials.js +39 -0
  604. package/src/materials/MeshBasicMaterial.js +250 -0
  605. package/src/materials/MeshDepthMaterial.js +148 -0
  606. package/src/materials/MeshDistanceMaterial.js +119 -0
  607. package/src/materials/MeshLambertMaterial.js +402 -0
  608. package/src/materials/MeshMatcapMaterial.js +245 -0
  609. package/src/materials/MeshNormalMaterial.js +175 -0
  610. package/src/materials/MeshPhongMaterial.js +421 -0
  611. package/src/materials/MeshPhysicalMaterial.js +536 -0
  612. package/src/materials/MeshStandardMaterial.js +425 -0
  613. package/src/materials/MeshToonMaterial.js +321 -0
  614. package/src/materials/PointsMaterial.js +139 -0
  615. package/src/materials/RawShaderMaterial.js +42 -0
  616. package/src/materials/ShaderMaterial.js +413 -0
  617. package/src/materials/ShadowMaterial.js +91 -0
  618. package/src/materials/SpriteMaterial.js +136 -0
  619. package/src/materials/nodes/Line2NodeMaterial.js +569 -0
  620. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  621. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  622. package/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
  623. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  624. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  625. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  626. package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  627. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +521 -0
  628. package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  629. package/src/materials/nodes/MeshStandardNodeMaterial.js +187 -0
  630. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  631. package/src/materials/nodes/NodeMaterial.js +1330 -0
  632. package/src/materials/nodes/NodeMaterials.js +21 -0
  633. package/src/materials/nodes/PointsNodeMaterial.js +211 -0
  634. package/src/materials/nodes/ShadowNodeMaterial.js +76 -0
  635. package/src/materials/nodes/SpriteNodeMaterial.js +186 -0
  636. package/src/materials/nodes/VolumeNodeMaterial.js +81 -0
  637. package/src/materials/nodes/manager/NodeMaterialObserver.js +718 -0
  638. package/src/math/Box2.js +381 -0
  639. package/src/math/Box3.js +805 -0
  640. package/src/math/Color.js +967 -0
  641. package/src/math/ColorManagement.js +215 -0
  642. package/src/math/Cylindrical.js +120 -0
  643. package/src/math/Euler.js +449 -0
  644. package/src/math/Frustum.js +285 -0
  645. package/src/math/FrustumArray.js +258 -0
  646. package/src/math/Interpolant.js +320 -0
  647. package/src/math/Line3.js +337 -0
  648. package/src/math/MathUtils.js +751 -0
  649. package/src/math/Matrix2.js +128 -0
  650. package/src/math/Matrix3.js +617 -0
  651. package/src/math/Matrix4.js +1314 -0
  652. package/src/math/Plane.js +368 -0
  653. package/src/math/Quaternion.js +918 -0
  654. package/src/math/Ray.js +655 -0
  655. package/src/math/Sphere.js +420 -0
  656. package/src/math/Spherical.js +147 -0
  657. package/src/math/SphericalHarmonics3.js +341 -0
  658. package/src/math/Triangle.js +539 -0
  659. package/src/math/Vector2.js +870 -0
  660. package/src/math/Vector3.js +1263 -0
  661. package/src/math/Vector4.js +1067 -0
  662. package/src/math/interpolants/BezierInterpolant.js +108 -0
  663. package/src/math/interpolants/CubicInterpolant.js +159 -0
  664. package/src/math/interpolants/DiscreteInterpolant.js +34 -0
  665. package/src/math/interpolants/LinearInterpolant.js +51 -0
  666. package/src/math/interpolants/QuaternionLinearInterpolant.js +48 -0
  667. package/src/nodes/Nodes.js +166 -0
  668. package/src/nodes/TSL.js +173 -0
  669. package/src/nodes/accessors/AccessorsUtils.js +53 -0
  670. package/src/nodes/accessors/Arrays.js +68 -0
  671. package/src/nodes/accessors/BatchNode.js +163 -0
  672. package/src/nodes/accessors/Bitangent.js +82 -0
  673. package/src/nodes/accessors/BufferAttributeNode.js +432 -0
  674. package/src/nodes/accessors/BufferNode.js +128 -0
  675. package/src/nodes/accessors/BuiltinNode.js +63 -0
  676. package/src/nodes/accessors/Camera.js +403 -0
  677. package/src/nodes/accessors/ClippingNode.js +255 -0
  678. package/src/nodes/accessors/CubeTextureNode.js +215 -0
  679. package/src/nodes/accessors/InstanceNode.js +349 -0
  680. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  681. package/src/nodes/accessors/Lights.js +139 -0
  682. package/src/nodes/accessors/MaterialNode.js +783 -0
  683. package/src/nodes/accessors/MaterialProperties.js +56 -0
  684. package/src/nodes/accessors/MaterialReferenceNode.js +84 -0
  685. package/src/nodes/accessors/ModelNode.js +184 -0
  686. package/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
  687. package/src/nodes/accessors/MorphNode.js +310 -0
  688. package/src/nodes/accessors/Normal.js +243 -0
  689. package/src/nodes/accessors/Object3DNode.js +268 -0
  690. package/src/nodes/accessors/PointUVNode.js +55 -0
  691. package/src/nodes/accessors/Position.js +122 -0
  692. package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  693. package/src/nodes/accessors/ReferenceNode.js +424 -0
  694. package/src/nodes/accessors/ReflectVector.js +36 -0
  695. package/src/nodes/accessors/RendererReferenceNode.js +78 -0
  696. package/src/nodes/accessors/SceneProperties.js +47 -0
  697. package/src/nodes/accessors/SkinningNode.js +328 -0
  698. package/src/nodes/accessors/StorageBufferNode.js +405 -0
  699. package/src/nodes/accessors/StorageTextureNode.js +295 -0
  700. package/src/nodes/accessors/Tangent.js +60 -0
  701. package/src/nodes/accessors/TangentUtils.js +46 -0
  702. package/src/nodes/accessors/Texture3DNode.js +196 -0
  703. package/src/nodes/accessors/TextureBicubic.js +92 -0
  704. package/src/nodes/accessors/TextureNode.js +971 -0
  705. package/src/nodes/accessors/TextureSizeNode.js +77 -0
  706. package/src/nodes/accessors/UV.js +11 -0
  707. package/src/nodes/accessors/UniformArrayNode.js +350 -0
  708. package/src/nodes/accessors/UserDataNode.js +76 -0
  709. package/src/nodes/accessors/VelocityNode.js +224 -0
  710. package/src/nodes/accessors/VertexColorNode.js +109 -0
  711. package/src/nodes/code/CodeNode.js +181 -0
  712. package/src/nodes/code/ExpressionNode.js +68 -0
  713. package/src/nodes/code/FunctionCallNode.js +187 -0
  714. package/src/nodes/code/FunctionNode.js +182 -0
  715. package/src/nodes/core/ArrayNode.js +174 -0
  716. package/src/nodes/core/AssignNode.js +202 -0
  717. package/src/nodes/core/AttributeNode.js +168 -0
  718. package/src/nodes/core/BypassNode.js +93 -0
  719. package/src/nodes/core/ConstNode.js +67 -0
  720. package/src/nodes/core/ContextNode.js +283 -0
  721. package/src/nodes/core/IndexNode.js +165 -0
  722. package/src/nodes/core/InputNode.js +136 -0
  723. package/src/nodes/core/InspectorNode.js +128 -0
  724. package/src/nodes/core/IsolateNode.js +133 -0
  725. package/src/nodes/core/LightingModel.js +77 -0
  726. package/src/nodes/core/MRTNode.js +196 -0
  727. package/src/nodes/core/Node.js +1180 -0
  728. package/src/nodes/core/NodeAttribute.js +53 -0
  729. package/src/nodes/core/NodeBuilder.js +3299 -0
  730. package/src/nodes/core/NodeCache.js +75 -0
  731. package/src/nodes/core/NodeCode.js +46 -0
  732. package/src/nodes/core/NodeError.js +28 -0
  733. package/src/nodes/core/NodeFrame.js +314 -0
  734. package/src/nodes/core/NodeFunction.js +69 -0
  735. package/src/nodes/core/NodeFunctionInput.js +61 -0
  736. package/src/nodes/core/NodeParser.js +23 -0
  737. package/src/nodes/core/NodeUniform.js +91 -0
  738. package/src/nodes/core/NodeUtils.js +408 -0
  739. package/src/nodes/core/NodeVar.js +60 -0
  740. package/src/nodes/core/NodeVarying.js +63 -0
  741. package/src/nodes/core/OutputStructNode.js +105 -0
  742. package/src/nodes/core/ParameterNode.js +94 -0
  743. package/src/nodes/core/PropertyNode.js +367 -0
  744. package/src/nodes/core/StackNode.js +426 -0
  745. package/src/nodes/core/StackTrace.js +139 -0
  746. package/src/nodes/core/StructNode.js +134 -0
  747. package/src/nodes/core/StructType.js +13 -0
  748. package/src/nodes/core/StructTypeNode.js +148 -0
  749. package/src/nodes/core/SubBuildNode.js +89 -0
  750. package/src/nodes/core/TempNode.js +88 -0
  751. package/src/nodes/core/UniformGroupNode.js +167 -0
  752. package/src/nodes/core/UniformNode.js +259 -0
  753. package/src/nodes/core/VarNode.js +367 -0
  754. package/src/nodes/core/VaryingNode.js +210 -0
  755. package/src/nodes/core/constants.js +68 -0
  756. package/src/nodes/display/BlendModes.js +171 -0
  757. package/src/nodes/display/BumpMapNode.js +117 -0
  758. package/src/nodes/display/ColorAdjustment.js +158 -0
  759. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  760. package/src/nodes/display/ColorSpaceNode.js +164 -0
  761. package/src/nodes/display/FrontFacingNode.js +102 -0
  762. package/src/nodes/display/NormalMapNode.js +153 -0
  763. package/src/nodes/display/PassNode.js +1055 -0
  764. package/src/nodes/display/RenderOutputNode.js +150 -0
  765. package/src/nodes/display/ScreenNode.js +292 -0
  766. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  767. package/src/nodes/display/ToneMappingNode.js +147 -0
  768. package/src/nodes/display/ToonOutlinePassNode.js +191 -0
  769. package/src/nodes/display/ViewportDepthNode.js +342 -0
  770. package/src/nodes/display/ViewportDepthTextureNode.js +63 -0
  771. package/src/nodes/display/ViewportSharedTextureNode.js +73 -0
  772. package/src/nodes/display/ViewportTextureNode.js +256 -0
  773. package/src/nodes/fog/Fog.js +97 -0
  774. package/src/nodes/functions/BSDF/BRDF_GGX.js +55 -0
  775. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  776. package/src/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  777. package/src/nodes/functions/BSDF/BRDF_Sheen.js +57 -0
  778. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  779. package/src/nodes/functions/BSDF/D_GGX.js +23 -0
  780. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  781. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  782. package/src/nodes/functions/BSDF/F_Schlick.js +16 -0
  783. package/src/nodes/functions/BSDF/LTC.js +175 -0
  784. package/src/nodes/functions/BSDF/Schlick_to_F0.js +21 -0
  785. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +26 -0
  786. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  787. package/src/nodes/functions/BasicLightingModel.js +100 -0
  788. package/src/nodes/functions/PhongLightingModel.js +99 -0
  789. package/src/nodes/functions/PhysicalLightingModel.js +878 -0
  790. package/src/nodes/functions/ShadowMaskModel.js +58 -0
  791. package/src/nodes/functions/ToonLightingModel.js +70 -0
  792. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  793. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  794. package/src/nodes/functions/material/getGeometryRoughness.js +19 -0
  795. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  796. package/src/nodes/functions/material/getRoughness.js +18 -0
  797. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  798. package/src/nodes/geometry/RangeNode.js +210 -0
  799. package/src/nodes/gpgpu/AtomicFunctionNode.js +274 -0
  800. package/src/nodes/gpgpu/BarrierNode.js +98 -0
  801. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  802. package/src/nodes/gpgpu/ComputeNode.js +310 -0
  803. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  804. package/src/nodes/gpgpu/WorkgroupInfoNode.js +234 -0
  805. package/src/nodes/lighting/AONode.js +45 -0
  806. package/src/nodes/lighting/AmbientLightNode.js +35 -0
  807. package/src/nodes/lighting/AnalyticLightNode.js +309 -0
  808. package/src/nodes/lighting/BasicEnvironmentNode.js +49 -0
  809. package/src/nodes/lighting/BasicLightMapNode.js +49 -0
  810. package/src/nodes/lighting/DirectionalLightNode.js +39 -0
  811. package/src/nodes/lighting/EnvironmentNode.js +178 -0
  812. package/src/nodes/lighting/HemisphereLightNode.js +87 -0
  813. package/src/nodes/lighting/IESSpotLightNode.js +49 -0
  814. package/src/nodes/lighting/IrradianceNode.js +44 -0
  815. package/src/nodes/lighting/LightProbeNode.js +73 -0
  816. package/src/nodes/lighting/LightUtils.js +25 -0
  817. package/src/nodes/lighting/LightingContextNode.js +115 -0
  818. package/src/nodes/lighting/LightingNode.js +36 -0
  819. package/src/nodes/lighting/LightsNode.js +432 -0
  820. package/src/nodes/lighting/PointLightNode.js +102 -0
  821. package/src/nodes/lighting/PointShadowNode.js +325 -0
  822. package/src/nodes/lighting/ProjectorLightNode.js +91 -0
  823. package/src/nodes/lighting/RectAreaLightNode.js +133 -0
  824. package/src/nodes/lighting/ShadowBaseNode.js +81 -0
  825. package/src/nodes/lighting/ShadowFilterNode.js +264 -0
  826. package/src/nodes/lighting/ShadowNode.js +889 -0
  827. package/src/nodes/lighting/SpotLightNode.js +168 -0
  828. package/src/nodes/materialx/DISCLAIMER.md +199 -0
  829. package/src/nodes/materialx/MaterialXNodes.js +197 -0
  830. package/src/nodes/materialx/lib/mx_hsv.js +127 -0
  831. package/src/nodes/materialx/lib/mx_noise.js +1491 -0
  832. package/src/nodes/materialx/lib/mx_transform_color.js +23 -0
  833. package/src/nodes/math/BitcastNode.js +156 -0
  834. package/src/nodes/math/BitcountNode.js +433 -0
  835. package/src/nodes/math/ConditionalNode.js +245 -0
  836. package/src/nodes/math/Hash.js +21 -0
  837. package/src/nodes/math/MathNode.js +1202 -0
  838. package/src/nodes/math/MathUtils.js +54 -0
  839. package/src/nodes/math/OperatorNode.js +752 -0
  840. package/src/nodes/math/PackFloatNode.js +98 -0
  841. package/src/nodes/math/TriNoise3D.js +71 -0
  842. package/src/nodes/math/UnpackFloatNode.js +96 -0
  843. package/src/nodes/parsers/GLSLNodeFunction.js +168 -0
  844. package/src/nodes/parsers/GLSLNodeParser.js +25 -0
  845. package/src/nodes/pmrem/PMREMNode.js +397 -0
  846. package/src/nodes/pmrem/PMREMUtils.js +397 -0
  847. package/src/nodes/procedural/Checker.js +22 -0
  848. package/src/nodes/shapes/Shapes.js +33 -0
  849. package/src/nodes/tsl/TSLBase.js +36 -0
  850. package/src/nodes/tsl/TSLCore.js +1250 -0
  851. package/src/nodes/utils/ArrayElementNode.js +90 -0
  852. package/src/nodes/utils/ConvertNode.js +100 -0
  853. package/src/nodes/utils/CubeMapNode.js +237 -0
  854. package/src/nodes/utils/DebugNode.js +83 -0
  855. package/src/nodes/utils/Discard.js +24 -0
  856. package/src/nodes/utils/EquirectUV.js +27 -0
  857. package/src/nodes/utils/EventNode.js +148 -0
  858. package/src/nodes/utils/FlipNode.js +106 -0
  859. package/src/nodes/utils/FunctionOverloadingNode.js +170 -0
  860. package/src/nodes/utils/JoinNode.js +117 -0
  861. package/src/nodes/utils/LoopNode.js +349 -0
  862. package/src/nodes/utils/MatcapUV.js +22 -0
  863. package/src/nodes/utils/MaxMipLevelNode.js +103 -0
  864. package/src/nodes/utils/MemberNode.js +120 -0
  865. package/src/nodes/utils/Oscillators.js +41 -0
  866. package/src/nodes/utils/Packing.js +33 -0
  867. package/src/nodes/utils/PostProcessingUtils.js +154 -0
  868. package/src/nodes/utils/RTTNode.js +289 -0
  869. package/src/nodes/utils/ReflectorNode.js +629 -0
  870. package/src/nodes/utils/Remap.js +48 -0
  871. package/src/nodes/utils/RotateNode.js +103 -0
  872. package/src/nodes/utils/SampleNode.js +91 -0
  873. package/src/nodes/utils/SetNode.js +108 -0
  874. package/src/nodes/utils/SplitNode.js +179 -0
  875. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  876. package/src/nodes/utils/SpriteUtils.js +63 -0
  877. package/src/nodes/utils/StorageArrayElementNode.js +143 -0
  878. package/src/nodes/utils/Timer.js +26 -0
  879. package/src/nodes/utils/TriplanarTextures.js +65 -0
  880. package/src/nodes/utils/UVUtils.js +67 -0
  881. package/src/nodes/utils/ViewportUtils.js +26 -0
  882. package/src/objects/BatchedMesh.js +1682 -0
  883. package/src/objects/Bone.js +41 -0
  884. package/src/objects/ClippingGroup.js +68 -0
  885. package/src/objects/Group.js +41 -0
  886. package/src/objects/InstancedMesh.js +422 -0
  887. package/src/objects/LOD.js +329 -0
  888. package/src/objects/Line.js +329 -0
  889. package/src/objects/LineLoop.js +37 -0
  890. package/src/objects/LineSegments.js +74 -0
  891. package/src/objects/Mesh.js +496 -0
  892. package/src/objects/Points.js +228 -0
  893. package/src/objects/Skeleton.js +392 -0
  894. package/src/objects/SkinnedMesh.js +370 -0
  895. package/src/objects/Sprite.js +245 -0
  896. package/src/renderers/WebGL3DRenderTarget.js +48 -0
  897. package/src/renderers/WebGLArrayRenderTarget.js +48 -0
  898. package/src/renderers/WebGLCubeRenderTarget.js +182 -0
  899. package/src/renderers/WebGLRenderTarget.js +34 -0
  900. package/src/renderers/WebGLRenderer.js +3699 -0
  901. package/src/renderers/common/Animation.js +159 -0
  902. package/src/renderers/common/Attributes.js +132 -0
  903. package/src/renderers/common/Backend.js +769 -0
  904. package/src/renderers/common/Background.js +225 -0
  905. package/src/renderers/common/BindGroup.js +46 -0
  906. package/src/renderers/common/Binding.js +71 -0
  907. package/src/renderers/common/Bindings.js +394 -0
  908. package/src/renderers/common/BlendMode.js +143 -0
  909. package/src/renderers/common/Buffer.js +127 -0
  910. package/src/renderers/common/BufferUtils.js +58 -0
  911. package/src/renderers/common/BundleGroup.js +83 -0
  912. package/src/renderers/common/CanvasTarget.js +341 -0
  913. package/src/renderers/common/ChainMap.js +122 -0
  914. package/src/renderers/common/ClippingContext.js +262 -0
  915. package/src/renderers/common/Color4.js +77 -0
  916. package/src/renderers/common/ComputePipeline.js +41 -0
  917. package/src/renderers/common/Constants.js +15 -0
  918. package/src/renderers/common/CubeRenderTarget.js +147 -0
  919. package/src/renderers/common/DataMap.js +90 -0
  920. package/src/renderers/common/Geometries.js +396 -0
  921. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  922. package/src/renderers/common/Info.js +501 -0
  923. package/src/renderers/common/InspectorBase.js +151 -0
  924. package/src/renderers/common/Lighting.js +57 -0
  925. package/src/renderers/common/Pipeline.js +35 -0
  926. package/src/renderers/common/Pipelines.js +498 -0
  927. package/src/renderers/common/PostProcessing.js +28 -0
  928. package/src/renderers/common/ProgrammableStage.js +78 -0
  929. package/src/renderers/common/QuadMesh.js +112 -0
  930. package/src/renderers/common/ReadbackBuffer.js +78 -0
  931. package/src/renderers/common/RenderBundle.js +26 -0
  932. package/src/renderers/common/RenderBundles.js +71 -0
  933. package/src/renderers/common/RenderContext.js +281 -0
  934. package/src/renderers/common/RenderContexts.js +100 -0
  935. package/src/renderers/common/RenderList.js +404 -0
  936. package/src/renderers/common/RenderLists.js +78 -0
  937. package/src/renderers/common/RenderObject.js +915 -0
  938. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  939. package/src/renderers/common/RenderObjects.js +218 -0
  940. package/src/renderers/common/RenderPipeline.js +255 -0
  941. package/src/renderers/common/Renderer.js +3654 -0
  942. package/src/renderers/common/RendererUtils.js +200 -0
  943. package/src/renderers/common/SampledTexture.js +152 -0
  944. package/src/renderers/common/Sampler.js +165 -0
  945. package/src/renderers/common/Storage3DTexture.js +100 -0
  946. package/src/renderers/common/StorageArrayTexture.js +84 -0
  947. package/src/renderers/common/StorageBuffer.js +53 -0
  948. package/src/renderers/common/StorageBufferAttribute.js +46 -0
  949. package/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
  950. package/src/renderers/common/StorageTexture.js +86 -0
  951. package/src/renderers/common/Textures.js +629 -0
  952. package/src/renderers/common/TimestampQueryPool.js +163 -0
  953. package/src/renderers/common/Uniform.js +375 -0
  954. package/src/renderers/common/UniformBuffer.js +34 -0
  955. package/src/renderers/common/UniformsGroup.js +548 -0
  956. package/src/renderers/common/XRManager.js +1684 -0
  957. package/src/renderers/common/XRRenderTarget.js +91 -0
  958. package/src/renderers/common/extras/PMREMGenerator.js +1042 -0
  959. package/src/renderers/common/nodes/NodeBuilderState.js +152 -0
  960. package/src/renderers/common/nodes/NodeLibrary.js +196 -0
  961. package/src/renderers/common/nodes/NodeManager.js +983 -0
  962. package/src/renderers/common/nodes/NodeSampledTexture.js +140 -0
  963. package/src/renderers/common/nodes/NodeSampler.js +62 -0
  964. package/src/renderers/common/nodes/NodeStorageBuffer.js +72 -0
  965. package/src/renderers/common/nodes/NodeUniform.js +418 -0
  966. package/src/renderers/common/nodes/NodeUniformBuffer.js +105 -0
  967. package/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
  968. package/src/renderers/shaders/DFGLUTData.js +49 -0
  969. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  970. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  971. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +7 -0
  972. package/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl.js +7 -0
  973. package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +16 -0
  974. package/src/renderers/shaders/ShaderChunk/alphatest_pars_fragment.glsl.js +5 -0
  975. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +26 -0
  976. package/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl.js +8 -0
  977. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +49 -0
  978. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  979. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +9 -0
  980. package/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl.js +9 -0
  981. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +33 -0
  982. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +43 -0
  983. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +7 -0
  984. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +10 -0
  985. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +21 -0
  986. package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +78 -0
  987. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl.js +9 -0
  988. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl.js +7 -0
  989. package/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl.js +7 -0
  990. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +7 -0
  991. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +7 -0
  992. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +7 -0
  993. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +29 -0
  994. package/src/renderers/shaders/ShaderChunk/colorspace_fragment.glsl.js +3 -0
  995. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +15 -0
  996. package/src/renderers/shaders/ShaderChunk/common.glsl.js +125 -0
  997. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +186 -0
  998. package/src/renderers/shaders/ShaderChunk/default_fragment.glsl.js +5 -0
  999. package/src/renderers/shaders/ShaderChunk/default_vertex.glsl.js +5 -0
  1000. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +63 -0
  1001. package/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl.js +9 -0
  1002. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +7 -0
  1003. package/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl.js +7 -0
  1004. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +20 -0
  1005. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +17 -0
  1006. package/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl.js +7 -0
  1007. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +14 -0
  1008. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +58 -0
  1009. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +21 -0
  1010. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +22 -0
  1011. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +69 -0
  1012. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +37 -0
  1013. package/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +17 -0
  1014. package/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +19 -0
  1015. package/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +7 -0
  1016. package/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +7 -0
  1017. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +27 -0
  1018. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +120 -0
  1019. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  1020. package/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl.js +8 -0
  1021. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  1022. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +213 -0
  1023. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +19 -0
  1024. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +44 -0
  1025. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  1026. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  1027. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +216 -0
  1028. package/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl.js +7 -0
  1029. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +32 -0
  1030. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +161 -0
  1031. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +656 -0
  1032. package/src/renderers/shaders/ShaderChunk/lights_toon_fragment.glsl.js +4 -0
  1033. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +26 -0
  1034. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +9 -0
  1035. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +9 -0
  1036. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +8 -0
  1037. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +8 -0
  1038. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +17 -0
  1039. package/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl.js +7 -0
  1040. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +27 -0
  1041. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +27 -0
  1042. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +12 -0
  1043. package/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl.js +7 -0
  1044. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  1045. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
  1046. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +16 -0
  1047. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +26 -0
  1048. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +16 -0
  1049. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +76 -0
  1050. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +40 -0
  1051. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +14 -0
  1052. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +14 -0
  1053. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +14 -0
  1054. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +43 -0
  1055. package/src/renderers/shaders/ShaderChunk/opaque_fragment.glsl.js +11 -0
  1056. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +116 -0
  1057. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +7 -0
  1058. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +19 -0
  1059. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -0
  1060. package/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl.js +7 -0
  1061. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +376 -0
  1062. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +71 -0
  1063. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +78 -0
  1064. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +66 -0
  1065. package/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl.js +10 -0
  1066. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +25 -0
  1067. package/src/renderers/shaders/ShaderChunk/skinning_vertex.glsl.js +15 -0
  1068. package/src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl.js +20 -0
  1069. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +14 -0
  1070. package/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl.js +7 -0
  1071. package/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl.js +7 -0
  1072. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +200 -0
  1073. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +36 -0
  1074. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +235 -0
  1075. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +119 -0
  1076. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +145 -0
  1077. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +122 -0
  1078. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +21 -0
  1079. package/src/renderers/shaders/ShaderChunk.js +272 -0
  1080. package/src/renderers/shaders/ShaderLib/background.glsl.js +40 -0
  1081. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  1082. package/src/renderers/shaders/ShaderLib/cube.glsl.js +36 -0
  1083. package/src/renderers/shaders/ShaderLib/depth.glsl.js +117 -0
  1084. package/src/renderers/shaders/ShaderLib/distance.glsl.js +77 -0
  1085. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +35 -0
  1086. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +76 -0
  1087. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +116 -0
  1088. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +126 -0
  1089. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +112 -0
  1090. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +86 -0
  1091. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +128 -0
  1092. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +224 -0
  1093. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +118 -0
  1094. package/src/renderers/shaders/ShaderLib/points.glsl.js +87 -0
  1095. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +58 -0
  1096. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +79 -0
  1097. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +51 -0
  1098. package/src/renderers/shaders/ShaderLib.js +362 -0
  1099. package/src/renderers/shaders/UniformsLib.js +234 -0
  1100. package/src/renderers/shaders/UniformsUtils.js +154 -0
  1101. package/src/renderers/webgl/WebGLAnimation.js +54 -0
  1102. package/src/renderers/webgl/WebGLAttributes.js +237 -0
  1103. package/src/renderers/webgl/WebGLBackground.js +303 -0
  1104. package/src/renderers/webgl/WebGLBindingStates.js +666 -0
  1105. package/src/renderers/webgl/WebGLBufferRenderer.js +57 -0
  1106. package/src/renderers/webgl/WebGLCapabilities.js +150 -0
  1107. package/src/renderers/webgl/WebGLClipping.js +171 -0
  1108. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  1109. package/src/renderers/webgl/WebGLExtensions.js +61 -0
  1110. package/src/renderers/webgl/WebGLGeometries.js +186 -0
  1111. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +68 -0
  1112. package/src/renderers/webgl/WebGLInfo.js +73 -0
  1113. package/src/renderers/webgl/WebGLLights.js +584 -0
  1114. package/src/renderers/webgl/WebGLMaterials.js +602 -0
  1115. package/src/renderers/webgl/WebGLMorphtargets.js +168 -0
  1116. package/src/renderers/webgl/WebGLObjects.js +94 -0
  1117. package/src/renderers/webgl/WebGLOutput.js +270 -0
  1118. package/src/renderers/webgl/WebGLProgram.js +1031 -0
  1119. package/src/renderers/webgl/WebGLPrograms.js +679 -0
  1120. package/src/renderers/webgl/WebGLProperties.js +55 -0
  1121. package/src/renderers/webgl/WebGLRenderLists.js +253 -0
  1122. package/src/renderers/webgl/WebGLRenderStates.js +124 -0
  1123. package/src/renderers/webgl/WebGLShader.js +12 -0
  1124. package/src/renderers/webgl/WebGLShaderCache.js +124 -0
  1125. package/src/renderers/webgl/WebGLShadowMap.js +600 -0
  1126. package/src/renderers/webgl/WebGLState.js +1370 -0
  1127. package/src/renderers/webgl/WebGLTextures.js +2506 -0
  1128. package/src/renderers/webgl/WebGLUniforms.js +1203 -0
  1129. package/src/renderers/webgl/WebGLUniformsGroups.js +413 -0
  1130. package/src/renderers/webgl/WebGLUtils.js +217 -0
  1131. package/src/renderers/webgl-fallback/WebGLBackend.js +2783 -0
  1132. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +99 -0
  1133. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1676 -0
  1134. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +359 -0
  1135. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +89 -0
  1136. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +13 -0
  1137. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
  1138. package/src/renderers/webgl-fallback/utils/WebGLState.js +1361 -0
  1139. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1324 -0
  1140. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
  1141. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +317 -0
  1142. package/src/renderers/webgpu/WebGPUBackend.js +2602 -0
  1143. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
  1144. package/src/renderers/webgpu/WebGPURenderer.js +107 -0
  1145. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
  1146. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +100 -0
  1147. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2523 -0
  1148. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +187 -0
  1149. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +25 -0
  1150. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +522 -0
  1151. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +642 -0
  1152. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  1153. package/src/renderers/webgpu/utils/WebGPUConstants.js +354 -0
  1154. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +846 -0
  1155. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +389 -0
  1156. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1673 -0
  1157. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
  1158. package/src/renderers/webgpu/utils/WebGPUUtils.js +269 -0
  1159. package/src/renderers/webxr/WebXRController.js +440 -0
  1160. package/src/renderers/webxr/WebXRDepthSensing.js +155 -0
  1161. package/src/renderers/webxr/WebXRManager.js +1103 -0
  1162. package/src/scenes/Fog.js +98 -0
  1163. package/src/scenes/FogExp2.js +86 -0
  1164. package/src/scenes/Scene.js +165 -0
  1165. package/src/textures/CanvasTexture.js +45 -0
  1166. package/src/textures/CompressedArrayTexture.js +89 -0
  1167. package/src/textures/CompressedCubeTexture.js +48 -0
  1168. package/src/textures/CompressedTexture.js +86 -0
  1169. package/src/textures/CubeDepthTexture.js +76 -0
  1170. package/src/textures/CubeTexture.js +81 -0
  1171. package/src/textures/Data3DTexture.js +112 -0
  1172. package/src/textures/DataArrayTexture.js +134 -0
  1173. package/src/textures/DataTexture.js +87 -0
  1174. package/src/textures/DepthTexture.js +104 -0
  1175. package/src/textures/ExternalTexture.js +56 -0
  1176. package/src/textures/FramebufferTexture.js +85 -0
  1177. package/src/textures/HTMLTexture.js +74 -0
  1178. package/src/textures/Source.js +230 -0
  1179. package/src/textures/Texture.js +812 -0
  1180. package/src/textures/VideoFrameTexture.js +72 -0
  1181. package/src/textures/VideoTexture.js +127 -0
  1182. package/src/utils.js +493 -0
@@ -0,0 +1,1836 @@
1
+ import {
2
+ BufferGeometryLoader,
3
+ CanvasTexture,
4
+ ClampToEdgeWrapping,
5
+ Color,
6
+ DirectionalLight,
7
+ DoubleSide,
8
+ FileLoader,
9
+ LinearFilter,
10
+ Line,
11
+ LineBasicMaterial,
12
+ Loader,
13
+ Matrix4,
14
+ Mesh,
15
+ MeshPhysicalMaterial,
16
+ MeshStandardMaterial,
17
+ Object3D,
18
+ PointLight,
19
+ Points,
20
+ PointsMaterial,
21
+ RectAreaLight,
22
+ RepeatWrapping,
23
+ SpotLight,
24
+ Sprite,
25
+ SpriteMaterial,
26
+ TextureLoader,
27
+ EquirectangularReflectionMapping
28
+ } from 'three';
29
+
30
+ import { EXRLoader } from '../loaders/EXRLoader.js';
31
+
32
+ const _taskCache = new WeakMap();
33
+
34
+ /**
35
+ * A loader for Rhinoceros 3D files and objects.
36
+ *
37
+ * Rhinoceros is a 3D modeler used to create, edit, analyze, document, render,
38
+ * animate, and translate NURBS curves, surfaces, breps, extrusions, point clouds,
39
+ * as well as polygon meshes and SubD objects. `rhino3dm.js` is compiled to WebAssembly
40
+ * from the open source geometry library `openNURBS`. The loader currently uses
41
+ * `rhino3dm.js 8.4.0`.
42
+ *
43
+ * ```js
44
+ * const loader = new Rhino3dmLoader();
45
+ * loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/rhino3dm@8.0.1' );
46
+ *
47
+ * const object = await loader.loadAsync( 'models/3dm/Rhino_Logo.3dm' );
48
+ * scene.add( object );
49
+ * ```
50
+ *
51
+ * @augments Loader
52
+ * @three_import import { Rhino3dmLoader } from 'three/addons/loaders/3DMLoader.js';
53
+ */
54
+ class Rhino3dmLoader extends Loader {
55
+
56
+ /**
57
+ * Constructs a new Rhino 3DM loader.
58
+ *
59
+ * @param {LoadingManager} [manager] - The loading manager.
60
+ */
61
+ constructor( manager ) {
62
+
63
+ super( manager );
64
+
65
+ // internals
66
+
67
+ this.libraryPath = '';
68
+ this.libraryPending = null;
69
+ this.libraryBinary = null;
70
+ this.libraryConfig = {};
71
+
72
+ this.url = '';
73
+
74
+ this.workerLimit = 4;
75
+ this.workerPool = [];
76
+ this.workerNextTaskID = 1;
77
+ this.workerSourceURL = '';
78
+ this.workerConfig = {};
79
+
80
+ this.materials = [];
81
+ this.warnings = [];
82
+
83
+ }
84
+
85
+ /**
86
+ * Path to a folder containing the JS and WASM libraries.
87
+ *
88
+ * @param {string} path - The library path to set.
89
+ * @return {Rhino3dmLoader} A reference to this loader.
90
+ */
91
+ setLibraryPath( path ) {
92
+
93
+ this.libraryPath = path;
94
+
95
+ return this;
96
+
97
+ }
98
+
99
+ /**
100
+ * Sets the maximum number of Web Workers to be used during decoding.
101
+ * A lower limit may be preferable if workers are also for other
102
+ * tasks in the application.
103
+ *
104
+ * @param {number} workerLimit - The worker limit.
105
+ * @return {Rhino3dmLoader} A reference to this loader.
106
+ */
107
+ setWorkerLimit( workerLimit ) {
108
+
109
+ this.workerLimit = workerLimit;
110
+
111
+ return this;
112
+
113
+ }
114
+
115
+ /**
116
+ * Starts loading from the given URL and passes the loaded 3DM asset
117
+ * to the `onLoad()` callback.
118
+ *
119
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
120
+ * @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
121
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
122
+ * @param {onErrorCallback} onError - Executed when errors occur.
123
+ */
124
+ load( url, onLoad, onProgress, onError ) {
125
+
126
+ const loader = new FileLoader( this.manager );
127
+
128
+ loader.setPath( this.path );
129
+ loader.setResponseType( 'arraybuffer' );
130
+ loader.setRequestHeader( this.requestHeader );
131
+
132
+ this.url = url;
133
+
134
+ loader.load( url, ( buffer ) => {
135
+
136
+ // Check for an existing task using this buffer. A transferred buffer cannot be transferred
137
+ // again from this thread.
138
+ if ( _taskCache.has( buffer ) ) {
139
+
140
+ const cachedTask = _taskCache.get( buffer );
141
+
142
+ return cachedTask.promise.then( onLoad ).catch( onError );
143
+
144
+ }
145
+
146
+ this.decodeObjects( buffer, url )
147
+ .then( result => {
148
+
149
+ result.userData.warnings = this.warnings;
150
+ onLoad( result );
151
+
152
+ } )
153
+ .catch( e => onError( e ) );
154
+
155
+ }, onProgress, onError );
156
+
157
+ }
158
+
159
+ /**
160
+ * Prints debug messages to the browser console.
161
+ */
162
+ debug() {
163
+
164
+ console.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );
165
+
166
+ }
167
+
168
+ /**
169
+ * Decodes the 3DM asset data with a Web Worker.
170
+ *
171
+ * @param {ArrayBuffer} buffer - The raw 3DM asset data as an array buffer.
172
+ * @param {string} url - The asset URL.
173
+ * @return {Promise<Object3D>} A Promise that resolved with the decoded 3D object.
174
+ */
175
+ decodeObjects( buffer, url ) {
176
+
177
+ let worker;
178
+ let taskID;
179
+
180
+ const taskCost = buffer.byteLength;
181
+
182
+ const objectPending = this._getWorker( taskCost )
183
+ .then( ( _worker ) => {
184
+
185
+ worker = _worker;
186
+ taskID = this.workerNextTaskID ++;
187
+
188
+ return new Promise( ( resolve, reject ) => {
189
+
190
+ worker._callbacks[ taskID ] = { resolve, reject };
191
+
192
+ worker.postMessage( { type: 'decode', id: taskID, buffer }, [ buffer ] );
193
+
194
+ // this.debug();
195
+
196
+ } );
197
+
198
+ } )
199
+ .then( ( message ) => this._createGeometry( message.data ) )
200
+ .catch( e => {
201
+
202
+ throw e;
203
+
204
+ } );
205
+
206
+ // Remove task from the task list.
207
+ // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)
208
+ objectPending
209
+ .catch( () => true )
210
+ .then( () => {
211
+
212
+ if ( worker && taskID ) {
213
+
214
+ this._releaseTask( worker, taskID );
215
+
216
+ //this.debug();
217
+
218
+ }
219
+
220
+ } );
221
+
222
+ // Cache the task result.
223
+ _taskCache.set( buffer, {
224
+
225
+ url: url,
226
+ promise: objectPending
227
+
228
+ } );
229
+
230
+ return objectPending;
231
+
232
+ }
233
+
234
+ /**
235
+ * Parses the given 3DM data and passes the loaded 3DM asset
236
+ * to the `onLoad()` callback.
237
+ *
238
+ * @param {ArrayBuffer} data - The raw 3DM asset data as an array buffer.
239
+ * @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
240
+ * @param {onErrorCallback} onError - Executed when errors occur.
241
+ */
242
+ parse( data, onLoad, onError ) {
243
+
244
+ this.decodeObjects( data, '' )
245
+ .then( result => {
246
+
247
+ result.userData.warnings = this.warnings;
248
+ onLoad( result );
249
+
250
+ } )
251
+ .catch( e => onError( e ) );
252
+
253
+ }
254
+
255
+ _compareMaterials( material ) {
256
+
257
+ const mat = {};
258
+ mat.name = material.name;
259
+ mat.color = {};
260
+ mat.color.r = material.color.r;
261
+ mat.color.g = material.color.g;
262
+ mat.color.b = material.color.b;
263
+ mat.type = material.type;
264
+ mat.vertexColors = material.vertexColors;
265
+
266
+ const json = JSON.stringify( mat );
267
+
268
+ for ( let i = 0; i < this.materials.length; i ++ ) {
269
+
270
+ const m = this.materials[ i ];
271
+ const _mat = {};
272
+ _mat.name = m.name;
273
+ _mat.color = {};
274
+ _mat.color.r = m.color.r;
275
+ _mat.color.g = m.color.g;
276
+ _mat.color.b = m.color.b;
277
+ _mat.type = m.type;
278
+ _mat.vertexColors = m.vertexColors;
279
+
280
+ if ( JSON.stringify( _mat ) === json ) {
281
+
282
+ return m;
283
+
284
+ }
285
+
286
+ }
287
+
288
+ this.materials.push( material );
289
+
290
+ return material;
291
+
292
+ }
293
+
294
+ _createMaterial( material, renderEnvironment ) {
295
+
296
+ if ( material === undefined ) {
297
+
298
+ return new MeshStandardMaterial( {
299
+ color: new Color( 1, 1, 1 ),
300
+ metalness: 0.8,
301
+ name: Loader.DEFAULT_MATERIAL_NAME,
302
+ side: DoubleSide
303
+ } );
304
+
305
+ }
306
+
307
+ //console.log(material)
308
+
309
+ const mat = new MeshPhysicalMaterial( {
310
+
311
+ color: new Color( material.diffuseColor.r / 255.0, material.diffuseColor.g / 255.0, material.diffuseColor.b / 255.0 ),
312
+ emissive: new Color( material.emissionColor.r, material.emissionColor.g, material.emissionColor.b ),
313
+ flatShading: material.disableLighting,
314
+ ior: material.indexOfRefraction,
315
+ name: material.name,
316
+ reflectivity: material.reflectivity,
317
+ opacity: 1.0 - material.transparency,
318
+ side: DoubleSide,
319
+ specularColor: material.specularColor,
320
+ transparent: material.transparency > 0 ? true : false
321
+
322
+ } );
323
+
324
+ mat.userData.id = material.id;
325
+
326
+ if ( material.pbrSupported ) {
327
+
328
+ const pbr = material.pbr;
329
+
330
+ mat.anisotropy = pbr.anisotropic;
331
+ mat.anisotropyRotation = pbr.anisotropicRotation;
332
+ mat.color = new Color( pbr.baseColor.r, pbr.baseColor.g, pbr.baseColor.b );
333
+ mat.clearcoat = pbr.clearcoat;
334
+ mat.clearcoatRoughness = pbr.clearcoatRoughness;
335
+ mat.metalness = pbr.metallic;
336
+ mat.transmission = 1 - pbr.opacity;
337
+ mat.roughness = pbr.roughness;
338
+ mat.sheen = pbr.sheen;
339
+ mat.specularIntensity = pbr.specular;
340
+ mat.thickness = pbr.subsurface;
341
+
342
+ }
343
+
344
+ if ( material.pbrSupported && material.pbr.opacity === 0 && material.transparency === 1 ) {
345
+
346
+ //some compromises
347
+
348
+ mat.opacity = 0.2;
349
+ mat.transmission = 1.00;
350
+
351
+ }
352
+
353
+ const textureLoader = new TextureLoader();
354
+
355
+ for ( let i = 0; i < material.textures.length; i ++ ) {
356
+
357
+ const texture = material.textures[ i ];
358
+
359
+ if ( texture.image !== null ) {
360
+
361
+ const map = textureLoader.load( texture.image );
362
+
363
+ //console.log(texture.type )
364
+
365
+ switch ( texture.type ) {
366
+
367
+ case 'Bump':
368
+
369
+ mat.bumpMap = map;
370
+
371
+ break;
372
+
373
+ case 'Diffuse':
374
+
375
+ mat.map = map;
376
+
377
+ break;
378
+
379
+ case 'Emap':
380
+
381
+ mat.envMap = map;
382
+
383
+ break;
384
+
385
+ case 'Opacity':
386
+
387
+ mat.transmissionMap = map;
388
+
389
+ break;
390
+
391
+ case 'Transparency':
392
+
393
+ mat.alphaMap = map;
394
+ mat.transparent = true;
395
+
396
+ break;
397
+
398
+ case 'PBR_Alpha':
399
+
400
+ mat.alphaMap = map;
401
+ mat.transparent = true;
402
+
403
+ break;
404
+
405
+ case 'PBR_AmbientOcclusion':
406
+
407
+ mat.aoMap = map;
408
+
409
+ break;
410
+
411
+ case 'PBR_Anisotropic':
412
+
413
+ mat.anisotropyMap = map;
414
+
415
+ break;
416
+
417
+ case 'PBR_BaseColor':
418
+
419
+ mat.map = map;
420
+
421
+ break;
422
+
423
+ case 'PBR_Clearcoat':
424
+
425
+ mat.clearcoatMap = map;
426
+
427
+ break;
428
+
429
+ case 'PBR_ClearcoatBump':
430
+
431
+ mat.clearcoatNormalMap = map;
432
+
433
+ break;
434
+
435
+ case 'PBR_ClearcoatRoughness':
436
+
437
+ mat.clearcoatRoughnessMap = map;
438
+
439
+ break;
440
+
441
+ case 'PBR_Displacement':
442
+
443
+ mat.displacementMap = map;
444
+
445
+ break;
446
+
447
+ case 'PBR_Emission':
448
+
449
+ mat.emissiveMap = map;
450
+
451
+ break;
452
+
453
+ case 'PBR_Metallic':
454
+
455
+ mat.metalnessMap = map;
456
+
457
+ break;
458
+
459
+ case 'PBR_Roughness':
460
+
461
+ mat.roughnessMap = map;
462
+
463
+ break;
464
+
465
+ case 'PBR_Sheen':
466
+
467
+ mat.sheenColorMap = map;
468
+
469
+ break;
470
+
471
+ case 'PBR_Specular':
472
+
473
+ mat.specularColorMap = map;
474
+
475
+ break;
476
+
477
+ case 'PBR_Subsurface':
478
+
479
+ mat.thicknessMap = map;
480
+
481
+ break;
482
+
483
+ default:
484
+
485
+ this.warnings.push( {
486
+ message: `THREE.3DMLoader: No conversion exists for 3dm ${texture.type}.`,
487
+ type: 'no conversion'
488
+ } );
489
+
490
+ break;
491
+
492
+ }
493
+
494
+ map.wrapS = texture.wrapU === 0 ? RepeatWrapping : ClampToEdgeWrapping;
495
+ map.wrapT = texture.wrapV === 0 ? RepeatWrapping : ClampToEdgeWrapping;
496
+
497
+ if ( texture.repeat ) {
498
+
499
+ map.repeat.set( texture.repeat[ 0 ], texture.repeat[ 1 ] );
500
+
501
+ }
502
+
503
+ }
504
+
505
+ }
506
+
507
+ if ( renderEnvironment ) {
508
+
509
+ new EXRLoader().load( renderEnvironment.image, function ( texture ) {
510
+
511
+ texture.mapping = EquirectangularReflectionMapping;
512
+ mat.envMap = texture;
513
+
514
+ } );
515
+
516
+ }
517
+
518
+ return mat;
519
+
520
+ }
521
+
522
+ _createGeometry( data ) {
523
+
524
+ const object = new Object3D();
525
+ const instanceDefinitionObjects = [];
526
+ const instanceDefinitions = [];
527
+ const instanceReferences = [];
528
+
529
+ object.userData[ 'layers' ] = data.layers;
530
+ object.userData[ 'groups' ] = data.groups;
531
+ object.userData[ 'settings' ] = data.settings;
532
+ object.userData.settings[ 'renderSettings' ] = data.renderSettings;
533
+ object.userData[ 'objectType' ] = 'File3dm';
534
+ object.userData[ 'materials' ] = null;
535
+
536
+ object.name = this.url;
537
+
538
+ let objects = data.objects;
539
+ const materials = data.materials;
540
+
541
+ for ( let i = 0; i < objects.length; i ++ ) {
542
+
543
+ const obj = objects[ i ];
544
+ const attributes = obj.attributes;
545
+
546
+ switch ( obj.objectType ) {
547
+
548
+ case 'InstanceDefinition':
549
+
550
+ instanceDefinitions.push( obj );
551
+
552
+ break;
553
+
554
+ case 'InstanceReference':
555
+
556
+ instanceReferences.push( obj );
557
+
558
+ break;
559
+
560
+ default:
561
+
562
+ let matId = null;
563
+
564
+ switch ( attributes.materialSource.name ) {
565
+
566
+ case 'ObjectMaterialSource_MaterialFromLayer':
567
+ //check layer index
568
+ if ( attributes.layerIndex >= 0 ) {
569
+
570
+ matId = data.layers[ attributes.layerIndex ].renderMaterialIndex;
571
+
572
+ }
573
+
574
+ break;
575
+
576
+ case 'ObjectMaterialSource_MaterialFromObject':
577
+
578
+ if ( attributes.materialIndex >= 0 ) {
579
+
580
+ matId = attributes.materialIndex;
581
+
582
+ }
583
+
584
+ break;
585
+
586
+ }
587
+
588
+ let material = null;
589
+
590
+ if ( matId >= 0 ) {
591
+
592
+ const rMaterial = materials[ matId ];
593
+ material = this._createMaterial( rMaterial, data.renderEnvironment );
594
+
595
+
596
+ }
597
+
598
+ const _object = this._createObject( obj, material );
599
+
600
+ if ( _object === undefined ) {
601
+
602
+ continue;
603
+
604
+ }
605
+
606
+ const layer = data.layers[ attributes.layerIndex ];
607
+
608
+ _object.visible = layer ? data.layers[ attributes.layerIndex ].visible : true;
609
+
610
+ if ( attributes.isInstanceDefinitionObject ) {
611
+
612
+ instanceDefinitionObjects.push( _object );
613
+
614
+ } else {
615
+
616
+ object.add( _object );
617
+
618
+ }
619
+
620
+ break;
621
+
622
+ }
623
+
624
+ }
625
+
626
+ for ( let i = 0; i < instanceDefinitions.length; i ++ ) {
627
+
628
+ const iDef = instanceDefinitions[ i ];
629
+
630
+ objects = [];
631
+
632
+ for ( let j = 0; j < iDef.attributes.objectIds.length; j ++ ) {
633
+
634
+ const objId = iDef.attributes.objectIds[ j ];
635
+
636
+ for ( let p = 0; p < instanceDefinitionObjects.length; p ++ ) {
637
+
638
+ const idoId = instanceDefinitionObjects[ p ].userData.attributes.id;
639
+
640
+ if ( objId === idoId ) {
641
+
642
+ objects.push( instanceDefinitionObjects[ p ] );
643
+
644
+ }
645
+
646
+ }
647
+
648
+ }
649
+
650
+ // Currently clones geometry and does not take advantage of instancing
651
+
652
+ for ( let j = 0; j < instanceReferences.length; j ++ ) {
653
+
654
+ const iRef = instanceReferences[ j ];
655
+
656
+ if ( iRef.geometry.parentIdefId === iDef.attributes.id ) {
657
+
658
+ const iRefObject = new Object3D();
659
+ const xf = iRef.geometry.xform.array;
660
+
661
+ const matrix = new Matrix4();
662
+ matrix.set( ...xf );
663
+
664
+ iRefObject.applyMatrix4( matrix );
665
+
666
+ for ( let p = 0; p < objects.length; p ++ ) {
667
+
668
+ iRefObject.add( objects[ p ].clone( true ) );
669
+
670
+ }
671
+
672
+ object.add( iRefObject );
673
+
674
+ }
675
+
676
+ }
677
+
678
+ }
679
+
680
+ object.userData[ 'materials' ] = this.materials;
681
+ object.name = '';
682
+ return object;
683
+
684
+ }
685
+
686
+ _createObject( obj, mat ) {
687
+
688
+ const loader = new BufferGeometryLoader();
689
+
690
+ const attributes = obj.attributes;
691
+
692
+ let geometry, material, _color, color;
693
+
694
+ switch ( obj.objectType ) {
695
+
696
+ case 'Point':
697
+ case 'PointSet':
698
+
699
+ geometry = loader.parse( obj.geometry );
700
+
701
+ if ( geometry.hasAttribute( 'color' ) ) {
702
+
703
+ material = new PointsMaterial( { vertexColors: true, sizeAttenuation: false, size: 2 } );
704
+
705
+ } else {
706
+
707
+ _color = attributes.drawColor;
708
+ color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 );
709
+ material = new PointsMaterial( { color: color, sizeAttenuation: false, size: 2 } );
710
+
711
+ }
712
+
713
+ material = this._compareMaterials( material );
714
+
715
+ const points = new Points( geometry, material );
716
+ points.userData[ 'attributes' ] = attributes;
717
+ points.userData[ 'objectType' ] = obj.objectType;
718
+
719
+ if ( attributes.name ) {
720
+
721
+ points.name = attributes.name;
722
+
723
+ }
724
+
725
+ return points;
726
+
727
+ case 'Mesh':
728
+ case 'Extrusion':
729
+ case 'SubD':
730
+ case 'Brep':
731
+
732
+ if ( obj.geometry === null ) return;
733
+
734
+ geometry = loader.parse( obj.geometry );
735
+
736
+
737
+ if ( mat === null ) {
738
+
739
+ mat = this._createMaterial();
740
+
741
+ }
742
+
743
+
744
+ if ( geometry.hasAttribute( 'color' ) ) {
745
+
746
+ mat.vertexColors = true;
747
+
748
+ }
749
+
750
+ mat = this._compareMaterials( mat );
751
+
752
+ const mesh = new Mesh( geometry, mat );
753
+ mesh.castShadow = attributes.castsShadows;
754
+ mesh.receiveShadow = attributes.receivesShadows;
755
+ mesh.userData[ 'attributes' ] = attributes;
756
+ mesh.userData[ 'objectType' ] = obj.objectType;
757
+
758
+ if ( attributes.name ) {
759
+
760
+ mesh.name = attributes.name;
761
+
762
+ }
763
+
764
+ return mesh;
765
+
766
+ case 'Curve':
767
+
768
+ geometry = loader.parse( obj.geometry );
769
+
770
+ _color = attributes.drawColor;
771
+ color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 );
772
+
773
+ material = new LineBasicMaterial( { color: color } );
774
+ material = this._compareMaterials( material );
775
+
776
+ const lines = new Line( geometry, material );
777
+ lines.userData[ 'attributes' ] = attributes;
778
+ lines.userData[ 'objectType' ] = obj.objectType;
779
+
780
+ if ( attributes.name ) {
781
+
782
+ lines.name = attributes.name;
783
+
784
+ }
785
+
786
+ return lines;
787
+
788
+ case 'TextDot':
789
+
790
+ geometry = obj.geometry;
791
+
792
+ const ctx = document.createElement( 'canvas' ).getContext( '2d' );
793
+ const font = `${geometry.fontHeight}px ${geometry.fontFace}`;
794
+ ctx.font = font;
795
+ const width = ctx.measureText( geometry.text ).width + 10;
796
+ const height = geometry.fontHeight + 10;
797
+
798
+ const r = window.devicePixelRatio;
799
+
800
+ ctx.canvas.width = width * r;
801
+ ctx.canvas.height = height * r;
802
+ ctx.canvas.style.width = width + 'px';
803
+ ctx.canvas.style.height = height + 'px';
804
+ ctx.setTransform( r, 0, 0, r, 0, 0 );
805
+
806
+ ctx.font = font;
807
+ ctx.textBaseline = 'middle';
808
+ ctx.textAlign = 'center';
809
+ color = attributes.drawColor;
810
+ ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},${color.a})`;
811
+ ctx.fillRect( 0, 0, width, height );
812
+ ctx.fillStyle = 'white';
813
+ ctx.fillText( geometry.text, width / 2, height / 2 );
814
+
815
+ const texture = new CanvasTexture( ctx.canvas );
816
+ texture.minFilter = LinearFilter;
817
+ texture.generateMipmaps = false;
818
+ texture.wrapS = ClampToEdgeWrapping;
819
+ texture.wrapT = ClampToEdgeWrapping;
820
+
821
+ material = new SpriteMaterial( { map: texture, depthTest: false } );
822
+ const sprite = new Sprite( material );
823
+ sprite.position.set( geometry.point[ 0 ], geometry.point[ 1 ], geometry.point[ 2 ] );
824
+ sprite.scale.set( width / 10, height / 10, 1.0 );
825
+
826
+ sprite.userData[ 'attributes' ] = attributes;
827
+ sprite.userData[ 'objectType' ] = obj.objectType;
828
+
829
+ if ( attributes.name ) {
830
+
831
+ sprite.name = attributes.name;
832
+
833
+ }
834
+
835
+ return sprite;
836
+
837
+ case 'Light':
838
+
839
+ geometry = obj.geometry;
840
+
841
+ let light;
842
+
843
+ switch ( geometry.lightStyle.name ) {
844
+
845
+ case 'LightStyle_WorldPoint':
846
+
847
+ light = new PointLight();
848
+ light.castShadow = attributes.castsShadows;
849
+ light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] );
850
+ light.shadow.normalBias = 0.1;
851
+
852
+ break;
853
+
854
+ case 'LightStyle_WorldSpot':
855
+
856
+ light = new SpotLight();
857
+ light.castShadow = attributes.castsShadows;
858
+ light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] );
859
+ light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] );
860
+ light.angle = geometry.spotAngleRadians;
861
+ light.shadow.normalBias = 0.1;
862
+
863
+ break;
864
+
865
+ case 'LightStyle_WorldRectangular':
866
+
867
+ light = new RectAreaLight();
868
+ const width = Math.abs( geometry.width[ 2 ] );
869
+ const height = Math.abs( geometry.length[ 0 ] );
870
+ light.position.set( geometry.location[ 0 ] - ( height / 2 ), geometry.location[ 1 ], geometry.location[ 2 ] - ( width / 2 ) );
871
+ light.height = height;
872
+ light.width = width;
873
+ light.lookAt( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] );
874
+
875
+ break;
876
+
877
+ case 'LightStyle_WorldDirectional':
878
+
879
+ light = new DirectionalLight();
880
+ light.castShadow = attributes.castsShadows;
881
+ light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] );
882
+ light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] );
883
+ light.shadow.normalBias = 0.1;
884
+
885
+ break;
886
+
887
+ case 'LightStyle_WorldLinear':
888
+ // no conversion exists, warning has already been printed to the console
889
+ break;
890
+
891
+ default:
892
+ break;
893
+
894
+ }
895
+
896
+ if ( light ) {
897
+
898
+ light.intensity = geometry.intensity;
899
+ _color = geometry.diffuse;
900
+ color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 );
901
+ light.color = color;
902
+ light.userData[ 'attributes' ] = attributes;
903
+ light.userData[ 'objectType' ] = obj.objectType;
904
+
905
+ }
906
+
907
+ return light;
908
+
909
+ }
910
+
911
+ }
912
+
913
+ _initLibrary() {
914
+
915
+ if ( ! this.libraryPending ) {
916
+
917
+ // Load rhino3dm wrapper.
918
+ const jsLoader = new FileLoader( this.manager );
919
+ jsLoader.setPath( this.libraryPath );
920
+ const jsContent = new Promise( ( resolve, reject ) => {
921
+
922
+ jsLoader.load( 'rhino3dm.js', resolve, undefined, reject );
923
+
924
+ } );
925
+
926
+ // Load rhino3dm WASM binary.
927
+ const binaryLoader = new FileLoader( this.manager );
928
+ binaryLoader.setPath( this.libraryPath );
929
+ binaryLoader.setResponseType( 'arraybuffer' );
930
+ const binaryContent = new Promise( ( resolve, reject ) => {
931
+
932
+ binaryLoader.load( 'rhino3dm.wasm', resolve, undefined, reject );
933
+
934
+ } );
935
+
936
+ this.libraryPending = Promise.all( [ jsContent, binaryContent ] )
937
+ .then( ( [ jsContent, binaryContent ] ) => {
938
+
939
+ //this.libraryBinary = binaryContent;
940
+ this.libraryConfig.wasmBinary = binaryContent;
941
+
942
+ const fn = Rhino3dmWorker.toString();
943
+
944
+ const body = [
945
+ '/* rhino3dm.js */',
946
+ jsContent,
947
+ '/* worker */',
948
+ fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )
949
+ ].join( '\n' );
950
+
951
+ this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );
952
+
953
+ } );
954
+
955
+ }
956
+
957
+ return this.libraryPending;
958
+
959
+ }
960
+
961
+ _getWorker( taskCost ) {
962
+
963
+ return this._initLibrary().then( () => {
964
+
965
+ if ( this.workerPool.length < this.workerLimit ) {
966
+
967
+ const worker = new Worker( this.workerSourceURL );
968
+
969
+ worker._callbacks = {};
970
+ worker._taskCosts = {};
971
+ worker._taskLoad = 0;
972
+
973
+ worker.postMessage( {
974
+ type: 'init',
975
+ libraryConfig: this.libraryConfig
976
+ } );
977
+
978
+ worker.onmessage = e => {
979
+
980
+ const message = e.data;
981
+
982
+ switch ( message.type ) {
983
+
984
+ case 'warning':
985
+ this.warnings.push( message.data );
986
+ console.warn( message.data );
987
+ break;
988
+
989
+ case 'decode':
990
+ worker._callbacks[ message.id ].resolve( message );
991
+ break;
992
+
993
+ case 'error':
994
+ worker._callbacks[ message.id ].reject( message );
995
+ break;
996
+
997
+ default:
998
+ console.error( 'THREE.Rhino3dmLoader: Unexpected message, "' + message.type + '"' );
999
+
1000
+ }
1001
+
1002
+ };
1003
+
1004
+ this.workerPool.push( worker );
1005
+
1006
+ } else {
1007
+
1008
+ this.workerPool.sort( function ( a, b ) {
1009
+
1010
+ return a._taskLoad > b._taskLoad ? - 1 : 1;
1011
+
1012
+ } );
1013
+
1014
+ }
1015
+
1016
+ const worker = this.workerPool[ this.workerPool.length - 1 ];
1017
+
1018
+ worker._taskLoad += taskCost;
1019
+
1020
+ return worker;
1021
+
1022
+ } );
1023
+
1024
+ }
1025
+
1026
+ _releaseTask( worker, taskID ) {
1027
+
1028
+ worker._taskLoad -= worker._taskCosts[ taskID ];
1029
+ delete worker._callbacks[ taskID ];
1030
+ delete worker._taskCosts[ taskID ];
1031
+
1032
+ }
1033
+
1034
+ /**
1035
+ * Frees internal resources. This method should be called
1036
+ * when the loader is no longer required.
1037
+ */
1038
+ dispose() {
1039
+
1040
+ for ( let i = 0; i < this.workerPool.length; ++ i ) {
1041
+
1042
+ this.workerPool[ i ].terminate();
1043
+
1044
+ }
1045
+
1046
+ this.workerPool.length = 0;
1047
+
1048
+ }
1049
+
1050
+ }
1051
+
1052
+ /* WEB WORKER */
1053
+
1054
+ function Rhino3dmWorker() {
1055
+
1056
+ let libraryPending;
1057
+ let libraryConfig;
1058
+ let rhino;
1059
+ let taskID;
1060
+
1061
+ onmessage = function ( e ) {
1062
+
1063
+ const message = e.data;
1064
+
1065
+ switch ( message.type ) {
1066
+
1067
+ case 'init':
1068
+
1069
+ libraryConfig = message.libraryConfig;
1070
+ const wasmBinary = libraryConfig.wasmBinary;
1071
+ let RhinoModule;
1072
+ libraryPending = new Promise( function ( resolve ) {
1073
+
1074
+ /* Like Basis Loader */
1075
+ RhinoModule = { wasmBinary, onRuntimeInitialized: resolve };
1076
+
1077
+ rhino3dm( RhinoModule ); // eslint-disable-line no-undef
1078
+
1079
+ } ).then( () => {
1080
+
1081
+ rhino = RhinoModule;
1082
+
1083
+ } );
1084
+
1085
+ break;
1086
+
1087
+ case 'decode':
1088
+
1089
+ taskID = message.id;
1090
+ const buffer = message.buffer;
1091
+ libraryPending.then( () => {
1092
+
1093
+ try {
1094
+
1095
+ const data = decodeObjects( rhino, buffer );
1096
+ self.postMessage( { type: 'decode', id: message.id, data } );
1097
+
1098
+ } catch ( error ) {
1099
+
1100
+ self.postMessage( { type: 'error', id: message.id, error } );
1101
+
1102
+ }
1103
+
1104
+ } );
1105
+
1106
+ break;
1107
+
1108
+ }
1109
+
1110
+ };
1111
+
1112
+ function decodeObjects( rhino, buffer ) {
1113
+
1114
+ const arr = new Uint8Array( buffer );
1115
+ const doc = rhino.File3dm.fromByteArray( arr );
1116
+
1117
+ const objects = [];
1118
+ const materials = [];
1119
+ const layers = [];
1120
+ const views = [];
1121
+ const namedViews = [];
1122
+ const groups = [];
1123
+ const strings = [];
1124
+
1125
+ //Handle objects
1126
+
1127
+ const objs = doc.objects();
1128
+ const cnt = objs.count;
1129
+
1130
+ for ( let i = 0; i < cnt; i ++ ) {
1131
+
1132
+ const _object = objs.get( i );
1133
+
1134
+ const object = extractObjectData( _object, doc );
1135
+
1136
+ _object.delete();
1137
+
1138
+ if ( object ) {
1139
+
1140
+ objects.push( object );
1141
+
1142
+ }
1143
+
1144
+ }
1145
+
1146
+ // Handle instance definitions
1147
+ // console.log( `Instance Definitions Count: ${doc.instanceDefinitions().count()}` );
1148
+
1149
+ for ( let i = 0; i < doc.instanceDefinitions().count; i ++ ) {
1150
+
1151
+ const idef = doc.instanceDefinitions().get( i );
1152
+ const idefAttributes = extractProperties( idef );
1153
+ idefAttributes.objectIds = idef.getObjectIds();
1154
+
1155
+ objects.push( { geometry: null, attributes: idefAttributes, objectType: 'InstanceDefinition' } );
1156
+
1157
+ }
1158
+
1159
+ // Handle materials
1160
+
1161
+ const textureTypes = [
1162
+ // rhino.TextureType.Bitmap,
1163
+ rhino.TextureType.Diffuse,
1164
+ rhino.TextureType.Bump,
1165
+ rhino.TextureType.Transparency,
1166
+ rhino.TextureType.Opacity,
1167
+ rhino.TextureType.Emap
1168
+ ];
1169
+
1170
+ const pbrTextureTypes = [
1171
+ rhino.TextureType.PBR_BaseColor,
1172
+ rhino.TextureType.PBR_Subsurface,
1173
+ rhino.TextureType.PBR_SubsurfaceScattering,
1174
+ rhino.TextureType.PBR_SubsurfaceScatteringRadius,
1175
+ rhino.TextureType.PBR_Metallic,
1176
+ rhino.TextureType.PBR_Specular,
1177
+ rhino.TextureType.PBR_SpecularTint,
1178
+ rhino.TextureType.PBR_Roughness,
1179
+ rhino.TextureType.PBR_Anisotropic,
1180
+ rhino.TextureType.PBR_Anisotropic_Rotation,
1181
+ rhino.TextureType.PBR_Sheen,
1182
+ rhino.TextureType.PBR_SheenTint,
1183
+ rhino.TextureType.PBR_Clearcoat,
1184
+ rhino.TextureType.PBR_ClearcoatBump,
1185
+ rhino.TextureType.PBR_ClearcoatRoughness,
1186
+ rhino.TextureType.PBR_OpacityIor,
1187
+ rhino.TextureType.PBR_OpacityRoughness,
1188
+ rhino.TextureType.PBR_Emission,
1189
+ rhino.TextureType.PBR_AmbientOcclusion,
1190
+ rhino.TextureType.PBR_Displacement
1191
+ ];
1192
+
1193
+ for ( let i = 0; i < doc.materials().count; i ++ ) {
1194
+
1195
+ const _material = doc.materials().get( i );
1196
+
1197
+ const material = extractProperties( _material );
1198
+
1199
+ const textures = [];
1200
+
1201
+ textures.push( ...extractTextures( _material, textureTypes, doc ) );
1202
+
1203
+ material.pbrSupported = _material.physicallyBased().supported;
1204
+
1205
+ if ( material.pbrSupported ) {
1206
+
1207
+ textures.push( ...extractTextures( _material, pbrTextureTypes, doc ) );
1208
+ material.pbr = extractProperties( _material.physicallyBased() );
1209
+
1210
+ }
1211
+
1212
+ material.textures = textures;
1213
+
1214
+ materials.push( material );
1215
+
1216
+ _material.delete();
1217
+
1218
+ }
1219
+
1220
+ // Handle layers
1221
+
1222
+ for ( let i = 0; i < doc.layers().count; i ++ ) {
1223
+
1224
+ const _layer = doc.layers().get( i );
1225
+ const layer = extractProperties( _layer );
1226
+
1227
+ layers.push( layer );
1228
+
1229
+ _layer.delete();
1230
+
1231
+ }
1232
+
1233
+ // Handle views
1234
+
1235
+ for ( let i = 0; i < doc.views().count; i ++ ) {
1236
+
1237
+ const _view = doc.views().get( i );
1238
+ const view = extractProperties( _view );
1239
+
1240
+ views.push( view );
1241
+
1242
+ _view.delete();
1243
+
1244
+ }
1245
+
1246
+ // Handle named views
1247
+
1248
+ for ( let i = 0; i < doc.namedViews().count; i ++ ) {
1249
+
1250
+ const _namedView = doc.namedViews().get( i );
1251
+ const namedView = extractProperties( _namedView );
1252
+
1253
+ namedViews.push( namedView );
1254
+
1255
+ _namedView.delete();
1256
+
1257
+ }
1258
+
1259
+ // Handle groups
1260
+
1261
+ for ( let i = 0; i < doc.groups().count; i ++ ) {
1262
+
1263
+ const _group = doc.groups().get( i );
1264
+ const group = extractProperties( _group );
1265
+
1266
+ groups.push( group );
1267
+
1268
+ _group.delete();
1269
+
1270
+ }
1271
+
1272
+ // Handle settings
1273
+
1274
+ const settings = extractProperties( doc.settings() );
1275
+
1276
+ //TODO: Handle other document stuff like dimstyles, instance definitions, bitmaps etc.
1277
+
1278
+ // Handle dimstyles
1279
+ // console.log( `Dimstyle Count: ${doc.dimstyles().count()}` );
1280
+
1281
+ // Handle bitmaps
1282
+ // console.log( `Bitmap Count: ${doc.bitmaps().count()}` );
1283
+
1284
+ // Handle strings
1285
+ // console.log( `Document Strings Count: ${doc.strings().count()}` );
1286
+ // Note: doc.strings().documentUserTextCount() counts any doc.strings defined in a section
1287
+ // console.log( `Document User Text Count: ${doc.strings().documentUserTextCount()}` );
1288
+
1289
+ const strings_count = doc.strings().count;
1290
+
1291
+ for ( let i = 0; i < strings_count; i ++ ) {
1292
+
1293
+ strings.push( doc.strings().get( i ) );
1294
+
1295
+ }
1296
+
1297
+ // Handle Render Environments for Material Environment
1298
+
1299
+ // get the id of the active render environment skylight, which we'll use for environment texture
1300
+ const reflectionId = doc.settings().renderSettings().renderEnvironments.reflectionId;
1301
+
1302
+ const rc = doc.renderContent();
1303
+
1304
+ let renderEnvironment = null;
1305
+
1306
+ for ( let i = 0; i < rc.count; i ++ ) {
1307
+
1308
+ const content = rc.get( i );
1309
+
1310
+ switch ( content.kind ) {
1311
+
1312
+ case 'environment':
1313
+
1314
+ const id = content.id;
1315
+
1316
+ // there could be multiple render environments in a 3dm file
1317
+ if ( id !== reflectionId ) break;
1318
+
1319
+ const renderTexture = content.findChild( 'texture' );
1320
+ const fileName = renderTexture.fileName;
1321
+
1322
+ for ( let j = 0; j < doc.embeddedFiles().count; j ++ ) {
1323
+
1324
+ const _fileName = doc.embeddedFiles().get( j ).fileName;
1325
+
1326
+ if ( fileName === _fileName ) {
1327
+
1328
+ const background = doc.getEmbeddedFileAsBase64( fileName );
1329
+ const backgroundImage = 'data:image/png;base64,' + background;
1330
+ renderEnvironment = { type: 'renderEnvironment', image: backgroundImage, name: fileName };
1331
+
1332
+ }
1333
+
1334
+ }
1335
+
1336
+ break;
1337
+
1338
+ }
1339
+
1340
+ }
1341
+
1342
+ // Handle Render Settings
1343
+
1344
+ const renderSettings = {
1345
+ ambientLight: doc.settings().renderSettings().ambientLight,
1346
+ backgroundColorTop: doc.settings().renderSettings().backgroundColorTop,
1347
+ backgroundColorBottom: doc.settings().renderSettings().backgroundColorBottom,
1348
+ useHiddenLights: doc.settings().renderSettings().useHiddenLights,
1349
+ depthCue: doc.settings().renderSettings().depthCue,
1350
+ flatShade: doc.settings().renderSettings().flatShade,
1351
+ renderBackFaces: doc.settings().renderSettings().renderBackFaces,
1352
+ renderPoints: doc.settings().renderSettings().renderPoints,
1353
+ renderCurves: doc.settings().renderSettings().renderCurves,
1354
+ renderIsoParams: doc.settings().renderSettings().renderIsoParams,
1355
+ renderMeshEdges: doc.settings().renderSettings().renderMeshEdges,
1356
+ renderAnnotations: doc.settings().renderSettings().renderAnnotations,
1357
+ useViewportSize: doc.settings().renderSettings().useViewportSize,
1358
+ scaleBackgroundToFit: doc.settings().renderSettings().scaleBackgroundToFit,
1359
+ transparentBackground: doc.settings().renderSettings().transparentBackground,
1360
+ imageDpi: doc.settings().renderSettings().imageDpi,
1361
+ shadowMapLevel: doc.settings().renderSettings().shadowMapLevel,
1362
+ namedView: doc.settings().renderSettings().namedView,
1363
+ snapShot: doc.settings().renderSettings().snapShot,
1364
+ specificViewport: doc.settings().renderSettings().specificViewport,
1365
+ groundPlane: extractProperties( doc.settings().renderSettings().groundPlane ),
1366
+ safeFrame: extractProperties( doc.settings().renderSettings().safeFrame ),
1367
+ dithering: extractProperties( doc.settings().renderSettings().dithering ),
1368
+ skylight: extractProperties( doc.settings().renderSettings().skylight ),
1369
+ linearWorkflow: extractProperties( doc.settings().renderSettings().linearWorkflow ),
1370
+ renderChannels: extractProperties( doc.settings().renderSettings().renderChannels ),
1371
+ sun: extractProperties( doc.settings().renderSettings().sun ),
1372
+ renderEnvironments: extractProperties( doc.settings().renderSettings().renderEnvironments ),
1373
+ postEffects: extractProperties( doc.settings().renderSettings().postEffects ),
1374
+
1375
+ };
1376
+
1377
+ doc.delete();
1378
+
1379
+ return { objects, materials, layers, views, namedViews, groups, strings, settings, renderSettings, renderEnvironment };
1380
+
1381
+ }
1382
+
1383
+ function extractTextures( m, tTypes, d ) {
1384
+
1385
+ const textures = [];
1386
+
1387
+ for ( let i = 0; i < tTypes.length; i ++ ) {
1388
+
1389
+ const _texture = m.getTexture( tTypes[ i ] );
1390
+ if ( _texture ) {
1391
+
1392
+ let textureType = tTypes[ i ].constructor.name;
1393
+ textureType = textureType.substring( 12, textureType.length );
1394
+ const texture = extractTextureData( _texture, textureType, d );
1395
+ textures.push( texture );
1396
+ _texture.delete();
1397
+
1398
+ }
1399
+
1400
+ }
1401
+
1402
+ return textures;
1403
+
1404
+ }
1405
+
1406
+ function extractTextureData( t, tType, d ) {
1407
+
1408
+ const texture = { type: tType };
1409
+
1410
+ const image = d.getEmbeddedFileAsBase64( t.fileName );
1411
+
1412
+ texture.wrapU = t.wrapU;
1413
+ texture.wrapV = t.wrapV;
1414
+ texture.wrapW = t.wrapW;
1415
+ const uvw = t.uvwTransform.toFloatArray( true );
1416
+
1417
+ texture.repeat = [ uvw[ 0 ], uvw[ 5 ] ];
1418
+
1419
+ if ( image ) {
1420
+
1421
+ texture.image = 'data:image/png;base64,' + image;
1422
+
1423
+ } else {
1424
+
1425
+ self.postMessage( { type: 'warning', id: taskID, data: {
1426
+ message: `THREE.3DMLoader: Image for ${tType} texture not embedded in file.`,
1427
+ type: 'missing resource'
1428
+ }
1429
+
1430
+ } );
1431
+
1432
+ texture.image = null;
1433
+
1434
+ }
1435
+
1436
+ return texture;
1437
+
1438
+ }
1439
+
1440
+ function extractObjectData( object, doc ) {
1441
+
1442
+ const _geometry = object.geometry();
1443
+ const _attributes = object.attributes();
1444
+ let objectType = _geometry.objectType;
1445
+ let geometry, attributes, position, data, mesh;
1446
+
1447
+ // skip instance definition objects
1448
+ //if( _attributes.isInstanceDefinitionObject ) { continue; }
1449
+
1450
+ // TODO: handle other geometry types
1451
+ switch ( objectType ) {
1452
+
1453
+ case rhino.ObjectType.Curve:
1454
+
1455
+ const pts = curveToPoints( _geometry, 100 );
1456
+
1457
+ position = {};
1458
+ attributes = {};
1459
+ data = {};
1460
+
1461
+ position.itemSize = 3;
1462
+ position.type = 'Float32Array';
1463
+ position.array = [];
1464
+
1465
+ for ( let j = 0; j < pts.length; j ++ ) {
1466
+
1467
+ position.array.push( pts[ j ][ 0 ] );
1468
+ position.array.push( pts[ j ][ 1 ] );
1469
+ position.array.push( pts[ j ][ 2 ] );
1470
+
1471
+ }
1472
+
1473
+ attributes.position = position;
1474
+ data.attributes = attributes;
1475
+
1476
+ geometry = { data };
1477
+
1478
+ break;
1479
+
1480
+ case rhino.ObjectType.Point:
1481
+
1482
+ const pt = _geometry.location;
1483
+
1484
+ position = {};
1485
+ const color = {};
1486
+ attributes = {};
1487
+ data = {};
1488
+
1489
+ position.itemSize = 3;
1490
+ position.type = 'Float32Array';
1491
+ position.array = [ pt[ 0 ], pt[ 1 ], pt[ 2 ] ];
1492
+
1493
+ const _color = _attributes.drawColor( doc );
1494
+
1495
+ color.itemSize = 3;
1496
+ color.type = 'Float32Array';
1497
+ color.array = [ _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ];
1498
+
1499
+ attributes.position = position;
1500
+ attributes.color = color;
1501
+ data.attributes = attributes;
1502
+
1503
+ geometry = { data };
1504
+
1505
+ break;
1506
+
1507
+ case rhino.ObjectType.PointSet:
1508
+ case rhino.ObjectType.Mesh:
1509
+
1510
+ geometry = _geometry.toThreejsJSON();
1511
+
1512
+ break;
1513
+
1514
+ case rhino.ObjectType.Brep:
1515
+
1516
+ const faces = _geometry.faces();
1517
+ mesh = new rhino.Mesh();
1518
+
1519
+ for ( let faceIndex = 0; faceIndex < faces.count; faceIndex ++ ) {
1520
+
1521
+ const face = faces.get( faceIndex );
1522
+ const _mesh = face.getMesh( rhino.MeshType.Any );
1523
+
1524
+ if ( _mesh ) {
1525
+
1526
+ mesh.append( _mesh );
1527
+ _mesh.delete();
1528
+
1529
+ }
1530
+
1531
+ face.delete();
1532
+
1533
+ }
1534
+
1535
+ if ( mesh.faces().count > 0 ) {
1536
+
1537
+ mesh.compact();
1538
+ geometry = mesh.toThreejsJSON();
1539
+ faces.delete();
1540
+
1541
+ }
1542
+
1543
+ mesh.delete();
1544
+
1545
+ break;
1546
+
1547
+ case rhino.ObjectType.Extrusion:
1548
+
1549
+ mesh = _geometry.getMesh( rhino.MeshType.Any );
1550
+
1551
+ if ( mesh ) {
1552
+
1553
+ geometry = mesh.toThreejsJSON();
1554
+ mesh.delete();
1555
+
1556
+ }
1557
+
1558
+ break;
1559
+
1560
+ case rhino.ObjectType.TextDot:
1561
+
1562
+ geometry = extractProperties( _geometry );
1563
+
1564
+ break;
1565
+
1566
+ case rhino.ObjectType.Light:
1567
+
1568
+ geometry = extractProperties( _geometry );
1569
+
1570
+ if ( geometry.lightStyle.name === 'LightStyle_WorldLinear' ) {
1571
+
1572
+ self.postMessage( { type: 'warning', id: taskID, data: {
1573
+ message: `THREE.3DMLoader: No conversion exists for ${objectType.constructor.name} ${geometry.lightStyle.name}`,
1574
+ type: 'no conversion',
1575
+ guid: _attributes.id
1576
+ }
1577
+
1578
+ } );
1579
+
1580
+ }
1581
+
1582
+ break;
1583
+
1584
+ case rhino.ObjectType.InstanceReference:
1585
+
1586
+ geometry = extractProperties( _geometry );
1587
+ geometry.xform = extractProperties( _geometry.xform );
1588
+ geometry.xform.array = _geometry.xform.toFloatArray( true );
1589
+
1590
+ break;
1591
+
1592
+ case rhino.ObjectType.SubD:
1593
+
1594
+ // TODO: precalculate resulting vertices and faces and warn on excessive results
1595
+ _geometry.subdivide( 3 );
1596
+ mesh = rhino.Mesh.createFromSubDControlNet( _geometry, false );
1597
+ if ( mesh ) {
1598
+
1599
+ geometry = mesh.toThreejsJSON();
1600
+ mesh.delete();
1601
+
1602
+ }
1603
+
1604
+ break;
1605
+
1606
+ /*
1607
+ case rhino.ObjectType.Annotation:
1608
+ case rhino.ObjectType.Hatch:
1609
+ case rhino.ObjectType.ClipPlane:
1610
+ */
1611
+
1612
+ default:
1613
+
1614
+ self.postMessage( { type: 'warning', id: taskID, data: {
1615
+ message: `THREE.3DMLoader: Conversion not implemented for ${objectType.constructor.name}`,
1616
+ type: 'not implemented',
1617
+ guid: _attributes.id
1618
+ }
1619
+
1620
+ } );
1621
+
1622
+ break;
1623
+
1624
+ }
1625
+
1626
+ if ( geometry ) {
1627
+
1628
+ attributes = extractProperties( _attributes );
1629
+ attributes.geometry = extractProperties( _geometry );
1630
+
1631
+ if ( _attributes.groupCount > 0 ) {
1632
+
1633
+ attributes.groupIds = _attributes.getGroupList();
1634
+
1635
+ }
1636
+
1637
+ if ( _attributes.userStringCount > 0 ) {
1638
+
1639
+ attributes.userStrings = _attributes.getUserStrings();
1640
+
1641
+ }
1642
+
1643
+ if ( _geometry.userStringCount > 0 ) {
1644
+
1645
+ attributes.geometry.userStrings = _geometry.getUserStrings();
1646
+
1647
+ }
1648
+
1649
+ if ( _attributes.decals().count > 0 ) {
1650
+
1651
+ self.postMessage( { type: 'warning', id: taskID, data: {
1652
+ message: 'THREE.3DMLoader: No conversion exists for the decals associated with this object.',
1653
+ type: 'no conversion',
1654
+ guid: _attributes.id
1655
+ }
1656
+
1657
+ } );
1658
+
1659
+ }
1660
+
1661
+ attributes.drawColor = _attributes.drawColor( doc );
1662
+
1663
+ objectType = objectType.constructor.name;
1664
+ objectType = objectType.substring( 11, objectType.length );
1665
+
1666
+ return { geometry, attributes, objectType };
1667
+
1668
+ } else {
1669
+
1670
+ self.postMessage( { type: 'warning', id: taskID, data: {
1671
+ message: `THREE.3DMLoader: ${objectType.constructor.name} has no associated mesh geometry.`,
1672
+ type: 'missing mesh',
1673
+ guid: _attributes.id
1674
+ }
1675
+
1676
+ } );
1677
+
1678
+ }
1679
+
1680
+ }
1681
+
1682
+ function extractProperties( object ) {
1683
+
1684
+ const result = {};
1685
+
1686
+ for ( const property in object ) {
1687
+
1688
+ const value = object[ property ];
1689
+
1690
+ if ( typeof value !== 'function' ) {
1691
+
1692
+ if ( typeof value === 'object' && value !== null && value.hasOwnProperty( 'constructor' ) ) {
1693
+
1694
+ result[ property ] = { name: value.constructor.name, value: value.value };
1695
+
1696
+ } else if ( typeof value === 'object' && value !== null ) {
1697
+
1698
+ result[ property ] = extractProperties( value );
1699
+
1700
+ } else {
1701
+
1702
+ result[ property ] = value;
1703
+
1704
+ }
1705
+
1706
+ } else {
1707
+
1708
+ // these are functions that could be called to extract more data.
1709
+ //console.log( `${property}: ${object[ property ].constructor.name}` );
1710
+
1711
+ }
1712
+
1713
+ }
1714
+
1715
+ return result;
1716
+
1717
+ }
1718
+
1719
+ function curveToPoints( curve, pointLimit ) {
1720
+
1721
+ let pointCount = pointLimit;
1722
+ let rc = [];
1723
+ const ts = [];
1724
+
1725
+ if ( curve instanceof rhino.LineCurve ) {
1726
+
1727
+ return [ curve.pointAtStart, curve.pointAtEnd ];
1728
+
1729
+ }
1730
+
1731
+ if ( curve instanceof rhino.PolylineCurve ) {
1732
+
1733
+ pointCount = curve.pointCount;
1734
+ for ( let i = 0; i < pointCount; i ++ ) {
1735
+
1736
+ rc.push( curve.point( i ) );
1737
+
1738
+ }
1739
+
1740
+ return rc;
1741
+
1742
+ }
1743
+
1744
+ if ( curve instanceof rhino.PolyCurve ) {
1745
+
1746
+ const segmentCount = curve.segmentCount;
1747
+
1748
+ for ( let i = 0; i < segmentCount; i ++ ) {
1749
+
1750
+ const segment = curve.segmentCurve( i );
1751
+ const segmentArray = curveToPoints( segment, pointCount );
1752
+ rc = rc.concat( segmentArray );
1753
+ segment.delete();
1754
+
1755
+ }
1756
+
1757
+ return rc;
1758
+
1759
+ }
1760
+
1761
+ if ( curve instanceof rhino.ArcCurve ) {
1762
+
1763
+ pointCount = Math.floor( curve.angleDegrees / 5 );
1764
+ pointCount = pointCount < 2 ? 2 : pointCount;
1765
+ // alternative to this hardcoded version: https://stackoverflow.com/a/18499923/2179399
1766
+
1767
+ }
1768
+
1769
+ if ( curve instanceof rhino.NurbsCurve && curve.degree === 1 ) {
1770
+
1771
+ const pLine = curve.tryGetPolyline();
1772
+
1773
+ for ( let i = 0; i < pLine.count; i ++ ) {
1774
+
1775
+ rc.push( pLine.get( i ) );
1776
+
1777
+ }
1778
+
1779
+ pLine.delete();
1780
+
1781
+ return rc;
1782
+
1783
+ }
1784
+
1785
+ const domain = curve.domain;
1786
+ const divisions = pointCount - 1.0;
1787
+
1788
+ for ( let j = 0; j < pointCount; j ++ ) {
1789
+
1790
+ const t = domain[ 0 ] + ( j / divisions ) * ( domain[ 1 ] - domain[ 0 ] );
1791
+
1792
+ if ( t === domain[ 0 ] || t === domain[ 1 ] ) {
1793
+
1794
+ ts.push( t );
1795
+ continue;
1796
+
1797
+ }
1798
+
1799
+ const tan = curve.tangentAt( t );
1800
+ const prevTan = curve.tangentAt( ts.slice( - 1 )[ 0 ] );
1801
+
1802
+ // Duplicated from THREE.Vector3
1803
+ // How to pass imports to worker?
1804
+
1805
+ const tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ];
1806
+ const ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ];
1807
+
1808
+ const denominator = Math.sqrt( tS * ptS );
1809
+
1810
+ let angle;
1811
+
1812
+ if ( denominator === 0 ) {
1813
+
1814
+ angle = Math.PI / 2;
1815
+
1816
+ } else {
1817
+
1818
+ const theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator;
1819
+ angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) );
1820
+
1821
+ }
1822
+
1823
+ if ( angle < 0.1 ) continue;
1824
+
1825
+ ts.push( t );
1826
+
1827
+ }
1828
+
1829
+ rc = ts.map( t => curve.pointAt( t ) );
1830
+ return rc;
1831
+
1832
+ }
1833
+
1834
+ }
1835
+
1836
+ export { Rhino3dmLoader };