three-base 2.0.137 → 2.0.142

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 (307) hide show
  1. package/DirectionalLight.d.ts +6 -6
  2. package/DirectionalLight.js +68 -68
  3. package/DirectionalLight.ts +70 -0
  4. package/EventMap.d.ts +103 -0
  5. package/EventMap.js +17 -0
  6. package/EventMap.ts +139 -0
  7. package/EventMesh.d.ts +18 -18
  8. package/EventMesh.js +59 -59
  9. package/EventMesh.ts +60 -0
  10. package/ExtrudeMesh.d.ts +112 -112
  11. package/ExtrudeMesh.js +342 -366
  12. package/ExtrudeMesh.ts +553 -0
  13. package/FPScontrol.d.ts +511 -78
  14. package/FPScontrol.js +1799 -617
  15. package/FPScontrol.ts +1855 -0
  16. package/Fire/Fire.d.ts +28 -28
  17. package/Fire/Fire.js +80 -79
  18. package/Fire/Fire.ts +89 -0
  19. package/Fire/{FireGromtry.d.ts → FireGeometry.d.ts} +9 -9
  20. package/Fire/{FireGromtry.js → FireGeometry.js} +40 -40
  21. package/Fire/FireGeometry.ts +40 -0
  22. package/Fire/FireMaterial.d.ts +28 -28
  23. package/Fire/FireMaterial.js +32 -32
  24. package/Fire/FireMaterial.ts +89 -0
  25. package/Fire/index.d.ts +2 -1
  26. package/Fire/index.js +2 -1
  27. package/Fire/index.ts +2 -0
  28. package/GLTFDracoLoader.d.ts +71 -0
  29. package/GLTFDracoLoader.js +266 -0
  30. package/GLTFDracoLoader.ts +430 -0
  31. package/Grass/Grass.d.ts +8 -8
  32. package/Grass/Grass.js +38 -38
  33. package/Grass/Grass.ts +38 -0
  34. package/Grass/index.d.ts +2 -1
  35. package/Grass/index.js +2 -1
  36. package/Grass/index.ts +2 -0
  37. package/Ground1/Ground1.d.ts +10 -11
  38. package/Ground1/Ground1.js +95 -91
  39. package/Ground1/Ground1.ts +114 -0
  40. package/Ground1/index.d.ts +1 -1
  41. package/Ground1/index.js +1 -1
  42. package/Ground1/index.ts +1 -0
  43. package/MeshBase.d.ts +36 -35
  44. package/MeshBase.js +247 -223
  45. package/MeshBase.ts +253 -0
  46. package/Mirror.d.ts +25 -25
  47. package/Mirror.js +143 -139
  48. package/Mirror.ts +203 -0
  49. package/MktMesh/MktMesh.d.ts +291 -0
  50. package/MktMesh/MktMesh.js +1045 -0
  51. package/MktMesh/MktMesh.ts +1075 -0
  52. package/MktMesh/assetUrl.d.ts +35 -0
  53. package/MktMesh/assetUrl.js +69 -0
  54. package/MktMesh/assetUrl.ts +69 -0
  55. package/MktMesh/mktMappingShader.d.ts +12 -0
  56. package/MktMesh/mktMappingShader.js +139 -0
  57. package/MktMesh/mktMappingShader.ts +139 -0
  58. package/MktMesh/mktShader.d.ts +263 -0
  59. package/MktMesh/mktShader.js +1248 -0
  60. package/MktMesh/mktShader.ts +1344 -0
  61. package/MktMesh/panoBitmapTexture.d.ts +25 -0
  62. package/MktMesh/panoBitmapTexture.js +52 -0
  63. package/MktMesh/panoBitmapTexture.ts +54 -0
  64. package/MktMesh/panoSlotBind.d.ts +29 -0
  65. package/MktMesh/panoSlotBind.js +106 -0
  66. package/MktMesh/panoSlotBind.ts +153 -0
  67. package/MktMesh/panoSlotRoster.d.ts +22 -0
  68. package/MktMesh/panoSlotRoster.js +169 -0
  69. package/MktMesh/panoSlotRoster.ts +168 -0
  70. package/MktMesh/panoTileStitcher.d.ts +119 -0
  71. package/MktMesh/panoTileStitcher.js +533 -0
  72. package/MktMesh/panoTileStitcher.ts +616 -0
  73. package/MktMesh/types.d.ts +75 -0
  74. package/MktMesh/types.js +1 -0
  75. package/MktMesh/types.ts +87 -0
  76. package/MktMesh/wallCapTessellate.d.ts +33 -0
  77. package/MktMesh/wallCapTessellate.js +97 -0
  78. package/MktMesh/wallCapTessellate.ts +68 -0
  79. package/PipeMesh/PathGeometry.d.ts +44 -44
  80. package/PipeMesh/PathGeometry.js +307 -300
  81. package/PipeMesh/PathGeometry.ts +343 -0
  82. package/PipeMesh/PathPoint.d.ts +17 -17
  83. package/PipeMesh/PathPoint.js +31 -31
  84. package/PipeMesh/PathPoint.ts +36 -0
  85. package/PipeMesh/PathPointList.d.ts +31 -31
  86. package/PipeMesh/PathPointList.js +209 -208
  87. package/PipeMesh/PathPointList.ts +227 -0
  88. package/PipeMesh/PathTubeGeometry.d.ts +25 -25
  89. package/PipeMesh/PathTubeGeometry.js +130 -130
  90. package/PipeMesh/PathTubeGeometry.ts +146 -0
  91. package/PipeMesh/PipeMesh.d.ts +25 -25
  92. package/PipeMesh/PipeMesh.js +63 -63
  93. package/PipeMesh/PipeMesh.ts +76 -0
  94. package/PipeMesh/index.d.ts +1 -1
  95. package/PipeMesh/index.js +1 -1
  96. package/PipeMesh/index.ts +1 -0
  97. package/PlaneModal1/PlaneModal1.d.ts +34 -31
  98. package/PlaneModal1/PlaneModal1.js +109 -105
  99. package/PlaneModal1/PlaneModal1.ts +138 -0
  100. package/PlaneModal1/index.d.ts +1 -1
  101. package/PlaneModal1/index.js +1 -1
  102. package/PlaneModal1/index.ts +1 -0
  103. package/PlaneText.d.ts +27 -39
  104. package/PlaneText.js +35 -30
  105. package/PlaneText.ts +55 -0
  106. package/PlaneWithHtml.d.ts +13 -11
  107. package/PlaneWithHtml.js +64 -63
  108. package/PlaneWithHtml.ts +70 -0
  109. package/PointLight/PointLight.d.ts +13 -14
  110. package/PointLight/PointLight.js +64 -70
  111. package/PointLight/PointLight.ts +67 -0
  112. package/PointLight/index.d.ts +1 -1
  113. package/PointLight/index.js +1 -1
  114. package/PointLight/index.ts +1 -0
  115. package/README.md +110 -79
  116. package/Sky/Sky.d.ts +9 -9
  117. package/Sky/Sky.js +22 -22
  118. package/Sky/Sky.ts +22 -0
  119. package/Sky/index.d.ts +1 -1
  120. package/Sky/index.js +1 -1
  121. package/Sky/index.ts +1 -0
  122. package/SpotLight.d.ts +6 -6
  123. package/SpotLight.js +72 -72
  124. package/SpotLight.ts +74 -0
  125. package/SpriteModal1/SpriteModal1.d.ts +33 -30
  126. package/SpriteModal1/SpriteModal1.js +116 -110
  127. package/SpriteModal1/SpriteModal1.ts +146 -0
  128. package/SpriteModal1/index.d.ts +1 -1
  129. package/SpriteModal1/index.js +1 -1
  130. package/SpriteModal1/index.ts +1 -0
  131. package/SpriteText.d.ts +46 -45
  132. package/SpriteText.js +176 -163
  133. package/SpriteText.ts +205 -0
  134. package/SpriteText2.d.ts +48 -47
  135. package/SpriteText2.js +223 -198
  136. package/SpriteText2.ts +258 -0
  137. package/SpriteText3.d.ts +86 -0
  138. package/SpriteText3.js +519 -0
  139. package/SpriteText3.ts +599 -0
  140. package/SpriteWithHtml.d.ts +9 -7
  141. package/SpriteWithHtml.js +44 -44
  142. package/SpriteWithHtml.ts +50 -0
  143. package/Text3D/Text3D.d.ts +20 -20
  144. package/Text3D/Text3D.js +58 -62
  145. package/Text3D/Text3D.ts +77 -0
  146. package/Text3D/fontController.d.ts +60 -59
  147. package/Text3D/fontController.js +166 -199
  148. package/Text3D/fontController.ts +209 -0
  149. package/Text3D/index.d.ts +1 -1
  150. package/Text3D/index.js +1 -1
  151. package/Text3D/index.ts +1 -0
  152. package/ThreeBase.d.ts +248 -111
  153. package/ThreeBase.js +1202 -656
  154. package/ThreeBase.ts +1314 -0
  155. package/ThreeMouse.d.ts +54 -40
  156. package/ThreeMouse.js +453 -407
  157. package/ThreeMouse.ts +472 -0
  158. package/Transition.d.ts +45 -40
  159. package/Transition.js +209 -210
  160. package/Transition.ts +242 -0
  161. package/Water/Water.d.ts +5 -5
  162. package/Water/Water.js +44 -26
  163. package/Water/Water.ts +45 -0
  164. package/Water/index.d.ts +2 -0
  165. package/Water/index.js +2 -0
  166. package/Water/index.ts +2 -0
  167. package/WaterFlow/FloatingDuck.d.ts +88 -0
  168. package/WaterFlow/FloatingDuck.js +307 -0
  169. package/WaterFlow/FloatingDuck.ts +445 -0
  170. package/WaterFlow/GPUFluidSimulation.d.ts +56 -0
  171. package/WaterFlow/GPUFluidSimulation.js +785 -0
  172. package/WaterFlow/GPUFluidSimulation.ts +827 -0
  173. package/WaterFlow/ReservoirSystem.d.ts +106 -0
  174. package/WaterFlow/ReservoirSystem.js +621 -0
  175. package/WaterFlow/ReservoirSystem.ts +754 -0
  176. package/WaterFlow/SPHField.d.ts +35 -0
  177. package/WaterFlow/SPHField.js +204 -0
  178. package/WaterFlow/SPHField.ts +228 -0
  179. package/WaterFlow/ScreenSpaceFluidPass.d.ts +69 -0
  180. package/WaterFlow/ScreenSpaceFluidPass.js +736 -0
  181. package/WaterFlow/ScreenSpaceFluidPass.ts +789 -0
  182. package/WaterFlow/ShallowWaterSurface.d.ts +45 -0
  183. package/WaterFlow/ShallowWaterSurface.js +441 -0
  184. package/WaterFlow/ShallowWaterSurface.ts +510 -0
  185. package/WaterFlow/WaterFlow.d.ts +87 -0
  186. package/WaterFlow/WaterFlow.js +171 -0
  187. package/WaterFlow/WaterFlow.ts +219 -0
  188. package/WaterFlow/types.d.ts +161 -0
  189. package/WaterFlow/types.js +1 -0
  190. package/WaterFlow/types.ts +189 -0
  191. package/WaterFlow/waterFlowPass.d.ts +3 -0
  192. package/WaterFlow/waterFlowPass.js +20 -0
  193. package/WaterFlow/waterFlowPass.ts +40 -0
  194. package/collisionOBB.d.ts +42 -0
  195. package/collisionOBB.js +112 -0
  196. package/collisionOBB.ts +108 -0
  197. package/declare.d.ts +23 -165
  198. package/index.d.ts +1 -1
  199. package/index.js +1 -2
  200. package/index.ts +1 -0
  201. package/instanced/InstancedBatch.d.ts +57 -0
  202. package/instanced/InstancedBatch.js +348 -0
  203. package/instanced/InstancedBatch.ts +406 -0
  204. package/instanced/InstancedChild.d.ts +174 -0
  205. package/instanced/InstancedChild.js +264 -0
  206. package/instanced/InstancedChild.ts +327 -0
  207. package/instanced/InstancedGroup.d.ts +43 -0
  208. package/instanced/InstancedGroup.js +126 -0
  209. package/instanced/InstancedGroup.ts +137 -0
  210. package/{InstancedMeshBase.d.ts → instanced/InstancedMeshBase.d.ts} +38 -39
  211. package/{InstancedMeshBase.js → instanced/InstancedMeshBase.js} +282 -293
  212. package/instanced/InstancedMeshBase.ts +292 -0
  213. package/instanced/InstancedTemplate.d.ts +46 -0
  214. package/instanced/InstancedTemplate.js +125 -0
  215. package/instanced/InstancedTemplate.ts +188 -0
  216. package/keyControls.d.ts +30 -0
  217. package/{keyContorls.js → keyControls.js} +101 -98
  218. package/keyControls.ts +107 -0
  219. package/lensflare/LensFlare.d.ts +39 -0
  220. package/lensflare/LensFlare.js +373 -0
  221. package/lensflare/LensFlare.ts +448 -0
  222. package/lensflare/lensflare0.png +0 -0
  223. package/lensflare/lensflare3.png +0 -0
  224. package/lensflare/lensflare_custom.png +0 -0
  225. package/lensflare/lensflare_hex_ghost.png +0 -0
  226. package/lensflare/lensflare_hex_main.png +0 -0
  227. package/package.json +99 -25
  228. package/pass/bloom_pass.d.ts +2 -2
  229. package/pass/bloom_pass.js +188 -101
  230. package/pass/bloom_pass.ts +243 -0
  231. package/pass/cover_pass.d.ts +2 -2
  232. package/pass/cover_pass.js +122 -99
  233. package/pass/cover_pass.ts +182 -0
  234. package/pass/debugDepthState.d.ts +20 -0
  235. package/pass/debugDepthState.js +9 -0
  236. package/pass/debugDepthState.ts +22 -0
  237. package/pass/depthTestBias.d.ts +12 -0
  238. package/pass/depthTestBias.js +12 -0
  239. package/pass/depthTestBias.ts +12 -0
  240. package/pass/effectUserData.d.ts +27 -0
  241. package/pass/effectUserData.js +1 -0
  242. package/pass/effectUserData.ts +46 -0
  243. package/pass/frosted_glass_pass.d.ts +2 -2
  244. package/pass/frosted_glass_pass.js +167 -186
  245. package/pass/frosted_glass_pass.ts +288 -0
  246. package/pass/fsQuad.d.ts +9 -9
  247. package/pass/fsQuad.js +28 -28
  248. package/pass/fsQuad.ts +34 -0
  249. package/pass/glow_pass.d.ts +2 -2
  250. package/pass/glow_pass.js +449 -233
  251. package/pass/glow_pass.ts +654 -0
  252. package/pass/screen_bloom_pass.d.ts +11 -0
  253. package/pass/screen_bloom_pass.js +235 -0
  254. package/pass/screen_bloom_pass.ts +263 -0
  255. package/pass/ssao_pass.d.ts +88 -13
  256. package/pass/ssao_pass.js +802 -366
  257. package/pass/ssao_pass.ts +918 -0
  258. package/pass/stroke_pass.d.ts +2 -2
  259. package/pass/stroke_pass.js +329 -258
  260. package/pass/stroke_pass.ts +638 -0
  261. package/shaders/FXAAShaderMaterial.d.ts +3 -3
  262. package/shaders/FXAAShaderMaterial.js +23 -66
  263. package/shaders/FXAAShaderMaterial.ts +201 -0
  264. package/shaders/baseDepthVisShader.d.ts +11 -0
  265. package/shaders/baseDepthVisShader.js +36 -0
  266. package/shaders/baseDepthVisShader.ts +36 -0
  267. package/shaders/baseTextureToRenderShader.d.ts +2 -2
  268. package/shaders/baseTextureToRenderShader.js +55 -60
  269. package/shaders/baseTextureToRenderShader.ts +232 -0
  270. package/shaders/copyShader.d.ts +3 -3
  271. package/shaders/copyShader.js +13 -14
  272. package/shaders/copyShader.ts +32 -0
  273. package/shaders/debugDepthCompareShader.d.ts +14 -0
  274. package/shaders/debugDepthCompareShader.js +49 -0
  275. package/shaders/debugDepthCompareShader.ts +50 -0
  276. package/shaders/debugDepthJudgeShader.d.ts +18 -0
  277. package/shaders/debugDepthJudgeShader.js +52 -0
  278. package/shaders/debugDepthJudgeShader.ts +54 -0
  279. package/shaders/debugExcludedShader.d.ts +13 -0
  280. package/shaders/debugExcludedShader.js +46 -0
  281. package/shaders/debugExcludedShader.ts +48 -0
  282. package/spriteTextBg.d.ts +1 -0
  283. package/spriteTextBg.js +20 -0
  284. package/spriteTextBg.ts +20 -0
  285. package/threeLoader.d.ts +35 -34
  286. package/threeLoader.js +518 -527
  287. package/threeLoader.ts +525 -0
  288. package/threeUtils.d.ts +53 -52
  289. package/threeUtils.js +329 -330
  290. package/threeUtils.ts +373 -0
  291. package/types.d.ts +2 -0
  292. package/types.js +6 -0
  293. package/types.ts +8 -0
  294. package/ApngTexture.d.ts +0 -13
  295. package/ApngTexture.js +0 -61
  296. package/ApngTextureManage.d.ts +0 -18
  297. package/ApngTextureManage.js +0 -87
  298. package/KeyFrameAnimation.d.ts +0 -25
  299. package/KeyFrameAnimation.js +0 -78
  300. package/keyContorls.d.ts +0 -25
  301. package/lib/draco/draco_decoder.js +0 -34
  302. package/lib/draco/draco_decoder.wasm +0 -0
  303. package/lib/draco/draco_wasm_wrapper.js +0 -117
  304. package/pass/emissive_ao_pass.d.ts +0 -13
  305. package/pass/emissive_ao_pass.js +0 -370
  306. package/shaders.d.ts +0 -5
  307. package/shaders.js +0 -93
package/SpriteWithHtml.js CHANGED
@@ -1,44 +1,44 @@
1
- /*
2
- * @Author: xiaosihan
3
- * @Date: 2023-04-15 11:26:32
4
- * @Last Modified by: xiaosihan
5
- * @Last Modified time: 2023-04-15 12:38:09
6
- */
7
- import { snapdom } from "@zumer/snapdom";
8
- import { Texture, Sprite } from "three";
9
- import threeLoader from "./threeLoader";
10
- // html 文本面板
11
- export default class SpriteWithHtml extends Sprite {
12
- constructor(html = "", backgroundColor = "#00000000") {
13
- super();
14
- this.setHtml(html, backgroundColor);
15
- }
16
- visible = false;
17
- div = (() => {
18
- const div = document.createElement("div");
19
- div.style.position = "fixed";
20
- div.style.top = "100%";
21
- div.style.left = "100%";
22
- div.style.pointerEvents = "none";
23
- div.style.userSelect = "none";
24
- div.style.lineHeight = "1";
25
- div.style.whiteSpace = "nowrap";
26
- return div;
27
- })();
28
- async setHtml(html = "", backgroundColor = "#00000000") {
29
- this.div.innerHTML = html;
30
- document.body.appendChild(this.div);
31
- const img = await snapdom.toPng(this.div, { backgroundColor });
32
- this.scale.set(img.naturalWidth, img.naturalHeight, 1);
33
- const texture = new Texture(img);
34
- texture.needsUpdate = true;
35
- this.material.map = texture;
36
- this.material.map.anisotropy = threeLoader.anisotropy;
37
- this.material.alphaTest = 0.1;
38
- this.material.needsUpdate = true;
39
- await new Promise(resolve => requestAnimationFrame(resolve));
40
- this.visible = true;
41
- this.div.remove();
42
- this.dispatchEvent({ type: "loaded" });
43
- }
44
- }
1
+ /*
2
+ * @Author: xiaosihan
3
+ * @Date: 2023-04-15 11:26:32
4
+ * @Last Modified by: xiaosihan
5
+ * @Last Modified time: 2023-04-15 12:38:09
6
+ */
7
+ import { snapdom } from "@zumer/snapdom";
8
+ import { Texture, Sprite } from "three";
9
+ import threeLoader from "./threeLoader";
10
+ // html 文本面板
11
+ export default class SpriteWithHtml extends Sprite {
12
+ constructor(html = "", backgroundColor = "#00000000") {
13
+ super();
14
+ this.setHtml(html, backgroundColor);
15
+ }
16
+ visible = false;
17
+ div = (() => {
18
+ const div = document.createElement("div");
19
+ div.style.position = "fixed";
20
+ div.style.top = "100%";
21
+ div.style.left = "100%";
22
+ div.style.pointerEvents = "none";
23
+ div.style.userSelect = "none";
24
+ div.style.lineHeight = "1";
25
+ div.style.whiteSpace = "nowrap";
26
+ return div;
27
+ })();
28
+ async setHtml(html = "", backgroundColor = "#00000000") {
29
+ this.div.innerHTML = html;
30
+ document.body.appendChild(this.div);
31
+ const img = await snapdom.toPng(this.div, { backgroundColor });
32
+ this.scale.set(img.naturalWidth, img.naturalHeight, 1);
33
+ const texture = new Texture(img);
34
+ texture.needsUpdate = true;
35
+ this.material.map = texture;
36
+ this.material.map.anisotropy = threeLoader.anisotropy;
37
+ this.material.alphaTest = 0.1;
38
+ this.material.needsUpdate = true;
39
+ await new Promise(resolve => requestAnimationFrame(resolve));
40
+ this.visible = true;
41
+ this.div.remove();
42
+ this.dispatchEvent({ type: "loaded" });
43
+ }
44
+ }
@@ -0,0 +1,50 @@
1
+ /*
2
+ * @Author: xiaosihan
3
+ * @Date: 2023-04-15 11:26:32
4
+ * @Last Modified by: xiaosihan
5
+ * @Last Modified time: 2023-04-15 12:38:09
6
+ */
7
+ import { snapdom } from "@zumer/snapdom";
8
+ import { Texture, Sprite } from "three";
9
+ import threeLoader from "./threeLoader";
10
+ import type { SpriteWithHtmlEventMap } from "./EventMap";
11
+
12
+ type HexColorString = `#${string}`;
13
+
14
+ // html 文本面板
15
+ export default class SpriteWithHtml extends Sprite {
16
+ constructor(html: string = "", backgroundColor: HexColorString = "#00000000") {
17
+ super();
18
+ this.setHtml(html, backgroundColor);
19
+ }
20
+
21
+ visible: boolean = false;
22
+ div: HTMLDivElement = (() => {
23
+ const div = document.createElement("div");
24
+ div.style.position = "fixed";
25
+ div.style.top = "100%";
26
+ div.style.left = "100%";
27
+ div.style.pointerEvents = "none";
28
+ div.style.userSelect = "none";
29
+ div.style.lineHeight = "1";
30
+ div.style.whiteSpace = "nowrap";
31
+ return div;
32
+ })();
33
+
34
+ async setHtml(html: string = "", backgroundColor: HexColorString = "#00000000"): Promise<void> {
35
+ this.div.innerHTML = html;
36
+ document.body.appendChild(this.div);
37
+ const img = await snapdom.toPng(this.div, { backgroundColor });
38
+ this.scale.set(img.naturalWidth, img.naturalHeight, 1);
39
+ const texture = new Texture(img);
40
+ texture.needsUpdate = true;
41
+ this.material.map = texture;
42
+ this.material.map.anisotropy = threeLoader.anisotropy;
43
+ this.material.alphaTest = 0.1;
44
+ this.material.needsUpdate = true;
45
+ await new Promise(resolve => requestAnimationFrame(resolve));
46
+ this.visible = true;
47
+ this.div.remove();
48
+ this.dispatchEvent({ type: "loaded" } as never);
49
+ }
50
+ }
@@ -1,20 +1,20 @@
1
- import { Mesh, MeshBasicMaterial, MeshLambertMaterial, MeshPhysicalMaterial, MeshStandardMaterial } from "three";
2
- export type Text3DProps = {
3
- text?: string;
4
- fontType?: string;
5
- size?: number | undefined;
6
- depth?: number | undefined;
7
- curveSegments?: number | undefined;
8
- bevelEnabled?: boolean | undefined;
9
- bevelThickness?: number | undefined;
10
- bevelSize?: number | undefined;
11
- bevelOffset?: number | undefined;
12
- bevelSegments?: number | undefined;
13
- };
14
- export default class Text3D extends Mesh {
15
- constructor(text?: string);
16
- static path: string;
17
- material: MeshStandardMaterial | MeshBasicMaterial | MeshPhysicalMaterial | MeshLambertMaterial;
18
- _config: Text3DProps;
19
- setText(text3DProps: Text3DProps): void;
20
- }
1
+ import { Mesh, MeshBasicMaterial, MeshLambertMaterial, MeshPhysicalMaterial, MeshStandardMaterial } from "three";
2
+ export type Text3DProps = {
3
+ text?: string;
4
+ fontType?: string;
5
+ size?: number | undefined;
6
+ depth?: number | undefined;
7
+ curveSegments?: number | undefined;
8
+ bevelEnabled?: boolean | undefined;
9
+ bevelThickness?: number | undefined;
10
+ bevelSize?: number | undefined;
11
+ bevelOffset?: number | undefined;
12
+ bevelSegments?: number | undefined;
13
+ };
14
+ export default class Text3D extends Mesh {
15
+ constructor(text?: string);
16
+ static path: string;
17
+ material: MeshStandardMaterial | MeshBasicMaterial | MeshPhysicalMaterial | MeshLambertMaterial;
18
+ _config: Text3DProps;
19
+ setText(text3DProps: Text3DProps): void;
20
+ }
package/Text3D/Text3D.js CHANGED
@@ -1,62 +1,58 @@
1
- /*
2
- * @Author: xiaosihan
3
- * @Date: 2022-06-14 09:48:00
4
- * @Last Modified by: xiaosihan
5
- * @Last Modified time: 2023-04-07 21:52:03
6
- */
7
- import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';
8
- import { Mesh, MeshStandardMaterial } from "three";
9
- import fontContorller from "./fontController";
10
- // 3D文字模型
11
- export default class Text3D extends Mesh {
12
- constructor(text = "new Text3D()") {
13
- super();
14
- this.setText({ text });
15
- }
16
- // 字体的存储路径 例如 : "http://drm.gitee.io/three-base-font/simhei/字.js"
17
- static path = "//www.3dkeshihua.com/three-base-font/";
18
- material = new MeshStandardMaterial({
19
- metalness: 1, // 金属度,值为0到1
20
- roughness: 0.5, // 粗糙度,值为0到1
21
- });
22
- // 配置
23
- _config = {
24
- text: "",
25
- fontType: "simhei",
26
- size: 1,
27
- curveSegments: 10,
28
- depth: 0.1, // 文字的厚度
29
- bevelEnabled: true, // 斜角开启
30
- bevelThickness: 0.02, // 斜角厚度
31
- bevelSize: 0.015, // 斜角大小
32
- bevelOffset: 0, // 斜角偏移
33
- bevelSegments: 3, //斜角分段
34
- };
35
- // 设置文字
36
- setText(text3DProps) {
37
- if (Object.keys(text3DProps).some(key => text3DProps[key] !== this._config[key])) {
38
- Object.assign(this._config, text3DProps);
39
- fontContorller.loadText({
40
- fontBasePath: Text3D.path,
41
- text: this._config.text,
42
- fontType: this._config.fontType,
43
- callback: THREEFont => {
44
- this.geometry.dispose();
45
- this.geometry = new TextGeometry(this._config.text || "", {
46
- font: THREEFont,
47
- size: this._config.size,
48
- curveSegments: this._config.curveSegments,
49
- depth: this._config.depth, // 文字的厚度
50
- bevelEnabled: this._config.bevelEnabled, // 斜角开启
51
- bevelThickness: this._config.bevelThickness, // 斜角厚度
52
- bevelSize: this._config.bevelSize, // 斜角大小
53
- bevelOffset: this._config.bevelOffset, // 斜角偏移
54
- bevelSegments: this._config.bevelSegments, //斜角分段
55
- });
56
- this.geometry.center();
57
- this.dispatchEvent({ type: "loaded" });
58
- }
59
- });
60
- }
61
- }
62
- }
1
+ /*
2
+ * @Author: xiaosihan
3
+ * @Date: 2022-06-14 09:48:00
4
+ * @Last Modified by: xiaosihan
5
+ * @Last Modified time: 2023-04-07 21:52:03
6
+ */
7
+ import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';
8
+ import { Mesh, MeshStandardMaterial } from "three";
9
+ import fontController from "./fontController";
10
+ export default class Text3D extends Mesh {
11
+ constructor(text = "new Text3D()") {
12
+ super();
13
+ this.setText({ text });
14
+ }
15
+ static path = "//www.3dkeshihua.com/three-base-font/";
16
+ material = new MeshStandardMaterial({
17
+ metalness: 1,
18
+ roughness: 0.5,
19
+ });
20
+ _config = {
21
+ text: "",
22
+ fontType: "simhei",
23
+ size: 1,
24
+ curveSegments: 10,
25
+ depth: 0.1,
26
+ bevelEnabled: true,
27
+ bevelThickness: 0.02,
28
+ bevelSize: 0.015,
29
+ bevelOffset: 0,
30
+ bevelSegments: 3,
31
+ };
32
+ setText(text3DProps) {
33
+ if (Object.keys(text3DProps).some(key => text3DProps[key] !== this._config[key])) {
34
+ Object.assign(this._config, text3DProps);
35
+ fontController.loadText({
36
+ fontBasePath: Text3D.path,
37
+ text: this._config.text,
38
+ fontType: this._config.fontType,
39
+ callback: (THREEFont) => {
40
+ this.geometry.dispose();
41
+ this.geometry = new TextGeometry(this._config.text || "", {
42
+ font: THREEFont,
43
+ size: this._config.size,
44
+ curveSegments: this._config.curveSegments,
45
+ depth: this._config.depth,
46
+ bevelEnabled: this._config.bevelEnabled,
47
+ bevelThickness: this._config.bevelThickness,
48
+ bevelSize: this._config.bevelSize,
49
+ bevelOffset: this._config.bevelOffset,
50
+ bevelSegments: this._config.bevelSegments,
51
+ });
52
+ this.geometry.center();
53
+ this.dispatchEvent({ type: "loaded" });
54
+ }
55
+ });
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,77 @@
1
+ /*
2
+ * @Author: xiaosihan
3
+ * @Date: 2022-06-14 09:48:00
4
+ * @Last Modified by: xiaosihan
5
+ * @Last Modified time: 2023-04-07 21:52:03
6
+ */
7
+ import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';
8
+ import { Font } from 'three/examples/jsm/loaders/FontLoader.js';
9
+ import { Mesh, MeshBasicMaterial, MeshLambertMaterial, MeshPhysicalMaterial, MeshStandardMaterial } from "three";
10
+ import fontController from "./fontController";
11
+
12
+ export type Text3DProps = {
13
+ text?: string;
14
+ fontType?: string;
15
+ size?: number | undefined;
16
+ depth?: number | undefined;
17
+ curveSegments?: number | undefined;
18
+ bevelEnabled?: boolean | undefined;
19
+ bevelThickness?: number | undefined;
20
+ bevelSize?: number | undefined;
21
+ bevelOffset?: number | undefined;
22
+ bevelSegments?: number | undefined;
23
+ };
24
+
25
+ export default class Text3D extends Mesh {
26
+ constructor(text: string = "new Text3D()") {
27
+ super();
28
+ this.setText({ text });
29
+ }
30
+
31
+ static path: string = "//www.3dkeshihua.com/three-base-font/";
32
+
33
+ material: MeshStandardMaterial | MeshBasicMaterial | MeshPhysicalMaterial | MeshLambertMaterial = new MeshStandardMaterial({
34
+ metalness: 1,
35
+ roughness: 0.5,
36
+ });
37
+
38
+ _config: Text3DProps = {
39
+ text: "",
40
+ fontType: "simhei",
41
+ size: 1,
42
+ curveSegments: 10,
43
+ depth: 0.1,
44
+ bevelEnabled: true,
45
+ bevelThickness: 0.02,
46
+ bevelSize: 0.015,
47
+ bevelOffset: 0,
48
+ bevelSegments: 3,
49
+ };
50
+
51
+ setText(text3DProps: Text3DProps): void {
52
+ if (Object.keys(text3DProps).some(key => text3DProps[key as keyof Text3DProps] !== this._config[key as keyof Text3DProps])) {
53
+ Object.assign(this._config, text3DProps);
54
+ fontController.loadText({
55
+ fontBasePath: Text3D.path,
56
+ text: this._config.text,
57
+ fontType: this._config.fontType,
58
+ callback: (THREEFont: Font) => {
59
+ this.geometry.dispose();
60
+ this.geometry = new TextGeometry(this._config.text || "", {
61
+ font: THREEFont,
62
+ size: this._config.size,
63
+ curveSegments: this._config.curveSegments,
64
+ depth: this._config.depth,
65
+ bevelEnabled: this._config.bevelEnabled,
66
+ bevelThickness: this._config.bevelThickness,
67
+ bevelSize: this._config.bevelSize,
68
+ bevelOffset: this._config.bevelOffset,
69
+ bevelSegments: this._config.bevelSegments,
70
+ });
71
+ this.geometry.center();
72
+ this.dispatchEvent({ type: "loaded" } as never);
73
+ }
74
+ });
75
+ }
76
+ }
77
+ }
@@ -1,59 +1,60 @@
1
- import Dexie, { Table } from "dexie";
2
- import { Font } from "three/examples/jsm/loaders/FontLoader.js";
3
- export type saveFontParam = {
4
- fontType?: string;
5
- fontName: string;
6
- fontJson: any;
7
- };
8
- export type addFontFamilyParam = {
9
- fontType?: string;
10
- fontFamilyJson: any;
11
- };
12
- export type getFontParam = {
13
- fontType?: string;
14
- fontName: string;
15
- };
16
- export type loadTextParam = {
17
- fontBasePath: string;
18
- fontType?: string;
19
- text?: string;
20
- callback?: (font: Font) => void;
21
- };
22
- declare class indexBD extends Dexie {
23
- constructor(dbName: string);
24
- threeFont: Table;
25
- }
26
- declare class fontContorl {
27
- constructor();
28
- THREEFontMap: Map<string, Font>;
29
- fontBD: indexBD;
30
- /**
31
- * 保存 字体json到本地数据库中
32
- * @param {saveFontParam} { fontType = "simhei", fontName, fontJson }
33
- * @memberof fontContorl
34
- */
35
- saveFont({ fontType, fontName, fontJson }: saveFontParam): Promise<void>;
36
- /**
37
- * 通过 fontType 和 fontName 查询 fontJson
38
- * @param {getFontParam} { fontType = "simhei", fontName }
39
- * @returns
40
- * @memberof fontContorl
41
- */
42
- getFont({ fontType, fontName }: getFontParam): Promise<any>;
43
- _loadTextCall: Map<string, Array<() => void>>;
44
- loadText({ fontType, text, fontBasePath, callback }: loadTextParam): Promise<void>;
45
- _loadFontIndexJson({ fontType, fontBasePath }: loadTextParam): Promise<void>;
46
- _loadFontJson({ fontType, fontName, fontBasePath }: {
47
- fontType: string;
48
- fontName: string;
49
- fontBasePath: string;
50
- }): Promise<void>;
51
- hasFont({ fontType, fontName }: {
52
- fontType: string;
53
- fontName: string;
54
- }): boolean;
55
- addFont({ fontType, fontName, fontJson }: saveFontParam): void;
56
- addFontFamily({ fontType, fontFamilyJson }: addFontFamilyParam): void;
57
- }
58
- declare const fontContorller: fontContorl;
59
- export default fontContorller;
1
+ import Dexie, { Table } from "dexie";
2
+ import { Font } from "three/examples/jsm/loaders/FontLoader";
3
+ export type saveFontParam = {
4
+ fontType?: string;
5
+ fontName: string;
6
+ fontJson: Record<string, unknown>;
7
+ };
8
+ export type addFontFamilyParam = {
9
+ fontType?: string;
10
+ fontFamilyJson: Record<string, unknown>;
11
+ };
12
+ export type getFontParam = {
13
+ fontType?: string;
14
+ fontName: string;
15
+ };
16
+ export type loadTextParam = {
17
+ fontBasePath: string;
18
+ fontType?: string;
19
+ text?: string;
20
+ callback?: (font: Font) => void;
21
+ };
22
+ declare class indexBD extends Dexie {
23
+ constructor(dbName: string);
24
+ threeFont: Table;
25
+ }
26
+ declare class fontControl {
27
+ constructor();
28
+ THREEFontMap: Map<string, Font>;
29
+ fontBD: indexBD;
30
+ /**
31
+ * 保存 字体json到本地数据库中
32
+ * @param {saveFontParam} { fontType = "simhei", fontName, fontJson }
33
+ * @memberof fontControl
34
+ */
35
+ saveFont({ fontType, fontName, fontJson }: saveFontParam): Promise<void>;
36
+ /**
37
+ * 通过 fontType 和 fontName 查询 fontJson
38
+ * @param {getFontParam} { fontType = "simhei", fontName }
39
+ * @returns
40
+ * @memberof fontControl
41
+ */
42
+ getFont({ fontType, fontName }: getFontParam): Promise<Record<string, unknown> | undefined>;
43
+ _loadTextCall: Map<string, Array<() => void>>;
44
+ loadText({ fontType, text, fontBasePath, callback }: loadTextParam): Promise<void>;
45
+ _loadFontIndexJson({ fontType, fontBasePath }: loadTextParam): Promise<void>;
46
+ _loadFontJson({ fontType, fontName, fontBasePath }: {
47
+ fontType: string;
48
+ fontName: string;
49
+ fontBasePath: string;
50
+ }): Promise<void>;
51
+ hasFont({ fontType, fontName }: {
52
+ fontType: string;
53
+ fontName: string;
54
+ }): boolean;
55
+ addFont({ fontType, fontName, fontJson }: saveFontParam): void;
56
+ addFontFamily({ fontType, fontFamilyJson }: addFontFamilyParam): void;
57
+ }
58
+ declare const fontController: fontControl;
59
+ export default fontController;
60
+ export { fontController };