@anov/3d-ability 0.0.4-alpha7 → 0.0.4-alpha9

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 (130) hide show
  1. package/dist/animation/index.d.ts +0 -1
  2. package/dist/animation/index.js +1 -1
  3. package/dist/animation/index.js.map +1 -1
  4. package/dist/camera/index.d.ts +65 -0
  5. package/dist/camera/index.js +239 -0
  6. package/dist/camera/index.js.map +1 -0
  7. package/dist/city/flyinglead.d.ts +0 -0
  8. package/dist/city/radar.d.ts +0 -0
  9. package/dist/city/scanning.d.ts +0 -0
  10. package/dist/city/surroundLine.d.ts +0 -0
  11. package/dist/core/mouseDrawe.d.ts +2 -0
  12. package/dist/environment/cloud/cloud.d.ts +1 -0
  13. package/dist/environment/cloud/index.d.ts +7 -0
  14. package/dist/environment/rain.d.ts +20 -0
  15. package/dist/environment/rainShader/shader.d.ts +26 -0
  16. package/dist/environment/shaderCloud/cloudMaterial.d.ts +10 -0
  17. package/dist/environment/shaderCloud/shader.d.ts +5 -0
  18. package/dist/environment/sky/index.js +10 -13
  19. package/dist/environment/sky/index.js.map +1 -1
  20. package/dist/environment/skyBox/index.d.ts +41 -0
  21. package/dist/environment/skyBox/index.js +150 -0
  22. package/dist/environment/skyBox/index.js.map +1 -0
  23. package/dist/environment/snow.js +2 -0
  24. package/dist/environment/snow.js.map +1 -1
  25. package/dist/environment/sun/index.d.ts +13 -0
  26. package/dist/environment/volumetricCloud/cloudMaterial.d.ts +3 -0
  27. package/dist/environment/volumetricCloud/inex.d.ts +8 -0
  28. package/dist/heatmap/index.d.ts +9 -0
  29. package/dist/heatmap/index.js +138 -0
  30. package/dist/heatmap/index.js.map +1 -0
  31. package/dist/helper/view/index.d.ts +40 -0
  32. package/dist/helper/view/utils.d.ts +6 -0
  33. package/dist/index.d.ts +8 -4
  34. package/dist/index.js +8 -4
  35. package/dist/index.js.map +1 -1
  36. package/dist/line/curve.d.ts +33 -0
  37. package/dist/line/curve.js +71 -0
  38. package/dist/line/curve.js.map +1 -0
  39. package/dist/line/index.d.ts +0 -0
  40. package/dist/line/index.js +2 -0
  41. package/dist/line/index.js.map +1 -0
  42. package/dist/line/round-curve.d.ts +19 -0
  43. package/dist/line/round-curve.js +212 -0
  44. package/dist/line/round-curve.js.map +1 -0
  45. package/dist/material/finirMaterialMaterial/index.d.ts +9 -0
  46. package/dist/material/finirMaterialMaterial/index.js +47 -0
  47. package/dist/material/finirMaterialMaterial/index.js.map +1 -0
  48. package/dist/material/pristineGridMaterial/index.d.ts +20 -0
  49. package/dist/material/pristineGridMaterial/shader/fragment.d.ts +2 -0
  50. package/dist/material/pristineGridMaterial/shader/vertex.d.ts +2 -0
  51. package/dist/poi/core/Base.d.ts +7 -0
  52. package/dist/poi/core/Base.js +24 -0
  53. package/dist/poi/core/Base.js.map +1 -0
  54. package/dist/poi/core/Css2D.d.ts +20 -0
  55. package/dist/poi/core/Css2D.js +181 -0
  56. package/dist/poi/core/Css2D.js.map +1 -0
  57. package/dist/poi/core/Css3D.d.ts +1 -0
  58. package/dist/poi/core/Css3D.js +24 -0
  59. package/dist/poi/core/Css3D.js.map +1 -0
  60. package/dist/poi/core/Sprite.d.ts +11 -0
  61. package/dist/poi/core/Sprite.js +134 -0
  62. package/dist/poi/core/Sprite.js.map +1 -0
  63. package/dist/poi/core/SpriteBase.d.ts +11 -0
  64. package/dist/poi/core/SpriteBase.js +58 -0
  65. package/dist/poi/core/SpriteBase.js.map +1 -0
  66. package/dist/poi/index.d.ts +9 -16
  67. package/dist/poi/index.js +11 -96
  68. package/dist/poi/index.js.map +1 -1
  69. package/dist/poi/utils/base64.d.ts +3 -0
  70. package/dist/poi/utils/base64.js +4 -0
  71. package/dist/poi/utils/base64.js.map +1 -0
  72. package/dist/poi/utils/canvas.d.ts +3 -0
  73. package/dist/poi/utils/canvas.js +68 -0
  74. package/dist/poi/utils/canvas.js.map +1 -0
  75. package/dist/poi/utils/css.d.ts +35 -0
  76. package/dist/poi/utils/css.js +41 -0
  77. package/dist/poi/utils/css.js.map +1 -0
  78. package/dist/poi/utils/type.d.ts +35 -0
  79. package/dist/poi/utils/type.js +39 -0
  80. package/dist/poi/utils/type.js.map +1 -0
  81. package/dist/poiBack/assets.js.map +1 -0
  82. package/dist/poiBack/dom.js.map +1 -0
  83. package/dist/poiBack/index.d.ts +19 -0
  84. package/dist/poiBack/index.js +145 -0
  85. package/dist/poiBack/index.js.map +1 -0
  86. package/dist/poiBack/type.js.map +1 -0
  87. package/dist/postEffects/bloomPass.d.ts +5 -0
  88. package/dist/postEffects/index.d.ts +11 -0
  89. package/dist/postEffects/outlinePass.d.ts +16 -0
  90. package/dist/postEffects/outlinePass.js +7 -1
  91. package/dist/postEffects/outlinePass.js.map +1 -1
  92. package/dist/scene/grow/grow.d.ts +10 -0
  93. package/dist/{animation → scene}/grow/grow.js +66 -33
  94. package/dist/scene/grow/grow.js.map +1 -0
  95. package/dist/scene/grow/growStyle.js.map +1 -0
  96. package/dist/scene/grow/index.js.map +1 -0
  97. package/dist/{animation → scene}/grow/style_down.d.ts +2 -0
  98. package/dist/{animation → scene}/grow/style_down.js +22 -21
  99. package/dist/scene/grow/style_down.js.map +1 -0
  100. package/dist/{animation → scene}/grow/style_up.d.ts +2 -0
  101. package/dist/{animation → scene}/grow/style_up.js +24 -22
  102. package/dist/scene/grow/style_up.js.map +1 -0
  103. package/dist/{animation → scene}/grow/type.d.ts +12 -11
  104. package/dist/scene/grow/type.js.map +1 -0
  105. package/dist/scene/index.d.ts +1 -0
  106. package/dist/scene/index.js +2 -0
  107. package/dist/scene/index.js.map +1 -0
  108. package/dist/utils/index.d.ts +1 -0
  109. package/package.json +10 -3
  110. package/dist/animation/grow/grow.d.ts +0 -10
  111. package/dist/animation/grow/grow.js.map +0 -1
  112. package/dist/animation/grow/growStyle.js.map +0 -1
  113. package/dist/animation/grow/index.js.map +0 -1
  114. package/dist/animation/grow/style_down.js.map +0 -1
  115. package/dist/animation/grow/style_up.js.map +0 -1
  116. package/dist/animation/grow/type.js.map +0 -1
  117. package/dist/poi/assets.js.map +0 -1
  118. package/dist/poi/dom.js.map +0 -1
  119. package/dist/poi/type.js.map +0 -1
  120. /package/dist/{poi → poiBack}/assets.d.ts +0 -0
  121. /package/dist/{poi → poiBack}/assets.js +0 -0
  122. /package/dist/{poi → poiBack}/dom.d.ts +0 -0
  123. /package/dist/{poi → poiBack}/dom.js +0 -0
  124. /package/dist/{poi → poiBack}/type.d.ts +0 -0
  125. /package/dist/{poi → poiBack}/type.js +0 -0
  126. /package/dist/{animation → scene}/grow/growStyle.d.ts +0 -0
  127. /package/dist/{animation → scene}/grow/growStyle.js +0 -0
  128. /package/dist/{animation → scene}/grow/index.d.ts +0 -0
  129. /package/dist/{animation → scene}/grow/index.js +0 -0
  130. /package/dist/{animation → scene}/grow/type.js +0 -0
@@ -0,0 +1,5 @@
1
+ declare const CloudShader: {
2
+ vertexShader: string;
3
+ fragmentShader: string;
4
+ };
5
+ export default CloudShader;
@@ -46,20 +46,17 @@ var initsSkySystem = function initsSkySystem(options) {
46
46
  var initSunLight = function initSunLight(options) {
47
47
  var _opts$mapSize, _opts$mapSize2;
48
48
  var opts = options || {};
49
- var sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 1));
49
+ var sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 10));
50
50
  sunLight.castShadow = true;
51
-
52
- // sunLight.shadow.bias = getLastValue(opts.bias, -0.005)
53
- sunLight.shadow.mapSize.set(getLastValue((_opts$mapSize = opts.mapSize) === null || _opts$mapSize === void 0 ? void 0 : _opts$mapSize[0], 1024 * 10), getLastValue((_opts$mapSize2 = opts.mapSize) === null || _opts$mapSize2 === void 0 ? void 0 : _opts$mapSize2[1], 1024 * 10));
54
-
55
- // const cam = sunLight.shadow.camera
56
- // cam.near = getLastValue(opts.near, 0.1)
57
- // cam.far = getLastValue(opts.far, 100000)
58
- // cam.left = getLastValue(opts.left, -100000)
59
- // cam.right = getLastValue(opts.right, 100000)
60
- // cam.top = getLastValue(opts.top, 100000)
61
- // cam.bottom = getLastValue(opts.bottom, -100000)
62
-
51
+ sunLight.shadow.bias = getLastValue(opts.bias, -0.005);
52
+ sunLight.shadow.mapSize.set(getLastValue((_opts$mapSize = opts.mapSize) === null || _opts$mapSize === void 0 ? void 0 : _opts$mapSize[0], 1024 * 2), getLastValue((_opts$mapSize2 = opts.mapSize) === null || _opts$mapSize2 === void 0 ? void 0 : _opts$mapSize2[1], 1024 * 2));
53
+ var cam = sunLight.shadow.camera;
54
+ cam.near = getLastValue(opts.near, 1);
55
+ cam.far = getLastValue(opts.far, 10000);
56
+ cam.left = getLastValue(opts.left, -1000);
57
+ cam.right = getLastValue(opts.right, 1000);
58
+ cam.top = getLastValue(opts.top, 1000);
59
+ cam.bottom = getLastValue(opts.bottom, -1000);
63
60
  return sunLight;
64
61
  };
65
62
 
@@ -1 +1 @@
1
- {"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","mapSize","set","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: 0.1,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 1))\n sunLight.castShadow = true\n\n // sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 10), getLastValue(opts.mapSize?.[1], 1024 * 10))\n\n // const cam = sunLight.shadow.camera\n // cam.near = getLastValue(opts.near, 0.1)\n // cam.far = getLastValue(opts.far, 100000)\n // cam.left = getLastValue(opts.left, -100000)\n // cam.right = getLastValue(opts.right, 100000)\n // cam.top = getLastValue(opts.top, 100000)\n // cam.bottom = getLastValue(opts.bottom, -100000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n sunRadius = 300\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n scene!.add(sky)\n skyGroup.add(sunLight)\n scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":";;;;;;AAAA,SAASA,gBAAgB,EAAEC,KAAK,EAAEC,SAAS,EAAEC,OAAO,EAAEC,GAAG,EAAEC,GAAG,QAAQ,eAAe;AACrF,SAASC,YAAY;AACrB,SAASC,cAAc;AAEvB,IAAMC,GAAG,GAAGJ,GAAG,CAACI,GAAG;AAanB;AACA;AACA;AACA,IAAMC,cAAc,GAAG,SAAjBA,cAAc,CAAIC,OAAyB,EAAK;EACpD,IAAMC,GAAG,GAAG,IAAIH,GAAG,EAAE;EACrB,IAAMI,QAAQ,GAAG,IAAIT,OAAO,EAAE;EAC9B,oBAAqBE,GAAG,CAACQ,QAAQ,EAAE;IAA3BC,QAAQ,iBAARA,QAAQ;EAEhBH,GAAG,CAACI,KAAK,CAACC,SAAS,CAAC,MAAM,CAAC;EAE3B,IAAMC,gBAAgB,GAAG;IACvBC,SAAS,EAAE,EAAE;IACbC,QAAQ,EAAE,CAAC;IACXC,cAAc,EAAE,KAAK;IACrBC,eAAe,EAAE,GAAG;IACpBC,SAAS,EAAE,CAAC;IACZC,OAAO,EAAE,GAAG;IACZC,QAAQ,EAAE;EACZ,CAAC;EACD;EACA,IAAMC,QAAQ,GAAGd,GAAG,CAACe,QAAQ,CAACD,QAAQ;EACtCA,QAAQ,CAACP,SAAS,CAACS,KAAK,GAAGV,gBAAgB,CAACC,SAAS;EACrDO,QAAQ,CAACN,QAAQ,CAACQ,KAAK,GAAGV,gBAAgB,CAACE,QAAQ;EACnDM,QAAQ,CAACL,cAAc,CAACO,KAAK,GAAGV,gBAAgB,CAACG,cAAc;EAC/DK,QAAQ,CAACJ,eAAe,CAACM,KAAK,GAAGV,gBAAgB,CAACI,eAAe;EAEjE,IAAMO,GAAG,GAAG1B,SAAS,CAAC2B,QAAQ,CAAC,EAAE,GAAGZ,gBAAgB,CAACK,SAAS,CAAC;EAC/D,IAAMQ,KAAK,GAAG5B,SAAS,CAAC2B,QAAQ,CAACZ,gBAAgB,CAACM,OAAO,CAAC;EAE1DX,QAAQ,CAACmB,sBAAsB,CAAC,CAAC,EAAEH,GAAG,EAAEE,KAAK,CAAC;EAC9CL,QAAQ,CAACO,WAAW,CAACL,KAAK,CAACM,IAAI,CAACrB,QAAQ,CAAC;EAEzC,OAAO,CAACD,GAAG,EAAEC,QAAQ,EAAEa,QAAQ,CAAC;AAClC,CAAC;AAgBD;AACA;AACA;AACA;AACA;AACA,IAAMS,YAAY,GAAG,SAAfA,YAAY,CAAIxB,OAAwB,EAAK;EAAA;EACjD,IAAMyB,IAAI,GAAGzB,OAAO,IAAI,CAAC,CAAC;EAE1B,IAAM0B,QAAQ,GAAG,IAAIpC,gBAAgB,CAACM,YAAY,CAAC6B,IAAI,CAACE,KAAK,EAAE,OAAO,CAAC,EAAE/B,YAAY,CAAC6B,IAAI,CAACG,SAAS,EAAE,CAAC,CAAC,CAAC;EACzGF,QAAQ,CAACG,UAAU,GAAG,IAAI;;EAE1B;EACAH,QAAQ,CAACI,MAAM,CAACC,OAAO,CAACC,GAAG,CAACpC,YAAY,kBAAC6B,IAAI,CAACM,OAAO,kDAAZ,cAAe,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAEnC,YAAY,mBAAC6B,IAAI,CAACM,OAAO,mDAAZ,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;;EAEnH;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,OAAOL,QAAQ;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMO,eAAe,GAAG,SAAlBA,eAAe,CAAIC,IAAU,EAAEC,QAAgB,EAAEC,SAAiB,EAAsB;EAAA,IAApBC,SAAS,uEAAG,GAAG;EACvF,qBAA4B1C,GAAG,CAACQ,QAAQ,EAAE;IAAlCC,QAAQ,kBAARA,QAAQ;IAAEkC,KAAK,kBAALA,KAAK;EAEvBD,SAAS,GAAG,GAAG;EACf,IAAI,CAACjC,QAAQ,IAAI,CAACkC,KAAK,EACrB,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC;EAEnD,sBAAkCxC,cAAc,EAAE;IAAA;IAA3CE,GAAG;IAAEC,QAAQ;IAAEa,QAAQ;EAC9B,IAAMW,QAAQ,GAAGF,YAAY,EAAE;EAC/B,IAAMgB,QAAQ,GAAG,IAAIjD,KAAK,EAAwC;EAElE+C,KAAK,CAAEG,GAAG,CAACxC,GAAG,CAAC;EACfuC,QAAQ,CAACC,GAAG,CAACf,QAAQ,CAAC;EACtBY,KAAK,CAAEG,GAAG,CAACD,QAAQ,CAAC;EAEpB,IAAME,IAAI,GAAG,SAAPA,IAAI,CAAIC,QAAgB,EAAE9B,OAAe,EAAK;IAClDX,QAAQ,CAACmB,sBAAsB,CAACgB,SAAS,EAAE7C,SAAS,CAAC2B,QAAQ,CAAC,EAAE,GAAG3B,SAAS,CAACoD,QAAQ,CAACD,QAAQ,CAAC,CAAC,EAAE9B,OAAO,CAAC;IAC1GE,QAAQ,CAACO,WAAW,CAACL,KAAK,CAACM,IAAI,CAACrB,QAAQ,CAAC;IAEzC,IAAM2C,CAAC,GAAGR,SAAS,GAAIS,IAAI,CAACC,GAAG,CAACJ,QAAQ,CAAE,GAAIG,IAAI,CAACC,GAAG,CAAClC,OAAO,CAAE;IAChE,IAAMmC,CAAC,GAAGX,SAAS,GAAIS,IAAI,CAACC,GAAG,CAACJ,QAAQ,CAAE,GAAIG,IAAI,CAACG,GAAG,CAACpC,OAAO,CAAE;IAChE,IAAMqC,CAAC,GAAGb,SAAS,GAAIS,IAAI,CAACG,GAAG,CAACN,QAAQ,CAAE;IAE1C,IAAMrB,WAAW,GAAG,IAAI7B,OAAO,CAACoD,CAAC,EAAEK,CAAC,EAAEF,CAAC,CAAC;IACxCR,QAAQ,CAAClB,WAAW,GAAGA,WAAW;IAClCkB,QAAQ,CAACtC,QAAQ,CAACqB,IAAI,CAACrB,QAAQ,CAAC;IAEhC,OAAOoB,WAAW;EACpB,CAAC;EAED,sBAA8BzB,cAAc,CAACqC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,CAAC;IAA/DO,QAAQ,mBAARA,QAAQ;IAAE9B,OAAO,mBAAPA,OAAO;EACzB6B,IAAI,CAACC,QAAQ,EAAE9B,OAAO,CAAC;;EAEvB;AACF;AACA;AACA;AACA;EACE,IAAMsC,OAAO,GAAG,SAAVA,OAAO,CAAIC,WAAkB,EAAK;IACtC,uBAA8BvD,cAAc,CAACuD,WAAW,IAAIlB,IAAI,EAAEC,QAAQ,EAAEC,SAAS,CAAC;MAA9EO,QAAQ,oBAARA,QAAQ;MAAE9B,OAAO,oBAAPA,OAAO;IACzB,OAAO6B,IAAI,CAACC,QAAQ,EAAE9B,OAAO,CAAC;EAChC,CAAC;EAED,OAAO,CAACsC,OAAO,EAAEX,QAAQ,EAAEvC,GAAG,CAAC;AACjC,CAAC;AAED,eAAegC,eAAe"}
1
+ {"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","bias","mapSize","set","cam","camera","near","far","left","right","top","bottom","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: 0.1,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 10))\n sunLight.castShadow = true\n\n sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 2), getLastValue(opts.mapSize?.[1], 1024 * 2))\n\n const cam = sunLight.shadow.camera\n cam.near = getLastValue(opts.near, 1)\n cam.far = getLastValue(opts.far, 10000)\n cam.left = getLastValue(opts.left, -1000)\n cam.right = getLastValue(opts.right, 1000)\n cam.top = getLastValue(opts.top, 1000)\n cam.bottom = getLastValue(opts.bottom, -1000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n sunRadius = 300\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n scene!.add(sky)\n skyGroup.add(sunLight)\n scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Vector3 } from '@anov/3d-core';
2
+ declare type EnvironmentOptions = {
3
+ weather?: string;
4
+ time?: number;
5
+ };
6
+ declare class SkyBox {
7
+ private opts?;
8
+ private setDate;
9
+ private snow;
10
+ private rain;
11
+ private cloudReturn;
12
+ private sky;
13
+ private renderer;
14
+ sunPosition: Vector3;
15
+ constructor(opts?: EnvironmentOptions);
16
+ private initConfigSet;
17
+ private setWeatherStrategy;
18
+ /**
19
+ * setTime
20
+ * @param params
21
+ * @returns
22
+ */
23
+ setTime(params: {
24
+ time: number;
25
+ duration?: number;
26
+ }): {
27
+ newTime: number;
28
+ };
29
+ /**
30
+ * setWeather
31
+ * @param params
32
+ * @returns
33
+ */
34
+ setWeather(params: {
35
+ weatherType: string;
36
+ duration?: number;
37
+ }): {
38
+ weatherType: string;
39
+ };
40
+ }
41
+ export default SkyBox;
@@ -0,0 +1,150 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
4
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+ import { use } from '@anov/3d-core';
15
+ import { createRain, createSkyCloud, createSkySystem, createSnow } from "../../";
16
+
17
+ /**
18
+ * create time sky system
19
+ * @param date
20
+ * @param latitude
21
+ * @param longitude
22
+ * @param sunRadius
23
+ * @returns
24
+ */
25
+ var createTimeSkySystem = function createTimeSkySystem(date) {
26
+ var latitude = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 40;
27
+ var longitude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 116;
28
+ var sunRadius = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 100;
29
+ var _createSkySystem = createSkySystem(date, latitude, longitude, sunRadius),
30
+ _createSkySystem2 = _slicedToArray(_createSkySystem, 3),
31
+ setDate = _createSkySystem2[0],
32
+ sun = _createSkySystem2[1],
33
+ sky = _createSkySystem2[2];
34
+ return [setDate, sun, sky];
35
+ };
36
+ var SkyBox = /*#__PURE__*/function () {
37
+ function SkyBox(opts) {
38
+ var _this = this;
39
+ _classCallCheck(this, SkyBox);
40
+ _defineProperty(this, "opts", void 0);
41
+ _defineProperty(this, "setDate", void 0);
42
+ _defineProperty(this, "snow", null);
43
+ _defineProperty(this, "rain", null);
44
+ _defineProperty(this, "cloudReturn", null);
45
+ _defineProperty(this, "sky", void 0);
46
+ _defineProperty(this, "renderer", void 0);
47
+ _defineProperty(this, "sunPosition", void 0);
48
+ _defineProperty(this, "setWeatherStrategy", {
49
+ Snow: function Snow() {
50
+ !_this.snow && (_this.snow = createSnow(15, 10000, {
51
+ x: 0,
52
+ y: 3,
53
+ z: 0
54
+ }, 0.5, 50000));
55
+ _this.snow[0]();
56
+ _this.renderer.toneMappingExposure = 0.3;
57
+ },
58
+ Rain: function Rain() {
59
+ !_this.rain && (_this.rain = createRain(4, 10000, {
60
+ x: 0,
61
+ y: 10,
62
+ z: 0
63
+ }, 0.8, 100000));
64
+ _this.rain[0]();
65
+ _this.renderer.toneMappingExposure = 0.3;
66
+ },
67
+ Cloudy: function Cloudy() {
68
+ !_this.cloudReturn && (_this.cloudReturn = createSkyCloud());
69
+ },
70
+ Clear_Skies: function Clear_Skies() {
71
+ var _this$snow, _this$rain;
72
+ (_this$snow = _this.snow) === null || _this$snow === void 0 ? void 0 : _this$snow[1]();
73
+ (_this$rain = _this.rain) === null || _this$rain === void 0 ? void 0 : _this$rain[1]();
74
+ _this.renderer.toneMappingExposure = 0.6;
75
+ if (_this.cloudReturn) {
76
+ var _this$cloudReturn = _slicedToArray(_this.cloudReturn, 2),
77
+ _ = _this$cloudReturn[0],
78
+ clear = _this$cloudReturn[1];
79
+ clear();
80
+ _this.cloudReturn = null;
81
+ }
82
+ }
83
+ });
84
+ var _createTimeSkySystem = createTimeSkySystem(new Date(), 40, 116, 100),
85
+ _createTimeSkySystem2 = _slicedToArray(_createTimeSkySystem, 3),
86
+ setDate = _createTimeSkySystem2[0],
87
+ sun = _createTimeSkySystem2[1],
88
+ sky = _createTimeSkySystem2[2];
89
+ this.renderer = use.useScene().renderer;
90
+ this.sunPosition = sun.position;
91
+ this.setDate = setDate;
92
+ this.sky = sky;
93
+ this.opts = opts;
94
+ this.initConfigSet();
95
+ }
96
+ _createClass(SkyBox, [{
97
+ key: "initConfigSet",
98
+ value: function initConfigSet() {
99
+ var _ref = this.opts || {},
100
+ _ref$weather = _ref.weather,
101
+ weather = _ref$weather === void 0 ? 'Snow' : _ref$weather,
102
+ _ref$time = _ref.time,
103
+ time = _ref$time === void 0 ? 1700 : _ref$time;
104
+ this.setWeather({
105
+ weatherType: weather,
106
+ duration: 0
107
+ });
108
+ this.setTime({
109
+ time: time,
110
+ duration: 0
111
+ });
112
+ }
113
+ }, {
114
+ key: "setTime",
115
+ value:
116
+ /**
117
+ * setTime
118
+ * @param params
119
+ * @returns
120
+ */
121
+ function setTime(params) {
122
+ if (params.time === undefined || params.time > 2400 && params.time < 0) throw new Error('time must be between 0 and 2400');
123
+ var date = new Date();
124
+ date.setHours(0, 0, 0, 0);
125
+ date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400));
126
+ this.setDate(date);
127
+ return {
128
+ newTime: params.time
129
+ };
130
+ }
131
+
132
+ /**
133
+ * setWeather
134
+ * @param params
135
+ * @returns
136
+ */
137
+ }, {
138
+ key: "setWeather",
139
+ value: function setWeather(params) {
140
+ // @ts-ignore
141
+ this.setWeatherStrategy[params.weatherType]();
142
+ return {
143
+ weatherType: params.weatherType
144
+ };
145
+ }
146
+ }]);
147
+ return SkyBox;
148
+ }();
149
+ export default SkyBox;
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["use","createRain","createSkyCloud","createSkySystem","createSnow","createTimeSkySystem","date","latitude","longitude","sunRadius","setDate","sun","sky","SkyBox","opts","Snow","snow","x","y","z","renderer","toneMappingExposure","Rain","rain","Cloudy","cloudReturn","Clear_Skies","_","clear","Date","useScene","sunPosition","position","initConfigSet","weather","time","setWeather","weatherType","duration","setTime","params","undefined","Error","setHours","getTime","Math","floor","newTime","setWeatherStrategy"],"sources":["../../../src/environment/skyBox/index.ts"],"sourcesContent":["import type { Vector3, WebGLRenderer, lib } from '@anov/3d-core'\nimport { use } from '@anov/3d-core'\nimport { createRain, createSkyCloud, createSkySystem, createSnow } from '../../'\n\n/**\n * create time sky system\n * @param date\n * @param latitude\n * @param longitude\n * @param sunRadius\n * @returns\n */\nconst createTimeSkySystem = (date: Date, latitude = 40, longitude = 116, sunRadius = 100) => {\n const [setDate, sun, sky] = createSkySystem(date, latitude, longitude, sunRadius)\n\n return [setDate, sun, sky] as [typeof setDate, typeof sun, typeof sky]\n}\n\ntype EnvironmentOptions = {\n weather?: string\n time?: number\n}\n\nclass SkyBox {\n private opts?: EnvironmentOptions\n private setDate: (currentDate?: Date | undefined) => Vector3\n private snow: any = null\n private rain: any = null\n private cloudReturn: ReturnType<typeof createSkyCloud> | null = null\n private sky: lib.Sky\n private renderer: WebGLRenderer\n sunPosition: Vector3\n\n constructor(opts?: EnvironmentOptions) {\n const [setDate, sun, sky] = createTimeSkySystem(new Date(), 40, 116, 100)\n this.renderer = use.useScene().renderer!\n this.sunPosition = sun.position\n this.setDate = setDate as any\n this.sky = sky\n\n this.opts = opts\n this.initConfigSet()\n }\n\n private initConfigSet() {\n const { weather = 'Snow', time = 1700 } = this.opts || {}\n\n this.setWeather({ weatherType: weather, duration: 0 })\n this.setTime({ time, duration: 0 })\n }\n\n private setWeatherStrategy = {\n Snow: () => {\n !this.snow && (this.snow = createSnow(15, 10000, { x: 0, y: 3, z: 0 }, 0.5, 50000))\n this.snow[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Rain: () => {\n !this.rain && (this.rain = createRain(4, 10000, { x: 0, y: 10, z: 0 }, 0.8, 100000))\n this.rain[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Cloudy: () => {\n !this.cloudReturn && (this.cloudReturn = createSkyCloud())\n },\n Clear_Skies: () => {\n this.snow?.[1]()\n this.rain?.[1]()\n this.renderer.toneMappingExposure = 0.6\n\n if (this.cloudReturn) {\n const [_, clear] = this.cloudReturn\n clear()\n this.cloudReturn = null\n }\n },\n }\n\n /**\n * setTime\n * @param params\n * @returns\n */\n setTime(params: { time: number; duration?: number }) {\n if (params.time === undefined || (params.time > 2400 && params.time < 0))\n throw new Error('time must be between 0 and 2400')\n\n const date = new Date()\n date.setHours(0, 0, 0, 0)\n date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400))\n this.setDate(date)\n\n return {\n newTime: params.time,\n }\n }\n\n /**\n * setWeather\n * @param params\n * @returns\n */\n setWeather(params: { weatherType: string; duration?: number }) {\n // @ts-ignore\n this.setWeatherStrategy[params.weatherType]()\n\n return {\n weatherType: params.weatherType,\n }\n }\n}\n\nexport default SkyBox"],"mappings":"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"}
@@ -31,6 +31,8 @@ export var createSnow = function createSnow() {
31
31
  removeFrame = useframe(function () {
32
32
  points.animation(function (position) {
33
33
  position.y -= position.speedY;
34
+ position.x += position.speedX;
35
+ position.z += position.speedZ;
34
36
  if (position.y <= 0 && isBoundaryJudgment) position.y = 1000 / 2;
35
37
  });
36
38
  });
@@ -1 +1 @@
1
- {"version":3,"names":["globalObjectManage","use","EnvironmentPoints","useframe","createSnow","size","range","speed","opacity","count","points","url","removeFrame","isBoundaryJudgment","start","scene","add","point","animation","position","y","speedY","stop","remove"],"sources":["../../src/environment/snow.ts"],"sourcesContent":["import { globalObjectManage, use } from '@anov/3d-core'\nimport type { SpeedType } from './rain'\nimport type { AVector3 } from './utils/points'\nimport EnvironmentPoints from './utils/points'\n\nconst { useframe } = use\n\ntype CreateSnowReturn = [\n () => void,\n () => void,\n]\n\n/**\n * create snow\n * @param size 雪花大小\n * @param range 降雪范围\n * @param speed 降雪速度\n * @param opacity 雪花透明度\n * @param count 雪花密度\n * @returns\n */\nexport const createSnow = (size = 10, range = 100, speed?: SpeedType, opacity = 0.6, count = 100) => {\n const points = new EnvironmentPoints({\n size,\n opacity,\n speed,\n range,\n count,\n url: 'data:image/png;base64,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',\n })\n\n let removeFrame: (() => void) | null = null\n const isBoundaryJudgment = true\n\n const start = () => {\n globalObjectManage.scene!.add(points.point!)\n\n removeFrame = useframe(() => {\n points.animation(\n (position: AVector3) => {\n position.y -= position.speedY\n\n if (position.y <= 0 && isBoundaryJudgment)\n position.y = 1000 / 2\n },\n )\n })\n }\n\n const stop = () => {\n if (removeFrame) {\n removeFrame()\n globalObjectManage.scene!.remove(points.point!)\n }\n }\n\n return [\n start,\n stop,\n ] as CreateSnowReturn\n}"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,GAAG,QAAQ,eAAe;AAGvD,OAAOC,iBAAiB;AAExB,IAAQC,QAAQ,GAAKF,GAAG,CAAhBE,QAAQ;AAOhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAA8E;EAAA,IAA1EC,IAAI,uEAAG,EAAE;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAAA,IAAEC,KAAiB;EAAA,IAAEC,OAAO,uEAAG,GAAG;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAC9F,IAAMC,MAAM,GAAG,IAAIR,iBAAiB,CAAC;IACnCG,IAAI,EAAJA,IAAI;IACJG,OAAO,EAAPA,OAAO;IACPD,KAAK,EAALA,KAAK;IACLD,KAAK,EAALA,KAAK;IACLG,KAAK,EAALA,KAAK;IACLE,GAAG,EAAE;EACP,CAAC,CAAC;EAEF,IAAIC,WAAgC,GAAG,IAAI;EAC3C,IAAMC,kBAAkB,GAAG,IAAI;EAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBd,kBAAkB,CAACe,KAAK,CAAEC,GAAG,CAACN,MAAM,CAACO,KAAK,CAAE;IAE5CL,WAAW,GAAGT,QAAQ,CAAC,YAAM;MAC3BO,MAAM,CAACQ,SAAS,CACd,UAACC,QAAkB,EAAK;QACtBA,QAAQ,CAACC,CAAC,IAAID,QAAQ,CAACE,MAAM;QAE7B,IAAIF,QAAQ,CAACC,CAAC,IAAI,CAAC,IAAIP,kBAAkB,EACvCM,QAAQ,CAACC,CAAC,GAAG,IAAI,GAAG,CAAC;MACzB,CAAC,CACF;IACH,CAAC,CAAC;EACJ,CAAC;EAED,IAAME,IAAI,GAAG,SAAPA,IAAI,GAAS;IACjB,IAAIV,WAAW,EAAE;MACfA,WAAW,EAAE;MACbZ,kBAAkB,CAACe,KAAK,CAAEQ,MAAM,CAACb,MAAM,CAACO,KAAK,CAAE;IACjD;EACF,CAAC;EAED,OAAO,CACLH,KAAK,EACLQ,IAAI,CACL;AACH,CAAC"}
1
+ {"version":3,"names":["globalObjectManage","use","EnvironmentPoints","useframe","createSnow","size","range","speed","opacity","count","points","url","removeFrame","isBoundaryJudgment","start","scene","add","point","animation","position","y","speedY","x","speedX","z","speedZ","stop","remove"],"sources":["../../src/environment/snow.ts"],"sourcesContent":["import { globalObjectManage, use } from '@anov/3d-core'\nimport type { SpeedType } from './rain'\nimport type { AVector3 } from './utils/points'\nimport EnvironmentPoints from './utils/points'\n\nconst { useframe } = use\n\ntype CreateSnowReturn = [\n () => void,\n () => void,\n]\n\n/**\n * create snow\n * @param size 雪花大小\n * @param range 降雪范围\n * @param speed 降雪速度\n * @param opacity 雪花透明度\n * @param count 雪花密度\n * @returns\n */\nexport const createSnow = (size = 10, range = 100, speed?: SpeedType, opacity = 0.6, count = 100) => {\n const points = new EnvironmentPoints({\n size,\n opacity,\n speed,\n range,\n count,\n url: 'data:image/png;base64,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',\n })\n\n let removeFrame: (() => void) | null = null\n const isBoundaryJudgment = true\n\n const start = () => {\n globalObjectManage.scene!.add(points.point!)\n\n removeFrame = useframe(() => {\n points.animation(\n (position: AVector3) => {\n position.y -= position.speedY\n position.x += position.speedX\n position.z += position.speedZ\n\n if (position.y <= 0 && isBoundaryJudgment)\n position.y = 1000 / 2\n },\n )\n })\n }\n\n const stop = () => {\n if (removeFrame) {\n removeFrame()\n globalObjectManage.scene!.remove(points.point!)\n }\n }\n\n return [\n start,\n stop,\n ] as CreateSnowReturn\n}"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,GAAG,QAAQ,eAAe;AAGvD,OAAOC,iBAAiB;AAExB,IAAQC,QAAQ,GAAKF,GAAG,CAAhBE,QAAQ;AAOhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAA8E;EAAA,IAA1EC,IAAI,uEAAG,EAAE;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAAA,IAAEC,KAAiB;EAAA,IAAEC,OAAO,uEAAG,GAAG;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAC9F,IAAMC,MAAM,GAAG,IAAIR,iBAAiB,CAAC;IACnCG,IAAI,EAAJA,IAAI;IACJG,OAAO,EAAPA,OAAO;IACPD,KAAK,EAALA,KAAK;IACLD,KAAK,EAALA,KAAK;IACLG,KAAK,EAALA,KAAK;IACLE,GAAG,EAAE;EACP,CAAC,CAAC;EAEF,IAAIC,WAAgC,GAAG,IAAI;EAC3C,IAAMC,kBAAkB,GAAG,IAAI;EAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBd,kBAAkB,CAACe,KAAK,CAAEC,GAAG,CAACN,MAAM,CAACO,KAAK,CAAE;IAE5CL,WAAW,GAAGT,QAAQ,CAAC,YAAM;MAC3BO,MAAM,CAACQ,SAAS,CACd,UAACC,QAAkB,EAAK;QACtBA,QAAQ,CAACC,CAAC,IAAID,QAAQ,CAACE,MAAM;QAC7BF,QAAQ,CAACG,CAAC,IAAIH,QAAQ,CAACI,MAAM;QAC7BJ,QAAQ,CAACK,CAAC,IAAIL,QAAQ,CAACM,MAAM;QAE7B,IAAIN,QAAQ,CAACC,CAAC,IAAI,CAAC,IAAIP,kBAAkB,EACvCM,QAAQ,CAACC,CAAC,GAAG,IAAI,GAAG,CAAC;MACzB,CAAC,CACF;IACH,CAAC,CAAC;EACJ,CAAC;EAED,IAAMM,IAAI,GAAG,SAAPA,IAAI,GAAS;IACjB,IAAId,WAAW,EAAE;MACfA,WAAW,EAAE;MACbZ,kBAAkB,CAACe,KAAK,CAAEY,MAAM,CAACjB,MAAM,CAACO,KAAK,CAAE;IACjD;EACF,CAAC;EAED,OAAO,CACLH,KAAK,EACLY,IAAI,CACL;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Group } from '@anov/3d-core';
2
+ export declare const getSunPosition: (date: Date, latitude: number, longitude: number) => {
3
+ altitude: number;
4
+ azimuth: number;
5
+ };
6
+ /**
7
+ * create init
8
+ * @param date
9
+ * @param latitude
10
+ * @param longitude
11
+ * @param distance
12
+ */
13
+ export declare const createSun: (date: Date, latitude: number, longitude: number, distance?: number, autoUpdate?: boolean) => (Group | ((date: Date, latitude: number, longitude: number) => void))[];
@@ -0,0 +1,3 @@
1
+ import { RawShaderMaterial } from '@anov/3d-core';
2
+ declare const cloudMaterial: RawShaderMaterial;
3
+ export default cloudMaterial;
@@ -0,0 +1,8 @@
1
+ import { Mesh } from '@anov/3d-core';
2
+ export declare class VolumetricCloud {
3
+ private geometries;
4
+ cloudGroup: Mesh;
5
+ constructor();
6
+ }
7
+ declare const createVolumetricCloud: () => Mesh;
8
+ export default createVolumetricCloud;
@@ -0,0 +1,9 @@
1
+ declare class HeatMap {
2
+ constructor();
3
+ create(): void;
4
+ private addHeatMap;
5
+ private createDom;
6
+ delete(): void;
7
+ update(): void;
8
+ }
9
+ export default HeatMap;
@@ -0,0 +1,138 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
4
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ import { Color, DoubleSide, Mesh, PlaneGeometry, ShaderMaterial, Texture, use } from '@anov/3d-core';
8
+
9
+ // @ts-ignore
10
+ import heatMap from 'anov-heat-map';
11
+ var TemperatureColorStops = {
12
+ 1.0: '#f00',
13
+ 0.9: '#e2fa00',
14
+ 0.6: '#33f900',
15
+ 0.3: '#0349df',
16
+ 0.0: '#0f00ff'
17
+ };
18
+ var HeatMap = /*#__PURE__*/function () {
19
+ function HeatMap() {
20
+ _classCallCheck(this, HeatMap);
21
+ }
22
+ _createClass(HeatMap, [{
23
+ key: "create",
24
+ value: function create() {
25
+ var mesh = this.addHeatMap();
26
+ var _use$useScene = use.useScene(),
27
+ scene = _use$useScene.scene,
28
+ camera = _use$useScene.camera;
29
+ console.log('camera:', camera === null || camera === void 0 ? void 0 : camera.position);
30
+
31
+ // 添加到场景
32
+ scene === null || scene === void 0 ? void 0 : scene.add(mesh);
33
+ }
34
+
35
+ // 热力图
36
+ }, {
37
+ key: "addHeatMap",
38
+ value: function addHeatMap() {
39
+ var heatmap = heatMap.create({
40
+ container: this.createDom(),
41
+ gradient: TemperatureColorStops
42
+ });
43
+ var len = 150;
44
+ var width = window.innerWidth;
45
+ var height = window.innerHeight;
46
+ var points = [];
47
+ var max = 0;
48
+ while (len--) {
49
+ var val = Math.floor(Math.random() * 30);
50
+ max = Math.max(max, val);
51
+ var point = {
52
+ x: Math.floor(Math.random() * width),
53
+ y: Math.floor(Math.random() * height),
54
+ value: val
55
+ };
56
+ points.push(point);
57
+ }
58
+ heatmap.setData({
59
+ max: max,
60
+ data: points
61
+ });
62
+
63
+ // 灰度图
64
+ var greymap = heatMap.create({
65
+ container: this.createDom(),
66
+ gradient: {
67
+ '0': 'black',
68
+ '1.0': 'white'
69
+ }
70
+ });
71
+ greymap.setData({
72
+ max: max,
73
+ data: points
74
+ });
75
+ var heatMapMaterial = new ShaderMaterial({
76
+ transparent: true,
77
+ vertexShader: "varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//\u83B7\u53D6\u7070\u5EA6\u56FE\u70B9\u4F4D\u4FE1\u606F\n float height = Zscale * frgColor.a;//\u901A\u8FC7\u7070\u5EA6\u56FE\u7684rgb*\u9700\u8981\u8BBE\u7F6E\u7684\u9AD8\u5EA6\u8BA1\u7B97\u51FA\u70ED\u529B\u56FE\u6BCF\u4E2A\u70B9\u4F4D\u6700\u7EC8\u5728z\u8F74\u9AD8\u5EA6\n vec3 transformed = vec3( position.x, position.y, height);//\u91CD\u65B0\u7EC4\u88C5\u70B9\u5750\u6807\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//\u6E32\u67D3\u70B9\u4F4D\n \n }\n ",
78
+ fragmentShader: "varying vec2 vUv;\n uniform sampler2D heatMap;//\u70ED\u529B\u56FE\n uniform vec3 u_color;//\u57FA\u7840\u989C\u8272\n uniform float u_opacity; // \u900F\u660E\u5EA6\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//\u628A\u70ED\u529B\u56FE\u989C\u8272\u548C\u900F\u660E\u5EA6\u8FDB\u884C\u6E32\u67D3\n }",
79
+ uniforms: {
80
+ heatMap: {
81
+ value: {
82
+ value: undefined
83
+ }
84
+ },
85
+ greyMap: {
86
+ value: {
87
+ value: undefined
88
+ }
89
+ },
90
+ Zscale: {
91
+ value: 1.2
92
+ },
93
+ // 高度参数
94
+ u_color: {
95
+ value: new Color('rgb(255, 255, 255)')
96
+ },
97
+ u_opacity: {
98
+ value: 1.0
99
+ }
100
+ }
101
+ });
102
+ heatMapMaterial.side = DoubleSide; // 双面渲染
103
+
104
+ var texture = new Texture(heatmap._renderer.canvas);
105
+ texture.needsUpdate = true;
106
+ var greyTexture = new Texture(greymap._renderer.canvas);
107
+ greyTexture.needsUpdate = true;
108
+ heatMapMaterial.uniforms.heatMap.value = texture;
109
+ heatMapMaterial.uniforms.greyMap.value = greyTexture;
110
+ var heatMapGeometry = new PlaneGeometry(15, 15, 100, 100); // 3d热力图大小,及分块数量
111
+ var heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial);
112
+ heatMapPlane.rotation.set(-Math.PI / 2, 0, 0);
113
+ heatMapPlane.position.set(0, 0, 0); // 3d热力图中心点位置
114
+
115
+ return heatMapPlane;
116
+ }
117
+ }, {
118
+ key: "createDom",
119
+ value: function createDom() {
120
+ // 创建一个新的 canvas 元素
121
+ var canvas = document.createElement('canvas');
122
+ // 设置 canvas 元素的宽度和高度
123
+ canvas.width = window.innerWidth;
124
+ canvas.height = window.innerHeight;
125
+ document.body.appendChild(canvas);
126
+ return canvas;
127
+ }
128
+ }, {
129
+ key: "delete",
130
+ value: function _delete() {}
131
+ }, {
132
+ key: "update",
133
+ value: function update() {}
134
+ }]);
135
+ return HeatMap;
136
+ }();
137
+ export default HeatMap;
138
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Color","DoubleSide","Mesh","PlaneGeometry","ShaderMaterial","Texture","use","heatMap","TemperatureColorStops","HeatMap","mesh","addHeatMap","useScene","scene","camera","console","log","position","add","heatmap","create","container","createDom","gradient","len","width","window","innerWidth","height","innerHeight","points","max","val","Math","floor","random","point","x","y","value","push","setData","data","greymap","heatMapMaterial","transparent","vertexShader","fragmentShader","uniforms","undefined","greyMap","Zscale","u_color","u_opacity","side","texture","_renderer","canvas","needsUpdate","greyTexture","heatMapGeometry","heatMapPlane","rotation","set","PI","document","createElement","body","appendChild"],"sources":["../../src/heatmap/index.ts"],"sourcesContent":["import {\n Color,\n DoubleSide,\n Mesh,\n PlaneGeometry,\n ShaderMaterial,\n Texture,\n use,\n} from '@anov/3d-core'\n\n// @ts-ignore\nimport heatMap from 'anov-heat-map'\n\nconst TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n}\n\nclass HeatMap {\n constructor() {\n\n }\n\n public create() {\n const mesh = this.addHeatMap()\n const { scene, camera } = use.useScene()\n console.log('camera:', camera?.position)\n\n // 添加到场景\n scene?.add(mesh)\n }\n\n // 热力图\n private addHeatMap() {\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: TemperatureColorStops,\n })\n let len = 150\n const width = window.innerWidth\n const height = window.innerHeight\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 30)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 1.2 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 1.0,\n },\n },\n })\n heatMapMaterial.side = DoubleSide // 双面渲染\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const heatMapGeometry = new PlaneGeometry(15, 15, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n heatMapPlane.position.set(0, 0, 0) // 3d热力图中心点位置\n\n return heatMapPlane\n }\n\n private createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n\n return canvas\n }\n\n public delete() {}\n\n public update() {\n\n }\n}\n\nexport default HeatMap\n"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { LineSegments, OrbitControls, PerspectiveCamera, Sprite, WebGLRenderer, lib } from '@anov/3d-core';
2
+ import { Mesh, Object3D, OrthographicCamera, Vector3, Vector4 } from '@anov/3d-core';
3
+ declare type GizmoOrientation = '+x' | '-x' | '+y' | '-y' | '+z' | '-z';
4
+ export declare type DomPlacement = 'top-left' | 'top-right' | 'top-center' | 'center-right' | 'center-left' | 'center-center' | 'bottom-left' | 'bottom-right' | 'bottom-center';
5
+ declare class ViewHelper extends Object3D {
6
+ camera: OrthographicCamera | PerspectiveCamera;
7
+ orthoCamera: OrthographicCamera;
8
+ isViewHelper: boolean;
9
+ animating: boolean;
10
+ target: Vector3;
11
+ backgroundSphere: Mesh;
12
+ axesLines: LineSegments;
13
+ spritePoints: Sprite[];
14
+ domElement: HTMLElement;
15
+ domContainer: HTMLElement;
16
+ domRect: DOMRect;
17
+ dragging: boolean;
18
+ renderer: WebGLRenderer;
19
+ controls?: OrbitControls | lib.TrackballControls;
20
+ controlsChangeEvent: {
21
+ listener: () => void;
22
+ };
23
+ viewport: Vector4;
24
+ offsetHeight: number;
25
+ constructor(camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, placement?: DomPlacement, size?: number);
26
+ startListening(): void;
27
+ onPointerDown(e: PointerEvent): void;
28
+ onPointerMove(e: PointerEvent): void;
29
+ onPointerLeave(): void;
30
+ handleClick(e: PointerEvent): void;
31
+ handleHover(e: PointerEvent): void;
32
+ setControls(controls?: OrbitControls | lib.TrackballControls): void;
33
+ render(): void;
34
+ updateOrientation(fromCamera?: boolean): void;
35
+ update(): void;
36
+ animate(delta: number): void;
37
+ setOrientation(orientation: GizmoOrientation): void;
38
+ dispose(): void;
39
+ }
40
+ export default ViewHelper;
@@ -0,0 +1,6 @@
1
+ import { BufferGeometry, Color, LineBasicMaterial, LineSegments, Sprite, SpriteMaterial } from '@anov/3d-core';
2
+ import type { DomPlacement } from './index';
3
+ export declare const getDomContainer: (placement: DomPlacement, size: number) => HTMLDivElement;
4
+ export declare const getAxesLines: () => LineSegments<BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, LineBasicMaterial>;
5
+ export declare const getSpriteMaterial: (color: Color, text?: 'x' | 'y' | 'z' | null) => SpriteMaterial;
6
+ export declare const getAxesSpritePoints: () => Sprite[];
package/dist/index.d.ts CHANGED
@@ -13,8 +13,12 @@ import createVolumetricCloud from './environment/volumetricCloud/inex';
13
13
  import createSkyCloud from './environment/shaderCloud/index';
14
14
  import Snow from './environment/showShader';
15
15
  import Rain from './environment/rainShader';
16
- import Poi from './poi/index';
17
- export * from './animation';
16
+ import Poi, { EPoiType } from './poi';
17
+ import HeatMap from './heatmap/index';
18
+ import SkyBox from './environment/skyBox';
19
+ import Camera from './camera/index';
20
+ import { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve';
21
+ export * from './scene';
18
22
  export { SceneControl, // todo remove
19
- mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, initPostEffects, // effect
20
- createHighSelectedTool, GridMaterial, ViewHelper, };
23
+ mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, EPoiType, HeatMap, initPostEffects, // effect
24
+ createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, };