three-stdlib 2.35.4 → 2.35.5

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 (514) hide show
  1. package/_polyfill/CapsuleGeometry.cjs +17 -20
  2. package/_polyfill/CapsuleGeometry.cjs.map +1 -1
  3. package/_polyfill/CapsuleGeometry.js +17 -20
  4. package/_polyfill/CapsuleGeometry.js.map +1 -1
  5. package/_polyfill/constants.cjs +1 -1
  6. package/_polyfill/constants.cjs.map +1 -1
  7. package/_polyfill/constants.js +1 -1
  8. package/_polyfill/constants.js.map +1 -1
  9. package/animation/AnimationClipCreator.cjs +13 -13
  10. package/animation/AnimationClipCreator.cjs.map +1 -1
  11. package/animation/AnimationClipCreator.js +13 -13
  12. package/animation/AnimationClipCreator.js.map +1 -1
  13. package/animation/CCDIKSolver.cjs +11 -11
  14. package/animation/CCDIKSolver.cjs.map +1 -1
  15. package/animation/CCDIKSolver.js +12 -12
  16. package/animation/CCDIKSolver.js.map +1 -1
  17. package/animation/MMDAnimationHelper.cjs +1 -1
  18. package/animation/MMDAnimationHelper.cjs.map +1 -1
  19. package/animation/MMDAnimationHelper.js +1 -1
  20. package/animation/MMDAnimationHelper.js.map +1 -1
  21. package/animation/MMDPhysics.cjs +4 -4
  22. package/animation/MMDPhysics.cjs.map +1 -1
  23. package/animation/MMDPhysics.js +4 -4
  24. package/animation/MMDPhysics.js.map +1 -1
  25. package/controls/ArcballControls.cjs +2 -2
  26. package/controls/ArcballControls.cjs.map +1 -1
  27. package/controls/ArcballControls.js +3 -3
  28. package/controls/ArcballControls.js.map +1 -1
  29. package/controls/FirstPersonControls.cjs +1 -1
  30. package/controls/FirstPersonControls.cjs.map +1 -1
  31. package/controls/FirstPersonControls.js +1 -1
  32. package/controls/FirstPersonControls.js.map +1 -1
  33. package/controls/OrbitControls.cjs +2 -2
  34. package/controls/OrbitControls.cjs.map +1 -1
  35. package/controls/OrbitControls.js +3 -3
  36. package/controls/OrbitControls.js.map +1 -1
  37. package/controls/PointerLockControls.cjs +2 -2
  38. package/controls/PointerLockControls.cjs.map +1 -1
  39. package/controls/PointerLockControls.js +3 -3
  40. package/controls/PointerLockControls.js.map +1 -1
  41. package/csm/CSM.cjs +4 -4
  42. package/csm/CSM.cjs.map +1 -1
  43. package/csm/CSM.js +5 -5
  44. package/csm/CSM.js.map +1 -1
  45. package/csm/CSMFrustum.cjs +1 -1
  46. package/csm/CSMFrustum.cjs.map +1 -1
  47. package/csm/CSMFrustum.js +2 -2
  48. package/csm/CSMFrustum.js.map +1 -1
  49. package/deprecated/Geometry.cjs +715 -722
  50. package/deprecated/Geometry.cjs.map +1 -1
  51. package/deprecated/Geometry.js +716 -723
  52. package/deprecated/Geometry.js.map +1 -1
  53. package/effects/AnaglyphEffect.cjs +1 -2
  54. package/effects/AnaglyphEffect.cjs.map +1 -1
  55. package/effects/AnaglyphEffect.js +2 -3
  56. package/effects/AnaglyphEffect.js.map +1 -1
  57. package/effects/OutlineEffect.cjs +1 -2
  58. package/effects/OutlineEffect.cjs.map +1 -1
  59. package/effects/OutlineEffect.js +2 -3
  60. package/effects/OutlineEffect.js.map +1 -1
  61. package/effects/ParallaxBarrierEffect.cjs +1 -2
  62. package/effects/ParallaxBarrierEffect.cjs.map +1 -1
  63. package/effects/ParallaxBarrierEffect.js +2 -3
  64. package/effects/ParallaxBarrierEffect.js.map +1 -1
  65. package/exporters/DRACOExporter.cjs +122 -133
  66. package/exporters/DRACOExporter.cjs.map +1 -1
  67. package/exporters/DRACOExporter.d.ts +21 -23
  68. package/exporters/DRACOExporter.js +122 -133
  69. package/exporters/DRACOExporter.js.map +1 -1
  70. package/exporters/GLTFExporter.cjs +167 -170
  71. package/exporters/GLTFExporter.cjs.map +1 -1
  72. package/exporters/GLTFExporter.js +167 -170
  73. package/exporters/GLTFExporter.js.map +1 -1
  74. package/geometries/LightningStrike.cjs +515 -524
  75. package/geometries/LightningStrike.cjs.map +1 -1
  76. package/geometries/LightningStrike.js +515 -524
  77. package/geometries/LightningStrike.js.map +1 -1
  78. package/geometries/RoundedBoxGeometry.cjs +1 -1
  79. package/geometries/RoundedBoxGeometry.cjs.map +1 -1
  80. package/geometries/RoundedBoxGeometry.js +2 -2
  81. package/geometries/RoundedBoxGeometry.js.map +1 -1
  82. package/helpers/RaycasterHelper.cjs +2 -2
  83. package/helpers/RaycasterHelper.cjs.map +1 -1
  84. package/helpers/RaycasterHelper.js +3 -3
  85. package/helpers/RaycasterHelper.js.map +1 -1
  86. package/helpers/VertexNormalsHelper.cjs +3 -3
  87. package/helpers/VertexNormalsHelper.cjs.map +1 -1
  88. package/helpers/VertexNormalsHelper.js +4 -4
  89. package/helpers/VertexNormalsHelper.js.map +1 -1
  90. package/helpers/VertexTangentsHelper.cjs +2 -2
  91. package/helpers/VertexTangentsHelper.cjs.map +1 -1
  92. package/helpers/VertexTangentsHelper.js +3 -3
  93. package/helpers/VertexTangentsHelper.js.map +1 -1
  94. package/interactive/InteractiveGroup.cjs +1 -1
  95. package/interactive/InteractiveGroup.cjs.map +1 -1
  96. package/interactive/InteractiveGroup.js +2 -2
  97. package/interactive/InteractiveGroup.js.map +1 -1
  98. package/interactive/SelectionBox.cjs +15 -15
  99. package/interactive/SelectionBox.cjs.map +1 -1
  100. package/interactive/SelectionBox.js +16 -16
  101. package/interactive/SelectionBox.js.map +1 -1
  102. package/libs/chevrotain.cjs +1 -1
  103. package/libs/chevrotain.cjs.map +1 -1
  104. package/libs/chevrotain.js +1 -1
  105. package/libs/chevrotain.js.map +1 -1
  106. package/libs/lottie.cjs +1 -1
  107. package/libs/lottie.cjs.map +1 -1
  108. package/libs/lottie.js +1 -1
  109. package/libs/lottie.js.map +1 -1
  110. package/libs/opentype.cjs +1 -1
  111. package/libs/opentype.cjs.map +1 -1
  112. package/libs/opentype.js +1 -1
  113. package/libs/opentype.js.map +1 -1
  114. package/lights/LightProbeGenerator.cjs +5 -5
  115. package/lights/LightProbeGenerator.cjs.map +1 -1
  116. package/lights/LightProbeGenerator.js +5 -5
  117. package/lights/LightProbeGenerator.js.map +1 -1
  118. package/lights/RectAreaLightUniformsLib.cjs +3 -3
  119. package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
  120. package/lights/RectAreaLightUniformsLib.js +3 -3
  121. package/lights/RectAreaLightUniformsLib.js.map +1 -1
  122. package/lines/LineMaterial.cjs +1 -2
  123. package/lines/LineMaterial.cjs.map +1 -1
  124. package/lines/LineMaterial.js +2 -3
  125. package/lines/LineMaterial.js.map +1 -1
  126. package/lines/LineSegments2.cjs +13 -13
  127. package/lines/LineSegments2.cjs.map +1 -1
  128. package/lines/LineSegments2.js +14 -14
  129. package/lines/LineSegments2.js.map +1 -1
  130. package/lines/LineSegmentsGeometry.cjs +2 -2
  131. package/lines/LineSegmentsGeometry.cjs.map +1 -1
  132. package/lines/LineSegmentsGeometry.js +3 -3
  133. package/lines/LineSegmentsGeometry.js.map +1 -1
  134. package/lines/Wireframe.cjs +3 -3
  135. package/lines/Wireframe.cjs.map +1 -1
  136. package/lines/Wireframe.js +4 -4
  137. package/lines/Wireframe.js.map +1 -1
  138. package/loaders/BasisTextureLoader.cjs +435 -441
  139. package/loaders/BasisTextureLoader.cjs.map +1 -1
  140. package/loaders/BasisTextureLoader.js +435 -441
  141. package/loaders/BasisTextureLoader.js.map +1 -1
  142. package/loaders/EXRLoader.cjs +1 -2
  143. package/loaders/EXRLoader.cjs.map +1 -1
  144. package/loaders/EXRLoader.js +2 -3
  145. package/loaders/EXRLoader.js.map +1 -1
  146. package/loaders/FBXLoader.cjs +2 -2
  147. package/loaders/FBXLoader.cjs.map +1 -1
  148. package/loaders/FBXLoader.js +2 -2
  149. package/loaders/FBXLoader.js.map +1 -1
  150. package/loaders/FontLoader.cjs +2 -2
  151. package/loaders/FontLoader.cjs.map +1 -1
  152. package/loaders/FontLoader.d.ts +2 -2
  153. package/loaders/FontLoader.js +2 -2
  154. package/loaders/FontLoader.js.map +1 -1
  155. package/loaders/GLTFLoader.cjs +2 -2
  156. package/loaders/GLTFLoader.cjs.map +1 -1
  157. package/loaders/GLTFLoader.js +2 -2
  158. package/loaders/GLTFLoader.js.map +1 -1
  159. package/loaders/KTX2Loader.cjs +374 -377
  160. package/loaders/KTX2Loader.cjs.map +1 -1
  161. package/loaders/KTX2Loader.js +374 -377
  162. package/loaders/KTX2Loader.js.map +1 -1
  163. package/loaders/LDrawLoader.cjs +4 -5
  164. package/loaders/LDrawLoader.cjs.map +1 -1
  165. package/loaders/LDrawLoader.js +5 -6
  166. package/loaders/LDrawLoader.js.map +1 -1
  167. package/loaders/OBJLoader.cjs +5 -5
  168. package/loaders/OBJLoader.cjs.map +1 -1
  169. package/loaders/OBJLoader.js +6 -6
  170. package/loaders/OBJLoader.js.map +1 -1
  171. package/loaders/PRWMLoader.cjs +43 -46
  172. package/loaders/PRWMLoader.cjs.map +1 -1
  173. package/loaders/PRWMLoader.js +43 -46
  174. package/loaders/PRWMLoader.js.map +1 -1
  175. package/loaders/SVGLoader.cjs +1688 -1694
  176. package/loaders/SVGLoader.cjs.map +1 -1
  177. package/loaders/SVGLoader.js +1688 -1694
  178. package/loaders/SVGLoader.js.map +1 -1
  179. package/loaders/XLoader.cjs +1 -1
  180. package/loaders/XLoader.cjs.map +1 -1
  181. package/loaders/XLoader.js +1 -1
  182. package/loaders/XLoader.js.map +1 -1
  183. package/math/Capsule.cjs +3 -3
  184. package/math/Capsule.cjs.map +1 -1
  185. package/math/Capsule.js +3 -3
  186. package/math/Capsule.js.map +1 -1
  187. package/math/ColorConverter.cjs +9 -9
  188. package/math/ColorConverter.cjs.map +1 -1
  189. package/math/ColorConverter.js +9 -9
  190. package/math/ColorConverter.js.map +1 -1
  191. package/math/ConvexHull.cjs +50 -53
  192. package/math/ConvexHull.cjs.map +1 -1
  193. package/math/ConvexHull.js +50 -53
  194. package/math/ConvexHull.js.map +1 -1
  195. package/math/ImprovedNoise.cjs +1 -1
  196. package/math/ImprovedNoise.cjs.map +1 -1
  197. package/math/ImprovedNoise.js +1 -1
  198. package/math/ImprovedNoise.js.map +1 -1
  199. package/math/MeshSurfaceSampler.cjs +2 -2
  200. package/math/MeshSurfaceSampler.cjs.map +1 -1
  201. package/math/MeshSurfaceSampler.js +2 -2
  202. package/math/MeshSurfaceSampler.js.map +1 -1
  203. package/math/OBB.cjs +14 -14
  204. package/math/OBB.cjs.map +1 -1
  205. package/math/OBB.js +15 -15
  206. package/math/OBB.js.map +1 -1
  207. package/math/Octree.cjs +7 -7
  208. package/math/Octree.cjs.map +1 -1
  209. package/math/Octree.js +8 -8
  210. package/math/Octree.js.map +1 -1
  211. package/misc/ConvexObjectBreaker.cjs +268 -271
  212. package/misc/ConvexObjectBreaker.cjs.map +1 -1
  213. package/misc/ConvexObjectBreaker.js +269 -272
  214. package/misc/ConvexObjectBreaker.js.map +1 -1
  215. package/misc/Gyroscope.cjs +6 -6
  216. package/misc/Gyroscope.cjs.map +1 -1
  217. package/misc/Gyroscope.js +7 -7
  218. package/misc/Gyroscope.js.map +1 -1
  219. package/modifiers/CurveModifier.cjs +1 -1
  220. package/modifiers/CurveModifier.cjs.map +1 -1
  221. package/modifiers/CurveModifier.js +2 -2
  222. package/modifiers/CurveModifier.js.map +1 -1
  223. package/modifiers/SimplifyModifier.cjs +2 -2
  224. package/modifiers/SimplifyModifier.cjs.map +1 -1
  225. package/modifiers/SimplifyModifier.js +2 -2
  226. package/modifiers/SimplifyModifier.js.map +1 -1
  227. package/objects/BatchedMesh.cjs +2 -2
  228. package/objects/BatchedMesh.cjs.map +1 -1
  229. package/objects/BatchedMesh.js +3 -3
  230. package/objects/BatchedMesh.js.map +1 -1
  231. package/objects/GroundProjectedEnv.cjs +1 -2
  232. package/objects/GroundProjectedEnv.cjs.map +1 -1
  233. package/objects/GroundProjectedEnv.js +2 -3
  234. package/objects/GroundProjectedEnv.js.map +1 -1
  235. package/objects/Lensflare.cjs +206 -209
  236. package/objects/Lensflare.cjs.map +1 -1
  237. package/objects/Lensflare.js +206 -209
  238. package/objects/Lensflare.js.map +1 -1
  239. package/objects/Reflector.cjs +146 -154
  240. package/objects/Reflector.cjs.map +1 -1
  241. package/objects/Reflector.js +146 -154
  242. package/objects/Reflector.js.map +1 -1
  243. package/objects/ReflectorForSSRPass.cjs +180 -183
  244. package/objects/ReflectorForSSRPass.cjs.map +1 -1
  245. package/objects/ReflectorForSSRPass.js +180 -183
  246. package/objects/ReflectorForSSRPass.js.map +1 -1
  247. package/objects/Refractor.cjs +161 -164
  248. package/objects/Refractor.cjs.map +1 -1
  249. package/objects/Refractor.js +161 -164
  250. package/objects/Refractor.js.map +1 -1
  251. package/objects/ShadowMesh.cjs +1 -1
  252. package/objects/ShadowMesh.cjs.map +1 -1
  253. package/objects/ShadowMesh.js +2 -2
  254. package/objects/ShadowMesh.js.map +1 -1
  255. package/objects/Sky.cjs +32 -35
  256. package/objects/Sky.cjs.map +1 -1
  257. package/objects/Sky.d.ts +6 -100
  258. package/objects/Sky.js +32 -35
  259. package/objects/Sky.js.map +1 -1
  260. package/objects/Water.cjs +1 -2
  261. package/objects/Water.cjs.map +1 -1
  262. package/objects/Water.js +2 -3
  263. package/objects/Water.js.map +1 -1
  264. package/objects/Water2.cjs +140 -143
  265. package/objects/Water2.cjs.map +1 -1
  266. package/objects/Water2.js +140 -143
  267. package/objects/Water2.js.map +1 -1
  268. package/package.json +1 -1
  269. package/postprocessing/SAOPass.cjs +264 -267
  270. package/postprocessing/SAOPass.cjs.map +1 -1
  271. package/postprocessing/SAOPass.js +264 -267
  272. package/postprocessing/SAOPass.js.map +1 -1
  273. package/postprocessing/SSAOPass.cjs +250 -253
  274. package/postprocessing/SSAOPass.cjs.map +1 -1
  275. package/postprocessing/SSAOPass.js +250 -253
  276. package/postprocessing/SSAOPass.js.map +1 -1
  277. package/postprocessing/SSRPass.cjs +376 -379
  278. package/postprocessing/SSRPass.cjs.map +1 -1
  279. package/postprocessing/SSRPass.js +376 -379
  280. package/postprocessing/SSRPass.js.map +1 -1
  281. package/postprocessing/UnrealBloomPass.cjs +202 -205
  282. package/postprocessing/UnrealBloomPass.cjs.map +1 -1
  283. package/postprocessing/UnrealBloomPass.js +202 -205
  284. package/postprocessing/UnrealBloomPass.js.map +1 -1
  285. package/renderers/CSS2DRenderer.cjs +5 -5
  286. package/renderers/CSS2DRenderer.cjs.map +1 -1
  287. package/renderers/CSS2DRenderer.js +5 -5
  288. package/renderers/CSS2DRenderer.js.map +1 -1
  289. package/renderers/CSS3DRenderer.cjs +5 -5
  290. package/renderers/CSS3DRenderer.cjs.map +1 -1
  291. package/renderers/CSS3DRenderer.js +6 -6
  292. package/renderers/CSS3DRenderer.js.map +1 -1
  293. package/shaders/ACESFilmicToneMappingShader.cjs +46 -71
  294. package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
  295. package/shaders/ACESFilmicToneMappingShader.js +46 -71
  296. package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
  297. package/shaders/AfterimageShader.cjs +22 -41
  298. package/shaders/AfterimageShader.cjs.map +1 -1
  299. package/shaders/AfterimageShader.js +22 -41
  300. package/shaders/AfterimageShader.js.map +1 -1
  301. package/shaders/BasicShader.cjs +6 -20
  302. package/shaders/BasicShader.cjs.map +1 -1
  303. package/shaders/BasicShader.js +6 -20
  304. package/shaders/BasicShader.js.map +1 -1
  305. package/shaders/BleachBypassShader.cjs +26 -46
  306. package/shaders/BleachBypassShader.cjs.map +1 -1
  307. package/shaders/BleachBypassShader.js +26 -46
  308. package/shaders/BleachBypassShader.js.map +1 -1
  309. package/shaders/BlendShader.cjs +19 -33
  310. package/shaders/BlendShader.cjs.map +1 -1
  311. package/shaders/BlendShader.js +19 -33
  312. package/shaders/BlendShader.js.map +1 -1
  313. package/shaders/BokehShader.cjs +90 -117
  314. package/shaders/BokehShader.cjs.map +1 -1
  315. package/shaders/BokehShader.js +90 -117
  316. package/shaders/BokehShader.js.map +1 -1
  317. package/shaders/BokehShader2.cjs +232 -333
  318. package/shaders/BokehShader2.cjs.map +1 -1
  319. package/shaders/BokehShader2.js +232 -333
  320. package/shaders/BokehShader2.js.map +1 -1
  321. package/shaders/BrightnessContrastShader.cjs +22 -38
  322. package/shaders/BrightnessContrastShader.cjs.map +1 -1
  323. package/shaders/BrightnessContrastShader.js +22 -38
  324. package/shaders/BrightnessContrastShader.js.map +1 -1
  325. package/shaders/ColorCorrectionShader.cjs +21 -35
  326. package/shaders/ColorCorrectionShader.cjs.map +1 -1
  327. package/shaders/ColorCorrectionShader.js +21 -35
  328. package/shaders/ColorCorrectionShader.js.map +1 -1
  329. package/shaders/ColorifyShader.cjs +19 -34
  330. package/shaders/ColorifyShader.cjs.map +1 -1
  331. package/shaders/ColorifyShader.js +19 -34
  332. package/shaders/ColorifyShader.js.map +1 -1
  333. package/shaders/ConvolutionShader.cjs +24 -43
  334. package/shaders/ConvolutionShader.cjs.map +1 -1
  335. package/shaders/ConvolutionShader.js +24 -43
  336. package/shaders/ConvolutionShader.js.map +1 -1
  337. package/shaders/CopyShader.cjs +16 -30
  338. package/shaders/CopyShader.cjs.map +1 -1
  339. package/shaders/CopyShader.js +16 -30
  340. package/shaders/CopyShader.js.map +1 -1
  341. package/shaders/DOFMipMapShader.cjs +21 -38
  342. package/shaders/DOFMipMapShader.cjs.map +1 -1
  343. package/shaders/DOFMipMapShader.js +21 -38
  344. package/shaders/DOFMipMapShader.js.map +1 -1
  345. package/shaders/DepthLimitedBlurShader.cjs +69 -98
  346. package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
  347. package/shaders/DepthLimitedBlurShader.js +69 -98
  348. package/shaders/DepthLimitedBlurShader.js.map +1 -1
  349. package/shaders/DigitalGlitch.cjs +59 -70
  350. package/shaders/DigitalGlitch.cjs.map +1 -1
  351. package/shaders/DigitalGlitch.js +59 -70
  352. package/shaders/DigitalGlitch.js.map +1 -1
  353. package/shaders/DotScreenShader.cjs +28 -49
  354. package/shaders/DotScreenShader.cjs.map +1 -1
  355. package/shaders/DotScreenShader.js +28 -49
  356. package/shaders/DotScreenShader.js.map +1 -1
  357. package/shaders/FXAAShader.cjs +1089 -1098
  358. package/shaders/FXAAShader.cjs.map +1 -1
  359. package/shaders/FXAAShader.js +1089 -1098
  360. package/shaders/FXAAShader.js.map +1 -1
  361. package/shaders/FilmShader.cjs +29 -57
  362. package/shaders/FilmShader.cjs.map +1 -1
  363. package/shaders/FilmShader.js +29 -57
  364. package/shaders/FilmShader.js.map +1 -1
  365. package/shaders/FocusShader.cjs +43 -70
  366. package/shaders/FocusShader.cjs.map +1 -1
  367. package/shaders/FocusShader.js +43 -70
  368. package/shaders/FocusShader.js.map +1 -1
  369. package/shaders/FreiChenShader.cjs +53 -74
  370. package/shaders/FreiChenShader.cjs.map +1 -1
  371. package/shaders/FreiChenShader.js +53 -74
  372. package/shaders/FreiChenShader.js.map +1 -1
  373. package/shaders/FresnelShader.cjs +35 -55
  374. package/shaders/FresnelShader.cjs.map +1 -1
  375. package/shaders/FresnelShader.js +35 -55
  376. package/shaders/FresnelShader.js.map +1 -1
  377. package/shaders/GammaCorrectionShader.cjs +19 -33
  378. package/shaders/GammaCorrectionShader.cjs.map +1 -1
  379. package/shaders/GammaCorrectionShader.js +19 -33
  380. package/shaders/GammaCorrectionShader.js.map +1 -1
  381. package/shaders/GodRaysShader.cjs +116 -193
  382. package/shaders/GodRaysShader.cjs.map +1 -1
  383. package/shaders/GodRaysShader.js +116 -193
  384. package/shaders/GodRaysShader.js.map +1 -1
  385. package/shaders/HalftoneShader.cjs +192 -270
  386. package/shaders/HalftoneShader.cjs.map +1 -1
  387. package/shaders/HalftoneShader.js +192 -270
  388. package/shaders/HalftoneShader.js.map +1 -1
  389. package/shaders/HorizontalTiltShiftShader.cjs +27 -43
  390. package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
  391. package/shaders/HorizontalTiltShiftShader.js +27 -43
  392. package/shaders/HorizontalTiltShiftShader.js.map +1 -1
  393. package/shaders/HueSaturationShader.cjs +31 -47
  394. package/shaders/HueSaturationShader.cjs.map +1 -1
  395. package/shaders/HueSaturationShader.js +31 -47
  396. package/shaders/HueSaturationShader.js.map +1 -1
  397. package/shaders/KaleidoShader.cjs +24 -37
  398. package/shaders/KaleidoShader.cjs.map +1 -1
  399. package/shaders/KaleidoShader.js +24 -37
  400. package/shaders/KaleidoShader.js.map +1 -1
  401. package/shaders/LuminosityHighPassShader.cjs +24 -43
  402. package/shaders/LuminosityHighPassShader.cjs.map +1 -1
  403. package/shaders/LuminosityHighPassShader.js +24 -43
  404. package/shaders/LuminosityHighPassShader.js.map +1 -1
  405. package/shaders/LuminosityShader.cjs +17 -34
  406. package/shaders/LuminosityShader.cjs.map +1 -1
  407. package/shaders/LuminosityShader.js +17 -34
  408. package/shaders/LuminosityShader.js.map +1 -1
  409. package/shaders/MirrorShader.cjs +26 -39
  410. package/shaders/MirrorShader.cjs.map +1 -1
  411. package/shaders/MirrorShader.js +26 -39
  412. package/shaders/MirrorShader.js.map +1 -1
  413. package/shaders/NormalMapShader.cjs +21 -36
  414. package/shaders/NormalMapShader.cjs.map +1 -1
  415. package/shaders/NormalMapShader.js +21 -36
  416. package/shaders/NormalMapShader.js.map +1 -1
  417. package/shaders/ParallaxShader.cjs +97 -147
  418. package/shaders/ParallaxShader.cjs.map +1 -1
  419. package/shaders/ParallaxShader.js +97 -147
  420. package/shaders/ParallaxShader.js.map +1 -1
  421. package/shaders/PixelShader.cjs +18 -31
  422. package/shaders/PixelShader.cjs.map +1 -1
  423. package/shaders/PixelShader.js +18 -31
  424. package/shaders/PixelShader.js.map +1 -1
  425. package/shaders/RGBShiftShader.cjs +20 -33
  426. package/shaders/RGBShiftShader.cjs.map +1 -1
  427. package/shaders/RGBShiftShader.js +20 -33
  428. package/shaders/RGBShiftShader.js.map +1 -1
  429. package/shaders/SAOShader.cjs +117 -154
  430. package/shaders/SAOShader.cjs.map +1 -1
  431. package/shaders/SAOShader.js +117 -154
  432. package/shaders/SAOShader.js.map +1 -1
  433. package/shaders/SMAAShader.cjs +270 -358
  434. package/shaders/SMAAShader.cjs.map +1 -1
  435. package/shaders/SMAAShader.js +270 -358
  436. package/shaders/SMAAShader.js.map +1 -1
  437. package/shaders/SSAOShader.cjs +142 -236
  438. package/shaders/SSAOShader.cjs.map +1 -1
  439. package/shaders/SSAOShader.js +142 -236
  440. package/shaders/SSAOShader.js.map +1 -1
  441. package/shaders/SSRShader.cjs +4 -4
  442. package/shaders/SSRShader.cjs.map +1 -1
  443. package/shaders/SSRShader.js +4 -4
  444. package/shaders/SSRShader.js.map +1 -1
  445. package/shaders/SepiaShader.cjs +20 -36
  446. package/shaders/SepiaShader.cjs.map +1 -1
  447. package/shaders/SepiaShader.js +20 -36
  448. package/shaders/SepiaShader.js.map +1 -1
  449. package/shaders/SobelOperatorShader.cjs +37 -64
  450. package/shaders/SobelOperatorShader.cjs.map +1 -1
  451. package/shaders/SobelOperatorShader.js +37 -64
  452. package/shaders/SobelOperatorShader.js.map +1 -1
  453. package/shaders/TechnicolorShader.cjs +16 -29
  454. package/shaders/TechnicolorShader.cjs.map +1 -1
  455. package/shaders/TechnicolorShader.js +16 -29
  456. package/shaders/TechnicolorShader.js.map +1 -1
  457. package/shaders/ToneMapShader.cjs +35 -55
  458. package/shaders/ToneMapShader.cjs.map +1 -1
  459. package/shaders/ToneMapShader.js +35 -55
  460. package/shaders/ToneMapShader.js.map +1 -1
  461. package/shaders/ToonShader.cjs +165 -275
  462. package/shaders/ToonShader.cjs.map +1 -1
  463. package/shaders/ToonShader.js +165 -275
  464. package/shaders/ToonShader.js.map +1 -1
  465. package/shaders/TriangleBlurShader.cjs +27 -50
  466. package/shaders/TriangleBlurShader.cjs.map +1 -1
  467. package/shaders/TriangleBlurShader.js +27 -50
  468. package/shaders/TriangleBlurShader.js.map +1 -1
  469. package/shaders/UnpackDepthRGBAShader.cjs +17 -32
  470. package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
  471. package/shaders/UnpackDepthRGBAShader.js +17 -32
  472. package/shaders/UnpackDepthRGBAShader.js.map +1 -1
  473. package/shaders/VerticalTiltShiftShader.cjs +27 -43
  474. package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
  475. package/shaders/VerticalTiltShiftShader.js +27 -43
  476. package/shaders/VerticalTiltShiftShader.js.map +1 -1
  477. package/shaders/VignetteShader.cjs +27 -43
  478. package/shaders/VignetteShader.cjs.map +1 -1
  479. package/shaders/VignetteShader.js +27 -43
  480. package/shaders/VignetteShader.js.map +1 -1
  481. package/shaders/VolumeShader.cjs +213 -264
  482. package/shaders/VolumeShader.cjs.map +1 -1
  483. package/shaders/VolumeShader.js +213 -264
  484. package/shaders/VolumeShader.js.map +1 -1
  485. package/shaders/WaterRefractionShader.cjs +35 -63
  486. package/shaders/WaterRefractionShader.cjs.map +1 -1
  487. package/shaders/WaterRefractionShader.js +35 -63
  488. package/shaders/WaterRefractionShader.js.map +1 -1
  489. package/utils/GeometryCompressionUtils.cjs +1 -2
  490. package/utils/GeometryCompressionUtils.cjs.map +1 -1
  491. package/utils/GeometryCompressionUtils.js +2 -3
  492. package/utils/GeometryCompressionUtils.js.map +1 -1
  493. package/utils/RoughnessMipmapper.cjs +3 -3
  494. package/utils/RoughnessMipmapper.cjs.map +1 -1
  495. package/utils/RoughnessMipmapper.js +4 -4
  496. package/utils/RoughnessMipmapper.js.map +1 -1
  497. package/webxr/ARButton.cjs +106 -109
  498. package/webxr/ARButton.cjs.map +1 -1
  499. package/webxr/ARButton.d.ts +3 -4
  500. package/webxr/ARButton.js +106 -109
  501. package/webxr/ARButton.js.map +1 -1
  502. package/webxr/OculusHandPointerModel.cjs +2 -2
  503. package/webxr/OculusHandPointerModel.cjs.map +1 -1
  504. package/webxr/OculusHandPointerModel.js +2 -2
  505. package/webxr/OculusHandPointerModel.js.map +1 -1
  506. package/webxr/VRButton.cjs +95 -98
  507. package/webxr/VRButton.cjs.map +1 -1
  508. package/webxr/VRButton.d.ts +5 -6
  509. package/webxr/VRButton.js +95 -98
  510. package/webxr/VRButton.js.map +1 -1
  511. package/webxr/XRHandPrimitiveModel.cjs +2 -2
  512. package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
  513. package/webxr/XRHandPrimitiveModel.js +3 -3
  514. package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ConvexObjectBreaker.cjs","sources":["../../src/misc/ConvexObjectBreaker.js"],"sourcesContent":["import { Line3, Mesh, Plane, Vector3 } from 'three'\nimport { ConvexGeometry } from '../geometries/ConvexGeometry'\n\n/**\n * @fileoverview This class can be used to subdivide a convex Geometry object into pieces.\n *\n * Usage:\n *\n * Use the function prepareBreakableObject to prepare a Mesh object to be broken.\n *\n * Then, call the various functions to subdivide the object (subdivideByImpact, cutByPlane)\n *\n * Sub-objects that are product of subdivision don't need prepareBreakableObject to be called on them.\n *\n * Requisites for the object:\n *\n * - Mesh object must have a buffer geometry and a material\n *\n * - Vertex normals must be planar (not smoothed)\n *\n * - The geometry must be convex (this is not checked in the library). You can create convex\n * geometries with ConvexGeometry. The BoxGeometry, SphereGeometry and other convex primitives\n * can also be used.\n *\n * Note: This lib adds member variables to object's userData member (see prepareBreakableObject function)\n * Use with caution and read the code when using with other libs.\n *\n * @param {double} minSizeForBreak Min size a debris can have to break.\n * @param {double} smallDelta Max distance to consider that a point belongs to a plane.\n *\n */\n\nconst _v1 = /* @__PURE__ */ new Vector3()\n\nconst ConvexObjectBreaker = /* @__PURE__ */ (() => {\n class ConvexObjectBreaker {\n constructor(minSizeForBreak = 1.4, smallDelta = 0.0001) {\n this.minSizeForBreak = minSizeForBreak\n this.smallDelta = smallDelta\n\n this.tempLine1 = new Line3()\n this.tempPlane1 = new Plane()\n this.tempPlane2 = new Plane()\n this.tempPlane_Cut = new Plane()\n this.tempCM1 = new Vector3()\n this.tempCM2 = new Vector3()\n this.tempVector3 = new Vector3()\n this.tempVector3_2 = new Vector3()\n this.tempVector3_3 = new Vector3()\n this.tempVector3_P0 = new Vector3()\n this.tempVector3_P1 = new Vector3()\n this.tempVector3_P2 = new Vector3()\n this.tempVector3_N0 = new Vector3()\n this.tempVector3_N1 = new Vector3()\n this.tempVector3_AB = new Vector3()\n this.tempVector3_CB = new Vector3()\n this.tempResultObjects = { object1: null, object2: null }\n\n this.segments = []\n const n = 30 * 30\n for (let i = 0; i < n; i++) this.segments[i] = false\n }\n\n prepareBreakableObject(object, mass, velocity, angularVelocity, breakable) {\n // object is a Object3d (normally a Mesh), must have a buffer geometry, and it must be convex.\n // Its material property is propagated to its children (sub-pieces)\n // mass must be > 0\n\n const userData = object.userData\n userData.mass = mass\n userData.velocity = velocity.clone()\n userData.angularVelocity = angularVelocity.clone()\n userData.breakable = breakable\n }\n\n /*\n * @param {int} maxRadialIterations Iterations for radial cuts.\n * @param {int} maxRandomIterations Max random iterations for not-radial cuts\n *\n * Returns the array of pieces\n */\n subdivideByImpact(object, pointOfImpact, normal, maxRadialIterations, maxRandomIterations) {\n const debris = []\n\n const tempPlane1 = this.tempPlane1\n const tempPlane2 = this.tempPlane2\n\n this.tempVector3.addVectors(pointOfImpact, normal)\n tempPlane1.setFromCoplanarPoints(pointOfImpact, object.position, this.tempVector3)\n\n const maxTotalIterations = maxRandomIterations + maxRadialIterations\n\n const scope = this\n\n function subdivideRadial(subObject, startAngle, endAngle, numIterations) {\n if (Math.random() < numIterations * 0.05 || numIterations > maxTotalIterations) {\n debris.push(subObject)\n\n return\n }\n\n let angle = Math.PI\n\n if (numIterations === 0) {\n tempPlane2.normal.copy(tempPlane1.normal)\n tempPlane2.constant = tempPlane1.constant\n } else {\n if (numIterations <= maxRadialIterations) {\n angle = (endAngle - startAngle) * (0.2 + 0.6 * Math.random()) + startAngle\n\n // Rotate tempPlane2 at impact point around normal axis and the angle\n scope.tempVector3_2\n .copy(object.position)\n .sub(pointOfImpact)\n .applyAxisAngle(normal, angle)\n .add(pointOfImpact)\n tempPlane2.setFromCoplanarPoints(pointOfImpact, scope.tempVector3, scope.tempVector3_2)\n } else {\n angle = (0.5 * (numIterations & 1) + 0.2 * (2 - Math.random())) * Math.PI\n\n // Rotate tempPlane2 at object position around normal axis and the angle\n scope.tempVector3_2\n .copy(pointOfImpact)\n .sub(subObject.position)\n .applyAxisAngle(normal, angle)\n .add(subObject.position)\n scope.tempVector3_3.copy(normal).add(subObject.position)\n tempPlane2.setFromCoplanarPoints(subObject.position, scope.tempVector3_3, scope.tempVector3_2)\n }\n }\n\n // Perform the cut\n scope.cutByPlane(subObject, tempPlane2, scope.tempResultObjects)\n\n const obj1 = scope.tempResultObjects.object1\n const obj2 = scope.tempResultObjects.object2\n\n if (obj1) {\n subdivideRadial(obj1, startAngle, angle, numIterations + 1)\n }\n\n if (obj2) {\n subdivideRadial(obj2, angle, endAngle, numIterations + 1)\n }\n }\n\n subdivideRadial(object, 0, 2 * Math.PI, 0)\n\n return debris\n }\n\n cutByPlane(object, plane, output) {\n // Returns breakable objects in output.object1 and output.object2 members, the resulting 2 pieces of the cut.\n // object2 can be null if the plane doesn't cut the object.\n // object1 can be null only in case of internal error\n // Returned value is number of pieces, 0 for error.\n\n const geometry = object.geometry\n const coords = geometry.attributes.position.array\n const normals = geometry.attributes.normal.array\n\n const numPoints = coords.length / 3\n let numFaces = numPoints / 3\n\n let indices = geometry.getIndex()\n\n if (indices) {\n indices = indices.array\n numFaces = indices.length / 3\n }\n\n function getVertexIndex(faceIdx, vert) {\n // vert = 0, 1 or 2.\n\n const idx = faceIdx * 3 + vert\n\n return indices ? indices[idx] : idx\n }\n\n const points1 = []\n const points2 = []\n\n const delta = this.smallDelta\n\n // Reset segments mark\n const numPointPairs = numPoints * numPoints\n for (let i = 0; i < numPointPairs; i++) this.segments[i] = false\n\n const p0 = this.tempVector3_P0\n const p1 = this.tempVector3_P1\n const n0 = this.tempVector3_N0\n const n1 = this.tempVector3_N1\n\n // Iterate through the faces to mark edges shared by coplanar faces\n for (let i = 0; i < numFaces - 1; i++) {\n const a1 = getVertexIndex(i, 0)\n const b1 = getVertexIndex(i, 1)\n const c1 = getVertexIndex(i, 2)\n\n // Assuming all 3 vertices have the same normal\n n0.set(normals[a1], normals[a1] + 1, normals[a1] + 2)\n\n for (let j = i + 1; j < numFaces; j++) {\n const a2 = getVertexIndex(j, 0)\n const b2 = getVertexIndex(j, 1)\n const c2 = getVertexIndex(j, 2)\n\n // Assuming all 3 vertices have the same normal\n n1.set(normals[a2], normals[a2] + 1, normals[a2] + 2)\n\n const coplanar = 1 - n0.dot(n1) < delta\n\n if (coplanar) {\n if (a1 === a2 || a1 === b2 || a1 === c2) {\n if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[a1 * numPoints + b1] = true\n this.segments[b1 * numPoints + a1] = true\n } else {\n this.segments[c1 * numPoints + a1] = true\n this.segments[a1 * numPoints + c1] = true\n }\n } else if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[c1 * numPoints + b1] = true\n this.segments[b1 * numPoints + c1] = true\n }\n }\n }\n }\n\n // Transform the plane to object local space\n const localPlane = this.tempPlane_Cut\n object.updateMatrix()\n ConvexObjectBreaker.transformPlaneToLocalSpace(plane, object.matrix, localPlane)\n\n // Iterate through the faces adding points to both pieces\n for (let i = 0; i < numFaces; i++) {\n const va = getVertexIndex(i, 0)\n const vb = getVertexIndex(i, 1)\n const vc = getVertexIndex(i, 2)\n\n for (let segment = 0; segment < 3; segment++) {\n const i0 = segment === 0 ? va : segment === 1 ? vb : vc\n const i1 = segment === 0 ? vb : segment === 1 ? vc : va\n\n const segmentState = this.segments[i0 * numPoints + i1]\n\n if (segmentState) continue // The segment already has been processed in another face\n\n // Mark segment as processed (also inverted segment)\n this.segments[i0 * numPoints + i1] = true\n this.segments[i1 * numPoints + i0] = true\n\n p0.set(coords[3 * i0], coords[3 * i0 + 1], coords[3 * i0 + 2])\n p1.set(coords[3 * i1], coords[3 * i1 + 1], coords[3 * i1 + 2])\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark0 = 0\n\n let d = localPlane.distanceToPoint(p0)\n\n if (d > delta) {\n mark0 = 2\n points2.push(p0.clone())\n } else if (d < -delta) {\n mark0 = 1\n points1.push(p0.clone())\n } else {\n mark0 = 3\n points1.push(p0.clone())\n points2.push(p0.clone())\n }\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark1 = 0\n\n d = localPlane.distanceToPoint(p1)\n\n if (d > delta) {\n mark1 = 2\n points2.push(p1.clone())\n } else if (d < -delta) {\n mark1 = 1\n points1.push(p1.clone())\n } else {\n mark1 = 3\n points1.push(p1.clone())\n points2.push(p1.clone())\n }\n\n if ((mark0 === 1 && mark1 === 2) || (mark0 === 2 && mark1 === 1)) {\n // Intersection of segment with the plane\n\n this.tempLine1.start.copy(p0)\n this.tempLine1.end.copy(p1)\n\n let intersection = new Vector3()\n intersection = localPlane.intersectLine(this.tempLine1, intersection)\n\n if (intersection === null) {\n // Shouldn't happen\n console.error('Internal error: segment does not intersect plane.')\n output.segmentedObject1 = null\n output.segmentedObject2 = null\n return 0\n }\n\n points1.push(intersection)\n points2.push(intersection.clone())\n }\n }\n }\n\n // Calculate debris mass (very fast and imprecise):\n const newMass = object.userData.mass * 0.5\n\n // Calculate debris Center of Mass (again fast and imprecise)\n this.tempCM1.set(0, 0, 0)\n let radius1 = 0\n const numPoints1 = points1.length\n\n if (numPoints1 > 0) {\n for (let i = 0; i < numPoints1; i++) this.tempCM1.add(points1[i])\n\n this.tempCM1.divideScalar(numPoints1)\n for (let i = 0; i < numPoints1; i++) {\n const p = points1[i]\n p.sub(this.tempCM1)\n radius1 = Math.max(radius1, p.x, p.y, p.z)\n }\n\n this.tempCM1.add(object.position)\n }\n\n this.tempCM2.set(0, 0, 0)\n let radius2 = 0\n const numPoints2 = points2.length\n if (numPoints2 > 0) {\n for (let i = 0; i < numPoints2; i++) this.tempCM2.add(points2[i])\n\n this.tempCM2.divideScalar(numPoints2)\n for (let i = 0; i < numPoints2; i++) {\n const p = points2[i]\n p.sub(this.tempCM2)\n radius2 = Math.max(radius2, p.x, p.y, p.z)\n }\n\n this.tempCM2.add(object.position)\n }\n\n let object1 = null\n let object2 = null\n\n let numObjects = 0\n\n if (numPoints1 > 4) {\n object1 = new Mesh(new ConvexGeometry(points1), object.material)\n object1.position.copy(this.tempCM1)\n object1.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object1,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius1 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n if (numPoints2 > 4) {\n object2 = new Mesh(new ConvexGeometry(points2), object.material)\n object2.position.copy(this.tempCM2)\n object2.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object2,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius2 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n output.object1 = object1\n output.object2 = object2\n\n return numObjects\n }\n\n static transformFreeVector(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[4] * y + e[8] * z\n v.y = e[1] * x + e[5] * y + e[9] * z\n v.z = e[2] * x + e[6] * y + e[10] * z\n\n return v\n }\n\n static transformFreeVectorInverse(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z\n v.y = e[4] * x + e[5] * y + e[6] * z\n v.z = e[8] * x + e[9] * y + e[10] * z\n\n return v\n }\n\n static transformTiedVectorInverse(v, m) {\n // input:\n // vector interpreted as a tied (ordinary) vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z - e[12]\n v.y = e[4] * x + e[5] * y + e[6] * z - e[13]\n v.z = e[8] * x + e[9] * y + e[10] * z - e[14]\n\n return v\n }\n\n static transformPlaneToLocalSpace(plane, m, resultPlane) {\n resultPlane.normal.copy(plane.normal)\n resultPlane.constant = plane.constant\n\n const referencePoint = ConvexObjectBreaker.transformTiedVectorInverse(plane.coplanarPoint(_v1), m)\n\n ConvexObjectBreaker.transformFreeVectorInverse(resultPlane.normal, m)\n\n // recalculate constant (like in setFromNormalAndCoplanarPoint)\n resultPlane.constant = -referencePoint.dot(resultPlane.normal)\n }\n }\n\n return ConvexObjectBreaker\n})()\n\nexport { ConvexObjectBreaker }\n"],"names":["Vector3","ConvexObjectBreaker","Line3","Plane","Mesh","ConvexGeometry"],"mappings":"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"}
1
+ {"version":3,"file":"ConvexObjectBreaker.cjs","sources":["../../src/misc/ConvexObjectBreaker.js"],"sourcesContent":["import { Line3, Mesh, Plane, Vector3 } from 'three'\nimport { ConvexGeometry } from '../geometries/ConvexGeometry'\n\n/**\n * @fileoverview This class can be used to subdivide a convex Geometry object into pieces.\n *\n * Usage:\n *\n * Use the function prepareBreakableObject to prepare a Mesh object to be broken.\n *\n * Then, call the various functions to subdivide the object (subdivideByImpact, cutByPlane)\n *\n * Sub-objects that are product of subdivision don't need prepareBreakableObject to be called on them.\n *\n * Requisites for the object:\n *\n * - Mesh object must have a buffer geometry and a material\n *\n * - Vertex normals must be planar (not smoothed)\n *\n * - The geometry must be convex (this is not checked in the library). You can create convex\n * geometries with ConvexGeometry. The BoxGeometry, SphereGeometry and other convex primitives\n * can also be used.\n *\n * Note: This lib adds member variables to object's userData member (see prepareBreakableObject function)\n * Use with caution and read the code when using with other libs.\n *\n * @param {double} minSizeForBreak Min size a debris can have to break.\n * @param {double} smallDelta Max distance to consider that a point belongs to a plane.\n *\n */\n\nconst _v1 = new Vector3()\n\nclass ConvexObjectBreaker {\n constructor(minSizeForBreak = 1.4, smallDelta = 0.0001) {\n this.minSizeForBreak = minSizeForBreak\n this.smallDelta = smallDelta\n\n this.tempLine1 = new Line3()\n this.tempPlane1 = new Plane()\n this.tempPlane2 = new Plane()\n this.tempPlane_Cut = new Plane()\n this.tempCM1 = new Vector3()\n this.tempCM2 = new Vector3()\n this.tempVector3 = new Vector3()\n this.tempVector3_2 = new Vector3()\n this.tempVector3_3 = new Vector3()\n this.tempVector3_P0 = new Vector3()\n this.tempVector3_P1 = new Vector3()\n this.tempVector3_P2 = new Vector3()\n this.tempVector3_N0 = new Vector3()\n this.tempVector3_N1 = new Vector3()\n this.tempVector3_AB = new Vector3()\n this.tempVector3_CB = new Vector3()\n this.tempResultObjects = { object1: null, object2: null }\n\n this.segments = []\n const n = 30 * 30\n for (let i = 0; i < n; i++) this.segments[i] = false\n }\n\n prepareBreakableObject(object, mass, velocity, angularVelocity, breakable) {\n // object is a Object3d (normally a Mesh), must have a buffer geometry, and it must be convex.\n // Its material property is propagated to its children (sub-pieces)\n // mass must be > 0\n\n const userData = object.userData\n userData.mass = mass\n userData.velocity = velocity.clone()\n userData.angularVelocity = angularVelocity.clone()\n userData.breakable = breakable\n }\n\n /*\n * @param {int} maxRadialIterations Iterations for radial cuts.\n * @param {int} maxRandomIterations Max random iterations for not-radial cuts\n *\n * Returns the array of pieces\n */\n subdivideByImpact(object, pointOfImpact, normal, maxRadialIterations, maxRandomIterations) {\n const debris = []\n\n const tempPlane1 = this.tempPlane1\n const tempPlane2 = this.tempPlane2\n\n this.tempVector3.addVectors(pointOfImpact, normal)\n tempPlane1.setFromCoplanarPoints(pointOfImpact, object.position, this.tempVector3)\n\n const maxTotalIterations = maxRandomIterations + maxRadialIterations\n\n const scope = this\n\n function subdivideRadial(subObject, startAngle, endAngle, numIterations) {\n if (Math.random() < numIterations * 0.05 || numIterations > maxTotalIterations) {\n debris.push(subObject)\n\n return\n }\n\n let angle = Math.PI\n\n if (numIterations === 0) {\n tempPlane2.normal.copy(tempPlane1.normal)\n tempPlane2.constant = tempPlane1.constant\n } else {\n if (numIterations <= maxRadialIterations) {\n angle = (endAngle - startAngle) * (0.2 + 0.6 * Math.random()) + startAngle\n\n // Rotate tempPlane2 at impact point around normal axis and the angle\n scope.tempVector3_2.copy(object.position).sub(pointOfImpact).applyAxisAngle(normal, angle).add(pointOfImpact)\n tempPlane2.setFromCoplanarPoints(pointOfImpact, scope.tempVector3, scope.tempVector3_2)\n } else {\n angle = (0.5 * (numIterations & 1) + 0.2 * (2 - Math.random())) * Math.PI\n\n // Rotate tempPlane2 at object position around normal axis and the angle\n scope.tempVector3_2\n .copy(pointOfImpact)\n .sub(subObject.position)\n .applyAxisAngle(normal, angle)\n .add(subObject.position)\n scope.tempVector3_3.copy(normal).add(subObject.position)\n tempPlane2.setFromCoplanarPoints(subObject.position, scope.tempVector3_3, scope.tempVector3_2)\n }\n }\n\n // Perform the cut\n scope.cutByPlane(subObject, tempPlane2, scope.tempResultObjects)\n\n const obj1 = scope.tempResultObjects.object1\n const obj2 = scope.tempResultObjects.object2\n\n if (obj1) {\n subdivideRadial(obj1, startAngle, angle, numIterations + 1)\n }\n\n if (obj2) {\n subdivideRadial(obj2, angle, endAngle, numIterations + 1)\n }\n }\n\n subdivideRadial(object, 0, 2 * Math.PI, 0)\n\n return debris\n }\n\n cutByPlane(object, plane, output) {\n // Returns breakable objects in output.object1 and output.object2 members, the resulting 2 pieces of the cut.\n // object2 can be null if the plane doesn't cut the object.\n // object1 can be null only in case of internal error\n // Returned value is number of pieces, 0 for error.\n\n const geometry = object.geometry\n const coords = geometry.attributes.position.array\n const normals = geometry.attributes.normal.array\n\n const numPoints = coords.length / 3\n let numFaces = numPoints / 3\n\n let indices = geometry.getIndex()\n\n if (indices) {\n indices = indices.array\n numFaces = indices.length / 3\n }\n\n function getVertexIndex(faceIdx, vert) {\n // vert = 0, 1 or 2.\n\n const idx = faceIdx * 3 + vert\n\n return indices ? indices[idx] : idx\n }\n\n const points1 = []\n const points2 = []\n\n const delta = this.smallDelta\n\n // Reset segments mark\n const numPointPairs = numPoints * numPoints\n for (let i = 0; i < numPointPairs; i++) this.segments[i] = false\n\n const p0 = this.tempVector3_P0\n const p1 = this.tempVector3_P1\n const n0 = this.tempVector3_N0\n const n1 = this.tempVector3_N1\n\n // Iterate through the faces to mark edges shared by coplanar faces\n for (let i = 0; i < numFaces - 1; i++) {\n const a1 = getVertexIndex(i, 0)\n const b1 = getVertexIndex(i, 1)\n const c1 = getVertexIndex(i, 2)\n\n // Assuming all 3 vertices have the same normal\n n0.set(normals[a1], normals[a1] + 1, normals[a1] + 2)\n\n for (let j = i + 1; j < numFaces; j++) {\n const a2 = getVertexIndex(j, 0)\n const b2 = getVertexIndex(j, 1)\n const c2 = getVertexIndex(j, 2)\n\n // Assuming all 3 vertices have the same normal\n n1.set(normals[a2], normals[a2] + 1, normals[a2] + 2)\n\n const coplanar = 1 - n0.dot(n1) < delta\n\n if (coplanar) {\n if (a1 === a2 || a1 === b2 || a1 === c2) {\n if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[a1 * numPoints + b1] = true\n this.segments[b1 * numPoints + a1] = true\n } else {\n this.segments[c1 * numPoints + a1] = true\n this.segments[a1 * numPoints + c1] = true\n }\n } else if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[c1 * numPoints + b1] = true\n this.segments[b1 * numPoints + c1] = true\n }\n }\n }\n }\n\n // Transform the plane to object local space\n const localPlane = this.tempPlane_Cut\n object.updateMatrix()\n ConvexObjectBreaker.transformPlaneToLocalSpace(plane, object.matrix, localPlane)\n\n // Iterate through the faces adding points to both pieces\n for (let i = 0; i < numFaces; i++) {\n const va = getVertexIndex(i, 0)\n const vb = getVertexIndex(i, 1)\n const vc = getVertexIndex(i, 2)\n\n for (let segment = 0; segment < 3; segment++) {\n const i0 = segment === 0 ? va : segment === 1 ? vb : vc\n const i1 = segment === 0 ? vb : segment === 1 ? vc : va\n\n const segmentState = this.segments[i0 * numPoints + i1]\n\n if (segmentState) continue // The segment already has been processed in another face\n\n // Mark segment as processed (also inverted segment)\n this.segments[i0 * numPoints + i1] = true\n this.segments[i1 * numPoints + i0] = true\n\n p0.set(coords[3 * i0], coords[3 * i0 + 1], coords[3 * i0 + 2])\n p1.set(coords[3 * i1], coords[3 * i1 + 1], coords[3 * i1 + 2])\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark0 = 0\n\n let d = localPlane.distanceToPoint(p0)\n\n if (d > delta) {\n mark0 = 2\n points2.push(p0.clone())\n } else if (d < -delta) {\n mark0 = 1\n points1.push(p0.clone())\n } else {\n mark0 = 3\n points1.push(p0.clone())\n points2.push(p0.clone())\n }\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark1 = 0\n\n d = localPlane.distanceToPoint(p1)\n\n if (d > delta) {\n mark1 = 2\n points2.push(p1.clone())\n } else if (d < -delta) {\n mark1 = 1\n points1.push(p1.clone())\n } else {\n mark1 = 3\n points1.push(p1.clone())\n points2.push(p1.clone())\n }\n\n if ((mark0 === 1 && mark1 === 2) || (mark0 === 2 && mark1 === 1)) {\n // Intersection of segment with the plane\n\n this.tempLine1.start.copy(p0)\n this.tempLine1.end.copy(p1)\n\n let intersection = new Vector3()\n intersection = localPlane.intersectLine(this.tempLine1, intersection)\n\n if (intersection === null) {\n // Shouldn't happen\n console.error('Internal error: segment does not intersect plane.')\n output.segmentedObject1 = null\n output.segmentedObject2 = null\n return 0\n }\n\n points1.push(intersection)\n points2.push(intersection.clone())\n }\n }\n }\n\n // Calculate debris mass (very fast and imprecise):\n const newMass = object.userData.mass * 0.5\n\n // Calculate debris Center of Mass (again fast and imprecise)\n this.tempCM1.set(0, 0, 0)\n let radius1 = 0\n const numPoints1 = points1.length\n\n if (numPoints1 > 0) {\n for (let i = 0; i < numPoints1; i++) this.tempCM1.add(points1[i])\n\n this.tempCM1.divideScalar(numPoints1)\n for (let i = 0; i < numPoints1; i++) {\n const p = points1[i]\n p.sub(this.tempCM1)\n radius1 = Math.max(radius1, p.x, p.y, p.z)\n }\n\n this.tempCM1.add(object.position)\n }\n\n this.tempCM2.set(0, 0, 0)\n let radius2 = 0\n const numPoints2 = points2.length\n if (numPoints2 > 0) {\n for (let i = 0; i < numPoints2; i++) this.tempCM2.add(points2[i])\n\n this.tempCM2.divideScalar(numPoints2)\n for (let i = 0; i < numPoints2; i++) {\n const p = points2[i]\n p.sub(this.tempCM2)\n radius2 = Math.max(radius2, p.x, p.y, p.z)\n }\n\n this.tempCM2.add(object.position)\n }\n\n let object1 = null\n let object2 = null\n\n let numObjects = 0\n\n if (numPoints1 > 4) {\n object1 = new Mesh(new ConvexGeometry(points1), object.material)\n object1.position.copy(this.tempCM1)\n object1.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object1,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius1 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n if (numPoints2 > 4) {\n object2 = new Mesh(new ConvexGeometry(points2), object.material)\n object2.position.copy(this.tempCM2)\n object2.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object2,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius2 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n output.object1 = object1\n output.object2 = object2\n\n return numObjects\n }\n\n static transformFreeVector(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[4] * y + e[8] * z\n v.y = e[1] * x + e[5] * y + e[9] * z\n v.z = e[2] * x + e[6] * y + e[10] * z\n\n return v\n }\n\n static transformFreeVectorInverse(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z\n v.y = e[4] * x + e[5] * y + e[6] * z\n v.z = e[8] * x + e[9] * y + e[10] * z\n\n return v\n }\n\n static transformTiedVectorInverse(v, m) {\n // input:\n // vector interpreted as a tied (ordinary) vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z - e[12]\n v.y = e[4] * x + e[5] * y + e[6] * z - e[13]\n v.z = e[8] * x + e[9] * y + e[10] * z - e[14]\n\n return v\n }\n\n static transformPlaneToLocalSpace(plane, m, resultPlane) {\n resultPlane.normal.copy(plane.normal)\n resultPlane.constant = plane.constant\n\n const referencePoint = ConvexObjectBreaker.transformTiedVectorInverse(plane.coplanarPoint(_v1), m)\n\n ConvexObjectBreaker.transformFreeVectorInverse(resultPlane.normal, m)\n\n // recalculate constant (like in setFromNormalAndCoplanarPoint)\n resultPlane.constant = -referencePoint.dot(resultPlane.normal)\n }\n}\n\nexport { ConvexObjectBreaker }\n"],"names":["Vector3","Line3","Plane","Mesh","ConvexGeometry"],"mappings":"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"}