@3driseai/3drise-viewer 0.1.1

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 (547) hide show
  1. package/dist/components/AnimatedObject.d.ts +22 -0
  2. package/dist/components/AnimatedObject.d.ts.map +1 -0
  3. package/dist/components/AnimatedObject.js +65 -0
  4. package/dist/components/Bubbles.d.ts +9 -0
  5. package/dist/components/Bubbles.d.ts.map +1 -0
  6. package/dist/components/Bubbles.js +105 -0
  7. package/dist/components/CameraController.d.ts +10 -0
  8. package/dist/components/CameraController.d.ts.map +1 -0
  9. package/dist/components/CameraController.js +158 -0
  10. package/dist/components/Clouds.d.ts +9 -0
  11. package/dist/components/Clouds.d.ts.map +1 -0
  12. package/dist/components/Clouds.js +278 -0
  13. package/dist/components/Corona.d.ts +18 -0
  14. package/dist/components/Corona.d.ts.map +1 -0
  15. package/dist/components/Corona.js +12 -0
  16. package/dist/components/CreatedObject.d.ts +14 -0
  17. package/dist/components/CreatedObject.d.ts.map +1 -0
  18. package/dist/components/CreatedObject.js +103 -0
  19. package/dist/components/CustomPrimitive.d.ts +12 -0
  20. package/dist/components/CustomPrimitive.d.ts.map +1 -0
  21. package/dist/components/CustomPrimitive.js +87 -0
  22. package/dist/components/Earth.d.ts +8 -0
  23. package/dist/components/Earth.d.ts.map +1 -0
  24. package/dist/components/Earth.js +38 -0
  25. package/dist/components/EffectsGenerator.d.ts +10 -0
  26. package/dist/components/EffectsGenerator.d.ts.map +1 -0
  27. package/dist/components/EffectsGenerator.js +71 -0
  28. package/dist/components/EffectsGroup.d.ts +8 -0
  29. package/dist/components/EffectsGroup.d.ts.map +1 -0
  30. package/dist/components/EffectsGroup.js +11 -0
  31. package/dist/components/EnvironmentManager.d.ts +9 -0
  32. package/dist/components/EnvironmentManager.d.ts.map +1 -0
  33. package/dist/components/EnvironmentManager.js +74 -0
  34. package/dist/components/EnvironmentObject.d.ts +8 -0
  35. package/dist/components/EnvironmentObject.d.ts.map +1 -0
  36. package/dist/components/EnvironmentObject.js +14 -0
  37. package/dist/components/Flares.d.ts +24 -0
  38. package/dist/components/Flares.d.ts.map +1 -0
  39. package/dist/components/Flares.js +134 -0
  40. package/dist/components/Frame.d.ts +23 -0
  41. package/dist/components/Frame.d.ts.map +1 -0
  42. package/dist/components/Frame.js +55 -0
  43. package/dist/components/FrameGeometry.d.ts +10 -0
  44. package/dist/components/FrameGeometry.d.ts.map +1 -0
  45. package/dist/components/FrameGeometry.js +17 -0
  46. package/dist/components/FrameImage.d.ts +2 -0
  47. package/dist/components/FrameImage.d.ts.map +1 -0
  48. package/dist/components/FrameImage.js +15 -0
  49. package/dist/components/Galaxy.d.ts +10 -0
  50. package/dist/components/Galaxy.d.ts.map +1 -0
  51. package/dist/components/Galaxy.js +29 -0
  52. package/dist/components/GalleryLayout.d.ts +12 -0
  53. package/dist/components/GalleryLayout.d.ts.map +1 -0
  54. package/dist/components/GalleryLayout.js +20 -0
  55. package/dist/components/GeometryShape.d.ts +54 -0
  56. package/dist/components/GeometryShape.d.ts.map +1 -0
  57. package/dist/components/GeometryShape.js +318 -0
  58. package/dist/components/Glyphs.d.ts +9 -0
  59. package/dist/components/Glyphs.d.ts.map +1 -0
  60. package/dist/components/Glyphs.js +58 -0
  61. package/dist/components/GridHelper.d.ts +23 -0
  62. package/dist/components/GridHelper.d.ts.map +1 -0
  63. package/dist/components/GridHelper.js +36 -0
  64. package/dist/components/GridsGenerator.d.ts +10 -0
  65. package/dist/components/GridsGenerator.d.ts.map +1 -0
  66. package/dist/components/GridsGenerator.js +14 -0
  67. package/dist/components/HdrPlaylistRenderer.d.ts +10 -0
  68. package/dist/components/HdrPlaylistRenderer.d.ts.map +1 -0
  69. package/dist/components/HdrPlaylistRenderer.js +364 -0
  70. package/dist/components/ImageGeometry.d.ts +13 -0
  71. package/dist/components/ImageGeometry.d.ts.map +1 -0
  72. package/dist/components/ImageGeometry.js +62 -0
  73. package/dist/components/Lensflare.d.ts +12 -0
  74. package/dist/components/Lensflare.d.ts.map +1 -0
  75. package/dist/components/Lensflare.js +66 -0
  76. package/dist/components/Letter.d.ts +19 -0
  77. package/dist/components/Letter.d.ts.map +1 -0
  78. package/dist/components/Letter.js +83 -0
  79. package/dist/components/Letters.d.ts +16 -0
  80. package/dist/components/Letters.d.ts.map +1 -0
  81. package/dist/components/Letters.js +18 -0
  82. package/dist/components/LightObject.d.ts +8 -0
  83. package/dist/components/LightObject.d.ts.map +1 -0
  84. package/dist/components/LightObject.js +65 -0
  85. package/dist/components/LightsManager.d.ts +8 -0
  86. package/dist/components/LightsManager.d.ts.map +1 -0
  87. package/dist/components/LightsManager.js +104 -0
  88. package/dist/components/Lines.d.ts +9 -0
  89. package/dist/components/Lines.d.ts.map +1 -0
  90. package/dist/components/Lines.js +19 -0
  91. package/dist/components/LoadingIndicator.d.ts +10 -0
  92. package/dist/components/LoadingIndicator.d.ts.map +1 -0
  93. package/dist/components/LoadingIndicator.js +6 -0
  94. package/dist/components/MaterialLibrary.d.ts +9 -0
  95. package/dist/components/MaterialLibrary.d.ts.map +1 -0
  96. package/dist/components/MaterialLibrary.js +57 -0
  97. package/dist/components/Moon.d.ts +13 -0
  98. package/dist/components/Moon.d.ts.map +1 -0
  99. package/dist/components/Moon.js +66 -0
  100. package/dist/components/MyGrid.d.ts +15 -0
  101. package/dist/components/MyGrid.d.ts.map +1 -0
  102. package/dist/components/MyGrid.js +72 -0
  103. package/dist/components/ObjectNode.d.ts +13 -0
  104. package/dist/components/ObjectNode.d.ts.map +1 -0
  105. package/dist/components/ObjectNode.js +139 -0
  106. package/dist/components/ObjectNodeApi.d.ts +13 -0
  107. package/dist/components/ObjectNodeApi.d.ts.map +1 -0
  108. package/dist/components/ObjectNodeApi.js +18 -0
  109. package/dist/components/ObjectsRenderer.d.ts +15 -0
  110. package/dist/components/ObjectsRenderer.d.ts.map +1 -0
  111. package/dist/components/ObjectsRenderer.js +40 -0
  112. package/dist/components/ObjectsRendererApi.d.ts +31 -0
  113. package/dist/components/ObjectsRendererApi.d.ts.map +1 -0
  114. package/dist/components/ObjectsRendererApi.js +76 -0
  115. package/dist/components/Ocean.d.ts +8 -0
  116. package/dist/components/Ocean.d.ts.map +1 -0
  117. package/dist/components/Ocean.js +169 -0
  118. package/dist/components/Outline.d.ts +21 -0
  119. package/dist/components/Outline.d.ts.map +1 -0
  120. package/dist/components/Outline.js +14 -0
  121. package/dist/components/ParticlesR3f.d.ts +11 -0
  122. package/dist/components/ParticlesR3f.d.ts.map +1 -0
  123. package/dist/components/ParticlesR3f.js +110 -0
  124. package/dist/components/Path.d.ts +13 -0
  125. package/dist/components/Path.d.ts.map +1 -0
  126. package/dist/components/Path.js +41 -0
  127. package/dist/components/PathGeometry.d.ts +11 -0
  128. package/dist/components/PathGeometry.d.ts.map +1 -0
  129. package/dist/components/PathGeometry.js +109 -0
  130. package/dist/components/PathRenderer.d.ts +12 -0
  131. package/dist/components/PathRenderer.d.ts.map +1 -0
  132. package/dist/components/PathRenderer.js +36 -0
  133. package/dist/components/Planet.d.ts +16 -0
  134. package/dist/components/Planet.d.ts.map +1 -0
  135. package/dist/components/Planet.js +60 -0
  136. package/dist/components/PointCloud.d.ts +10 -0
  137. package/dist/components/PointCloud.d.ts.map +1 -0
  138. package/dist/components/PointCloud.js +113 -0
  139. package/dist/components/ProductionScene.d.ts +5 -0
  140. package/dist/components/ProductionScene.d.ts.map +1 -0
  141. package/dist/components/ProductionScene.js +7 -0
  142. package/dist/components/ProjectLoader.d.ts +16 -0
  143. package/dist/components/ProjectLoader.d.ts.map +1 -0
  144. package/dist/components/ProjectLoader.js +85 -0
  145. package/dist/components/Rain.d.ts +8 -0
  146. package/dist/components/Rain.d.ts.map +1 -0
  147. package/dist/components/Rain.js +259 -0
  148. package/dist/components/RiseLogo.d.ts +19 -0
  149. package/dist/components/RiseLogo.d.ts.map +1 -0
  150. package/dist/components/RiseLogo.js +75 -0
  151. package/dist/components/SceneBuilder.d.ts +5 -0
  152. package/dist/components/SceneBuilder.d.ts.map +1 -0
  153. package/dist/components/SceneBuilder.js +133 -0
  154. package/dist/components/SceneFog.d.ts +8 -0
  155. package/dist/components/SceneFog.d.ts.map +1 -0
  156. package/dist/components/SceneFog.js +19 -0
  157. package/dist/components/Shape.d.ts +5 -0
  158. package/dist/components/Shape.d.ts.map +1 -0
  159. package/dist/components/Shape.js +11 -0
  160. package/dist/components/ShootingStar.d.ts +16 -0
  161. package/dist/components/ShootingStar.d.ts.map +1 -0
  162. package/dist/components/ShootingStar.js +92 -0
  163. package/dist/components/ShootingStars.d.ts +8 -0
  164. package/dist/components/ShootingStars.d.ts.map +1 -0
  165. package/dist/components/ShootingStars.js +41 -0
  166. package/dist/components/SkyController.d.ts +10 -0
  167. package/dist/components/SkyController.d.ts.map +1 -0
  168. package/dist/components/SkyController.js +208 -0
  169. package/dist/components/SkyMesh.d.ts +10 -0
  170. package/dist/components/SkyMesh.d.ts.map +1 -0
  171. package/dist/components/SkyMesh.js +36 -0
  172. package/dist/components/SkySystem.d.ts +32 -0
  173. package/dist/components/SkySystem.d.ts.map +1 -0
  174. package/dist/components/SkySystem.js +46 -0
  175. package/dist/components/Skybox.d.ts +12 -0
  176. package/dist/components/Skybox.d.ts.map +1 -0
  177. package/dist/components/Skybox.js +92 -0
  178. package/dist/components/SolarSystem.d.ts +8 -0
  179. package/dist/components/SolarSystem.d.ts.map +1 -0
  180. package/dist/components/SolarSystem.js +77 -0
  181. package/dist/components/SparklesBurst.d.ts +9 -0
  182. package/dist/components/SparklesBurst.d.ts.map +1 -0
  183. package/dist/components/SparklesBurst.js +62 -0
  184. package/dist/components/Stars.d.ts +15 -0
  185. package/dist/components/Stars.d.ts.map +1 -0
  186. package/dist/components/Stars.js +250 -0
  187. package/dist/components/Sun.d.ts +15 -0
  188. package/dist/components/Sun.d.ts.map +1 -0
  189. package/dist/components/Sun.js +7 -0
  190. package/dist/components/SunCore.d.ts +18 -0
  191. package/dist/components/SunCore.d.ts.map +1 -0
  192. package/dist/components/SunCore.js +14 -0
  193. package/dist/components/SunLight.d.ts +15 -0
  194. package/dist/components/SunLight.d.ts.map +1 -0
  195. package/dist/components/SunLight.js +57 -0
  196. package/dist/components/Text2D.d.ts +9 -0
  197. package/dist/components/Text2D.d.ts.map +1 -0
  198. package/dist/components/Text2D.js +56 -0
  199. package/dist/components/Text3D.d.ts +10 -0
  200. package/dist/components/Text3D.d.ts.map +1 -0
  201. package/dist/components/Text3D.js +8 -0
  202. package/dist/components/VolumePoints.d.ts +19 -0
  203. package/dist/components/VolumePoints.d.ts.map +1 -0
  204. package/dist/components/VolumePoints.js +8 -0
  205. package/dist/components/cursor/AuraCursor.d.ts +6 -0
  206. package/dist/components/cursor/AuraCursor.d.ts.map +1 -0
  207. package/dist/components/cursor/AuraCursor.js +30 -0
  208. package/dist/components/cursor/AuroraCursor.d.ts +6 -0
  209. package/dist/components/cursor/AuroraCursor.d.ts.map +1 -0
  210. package/dist/components/cursor/AuroraCursor.js +207 -0
  211. package/dist/components/cursor/BubblesCursor.d.ts +6 -0
  212. package/dist/components/cursor/BubblesCursor.d.ts.map +1 -0
  213. package/dist/components/cursor/BubblesCursor.js +184 -0
  214. package/dist/components/cursor/CometCursor.d.ts +6 -0
  215. package/dist/components/cursor/CometCursor.d.ts.map +1 -0
  216. package/dist/components/cursor/CometCursor.js +191 -0
  217. package/dist/components/cursor/CrosshairCursor.d.ts +6 -0
  218. package/dist/components/cursor/CrosshairCursor.d.ts.map +1 -0
  219. package/dist/components/cursor/CrosshairCursor.js +142 -0
  220. package/dist/components/cursor/CursorActions.d.ts +8 -0
  221. package/dist/components/cursor/CursorActions.d.ts.map +1 -0
  222. package/dist/components/cursor/CursorActions.js +124 -0
  223. package/dist/components/cursor/CursorController.d.ts +10 -0
  224. package/dist/components/cursor/CursorController.d.ts.map +1 -0
  225. package/dist/components/cursor/CursorController.js +5 -0
  226. package/dist/components/cursor/CursorEffects.d.ts +16 -0
  227. package/dist/components/cursor/CursorEffects.d.ts.map +1 -0
  228. package/dist/components/cursor/CursorEffects.js +110 -0
  229. package/dist/components/cursor/FerrofluidCursor.d.ts +6 -0
  230. package/dist/components/cursor/FerrofluidCursor.d.ts.map +1 -0
  231. package/dist/components/cursor/FerrofluidCursor.js +102 -0
  232. package/dist/components/cursor/GlyphRingCursor.d.ts +6 -0
  233. package/dist/components/cursor/GlyphRingCursor.d.ts.map +1 -0
  234. package/dist/components/cursor/GlyphRingCursor.js +123 -0
  235. package/dist/components/cursor/LightningCursor.d.ts +6 -0
  236. package/dist/components/cursor/LightningCursor.d.ts.map +1 -0
  237. package/dist/components/cursor/LightningCursor.js +28 -0
  238. package/dist/components/cursor/LiquidMetalCursor.d.ts +6 -0
  239. package/dist/components/cursor/LiquidMetalCursor.d.ts.map +1 -0
  240. package/dist/components/cursor/LiquidMetalCursor.js +61 -0
  241. package/dist/components/cursor/OrbCursor.d.ts +6 -0
  242. package/dist/components/cursor/OrbCursor.d.ts.map +1 -0
  243. package/dist/components/cursor/OrbCursor.js +32 -0
  244. package/dist/components/cursor/PlasmaWhipCursor.d.ts +6 -0
  245. package/dist/components/cursor/PlasmaWhipCursor.d.ts.map +1 -0
  246. package/dist/components/cursor/PlasmaWhipCursor.js +134 -0
  247. package/dist/components/cursor/SparklesCursor.d.ts +6 -0
  248. package/dist/components/cursor/SparklesCursor.d.ts.map +1 -0
  249. package/dist/components/cursor/SparklesCursor.js +151 -0
  250. package/dist/components/cursor/TeslaCursor.d.ts +6 -0
  251. package/dist/components/cursor/TeslaCursor.d.ts.map +1 -0
  252. package/dist/components/cursor/TeslaCursor.js +223 -0
  253. package/dist/components/cursor/clickActions/BoltFlashAction.d.ts +11 -0
  254. package/dist/components/cursor/clickActions/BoltFlashAction.d.ts.map +1 -0
  255. package/dist/components/cursor/clickActions/BoltFlashAction.js +62 -0
  256. package/dist/components/cursor/clickActions/GlyphInscriptionAction.d.ts +11 -0
  257. package/dist/components/cursor/clickActions/GlyphInscriptionAction.d.ts.map +1 -0
  258. package/dist/components/cursor/clickActions/GlyphInscriptionAction.js +114 -0
  259. package/dist/components/cursor/clickActions/ImplosionAction.d.ts +11 -0
  260. package/dist/components/cursor/clickActions/ImplosionAction.d.ts.map +1 -0
  261. package/dist/components/cursor/clickActions/ImplosionAction.js +93 -0
  262. package/dist/components/cursor/clickActions/PhaseShiftAction.d.ts +11 -0
  263. package/dist/components/cursor/clickActions/PhaseShiftAction.d.ts.map +1 -0
  264. package/dist/components/cursor/clickActions/PhaseShiftAction.js +71 -0
  265. package/dist/components/cursor/clickActions/PlasmaBombAction.d.ts +11 -0
  266. package/dist/components/cursor/clickActions/PlasmaBombAction.d.ts.map +1 -0
  267. package/dist/components/cursor/clickActions/PlasmaBombAction.js +98 -0
  268. package/dist/components/cursor/clickActions/RealityTearAction.d.ts +11 -0
  269. package/dist/components/cursor/clickActions/RealityTearAction.d.ts.map +1 -0
  270. package/dist/components/cursor/clickActions/RealityTearAction.js +92 -0
  271. package/dist/components/cursor/clickActions/ShockwaveAction.d.ts +11 -0
  272. package/dist/components/cursor/clickActions/ShockwaveAction.d.ts.map +1 -0
  273. package/dist/components/cursor/clickActions/ShockwaveAction.js +55 -0
  274. package/dist/components/cursor/clickActions/SparklesBurstAction.d.ts +11 -0
  275. package/dist/components/cursor/clickActions/SparklesBurstAction.d.ts.map +1 -0
  276. package/dist/components/cursor/clickActions/SparklesBurstAction.js +99 -0
  277. package/dist/components/cursor/clickActions/VoronoiFractureAction.d.ts +11 -0
  278. package/dist/components/cursor/clickActions/VoronoiFractureAction.d.ts.map +1 -0
  279. package/dist/components/cursor/clickActions/VoronoiFractureAction.js +149 -0
  280. package/dist/components/effects/AuraEffect.d.ts +10 -0
  281. package/dist/components/effects/AuraEffect.d.ts.map +1 -0
  282. package/dist/components/effects/AuraEffect.js +127 -0
  283. package/dist/components/effects/AuroraEffect.d.ts +10 -0
  284. package/dist/components/effects/AuroraEffect.d.ts.map +1 -0
  285. package/dist/components/effects/AuroraEffect.js +112 -0
  286. package/dist/components/effects/BlackHoleEffect.d.ts +10 -0
  287. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -0
  288. package/dist/components/effects/BlackHoleEffect.js +193 -0
  289. package/dist/components/effects/ConstellationEffect.d.ts +10 -0
  290. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -0
  291. package/dist/components/effects/ConstellationEffect.js +189 -0
  292. package/dist/components/effects/DataStreamEffect.d.ts +10 -0
  293. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -0
  294. package/dist/components/effects/DataStreamEffect.js +138 -0
  295. package/dist/components/effects/DnaHelixEffect.d.ts +10 -0
  296. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -0
  297. package/dist/components/effects/DnaHelixEffect.js +311 -0
  298. package/dist/components/effects/Fire.d.ts +20 -0
  299. package/dist/components/effects/Fire.d.ts.map +1 -0
  300. package/dist/components/effects/Fire.js +208 -0
  301. package/dist/components/effects/FireEffect.d.ts +10 -0
  302. package/dist/components/effects/FireEffect.d.ts.map +1 -0
  303. package/dist/components/effects/FireEffect.js +194 -0
  304. package/dist/components/effects/ForcefieldEffect.d.ts +10 -0
  305. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -0
  306. package/dist/components/effects/ForcefieldEffect.js +132 -0
  307. package/dist/components/effects/HologramEffect.d.ts +10 -0
  308. package/dist/components/effects/HologramEffect.d.ts.map +1 -0
  309. package/dist/components/effects/HologramEffect.js +143 -0
  310. package/dist/components/effects/IceCrystalsEffect.d.ts +10 -0
  311. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -0
  312. package/dist/components/effects/IceCrystalsEffect.js +190 -0
  313. package/dist/components/effects/LightningEffect.d.ts +10 -0
  314. package/dist/components/effects/LightningEffect.d.ts.map +1 -0
  315. package/dist/components/effects/LightningEffect.js +240 -0
  316. package/dist/components/effects/MoleculesEffect.d.ts +10 -0
  317. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -0
  318. package/dist/components/effects/MoleculesEffect.js +173 -0
  319. package/dist/components/effects/NeuralNetworkEffect.d.ts +10 -0
  320. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -0
  321. package/dist/components/effects/NeuralNetworkEffect.js +188 -0
  322. package/dist/components/effects/OrbEffect.d.ts +10 -0
  323. package/dist/components/effects/OrbEffect.d.ts.map +1 -0
  324. package/dist/components/effects/OrbEffect.js +291 -0
  325. package/dist/components/effects/PortalEffect.d.ts +10 -0
  326. package/dist/components/effects/PortalEffect.d.ts.map +1 -0
  327. package/dist/components/effects/PortalEffect.js +191 -0
  328. package/dist/components/effects/ShockwaveEffect.d.ts +10 -0
  329. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -0
  330. package/dist/components/effects/ShockwaveEffect.js +160 -0
  331. package/dist/components/effects/SmokePlumeEffect.d.ts +10 -0
  332. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -0
  333. package/dist/components/effects/SmokePlumeEffect.js +141 -0
  334. package/dist/components/effects/SmokeRibbon.d.ts +13 -0
  335. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -0
  336. package/dist/components/effects/SmokeRibbon.js +69 -0
  337. package/dist/components/effects/SmokeRingEffect.d.ts +10 -0
  338. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -0
  339. package/dist/components/effects/SmokeRingEffect.js +158 -0
  340. package/dist/components/effects/VolumetricFogEffect.d.ts +10 -0
  341. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -0
  342. package/dist/components/effects/VolumetricFogEffect.js +111 -0
  343. package/dist/components/extractOutline.d.ts +18 -0
  344. package/dist/components/extractOutline.d.ts.map +1 -0
  345. package/dist/components/extractOutline.js +47 -0
  346. package/dist/constants.d.ts +2 -0
  347. package/dist/constants.d.ts.map +1 -0
  348. package/dist/constants.js +5 -0
  349. package/dist/hooks/index.d.ts +1 -0
  350. package/dist/hooks/index.d.ts.map +1 -0
  351. package/dist/hooks/index.js +1 -0
  352. package/dist/hooks/use3driseShader.d.ts +17 -0
  353. package/dist/hooks/use3driseShader.d.ts.map +1 -0
  354. package/dist/hooks/use3driseShader.js +100 -0
  355. package/dist/hooks/useAnimationEvents.d.ts +10 -0
  356. package/dist/hooks/useAnimationEvents.d.ts.map +1 -0
  357. package/dist/hooks/useAnimationEvents.js +49 -0
  358. package/dist/hooks/useCameraAnimation.d.ts +35 -0
  359. package/dist/hooks/useCameraAnimation.d.ts.map +1 -0
  360. package/dist/hooks/useCameraAnimation.js +277 -0
  361. package/dist/hooks/useContinuousEffects.d.ts +15 -0
  362. package/dist/hooks/useContinuousEffects.d.ts.map +1 -0
  363. package/dist/hooks/useContinuousEffects.js +177 -0
  364. package/dist/hooks/useCubeCamera.d.ts +18 -0
  365. package/dist/hooks/useCubeCamera.d.ts.map +1 -0
  366. package/dist/hooks/useCubeCamera.js +73 -0
  367. package/dist/hooks/useEnvironmentEffects.d.ts +12 -0
  368. package/dist/hooks/useEnvironmentEffects.d.ts.map +1 -0
  369. package/dist/hooks/useEnvironmentEffects.js +22 -0
  370. package/dist/hooks/useFrameAnimations.d.ts +24 -0
  371. package/dist/hooks/useFrameAnimations.d.ts.map +1 -0
  372. package/dist/hooks/useFrameAnimations.js +217 -0
  373. package/dist/hooks/useFrameEffects.d.ts +6 -0
  374. package/dist/hooks/useFrameEffects.d.ts.map +1 -0
  375. package/dist/hooks/useFrameEffects.js +19 -0
  376. package/dist/hooks/useGsapAnimation.d.ts +122 -0
  377. package/dist/hooks/useGsapAnimation.d.ts.map +1 -0
  378. package/dist/hooks/useGsapAnimation.js +316 -0
  379. package/dist/hooks/useInteraction.d.ts +12 -0
  380. package/dist/hooks/useInteraction.d.ts.map +1 -0
  381. package/dist/hooks/useInteraction.js +273 -0
  382. package/dist/hooks/useInteractionEffects.d.ts +11 -0
  383. package/dist/hooks/useInteractionEffects.d.ts.map +1 -0
  384. package/dist/hooks/useInteractionEffects.js +74 -0
  385. package/dist/hooks/useKey.d.ts +26 -0
  386. package/dist/hooks/useKey.d.ts.map +1 -0
  387. package/dist/hooks/useKey.js +73 -0
  388. package/dist/hooks/useLightAnimation.d.ts +10 -0
  389. package/dist/hooks/useLightAnimation.d.ts.map +1 -0
  390. package/dist/hooks/useLightAnimation.js +34 -0
  391. package/dist/hooks/useLightHandlers.d.ts +14 -0
  392. package/dist/hooks/useLightHandlers.d.ts.map +1 -0
  393. package/dist/hooks/useLightHandlers.js +116 -0
  394. package/dist/hooks/useLightMouseMove.d.ts +11 -0
  395. package/dist/hooks/useLightMouseMove.d.ts.map +1 -0
  396. package/dist/hooks/useLightMouseMove.js +27 -0
  397. package/dist/hooks/useLightShadow.d.ts +6 -0
  398. package/dist/hooks/useLightShadow.d.ts.map +1 -0
  399. package/dist/hooks/useLightShadow.js +63 -0
  400. package/dist/hooks/useMaterialApplication.d.ts +4 -0
  401. package/dist/hooks/useMaterialApplication.d.ts.map +1 -0
  402. package/dist/hooks/useMaterialApplication.js +157 -0
  403. package/dist/hooks/useMaterialOptions.d.ts +14 -0
  404. package/dist/hooks/useMaterialOptions.d.ts.map +1 -0
  405. package/dist/hooks/useMaterialOptions.js +118 -0
  406. package/dist/hooks/useMaterialUniforms.d.ts +18 -0
  407. package/dist/hooks/useMaterialUniforms.d.ts.map +1 -0
  408. package/dist/hooks/useMaterialUniforms.js +96 -0
  409. package/dist/hooks/useMeshController.d.ts +3 -0
  410. package/dist/hooks/useMeshController.d.ts.map +1 -0
  411. package/dist/hooks/useMeshController.js +168 -0
  412. package/dist/hooks/useMouseHandlers.d.ts +8 -0
  413. package/dist/hooks/useMouseHandlers.d.ts.map +1 -0
  414. package/dist/hooks/useMouseHandlers.js +47 -0
  415. package/dist/hooks/useNumericAnimation.d.ts +5 -0
  416. package/dist/hooks/useNumericAnimation.d.ts.map +1 -0
  417. package/dist/hooks/useNumericAnimation.js +42 -0
  418. package/dist/hooks/useObjectAnimation.d.ts +13 -0
  419. package/dist/hooks/useObjectAnimation.d.ts.map +1 -0
  420. package/dist/hooks/useObjectAnimation.js +35 -0
  421. package/dist/hooks/useObjectEdges.d.ts +3 -0
  422. package/dist/hooks/useObjectEdges.d.ts.map +1 -0
  423. package/dist/hooks/useObjectEdges.js +199 -0
  424. package/dist/hooks/useObjectEffects.d.ts +23 -0
  425. package/dist/hooks/useObjectEffects.d.ts.map +1 -0
  426. package/dist/hooks/useObjectEffects.js +162 -0
  427. package/dist/hooks/useOrbitControls.d.ts +7 -0
  428. package/dist/hooks/useOrbitControls.d.ts.map +1 -0
  429. package/dist/hooks/useOrbitControls.js +9 -0
  430. package/dist/hooks/useOutline.d.ts +9 -0
  431. package/dist/hooks/useOutline.d.ts.map +1 -0
  432. package/dist/hooks/useOutline.js +14 -0
  433. package/dist/hooks/useParticlePositions.d.ts +19 -0
  434. package/dist/hooks/useParticlePositions.d.ts.map +1 -0
  435. package/dist/hooks/useParticlePositions.js +56 -0
  436. package/dist/hooks/useParticlesColors.d.ts +14 -0
  437. package/dist/hooks/useParticlesColors.d.ts.map +1 -0
  438. package/dist/hooks/useParticlesColors.js +27 -0
  439. package/dist/hooks/useParticlesTextures.d.ts +10 -0
  440. package/dist/hooks/useParticlesTextures.d.ts.map +1 -0
  441. package/dist/hooks/useParticlesTextures.js +23 -0
  442. package/dist/hooks/usePathAnimation.d.ts +26 -0
  443. package/dist/hooks/usePathAnimation.d.ts.map +1 -0
  444. package/dist/hooks/usePathAnimation.js +130 -0
  445. package/dist/hooks/useSequenceAnimation.d.ts +14 -0
  446. package/dist/hooks/useSequenceAnimation.d.ts.map +1 -0
  447. package/dist/hooks/useSequenceAnimation.js +260 -0
  448. package/dist/hooks/useShadowApplication.d.ts +3 -0
  449. package/dist/hooks/useShadowApplication.d.ts.map +1 -0
  450. package/dist/hooks/useShadowApplication.js +31 -0
  451. package/dist/hooks/useShapeGeometry.d.ts +8 -0
  452. package/dist/hooks/useShapeGeometry.d.ts.map +1 -0
  453. package/dist/hooks/useShapeGeometry.js +12 -0
  454. package/dist/hooks/useSkyAnimation.d.ts +13 -0
  455. package/dist/hooks/useSkyAnimation.d.ts.map +1 -0
  456. package/dist/hooks/useSkyAnimation.js +36 -0
  457. package/dist/hooks/useSkySystem.d.ts +25 -0
  458. package/dist/hooks/useSkySystem.d.ts.map +1 -0
  459. package/dist/hooks/useSkySystem.js +59 -0
  460. package/dist/hooks/useSkyUniforms.d.ts +18 -0
  461. package/dist/hooks/useSkyUniforms.d.ts.map +1 -0
  462. package/dist/hooks/useSkyUniforms.js +71 -0
  463. package/dist/hooks/useTransformControls.d.ts +6 -0
  464. package/dist/hooks/useTransformControls.d.ts.map +1 -0
  465. package/dist/hooks/useTransformControls.js +111 -0
  466. package/dist/hooks/useVolumePoints.d.ts +9 -0
  467. package/dist/hooks/useVolumePoints.d.ts.map +1 -0
  468. package/dist/hooks/useVolumePoints.js +22 -0
  469. package/dist/hooks/useWaterEnvironment.d.ts +5 -0
  470. package/dist/hooks/useWaterEnvironment.d.ts.map +1 -0
  471. package/dist/hooks/useWaterEnvironment.js +27 -0
  472. package/dist/hooks/useWaterReflections.d.ts +18 -0
  473. package/dist/hooks/useWaterReflections.d.ts.map +1 -0
  474. package/dist/hooks/useWaterReflections.js +84 -0
  475. package/dist/index.d.ts +146 -0
  476. package/dist/index.d.ts.map +1 -0
  477. package/dist/index.js +119 -0
  478. package/dist/services/AnimationsManager.d.ts +33 -0
  479. package/dist/services/AnimationsManager.d.ts.map +1 -0
  480. package/dist/services/AnimationsManager.js +58 -0
  481. package/dist/services/FontManager.d.ts +32 -0
  482. package/dist/services/FontManager.d.ts.map +1 -0
  483. package/dist/services/FontManager.js +76 -0
  484. package/dist/services/TexturesManager.d.ts +17 -0
  485. package/dist/services/TexturesManager.d.ts.map +1 -0
  486. package/dist/services/TexturesManager.js +48 -0
  487. package/dist/shaders/RainMaterial.d.ts +34 -0
  488. package/dist/shaders/RainMaterial.d.ts.map +1 -0
  489. package/dist/shaders/RainMaterial.js +56 -0
  490. package/dist/shaders/ShaderEffectsMaterial.d.ts +228 -0
  491. package/dist/shaders/ShaderEffectsMaterial.d.ts.map +1 -0
  492. package/dist/shaders/ShaderEffectsMaterial.js +233 -0
  493. package/dist/shaders/ShootingStarMaterial.d.ts +14 -0
  494. package/dist/shaders/ShootingStarMaterial.d.ts.map +1 -0
  495. package/dist/shaders/ShootingStarMaterial.js +33 -0
  496. package/dist/shaders/SkyboxMaterial.d.ts +38 -0
  497. package/dist/shaders/SkyboxMaterial.d.ts.map +1 -0
  498. package/dist/shaders/SkyboxMaterial.js +57 -0
  499. package/dist/shaders/effects/EffectsVertexFunctions.glsl.d.ts +2 -0
  500. package/dist/shaders/effects/EffectsVertexFunctions.glsl.d.ts.map +1 -0
  501. package/dist/shaders/effects/EffectsVertexFunctions.glsl.js +115 -0
  502. package/dist/utils/CameraSingleton.d.ts +43 -0
  503. package/dist/utils/CameraSingleton.d.ts.map +1 -0
  504. package/dist/utils/CameraSingleton.js +199 -0
  505. package/dist/utils/anchorUtils.d.ts +10 -0
  506. package/dist/utils/anchorUtils.d.ts.map +1 -0
  507. package/dist/utils/anchorUtils.js +13 -0
  508. package/dist/utils/cursorPicking.d.ts +8 -0
  509. package/dist/utils/cursorPicking.d.ts.map +1 -0
  510. package/dist/utils/cursorPicking.js +35 -0
  511. package/dist/utils/extractOutline.d.ts +18 -0
  512. package/dist/utils/extractOutline.d.ts.map +1 -0
  513. package/dist/utils/extractOutline.js +47 -0
  514. package/dist/utils/frameAnimations.d.ts +49 -0
  515. package/dist/utils/frameAnimations.d.ts.map +1 -0
  516. package/dist/utils/frameAnimations.js +213 -0
  517. package/dist/utils/handleGenerativeEffectsAnimations.d.ts +5 -0
  518. package/dist/utils/handleGenerativeEffectsAnimations.d.ts.map +1 -0
  519. package/dist/utils/handleGenerativeEffectsAnimations.js +268 -0
  520. package/dist/utils/hasHoverAnimation.d.ts +3 -0
  521. package/dist/utils/hasHoverAnimation.d.ts.map +1 -0
  522. package/dist/utils/hasHoverAnimation.js +15 -0
  523. package/dist/utils/materialUtils.d.ts +23 -0
  524. package/dist/utils/materialUtils.d.ts.map +1 -0
  525. package/dist/utils/materialUtils.js +81 -0
  526. package/dist/utils/particleAnimations.d.ts +3 -0
  527. package/dist/utils/particleAnimations.d.ts.map +1 -0
  528. package/dist/utils/particleAnimations.js +17 -0
  529. package/dist/utils/sampleVolume.d.ts +21 -0
  530. package/dist/utils/sampleVolume.d.ts.map +1 -0
  531. package/dist/utils/sampleVolume.js +44 -0
  532. package/dist/utils/sceneQuery.d.ts +9 -0
  533. package/dist/utils/sceneQuery.d.ts.map +1 -0
  534. package/dist/utils/sceneQuery.js +22 -0
  535. package/dist/utils/shaderUtils.d.ts +6 -0
  536. package/dist/utils/shaderUtils.d.ts.map +1 -0
  537. package/dist/utils/shaderUtils.js +151 -0
  538. package/dist/utils/shapes.d.ts +74 -0
  539. package/dist/utils/shapes.d.ts.map +1 -0
  540. package/dist/utils/shapes.js +443 -0
  541. package/dist/utils/textEffects.d.ts +31 -0
  542. package/dist/utils/textEffects.d.ts.map +1 -0
  543. package/dist/utils/textEffects.js +61 -0
  544. package/dist/utils/utils3d.d.ts +7 -0
  545. package/dist/utils/utils3d.d.ts.map +1 -0
  546. package/dist/utils/utils3d.js +34 -0
  547. package/package.json +44 -0
@@ -0,0 +1,151 @@
1
+ import { Color } from 'three';
2
+ export function update3driseShaderUniforms(uniforms, effects, u_time, pointer) {
3
+ if (!uniforms)
4
+ return;
5
+ if (uniforms.u_time)
6
+ uniforms.u_time.value = u_time;
7
+ if (uniforms.u_pointer)
8
+ uniforms.u_pointer.value = pointer;
9
+ if (effects.pointer) {
10
+ const { global, vertex, fragment } = effects.pointer;
11
+ if (global) {
12
+ if (uniforms.uPointerEffectRadius)
13
+ uniforms.uPointerEffectRadius.value = global.radius;
14
+ }
15
+ if (vertex) {
16
+ if (uniforms.uRippleEnabled && vertex.ripple)
17
+ uniforms.uRippleEnabled.value = vertex.ripple.enabled;
18
+ if (uniforms.uRippleIntensity && vertex.ripple)
19
+ uniforms.uRippleIntensity.value = vertex.ripple.intensity;
20
+ if (uniforms.uRippleSpeed && vertex.ripple)
21
+ uniforms.uRippleSpeed.value = vertex.ripple.speed;
22
+ if (uniforms.uGeneralRippleFrequency && vertex.ripple)
23
+ uniforms.uGeneralRippleFrequency.value = vertex.ripple.frequency;
24
+ if (uniforms.uDisplacementEnabled && vertex.displacement)
25
+ uniforms.uDisplacementEnabled.value = vertex.displacement.enabled;
26
+ if (uniforms.uDisplacementIntensity && vertex.displacement)
27
+ uniforms.uDisplacementIntensity.value = vertex.displacement.intensity;
28
+ if (uniforms.uScaleEnabled && vertex.scale)
29
+ uniforms.uScaleEnabled.value = vertex.scale.enabled;
30
+ if (uniforms.uScaleIntensity && vertex.scale)
31
+ uniforms.uScaleIntensity.value = vertex.scale.intensity;
32
+ if (uniforms.uMinScale && vertex.scale)
33
+ uniforms.uMinScale.value = vertex.scale.minScale;
34
+ if (uniforms.uMaxScale && vertex.scale)
35
+ uniforms.uMaxScale.value = vertex.scale.maxScale;
36
+ if (uniforms.uVortexEnabled && vertex.vortex)
37
+ uniforms.uVortexEnabled.value = vertex.vortex.enabled;
38
+ if (uniforms.uVortexIntensity && vertex.vortex)
39
+ uniforms.uVortexIntensity.value = vertex.vortex.intensity;
40
+ if (uniforms.uVortexSpeed && vertex.vortex)
41
+ uniforms.uVortexSpeed.value = vertex.vortex.speed;
42
+ if (uniforms.uWaveEnabled && vertex.wave)
43
+ uniforms.uWaveEnabled.value = vertex.wave.enabled;
44
+ if (uniforms.uWaveIntensity && vertex.wave)
45
+ uniforms.uWaveIntensity.value = vertex.wave.intensity;
46
+ if (uniforms.uWaveFrequency && vertex.wave)
47
+ uniforms.uWaveFrequency.value = vertex.wave.frequency;
48
+ }
49
+ if (fragment) {
50
+ if (uniforms.uGlowEnabled && fragment.glow)
51
+ uniforms.uGlowEnabled.value = fragment.glow.enabled;
52
+ if (uniforms.uGlowIntensity && fragment.glow)
53
+ uniforms.uGlowIntensity.value = fragment.glow.intensity;
54
+ if (uniforms.uGlowColor && fragment.glow)
55
+ uniforms.uGlowColor.value = new Color(fragment.glow.color);
56
+ if (uniforms.uColorShiftEnabled && fragment.colorShift)
57
+ uniforms.uColorShiftEnabled.value = fragment.colorShift.enabled;
58
+ if (uniforms.uColorShiftIntensity && fragment.colorShift)
59
+ uniforms.uColorShiftIntensity.value = fragment.colorShift.intensity;
60
+ if (uniforms.uColorShiftTarget && fragment.colorShift)
61
+ uniforms.uColorShiftTarget.value = new Color(fragment.colorShift.targetColor);
62
+ if (uniforms.uBrightnessEnabled && fragment.brightness)
63
+ uniforms.uBrightnessEnabled.value = fragment.brightness.enabled;
64
+ if (uniforms.uBrightnessIntensity && fragment.brightness)
65
+ uniforms.uBrightnessIntensity.value = fragment.brightness.intensity;
66
+ if (uniforms.uPulseEnabled && fragment.pulse)
67
+ uniforms.uPulseEnabled.value = fragment.pulse.enabled;
68
+ if (uniforms.uPulseIntensity && fragment.pulse)
69
+ uniforms.uPulseIntensity.value = fragment.pulse.intensity;
70
+ if (uniforms.uPulseSpeed && fragment.pulse)
71
+ uniforms.uPulseSpeed.value = fragment.pulse.speed;
72
+ if (uniforms.uPointerGrayscaleEnabled && fragment.grayscale)
73
+ uniforms.uPointerGrayscaleEnabled.value = fragment.grayscale.enabled;
74
+ if (uniforms.uPointerGrayscaleIntensity && fragment.grayscale)
75
+ uniforms.uPointerGrayscaleIntensity.value = fragment.grayscale.intensity;
76
+ if (uniforms.uPointerGrayscaleContrast && fragment.grayscale)
77
+ uniforms.uPointerGrayscaleContrast.value = fragment.grayscale.contrast;
78
+ if (uniforms.uPointerGrayscaleBrightness && fragment.grayscale)
79
+ uniforms.uPointerGrayscaleBrightness.value = fragment.grayscale.brightness;
80
+ }
81
+ }
82
+ if (effects.general) {
83
+ const { wave, vortex, ripple, grayscale } = effects.general;
84
+ if (uniforms.uGeneralWaveEnabled && wave)
85
+ uniforms.uGeneralWaveEnabled.value = wave.enabled;
86
+ if (uniforms.uGeneralWaveIntensity && wave)
87
+ uniforms.uGeneralWaveIntensity.value = wave.intensity;
88
+ if (uniforms.uGeneralWaveFrequency && wave)
89
+ uniforms.uGeneralWaveFrequency.value = wave.frequency;
90
+ if (uniforms.uGeneralWaveSpeed && wave)
91
+ uniforms.uGeneralWaveSpeed.value = wave.speed;
92
+ if (uniforms.uGeneralWaveDirection && wave) {
93
+ uniforms.uGeneralWaveDirection.value =
94
+ wave.direction === 'horizontal' ? 0.0 :
95
+ wave.direction === 'vertical' ? 1.0 : 2.0;
96
+ }
97
+ if (uniforms.uGeneralVortexEnabled && vortex)
98
+ uniforms.uGeneralVortexEnabled.value = vortex.enabled;
99
+ if (uniforms.uGeneralVortexIntensity && vortex)
100
+ uniforms.uGeneralVortexIntensity.value = vortex.intensity;
101
+ if (uniforms.uGeneralVortexSpeed && vortex)
102
+ uniforms.uGeneralVortexSpeed.value = vortex.speed;
103
+ if (uniforms.uGeneralVortexCenterX && vortex)
104
+ uniforms.uGeneralVortexCenterX.value = vortex.centerX;
105
+ if (uniforms.uGeneralVortexCenterY && vortex)
106
+ uniforms.uGeneralVortexCenterY.value = vortex.centerY;
107
+ if (uniforms.uGeneralRippleEnabled && ripple)
108
+ uniforms.uGeneralRippleEnabled.value = ripple.enabled;
109
+ if (uniforms.uGeneralRippleIntensity && ripple)
110
+ uniforms.uGeneralRippleIntensity.value = ripple.intensity;
111
+ if (uniforms.uGeneralRippleFrequency && ripple)
112
+ uniforms.uGeneralRippleFrequency.value = ripple.frequency;
113
+ if (uniforms.uGeneralRippleSpeed && ripple)
114
+ uniforms.uGeneralRippleSpeed.value = ripple.speed;
115
+ if (uniforms.uGeneralRippleCenterX && ripple)
116
+ uniforms.uGeneralRippleCenterX.value = ripple.centerX;
117
+ if (uniforms.uGeneralRippleCenterY && ripple)
118
+ uniforms.uGeneralRippleCenterY.value = ripple.centerY;
119
+ if (uniforms.uGeneralGrayscaleEnabled && grayscale)
120
+ uniforms.uGeneralGrayscaleEnabled.value = grayscale.enabled;
121
+ if (uniforms.uGeneralGrayscaleMode && grayscale) {
122
+ uniforms.uGeneralGrayscaleMode.value =
123
+ grayscale.mode === 'static' ? 0.0 :
124
+ grayscale.mode === 'wave' ? 1.0 :
125
+ grayscale.mode === 'pulse' ? 2.0 : 3.0;
126
+ }
127
+ if (uniforms.uGeneralGrayscaleIntensity && grayscale)
128
+ uniforms.uGeneralGrayscaleIntensity.value = grayscale.intensity;
129
+ if (uniforms.uGeneralGrayscaleContrast && grayscale)
130
+ uniforms.uGeneralGrayscaleContrast.value = grayscale.contrast;
131
+ if (uniforms.uGeneralGrayscaleBrightness && grayscale)
132
+ uniforms.uGeneralGrayscaleBrightness.value = grayscale.brightness;
133
+ if (uniforms.uGeneralGrayscaleWaveFreq && grayscale)
134
+ uniforms.uGeneralGrayscaleWaveFreq.value = grayscale.waveFrequency;
135
+ if (uniforms.uGeneralGrayscaleWaveSpeed && grayscale)
136
+ uniforms.uGeneralGrayscaleWaveSpeed.value = grayscale.waveSpeed;
137
+ if (uniforms.uGeneralGrayscaleWaveDir && grayscale) {
138
+ uniforms.uGeneralGrayscaleWaveDir.value =
139
+ grayscale.waveDirection === 'horizontal' ? 0.0 :
140
+ grayscale.waveDirection === 'vertical' ? 1.0 : 2.0;
141
+ }
142
+ if (uniforms.uGeneralGrayscalePulseSpeed && grayscale)
143
+ uniforms.uGeneralGrayscalePulseSpeed.value = grayscale.pulseSpeed;
144
+ if (uniforms.uGeneralGrayscaleRippleSpeed && grayscale)
145
+ uniforms.uGeneralGrayscaleRippleSpeed.value = grayscale.rippleSpeed;
146
+ if (uniforms.uGeneralGrayscaleRippleCenterX && grayscale)
147
+ uniforms.uGeneralGrayscaleRippleCenterX.value = grayscale.rippleCenterX;
148
+ if (uniforms.uGeneralGrayscaleRippleCenterY && grayscale)
149
+ uniforms.uGeneralGrayscaleRippleCenterY.value = grayscale.rippleCenterY;
150
+ }
151
+ }
@@ -0,0 +1,74 @@
1
+ import { BufferGeometry } from 'three';
2
+ export type ShapeName = 'heart' | 'box' | 'star' | 'polygon' | 'gear' | 'flower' | 'spade' | 'club' | 'diamond' | 'droplet' | 'lightning' | 'sparkle' | 'shield' | 'pawPrint' | 'superformula' | 'sphere' | 'cylinder' | 'cone' | 'torus' | 'plane' | 'ring' | 'arcPlane' | 'bentPlane' | 'bentPlaneInverse' | 'capsule' | 'icosahedron' | 'octahedron' | 'tetrahedron' | 'dodecahedron' | 'text' | 'point' | 'custom' | 'infinity';
3
+ export interface ShapeOptions {
4
+ type: ShapeName;
5
+ curveSegments?: number;
6
+ subdivisions?: number;
7
+ segments?: number;
8
+ rings?: number;
9
+ /** counts */
10
+ points?: number;
11
+ sides?: number;
12
+ petals?: number;
13
+ teeth?: number;
14
+ bumps?: number;
15
+ widthSegments?: number;
16
+ heightSegments?: number;
17
+ radialSegments?: number;
18
+ tubularSegments?: number;
19
+ thetaSegments?: number;
20
+ phiSegments?: number;
21
+ capSegments?: number;
22
+ detail?: number;
23
+ /** radii */
24
+ outer?: number;
25
+ inner?: number;
26
+ hole?: number;
27
+ radiusTop?: number;
28
+ radiusBottom?: number;
29
+ innerRadius?: number;
30
+ outerRadius?: number;
31
+ /** rect-like footprint */
32
+ width?: number;
33
+ height?: number;
34
+ radius?: number;
35
+ length?: number;
36
+ arc?: number;
37
+ startAngle?: number;
38
+ endAngle?: number;
39
+ tube?: number;
40
+ size?: number;
41
+ text?: string;
42
+ vertices?: number[];
43
+ indices?: number[];
44
+ normals?: number[];
45
+ uvs?: number[];
46
+ /** misc shape controls */
47
+ offset?: number;
48
+ taper?: number;
49
+ tail?: number;
50
+ vein?: boolean;
51
+ sharp?: number;
52
+ /** bevel (shared) */
53
+ bevelThickness?: number;
54
+ bevelSize?: number;
55
+ bevelSegments?: number;
56
+ /** superformula */
57
+ symmetry?: number;
58
+ roundness?: number;
59
+ twist1?: number;
60
+ twist2?: number;
61
+ stretchX?: number;
62
+ stretchY?: number;
63
+ samples?: number;
64
+ /** infinity */
65
+ waist?: number;
66
+ thickness?: number;
67
+ }
68
+ export type ShapeGenerator = (opts: ShapeOptions) => BufferGeometry;
69
+ /**
70
+ * Extensible shape registry. Each generator returns the RAW geometry only.
71
+ * Centering, scaling / fit, and orientation are handled separately by the host.
72
+ */
73
+ export declare const shapeGenerators: Record<ShapeName, ShapeGenerator>;
74
+ //# sourceMappingURL=shapes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../src/utils/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAyQ,MAAM,OAAO,CAAC;AAE3T,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEpa,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,CAAC;AAgBpE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAsa7D,CAAC"}
@@ -0,0 +1,443 @@
1
+ import { BoxGeometry, BufferGeometry, CapsuleGeometry, ConeGeometry, CylinderGeometry, DodecahedronGeometry, ExtrudeGeometry, Float32BufferAttribute, IcosahedronGeometry, OctahedronGeometry, Path, PlaneGeometry, RingGeometry, Shape, ShapeGeometry, SphereGeometry, TetrahedronGeometry, TorusGeometry, } from 'three';
2
+ import { mergeGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js';
3
+ const safeNumber = (value, fallback, min) => {
4
+ const num = typeof value === 'number' && !Number.isNaN(value) ? value : fallback;
5
+ return min !== undefined ? Math.max(num, min) : num;
6
+ };
7
+ /** Shared extrude wrapper — keeps the bevel boilerplate out of every generator. */
8
+ function extrude(shape, curveSegments = 64, bevelThickness = 0.03, bevelSize = 0.03, bevelSegments = 3) {
9
+ return new ExtrudeGeometry(shape, {
10
+ curveSegments,
11
+ bevelEnabled: true,
12
+ bevelThickness,
13
+ bevelSize,
14
+ bevelSegments,
15
+ });
16
+ }
17
+ /**
18
+ * Extensible shape registry. Each generator returns the RAW geometry only.
19
+ * Centering, scaling / fit, and orientation are handled separately by the host.
20
+ */
21
+ export const shapeGenerators = {
22
+ /* ---------------- basics ---------------- */
23
+ heart: ({ curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
24
+ const s = new Shape();
25
+ s.moveTo(0.25, 0.25);
26
+ s.bezierCurveTo(0.25, 0.25, 0.20, 0, 0, 0);
27
+ s.bezierCurveTo(-0.30, 0, -0.30, 0.35, -0.30, 0.35);
28
+ s.bezierCurveTo(-0.30, 0.55, -0.10, 0.77, 0.25, 0.95);
29
+ s.bezierCurveTo(0.60, 0.77, 0.80, 0.55, 0.80, 0.35);
30
+ s.bezierCurveTo(0.80, 0.35, 0.80, 0, 0.50, 0);
31
+ s.bezierCurveTo(0.35, 0, 0.25, 0.25, 0.25, 0.25);
32
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
33
+ },
34
+ box: ({ subdivisions = 1 }) => new BoxGeometry(1, 1, 1, subdivisions, subdivisions, subdivisions),
35
+ sphere: ({ radius, segments, rings }) => {
36
+ const normalizedSegments = safeNumber(segments, 32, 3);
37
+ return new SphereGeometry(safeNumber(radius, 0.5, 0.0001), normalizedSegments, safeNumber(rings, normalizedSegments, 2));
38
+ },
39
+ infinity: ({
40
+ // overall scale (half the lemniscate's reach)
41
+ waist = 0.14, // half-height where the two lobes meet — smaller = sharper crossing
42
+ thickness = 0.12, // ribbon width; drives the leaf-hole size
43
+ samples = 220, // silhouette resolution
44
+ curveSegments = 64, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2, }) => {
45
+ // Lemniscate silhouette r² = a²·cos(2θ) + b² — pointed lobes, deep solid-center waist.
46
+ const a = 0.5;
47
+ const b = Math.sqrt(a * a + waist * waist);
48
+ const rOf = (th) => Math.sqrt(Math.max(a * a * Math.cos(2 * th) + b * b, 1e-6));
49
+ const s = new Shape();
50
+ for (let i = 0; i <= samples; i++) {
51
+ const th = (i / samples) * Math.PI * 2;
52
+ const r = rOf(th);
53
+ if (i === 0)
54
+ s.moveTo(r * Math.cos(th), r * Math.sin(th));
55
+ else
56
+ s.lineTo(r * Math.cos(th), r * Math.sin(th));
57
+ }
58
+ s.closePath();
59
+ // Two leaf "eyes" — one per lobe — sized to leave a ~constant ribbon of `thickness`.
60
+ const xTip = rOf(0);
61
+ let maxY = 0;
62
+ for (let i = 0; i <= 120; i++) {
63
+ const th = -Math.PI / 4 + (i / 120) * (Math.PI / 2);
64
+ maxY = Math.max(maxY, Math.abs(rOf(th) * Math.sin(th)));
65
+ }
66
+ const xIn = thickness * 1.2;
67
+ const xOut = xTip - thickness;
68
+ const xc = (xIn + xOut) / 2;
69
+ const Lx = Math.max((xOut - xIn) / 2, 0.02);
70
+ const Ly = Math.max(maxY - thickness, 0.02);
71
+ const eye = (cx) => {
72
+ const h = new Path();
73
+ h.moveTo(cx - Lx, 0);
74
+ h.quadraticCurveTo(cx, Ly, cx + Lx, 0);
75
+ h.quadraticCurveTo(cx, -Ly, cx - Lx, 0);
76
+ h.closePath();
77
+ return h;
78
+ };
79
+ s.holes.push(eye(xc), eye(-xc));
80
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
81
+ },
82
+ cylinder: ({ radiusTop, radiusBottom, height, radialSegments }) => new CylinderGeometry(safeNumber(radiusTop, 0.5, 0.0001), safeNumber(radiusBottom, 0.5, 0.0001), safeNumber(height, 1, 0.0001), safeNumber(radialSegments, 32, 3)),
83
+ cone: ({ radius, height, radialSegments }) => new ConeGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(height, 1, 0.0001), safeNumber(radialSegments, 32, 3)),
84
+ torus: ({ radius, tube, radialSegments, tubularSegments }) => new TorusGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(tube, 0.2, 0.0001), safeNumber(radialSegments, 16, 3), safeNumber(tubularSegments, 100, 3)),
85
+ plane: ({ width, height, widthSegments, heightSegments }) => new PlaneGeometry(safeNumber(width, 1, 0.0001), safeNumber(height, 1, 0.0001), safeNumber(widthSegments, 1, 1), safeNumber(heightSegments, 1, 1)),
86
+ ring: ({ innerRadius, outerRadius, thetaSegments, phiSegments }) => new RingGeometry(safeNumber(innerRadius, 0.3, 0.0001), safeNumber(outerRadius, 0.8, 0.0001), safeNumber(thetaSegments, 32, 3), safeNumber(phiSegments, 8, 1)),
87
+ arcPlane: ({ radius, startAngle, endAngle, width, segments }) => {
88
+ const safeRadius = safeNumber(radius, 1, 0.0001);
89
+ const safeWidth = safeNumber(width, 0.2, 0.0001);
90
+ const safeStart = safeNumber(startAngle, 0);
91
+ const safeEnd = safeNumber(endAngle, Math.PI);
92
+ const shape = new Shape();
93
+ shape.absarc(0, 0, safeRadius, safeStart, safeEnd, false);
94
+ shape.lineTo(Math.cos(safeEnd) * (safeRadius - safeWidth), Math.sin(safeEnd) * (safeRadius - safeWidth));
95
+ shape.absarc(0, 0, safeRadius - safeWidth, safeEnd, safeStart, true);
96
+ shape.closePath();
97
+ return new ShapeGeometry(shape, safeNumber(segments, 32, 3));
98
+ },
99
+ bentPlane: ({ height = 1, radius = 2, arc = Math.PI / 2, widthSegments = 32, heightSegments = 1 }) => {
100
+ const geometry = new BufferGeometry();
101
+ const vertices = [];
102
+ const indices = [];
103
+ const uvs = [];
104
+ const safeHeight = safeNumber(height, 1, 0.0001);
105
+ const safeRadius = safeNumber(radius, 2, 0.0001);
106
+ const safeArc = safeNumber(arc, Math.PI / 2, 0.0001);
107
+ const safeWidthSegments = safeNumber(widthSegments, 32, 1);
108
+ const safeHeightSegments = safeNumber(heightSegments, 1, 1);
109
+ const startAngle = -safeArc / 2;
110
+ const endAngle = safeArc / 2;
111
+ for (let j = 0; j <= safeHeightSegments; j++) {
112
+ const v = j / safeHeightSegments;
113
+ const y = (v - 0.5) * safeHeight;
114
+ for (let i = 0; i <= safeWidthSegments; i++) {
115
+ const u = i / safeWidthSegments;
116
+ const angle = startAngle + (endAngle - startAngle) * u;
117
+ vertices.push(Math.sin(angle) * safeRadius, y, Math.cos(angle) * safeRadius - safeRadius);
118
+ uvs.push(u, v);
119
+ }
120
+ }
121
+ for (let j = 0; j < safeHeightSegments; j++) {
122
+ for (let i = 0; i < safeWidthSegments; i++) {
123
+ const a = i + (safeWidthSegments + 1) * j;
124
+ const b = i + (safeWidthSegments + 1) * (j + 1);
125
+ const c = (i + 1) + (safeWidthSegments + 1) * (j + 1);
126
+ const d = (i + 1) + (safeWidthSegments + 1) * j;
127
+ indices.push(a, b, d, b, c, d);
128
+ }
129
+ }
130
+ geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
131
+ geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
132
+ geometry.setIndex(indices);
133
+ geometry.computeVertexNormals();
134
+ return geometry;
135
+ },
136
+ bentPlaneInverse: ({ height = 1, radius = 2, arc = Math.PI / 2, widthSegments = 32, heightSegments = 1 }) => {
137
+ const geometry = new BufferGeometry();
138
+ const vertices = [];
139
+ const indices = [];
140
+ const uvs = [];
141
+ const safeHeight = safeNumber(height, 1, 0.0001);
142
+ const safeRadius = safeNumber(radius, 2, 0.0001);
143
+ const safeArc = safeNumber(arc, Math.PI / 2, 0.0001);
144
+ const safeWidthSegments = safeNumber(widthSegments, 32, 1);
145
+ const safeHeightSegments = safeNumber(heightSegments, 1, 1);
146
+ const startAngle = -safeArc / 2;
147
+ const endAngle = safeArc / 2;
148
+ for (let j = 0; j <= safeHeightSegments; j++) {
149
+ const v = j / safeHeightSegments;
150
+ const y = (v - 0.5) * safeHeight;
151
+ for (let i = 0; i <= safeWidthSegments; i++) {
152
+ const u = i / safeWidthSegments;
153
+ const angle = startAngle + (endAngle - startAngle) * u;
154
+ vertices.push(Math.sin(angle) * safeRadius, y, -Math.cos(angle) * safeRadius + safeRadius);
155
+ uvs.push(u, v);
156
+ }
157
+ }
158
+ for (let j = 0; j < safeHeightSegments; j++) {
159
+ for (let i = 0; i < safeWidthSegments; i++) {
160
+ const a = i + (safeWidthSegments + 1) * j;
161
+ const b = i + (safeWidthSegments + 1) * (j + 1);
162
+ const c = (i + 1) + (safeWidthSegments + 1) * (j + 1);
163
+ const d = (i + 1) + (safeWidthSegments + 1) * j;
164
+ indices.push(a, b, d, b, c, d);
165
+ }
166
+ }
167
+ geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
168
+ geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
169
+ geometry.setIndex(indices);
170
+ geometry.computeVertexNormals();
171
+ return geometry;
172
+ },
173
+ capsule: ({ radius, length, capSegments, radialSegments }) => new CapsuleGeometry(safeNumber(radius, 0.3, 0.0001), safeNumber(length, 1.0, 0.0001), safeNumber(capSegments, 4, 1), safeNumber(radialSegments, 8, 3)),
174
+ icosahedron: ({ radius, detail }) => new IcosahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
175
+ octahedron: ({ radius, detail }) => new OctahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
176
+ tetrahedron: ({ radius, detail }) => new TetrahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
177
+ dodecahedron: ({ radius, detail }) => new DodecahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
178
+ text: ({ text = 'Hello', size, height }) => new BoxGeometry(text.length * safeNumber(size, 1, 0.0001) * 0.6, safeNumber(size, 1, 0.0001), safeNumber(height, 0.2, 0.0001)),
179
+ point: ({ size }) => new SphereGeometry(safeNumber(size, 0.1, 0.0001), 16, 16),
180
+ custom: ({ vertices = [], indices = [], normals, uvs }) => {
181
+ console.log('custom shape generator called with vertices:', vertices.length, 'indices:', indices.length, 'normals:', normals?.length, 'uvs:', uvs?.length);
182
+ const geometry = new BufferGeometry();
183
+ if (vertices.length > 0) {
184
+ geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
185
+ }
186
+ if (indices.length > 0) {
187
+ geometry.setIndex(indices);
188
+ }
189
+ if (normals && normals.length === vertices.length) {
190
+ geometry.setAttribute('normal', new Float32BufferAttribute(normals, 3));
191
+ }
192
+ else {
193
+ geometry.computeVertexNormals();
194
+ }
195
+ if (uvs && uvs.length === (vertices.length / 3) * 2) {
196
+ geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
197
+ }
198
+ else if (vertices.length > 0) {
199
+ const vertexCount = vertices.length / 3;
200
+ const autoUvs = new Float32Array(vertexCount * 2);
201
+ let minX = Infinity;
202
+ let maxX = -Infinity;
203
+ let minZ = Infinity;
204
+ let maxZ = -Infinity;
205
+ for (let i = 0; i < vertexCount; i++) {
206
+ const x = vertices[i * 3];
207
+ const z = vertices[i * 3 + 2];
208
+ minX = Math.min(minX, x);
209
+ maxX = Math.max(maxX, x);
210
+ minZ = Math.min(minZ, z);
211
+ maxZ = Math.max(maxZ, z);
212
+ }
213
+ const rangeX = maxX - minX || 1;
214
+ const rangeZ = maxZ - minZ || 1;
215
+ for (let i = 0; i < vertexCount; i++) {
216
+ autoUvs[i * 2] = (vertices[i * 3] - minX) / rangeX;
217
+ autoUvs[i * 2 + 1] = (vertices[i * 3 + 2] - minZ) / rangeZ;
218
+ }
219
+ geometry.setAttribute('uv', new Float32BufferAttribute(autoUvs, 2));
220
+ }
221
+ return geometry;
222
+ },
223
+ star: ({ points = 5, outer = 0.5, inner = 0.2, curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
224
+ const s = new Shape();
225
+ for (let i = 0; i < points * 2; i++) {
226
+ const r = i % 2 === 0 ? outer : inner;
227
+ const a = (i / (points * 2)) * Math.PI * 2 + Math.PI / 2;
228
+ if (i === 0)
229
+ s.moveTo(Math.cos(a) * r, Math.sin(a) * r);
230
+ else
231
+ s.lineTo(Math.cos(a) * r, Math.sin(a) * r);
232
+ }
233
+ s.closePath();
234
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
235
+ },
236
+ polygon: ({ sides = 6, curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
237
+ const s = new Shape();
238
+ for (let i = 0; i < sides; i++) {
239
+ const a = (i / sides) * Math.PI * 2 + Math.PI / 2;
240
+ if (i === 0)
241
+ s.moveTo(Math.cos(a) * 0.5, Math.sin(a) * 0.5);
242
+ else
243
+ s.lineTo(Math.cos(a) * 0.5, Math.sin(a) * 0.5);
244
+ }
245
+ s.closePath();
246
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
247
+ },
248
+ gear: ({ teeth = 12, outer = 0.5, inner = 0.38, hole = 0.16, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
249
+ const s = new Shape();
250
+ const step = (Math.PI * 2) / teeth;
251
+ for (let i = 0; i < teeth; i++) {
252
+ const a = i * step + Math.PI / 2;
253
+ const ang = [a + step * 0.2, a + step * 0.35, a + step * 0.65, a + step * 0.8];
254
+ const rad = [inner, outer, outer, inner];
255
+ for (let j = 0; j < 4; j++) {
256
+ const x = Math.cos(ang[j]) * rad[j];
257
+ const y = Math.sin(ang[j]) * rad[j];
258
+ if (i === 0 && j === 0)
259
+ s.moveTo(x, y);
260
+ else
261
+ s.lineTo(x, y);
262
+ }
263
+ }
264
+ s.closePath();
265
+ const h = new Path();
266
+ h.absarc(0, 0, hole, 0, Math.PI * 2, true);
267
+ s.holes.push(h);
268
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
269
+ },
270
+ flower: ({ petals = 6, outer = 0.5, inner = 0.26, sharp = 0.7, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
271
+ const s = new Shape();
272
+ const N = Math.max(96, petals * 24);
273
+ for (let i = 0; i <= N; i++) {
274
+ const t = (i / N) * Math.PI * 2;
275
+ const k = 0.5 + 0.5 * Math.cos(petals * t);
276
+ const r = inner + (outer - inner) * Math.pow(k, sharp);
277
+ const a = t + Math.PI / 2;
278
+ if (i === 0)
279
+ s.moveTo(Math.cos(a) * r, Math.sin(a) * r);
280
+ else
281
+ s.lineTo(Math.cos(a) * r, Math.sin(a) * r);
282
+ }
283
+ s.closePath();
284
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
285
+ },
286
+ /* ---------------- symbolic ---------------- */
287
+ spade: ({ curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
288
+ const s = new Shape();
289
+ s.moveTo(0, 0.5); // apex
290
+ s.bezierCurveTo(-0.05, 0.30, -0.45, 0.18, -0.45, -0.05);
291
+ s.bezierCurveTo(-0.45, -0.28, -0.18, -0.30, -0.05, -0.12);
292
+ s.bezierCurveTo(-0.10, -0.28, -0.16, -0.34, -0.18, -0.42); // stem flare
293
+ s.lineTo(0.18, -0.42);
294
+ s.bezierCurveTo(0.16, -0.34, 0.10, -0.28, 0.05, -0.12);
295
+ s.bezierCurveTo(0.18, -0.30, 0.45, -0.28, 0.45, -0.05);
296
+ s.bezierCurveTo(0.45, 0.18, 0.05, 0.30, 0, 0.5);
297
+ s.closePath();
298
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
299
+ },
300
+ club: ({ curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
301
+ const R = 0.32;
302
+ const A = 0.18;
303
+ const gap = (18 * Math.PI) / 180; // bottom gap for the stem
304
+ const start = Math.PI * 1.5 + gap; // just past bottom, CCW
305
+ const sweep = Math.PI * 2 - 2 * gap;
306
+ const N = 200;
307
+ const s = new Shape();
308
+ for (let i = 0; i <= N; i++) {
309
+ const t = start + (i / N) * sweep;
310
+ const r = R + A * Math.cos(3 * (t - Math.PI / 2));
311
+ if (i === 0)
312
+ s.moveTo(Math.cos(t) * r, Math.sin(t) * r);
313
+ else
314
+ s.lineTo(Math.cos(t) * r, Math.sin(t) * r);
315
+ }
316
+ // stem across the bottom gap
317
+ s.lineTo(-0.07, -0.5);
318
+ s.lineTo(0.07, -0.5);
319
+ s.closePath();
320
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
321
+ },
322
+ diamond: ({ curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
323
+ const w = 1 / 2;
324
+ const h = 1;
325
+ const s = new Shape();
326
+ s.moveTo(0, h);
327
+ s.lineTo(w, 0);
328
+ s.lineTo(0, -h);
329
+ s.lineTo(-w, 0);
330
+ s.closePath();
331
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
332
+ },
333
+ droplet: ({ width = 0.5, taper = 1, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
334
+ const w = width / 2;
335
+ const top = 0.55 * taper;
336
+ const bot = -0.45;
337
+ const s = new Shape();
338
+ s.moveTo(0, top);
339
+ s.bezierCurveTo(w * 0.2, top * 0.55, w, (top + bot) * 0.5, w, bot * 0.45);
340
+ s.bezierCurveTo(w, bot, w * 0.5, bot * 1.25, 0, bot * 1.25);
341
+ s.bezierCurveTo(-w * 0.5, bot * 1.25, -w, bot, -w, bot * 0.45);
342
+ s.bezierCurveTo(-w, (top + bot) * 0.5, -w * 0.2, top * 0.55, 0, top);
343
+ s.closePath();
344
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
345
+ },
346
+ lightning: ({ width = 0.6, height = 1, curveSegments, bevelThickness = 0.015, bevelSize = 0.015, bevelSegments = 1 }) => {
347
+ const pts = [
348
+ [0.10, 0.50], [-0.25, 0.05], [-0.05, 0.05], [-0.20, -0.50], [0.25, 0.0], [0.05, 0.0],
349
+ ];
350
+ const s = new Shape();
351
+ pts.forEach(([x, y], i) => {
352
+ const px = x * width;
353
+ const py = y * height;
354
+ if (i === 0)
355
+ s.moveTo(px, py);
356
+ else
357
+ s.lineTo(px, py);
358
+ });
359
+ s.closePath();
360
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
361
+ },
362
+ sparkle: ({ points = 4, outer = 0.5, inner = 0.14, curveSegments, bevelThickness = 0.015, bevelSize = 0.015, bevelSegments = 1 }) => {
363
+ const step = (Math.PI * 2) / points;
364
+ const tip = (k) => {
365
+ const a = k * step + Math.PI / 2;
366
+ return [Math.cos(a) * outer, Math.sin(a) * outer];
367
+ };
368
+ const ctrl = (k) => {
369
+ const a = (k + 0.5) * step + Math.PI / 2;
370
+ return [Math.cos(a) * inner, Math.sin(a) * inner];
371
+ };
372
+ const s = new Shape();
373
+ const [x0, y0] = tip(0);
374
+ s.moveTo(x0, y0);
375
+ for (let i = 0; i < points; i++) {
376
+ const [cx, cy] = ctrl(i);
377
+ const [tx, ty] = tip((i + 1) % points);
378
+ s.quadraticCurveTo(cx, cy, tx, ty);
379
+ }
380
+ s.closePath();
381
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
382
+ },
383
+ shield: ({ width = 0.8, curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
384
+ const w = width / 2;
385
+ const top = 1 / 2;
386
+ const bot = -1 / 2;
387
+ const s = new Shape();
388
+ s.moveTo(-w, top);
389
+ s.lineTo(w, top);
390
+ s.lineTo(w, top * 0.1);
391
+ s.bezierCurveTo(w, bot * 0.5, w * 0.5, bot * 0.9, 0, bot);
392
+ s.bezierCurveTo(-w * 0.5, bot * 0.9, -w, bot * 0.5, -w, top * 0.1);
393
+ s.closePath();
394
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
395
+ },
396
+ pawPrint: ({ curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
397
+ const blob = (cx, cy, rx, ry) => {
398
+ const sh = new Shape();
399
+ const seg = 48;
400
+ for (let i = 0; i <= seg; i++) {
401
+ const a = (i / seg) * Math.PI * 2;
402
+ const x = cx + Math.cos(a) * rx;
403
+ const y = cy + Math.sin(a) * ry;
404
+ if (i === 0)
405
+ sh.moveTo(x, y);
406
+ else
407
+ sh.lineTo(x, y);
408
+ }
409
+ sh.closePath();
410
+ return extrude(sh, curveSegments, bevelThickness, bevelSize, bevelSegments);
411
+ };
412
+ return mergeGeometries([
413
+ blob(0, -0.18, 0.30, 0.24), // pad
414
+ blob(-0.26, 0.10, 0.11, 0.14),
415
+ blob(-0.09, 0.26, 0.11, 0.15),
416
+ blob(0.09, 0.26, 0.11, 0.15),
417
+ blob(0.26, 0.10, 0.11, 0.14),
418
+ ], false);
419
+ },
420
+ /* ---------------- parametric ---------------- */
421
+ superformula: ({ symmetry = 6, // was m — rotational symmetry (lobe / corner count)
422
+ roundness = 0.3, // was n1 — overall inflation: lower = puffier, higher = pinched/spikier
423
+ twist1 = 0.3, // was n2 — exponent on the cosine term
424
+ twist2 = 0.3, // was n3 — exponent on the sine term
425
+ stretchX = 1, // was a — scales the cosine term (horizontal stretch)
426
+ stretchY = 1, // was b — scales the sine term (vertical stretch)
427
+ samples = 256, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2, }) => {
428
+ const s = new Shape();
429
+ for (let i = 0; i <= samples; i++) {
430
+ const phi = (i / samples) * Math.PI * 2;
431
+ const t1 = Math.pow(Math.abs(Math.cos((symmetry * phi) / 4) / stretchX), twist1);
432
+ const t2 = Math.pow(Math.abs(Math.sin((symmetry * phi) / 4) / stretchY), twist2);
433
+ const r = Math.pow(t1 + t2, -1 / roundness);
434
+ const ang = phi + Math.PI / 2;
435
+ if (i === 0)
436
+ s.moveTo(Math.cos(ang) * r, Math.sin(ang) * r);
437
+ else
438
+ s.lineTo(Math.cos(ang) * r, Math.sin(ang) * r);
439
+ }
440
+ s.closePath();
441
+ return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
442
+ },
443
+ };