@anov/3d-ability 0.0.4-alpha1 → 0.0.4-alpha12

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 (160) hide show
  1. package/dist/camera/index.d.ts +69 -0
  2. package/dist/camera/index.js +257 -0
  3. package/dist/camera/index.js.map +1 -0
  4. package/dist/city/flyinglead.js +2 -0
  5. package/dist/city/flyinglead.js.map +1 -0
  6. package/dist/city/radar.js +2 -0
  7. package/dist/city/radar.js.map +1 -0
  8. package/dist/city/scanning.js +2 -0
  9. package/dist/city/scanning.js.map +1 -0
  10. package/dist/city/surroundLine.js +2 -0
  11. package/dist/city/surroundLine.js.map +1 -0
  12. package/dist/environment/rain.js +2 -1
  13. package/dist/environment/rain.js.map +1 -0
  14. package/dist/environment/{rainShder → rainShader}/index.js +2 -1
  15. package/dist/environment/rainShader/index.js.map +1 -0
  16. package/dist/environment/{rainShder → rainShader}/shader.js +2 -1
  17. package/dist/environment/rainShader/shader.js.map +1 -0
  18. package/dist/environment/shaderCloud/cloudMaterial.js +2 -1
  19. package/dist/environment/shaderCloud/cloudMaterial.js.map +1 -0
  20. package/dist/environment/shaderCloud/index.js +2 -1
  21. package/dist/environment/shaderCloud/index.js.map +1 -0
  22. package/dist/environment/shaderCloud/shader.js +2 -1
  23. package/dist/environment/shaderCloud/shader.js.map +1 -0
  24. package/dist/environment/{showShder → showShader}/index.js +2 -1
  25. package/dist/environment/showShader/index.js.map +1 -0
  26. package/dist/environment/{showShder → showShader}/shader.js +3 -2
  27. package/dist/environment/showShader/shader.js.map +1 -0
  28. package/dist/environment/sky/index.js +11 -10
  29. package/dist/environment/sky/index.js.map +1 -0
  30. package/dist/environment/skyBox/index.d.ts +41 -0
  31. package/dist/environment/skyBox/index.js +150 -0
  32. package/dist/environment/skyBox/index.js.map +1 -0
  33. package/dist/environment/snow.js +4 -1
  34. package/dist/environment/snow.js.map +1 -0
  35. package/dist/environment/sun/index.js +2 -1
  36. package/dist/environment/sun/index.js.map +1 -0
  37. package/dist/environment/utils/points.js +4 -3
  38. package/dist/environment/utils/points.js.map +1 -0
  39. package/dist/environment/volumetricCloud/cloudMaterial.js +2 -1
  40. package/dist/environment/volumetricCloud/cloudMaterial.js.map +1 -0
  41. package/dist/environment/volumetricCloud/inex.js +2 -1
  42. package/dist/environment/volumetricCloud/inex.js.map +1 -0
  43. package/dist/heatmap/index.d.ts +9 -0
  44. package/dist/heatmap/index.js +138 -0
  45. package/dist/heatmap/index.js.map +1 -0
  46. package/dist/helper/view/index.js +2 -1
  47. package/dist/helper/view/index.js.map +1 -0
  48. package/dist/helper/view/utils.js +2 -1
  49. package/dist/helper/view/utils.js.map +1 -0
  50. package/dist/index.d.ts +11 -6
  51. package/dist/index.js +12 -6
  52. package/dist/index.js.map +1 -0
  53. package/dist/line/curve.d.ts +33 -0
  54. package/dist/line/curve.js +71 -0
  55. package/dist/line/curve.js.map +1 -0
  56. package/dist/line/index.d.ts +0 -0
  57. package/dist/line/index.js +2 -0
  58. package/dist/line/index.js.map +1 -0
  59. package/dist/line/round-curve.d.ts +19 -0
  60. package/dist/line/round-curve.js +212 -0
  61. package/dist/line/round-curve.js.map +1 -0
  62. package/dist/material/finirMaterialMaterial/index.d.ts +9 -0
  63. package/dist/material/finirMaterialMaterial/index.js +47 -0
  64. package/dist/material/finirMaterialMaterial/index.js.map +1 -0
  65. package/dist/material/pristineGridMaterial/index.js +2 -1
  66. package/dist/material/pristineGridMaterial/index.js.map +1 -0
  67. package/dist/material/pristineGridMaterial/shader/fragment.js +2 -1
  68. package/dist/material/pristineGridMaterial/shader/fragment.js.map +1 -0
  69. package/dist/material/pristineGridMaterial/shader/vertex.js +2 -1
  70. package/dist/material/pristineGridMaterial/shader/vertex.js.map +1 -0
  71. package/dist/poi/core/Base.d.ts +7 -0
  72. package/dist/poi/core/Base.js +24 -0
  73. package/dist/poi/core/Base.js.map +1 -0
  74. package/dist/poi/core/Css2D.js +181 -0
  75. package/dist/poi/core/Css2D.js.map +1 -0
  76. package/dist/poi/core/Css3D.d.ts +1 -0
  77. package/dist/poi/core/Css3D.js +24 -0
  78. package/dist/poi/core/Css3D.js.map +1 -0
  79. package/dist/poi/core/Sprite.d.ts +12 -0
  80. package/dist/poi/core/Sprite.js +145 -0
  81. package/dist/poi/core/Sprite.js.map +1 -0
  82. package/dist/poi/core/SpriteBase.d.ts +11 -0
  83. package/dist/poi/core/SpriteBase.js +58 -0
  84. package/dist/poi/core/SpriteBase.js.map +1 -0
  85. package/dist/poi/index.d.ts +12 -0
  86. package/dist/poi/index.js +29 -0
  87. package/dist/poi/index.js.map +1 -0
  88. package/dist/poi/utils/base64.d.ts +3 -0
  89. package/dist/poi/utils/base64.js +4 -0
  90. package/dist/poi/utils/base64.js.map +1 -0
  91. package/dist/poi/utils/canvas.d.ts +3 -0
  92. package/dist/poi/utils/canvas.js +68 -0
  93. package/dist/poi/utils/canvas.js.map +1 -0
  94. package/dist/poi/utils/css.d.ts +35 -0
  95. package/dist/poi/utils/css.js +45 -0
  96. package/dist/poi/utils/css.js.map +1 -0
  97. package/dist/poi/utils/type.d.ts +35 -0
  98. package/dist/poi/utils/type.js +39 -0
  99. package/dist/poi/utils/type.js.map +1 -0
  100. package/dist/poiBack/assets.d.ts +2 -0
  101. package/dist/poiBack/assets.js +3 -0
  102. package/dist/poiBack/assets.js.map +1 -0
  103. package/dist/poiBack/dom.d.ts +2 -0
  104. package/dist/poiBack/dom.js +36 -0
  105. package/dist/poiBack/dom.js.map +1 -0
  106. package/dist/poiBack/index.d.ts +19 -0
  107. package/dist/poiBack/index.js +145 -0
  108. package/dist/poiBack/index.js.map +1 -0
  109. package/dist/poiBack/type.d.ts +20 -0
  110. package/dist/poiBack/type.js +6 -0
  111. package/dist/poiBack/type.js.map +1 -0
  112. package/dist/postEffects/bloomPass.js +2 -1
  113. package/dist/postEffects/bloomPass.js.map +1 -0
  114. package/dist/postEffects/index.js +2 -1
  115. package/dist/postEffects/index.js.map +1 -0
  116. package/dist/postEffects/outlinePass.js +9 -2
  117. package/dist/postEffects/outlinePass.js.map +1 -0
  118. package/dist/scene/grow/grow.d.ts +10 -0
  119. package/dist/scene/grow/grow.js +128 -0
  120. package/dist/scene/grow/grow.js.map +1 -0
  121. package/dist/scene/grow/growStyle.d.ts +2 -0
  122. package/dist/scene/grow/growStyle.js +3 -0
  123. package/dist/scene/grow/growStyle.js.map +1 -0
  124. package/dist/scene/grow/index.d.ts +2 -0
  125. package/dist/scene/grow/index.js +3 -0
  126. package/dist/scene/grow/index.js.map +1 -0
  127. package/dist/scene/grow/style_down.d.ts +13 -0
  128. package/dist/scene/grow/style_down.js +92 -0
  129. package/dist/scene/grow/style_down.js.map +1 -0
  130. package/dist/scene/grow/style_up.d.ts +13 -0
  131. package/dist/scene/grow/style_up.js +96 -0
  132. package/dist/scene/grow/style_up.js.map +1 -0
  133. package/dist/scene/grow/type.d.ts +46 -0
  134. package/dist/scene/grow/type.js +42 -0
  135. package/dist/scene/grow/type.js.map +1 -0
  136. package/dist/scene/index.d.ts +1 -0
  137. package/dist/scene/index.js +2 -0
  138. package/dist/scene/index.js.map +1 -0
  139. package/dist/utils/index.js +2 -1
  140. package/dist/utils/index.js.map +1 -0
  141. package/dist/weather/fog2DMesh.d.ts +14 -0
  142. package/dist/weather/fog2DMesh.js +77 -0
  143. package/dist/weather/fog2DMesh.js.map +1 -0
  144. package/dist/weather/glsl/fog.d.ts +2 -0
  145. package/dist/weather/glsl/fog.js +3 -0
  146. package/dist/weather/glsl/fog.js.map +1 -0
  147. package/dist/weather/index.d.ts +4 -0
  148. package/dist/weather/index.js +12 -0
  149. package/dist/weather/index.js.map +1 -0
  150. package/package.json +10 -3
  151. package/dist/core/mouseDrawe.d.ts +0 -2
  152. package/dist/core/mouseDrawe.js +0 -1
  153. package/dist/environment/cloud/cloud.d.ts +0 -1
  154. package/dist/environment/cloud/cloud.js +0 -1
  155. package/dist/environment/cloud/index.d.ts +0 -7
  156. package/dist/environment/cloud/index.js +0 -60
  157. /package/dist/environment/{rainShder → rainShader}/index.d.ts +0 -0
  158. /package/dist/environment/{rainShder → rainShader}/shader.d.ts +0 -0
  159. /package/dist/environment/{showShder → showShader}/index.d.ts +0 -0
  160. /package/dist/environment/{showShder → showShader}/shader.d.ts +0 -0
@@ -0,0 +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","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
  });
@@ -42,4 +44,5 @@ export var createSnow = function createSnow() {
42
44
  }
43
45
  };
44
46
  return [start, stop];
45
- };
47
+ };
48
+ //# sourceMappingURL=snow.js.map
@@ -0,0 +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","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"}
@@ -73,4 +73,5 @@ export var createSun = function createSun(date, latitude, longitude) {
73
73
  return [group, updateSunPosition, function (currentDate) {
74
74
  return getSunPosition(currentDate || date, latitude, longitude);
75
75
  }];
76
- };
76
+ };
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DirectionalLight","Group","Mesh","MeshBasicMaterial","SphereGeometry","Vector3","getPosition","getThreePosition","date","latitude","longitude","distance","altitude","azimuth","x","Math","cos","z","sin","y","getSunPosition","createSunEntity","box","mater","color","mesh","createSunLight","sunLight","castShadow","shadow","bias","mapSize","set","createSun","autoUpdate","position","group","add","lookAt","updateSunPosition","currentPosition","currentDate"],"sources":["../../../src/environment/sun/index.ts"],"sourcesContent":["import { DirectionalLight, Group, Mesh, MeshBasicMaterial, SphereGeometry, Vector3 } from '@anov/3d-core'\nimport { getPosition } from 'suncalc'\n\n/**\n * 获取当前笛卡尔坐标\n * @param date\n * @param latitude\n * @param longitude\n */\nconst getThreePosition = (date: Date, latitude: number, longitude: number, distance: number) => {\n const { altitude, azimuth } = getPosition(date, latitude, longitude)\n\n const x = distance * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = distance * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = distance * (Math.sin(altitude))\n\n return new Vector3(x, y, z)\n}\n\nexport const getSunPosition = (date: Date, latitude: number, longitude: number) => {\n const { altitude, azimuth } = getPosition(date, latitude, longitude)\n\n return {\n altitude,\n azimuth,\n }\n}\n\n/**\n * entity\n * @returns\n */\nconst createSunEntity = () => {\n const box = new SphereGeometry(1)\n const mater = new MeshBasicMaterial({ color: 'yellow' })\n const mesh = new Mesh(box, mater)\n\n return mesh\n}\n\n/**\n * sun light\n * @returns\n */\nconst createSunLight = () => {\n const sunLight = new DirectionalLight('white', 8)\n sunLight.castShadow = true\n sunLight.shadow.bias = -0.005\n sunLight.shadow.mapSize.set(1024, 1024)\n\n return sunLight\n}\n\n/**\n * create init\n * @param date\n * @param latitude\n * @param longitude\n * @param distance\n */\nexport const createSun = (date: Date, latitude: number, longitude: number, distance = 1000, autoUpdate = true) => {\n const position = getThreePosition(date, latitude, longitude, distance)\n const group = new Group()\n\n group.add(\n createSunEntity(),\n createSunLight(),\n )\n\n group.position.set(position.x, position.y, position.z)\n group.lookAt(0, 0, 0)\n\n const updateSunPosition = (date: Date, latitude: number, longitude: number) => {\n const currentPosition = getThreePosition(date, latitude, longitude, distance)\n group.position.set(currentPosition.x, currentPosition.y, currentPosition.z)\n }\n\n return [group, updateSunPosition, (currentDate?: Date) => {\n return getSunPosition(currentDate || date, latitude, longitude)\n }]\n}\n"],"mappings":"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"}
@@ -34,8 +34,8 @@ var EnvironmentPoints = /*#__PURE__*/function () {
34
34
  var _this$opts$speed, _this$opts$speed2, _this$opts$speed3;
35
35
  var _position = new Vector3(Math.random() * range - range / 2, Math.random() * range, Math.random() * range - range / 2);
36
36
  _position.speedX = ((_this$opts$speed = this.opts.speed) === null || _this$opts$speed === void 0 ? void 0 : _this$opts$speed.x) || 0;
37
- _position.speedY = ((_this$opts$speed2 = this.opts.speed) === null || _this$opts$speed2 === void 0 ? void 0 : _this$opts$speed2.x) || 10;
38
- _position.speedZ = ((_this$opts$speed3 = this.opts.speed) === null || _this$opts$speed3 === void 0 ? void 0 : _this$opts$speed3.x) || 0;
37
+ _position.speedY = ((_this$opts$speed2 = this.opts.speed) === null || _this$opts$speed2 === void 0 ? void 0 : _this$opts$speed2.y) || 10;
38
+ _position.speedZ = ((_this$opts$speed3 = this.opts.speed) === null || _this$opts$speed3 === void 0 ? void 0 : _this$opts$speed3.z) || 0;
39
39
  this.points.push(_position);
40
40
  }
41
41
  this.geometry.setFromPoints(this.points);
@@ -52,4 +52,5 @@ var EnvironmentPoints = /*#__PURE__*/function () {
52
52
  }]);
53
53
  return EnvironmentPoints;
54
54
  }();
55
- export default EnvironmentPoints;
55
+ export default EnvironmentPoints;
56
+ //# sourceMappingURL=points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BufferGeometry","Points","PointsMaterial","TextureLoader","Vector3","EnvironmentPoints","opts","createEnvPoints","material","size","map","load","url","transparent","opacity","depthTest","geometry","range","i","count","position","Math","random","speedX","speed","x","speedY","y","speedZ","z","points","push","setFromPoints","point","handlefn","forEach"],"sources":["../../../src/environment/utils/points.ts"],"sourcesContent":["import { BufferGeometry, Points, PointsMaterial, TextureLoader, Vector3 } from '@anov/3d-core'\nimport type { SpeedType } from '../rain'\n\ninterface EnvPointsOptions {\n range?: number\n count?: number\n opacity?: number\n url: string\n size?: number\n speed?: SpeedType\n}\n\nexport type AVector3 = Vector3 & {\n speedX: number\n speedY: number\n speedZ: number\n}\n\nclass EnvironmentPoints {\n private opts: EnvPointsOptions = {} as EnvPointsOptions\n public points: AVector3[] = []\n\n public material: PointsMaterial | null = null\n public geometry: BufferGeometry | null = null\n public point: Points | null = null\n\n constructor(opts: EnvPointsOptions) {\n this.opts = opts\n\n this.createEnvPoints()\n }\n\n private createEnvPoints() {\n this.material = new PointsMaterial({\n size: this.opts.size || 1,\n map: new TextureLoader().load(this.opts.url),\n transparent: true,\n opacity: this.opts.opacity,\n depthTest: false,\n })\n\n this.geometry = new BufferGeometry()\n\n const range = this.opts.range ?? 1000\n\n for (let i = 0; i < (this.opts.count || 500); i++) {\n const position = new Vector3(\n Math.random() * range - range / 2,\n Math.random() * range,\n Math.random() * range - range / 2,\n ) as AVector3\n\n position.speedX = this.opts.speed?.x || 0\n position.speedY = this.opts.speed?.y || 10\n position.speedZ = this.opts.speed?.z || 0\n\n this.points.push(position)\n }\n this.geometry.setFromPoints(this.points)\n\n this.point = new Points(this.geometry, this.material)\n }\n\n public animation(handlefn: (position: AVector3) => void) {\n this.points.forEach((position) => {\n handlefn(position)\n })\n\n this.point!.geometry.setFromPoints(this.points)\n }\n}\n\nexport default EnvironmentPoints"],"mappings":";;;;;;;AAAA,SAASA,cAAc,EAAEC,MAAM,EAAEC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,eAAe;AAAA,IAkBxFC,iBAAiB;EAQrB,2BAAYC,IAAsB,EAAE;IAAA;IAAA,8BAPH,CAAC,CAAC;IAAA,gCACP,EAAE;IAAA,kCAEW,IAAI;IAAA,kCACJ,IAAI;IAAA,+BACf,IAAI;IAGhC,IAAI,CAACA,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACC,eAAe,EAAE;EACxB;EAAC;IAAA;IAAA,OAED,2BAA0B;MAAA;MACxB,IAAI,CAACC,QAAQ,GAAG,IAAIN,cAAc,CAAC;QACjCO,IAAI,EAAE,IAAI,CAACH,IAAI,CAACG,IAAI,IAAI,CAAC;QACzBC,GAAG,EAAE,IAAIP,aAAa,EAAE,CAACQ,IAAI,CAAC,IAAI,CAACL,IAAI,CAACM,GAAG,CAAC;QAC5CC,WAAW,EAAE,IAAI;QACjBC,OAAO,EAAE,IAAI,CAACR,IAAI,CAACQ,OAAO;QAC1BC,SAAS,EAAE;MACb,CAAC,CAAC;MAEF,IAAI,CAACC,QAAQ,GAAG,IAAIhB,cAAc,EAAE;MAEpC,IAAMiB,KAAK,uBAAG,IAAI,CAACX,IAAI,CAACW,KAAK,+DAAI,IAAI;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,IAAI,CAACZ,IAAI,CAACa,KAAK,IAAI,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;QAAA;QACjD,IAAME,SAAQ,GAAG,IAAIhB,OAAO,CAC1BiB,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,EACjCI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,EACrBI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,CACtB;QAEbG,SAAQ,CAACG,MAAM,GAAG,yBAAI,CAACjB,IAAI,CAACkB,KAAK,qDAAf,iBAAiBC,CAAC,KAAI,CAAC;QACzCL,SAAQ,CAACM,MAAM,GAAG,0BAAI,CAACpB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBG,CAAC,KAAI,EAAE;QAC1CP,SAAQ,CAACQ,MAAM,GAAG,0BAAI,CAACtB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBK,CAAC,KAAI,CAAC;QAEzC,IAAI,CAACC,MAAM,CAACC,IAAI,CAACX,SAAQ,CAAC;MAC5B;MACA,IAAI,CAACJ,QAAQ,CAACgB,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;MAExC,IAAI,CAACG,KAAK,GAAG,IAAIhC,MAAM,CAAC,IAAI,CAACe,QAAQ,EAAE,IAAI,CAACR,QAAQ,CAAC;IACvD;EAAC;IAAA;IAAA,OAED,mBAAiB0B,QAAsC,EAAE;MACvD,IAAI,CAACJ,MAAM,CAACK,OAAO,CAAC,UAACf,QAAQ,EAAK;QAChCc,QAAQ,CAACd,QAAQ,CAAC;MACpB,CAAC,CAAC;MAEF,IAAI,CAACa,KAAK,CAAEjB,QAAQ,CAACgB,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;IACjD;EAAC;EAAA;AAAA;AAGH,eAAezB,iBAAiB"}
@@ -57,4 +57,5 @@ var cloudMaterial = new RawShaderMaterial({
57
57
  side: BackSide,
58
58
  transparent: true
59
59
  });
60
- export default cloudMaterial;
60
+ export default cloudMaterial;
61
+ //# sourceMappingURL=cloudMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BackSide","Color","Data3DTexture","GLSL3","LinearFilter","RawShaderMaterial","RedFormat","Vector3","lib","size","data","Uint8Array","i","scale","perlin","ImprovedNoise","vector","z","y","x","d","set","subScalar","divideScalar","length","noise","texture","format","minFilter","magFilter","unpackAlignment","needsUpdate","vertexShader","fragmentShader","cloudMaterial","glslVersion","uniforms","base","value","map","cameraPos","threshold","opacity","range","steps","frame","side","transparent"],"sources":["../../../src/environment/volumetricCloud/cloudMaterial.ts"],"sourcesContent":["import { BackSide, Color, Data3DTexture, GLSL3, LinearFilter, RawShaderMaterial, RedFormat, Vector3, lib } from '@anov/3d-core'\n\nconst size = 128\nconst data = new Uint8Array(size * size * size)\n\nlet i = 0\nconst scale = 0.05\nconst perlin = new lib.ImprovedNoise()\nconst vector = new Vector3()\n\nfor (let z = 0; z < size; z++) {\n for (let y = 0; y < size; y++) {\n for (let x = 0; x < size; x++) {\n const d = 1.0 - vector.set(x, y, z).subScalar(size / 2).divideScalar(size).length()\n data[i] = (128 + 128 * perlin.noise(x * scale / 1.5, y * scale, z * scale / 1.5)) * d * d\n i++\n }\n }\n}\n\nconst texture = new Data3DTexture(data, size, size, size)\ntexture.format = RedFormat\ntexture.minFilter = LinearFilter\ntexture.magFilter = LinearFilter\ntexture.unpackAlignment = 1\ntexture.needsUpdate = true\n\n// Material\nconst vertexShader = /* glsl */`\nin vec3 position;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPos;\nout vec3 vOrigin;\nout vec3 vDirection;\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n vOrigin = vec3(inverse(modelMatrix) * vec4(cameraPos, 1.0)).xyz;\n vDirection = position - vOrigin;\n gl_Position = projectionMatrix * mvPosition;\n}\n`\n\nconst fragmentShader = /* glsl */`\n\n\nprecision highp float;\nprecision highp sampler3D;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nin vec3 vOrigin;\nin vec3 vDirection;\n\nout vec4 color;\n\nuniform vec3 base;\nuniform sampler3D map;\n\nuniform float threshold;\nuniform float range;\nuniform float opacity;\nuniform float steps;\nuniform float frame;\n\nuint wang_hash(uint seed) {\n seed = (seed ^ 61u) ^ (seed >> 16u);\n seed *= 9u;\n seed = seed ^ (seed >> 4u);\n seed *= 0x27d4eb2du;\n seed = seed ^ (seed >> 15u);\n return seed;\n}\n\nfloat randomFloat(inout uint seed) {\n return float(wang_hash(seed)) / 4294967296.;\n}\n\nvec2 hitBox(vec3 orig, vec3 dir) {\n const vec3 box_min = vec3(-0.5);\n const vec3 box_max = vec3(0.5);\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = (box_min - orig) * inv_dir;\n vec3 tmax_tmp = (box_max - orig) * inv_dir;\n vec3 tmin = min(tmin_tmp, tmax_tmp);\n vec3 tmax = max(tmin_tmp, tmax_tmp);\n float t0 = max(tmin.x, max(tmin.y, tmin.z));\n float t1 = min(tmax.x, min(tmax.y, tmax.z));\n return vec2(t0, t1);\n}\n\nfloat sample1(vec3 p) {\n return texture(map, p).r;\n}\n\nfloat shading(vec3 coord) {\n float step = 0.01;\n return sample1(coord + vec3(-step)) - sample1(coord + vec3(step));\n}\n\nvec4 linearToSRGB(in vec4 value) {\n return vec4(mix(pow(value.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), value.rgb * 12.92, vec3(lessThanEqual(value.rgb, vec3(0.0031308)))), value.a);\n}\n\nvoid main() {\n vec3 rayDir = normalize(vDirection);\n vec2 bounds = hitBox(vOrigin, rayDir);\n\n if(bounds.x > bounds.y)\n discard;\n\n bounds.x = max(bounds.x, 0.0);\n\n vec3 p = vOrigin + bounds.x * rayDir;\n vec3 inc = 1.0 / abs(rayDir);\n float delta = min(inc.x, min(inc.y, inc.z));\n delta /= steps;\n\n// Jitter\n// Nice little seed from\n// https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/\n uint seed = uint(gl_FragCoord.x) * uint(1973) + uint(gl_FragCoord.y) * uint(9277) + uint(frame) * uint(26699);\n vec3 size = vec3(textureSize(map, 0));\n float randNum = randomFloat(seed) * 2.0 - 1.0;\n p += rayDir * randNum * (1.0 / size);\n\n vec4 ac = vec4(base, 0.0);\n\n for(float t = bounds.x; t < bounds.y; t += delta) {\n\n float d = sample1(p + 0.5);\n\n d = smoothstep(threshold - range, threshold + range, d) * opacity;\n\n float col = shading(p + 0.5) * 3.0 + ((p.x + p.y) * 0.25) + 0.2;\n\n ac.rgb += (1.0 - ac.a) * d * col;\n\n ac.a += (1.0 - ac.a) * d;\n\n if(ac.a >= 0.95)\n break;\n\n p += rayDir * delta;\n\n }\n\n color = linearToSRGB(ac);\n\n if(color.a == 0.0)\n discard;\n\n}\n\n`\n\nconst cloudMaterial = new RawShaderMaterial({\n glslVersion: GLSL3,\n uniforms: {\n base: { value: new Color(0x798AA0) },\n map: { value: texture },\n cameraPos: { value: new Vector3() },\n threshold: { value: 0.25 },\n opacity: { value: 0.25 },\n range: { value: 0.1 },\n steps: { value: 100 },\n frame: { value: 0 },\n },\n vertexShader,\n fragmentShader,\n side: BackSide,\n transparent: true,\n})\n\nexport default cloudMaterial"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,KAAK,EAAEC,aAAa,EAAEC,KAAK,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,SAAS,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AAE/H,IAAMC,IAAI,GAAG,GAAG;AAChB,IAAMC,IAAI,GAAG,IAAIC,UAAU,CAACF,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC;AAE/C,IAAIG,CAAC,GAAG,CAAC;AACT,IAAMC,KAAK,GAAG,IAAI;AAClB,IAAMC,MAAM,GAAG,IAAIN,GAAG,CAACO,aAAa,EAAE;AACtC,IAAMC,MAAM,GAAG,IAAIT,OAAO,EAAE;AAE5B,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,IAAI,EAAEQ,CAAC,EAAE,EAAE;EAC7B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,IAAI,EAAES,CAAC,EAAE,EAAE;IAC7B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,IAAI,EAAEU,CAAC,EAAE,EAAE;MAC7B,IAAMC,CAAC,GAAG,GAAG,GAAGJ,MAAM,CAACK,GAAG,CAACF,CAAC,EAAED,CAAC,EAAED,CAAC,CAAC,CAACK,SAAS,CAACb,IAAI,GAAG,CAAC,CAAC,CAACc,YAAY,CAACd,IAAI,CAAC,CAACe,MAAM,EAAE;MACnFd,IAAI,CAACE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAGE,MAAM,CAACW,KAAK,CAACN,CAAC,GAAGN,KAAK,GAAG,GAAG,EAAEK,CAAC,GAAGL,KAAK,EAAEI,CAAC,GAAGJ,KAAK,GAAG,GAAG,CAAC,IAAIO,CAAC,GAAGA,CAAC;MACzFR,CAAC,EAAE;IACL;EACF;AACF;AAEA,IAAMc,OAAO,GAAG,IAAIxB,aAAa,CAACQ,IAAI,EAAED,IAAI,EAAEA,IAAI,EAAEA,IAAI,CAAC;AACzDiB,OAAO,CAACC,MAAM,GAAGrB,SAAS;AAC1BoB,OAAO,CAACE,SAAS,GAAGxB,YAAY;AAChCsB,OAAO,CAACG,SAAS,GAAGzB,YAAY;AAChCsB,OAAO,CAACI,eAAe,GAAG,CAAC;AAC3BJ,OAAO,CAACK,WAAW,GAAG,IAAI;;AAE1B;AACA,IAAMC,YAAY,GAAG,6aAepB;AAED,IAAMC,cAAc,GAAG,utFAgHtB;AAED,IAAMC,aAAa,GAAG,IAAI7B,iBAAiB,CAAC;EAC1C8B,WAAW,EAAEhC,KAAK;EAClBiC,QAAQ,EAAE;IACRC,IAAI,EAAE;MAAEC,KAAK,EAAE,IAAIrC,KAAK,CAAC,QAAQ;IAAE,CAAC;IACpCsC,GAAG,EAAE;MAAED,KAAK,EAAEZ;IAAQ,CAAC;IACvBc,SAAS,EAAE;MAAEF,KAAK,EAAE,IAAI/B,OAAO;IAAG,CAAC;IACnCkC,SAAS,EAAE;MAAEH,KAAK,EAAE;IAAK,CAAC;IAC1BI,OAAO,EAAE;MAAEJ,KAAK,EAAE;IAAK,CAAC;IACxBK,KAAK,EAAE;MAAEL,KAAK,EAAE;IAAI,CAAC;IACrBM,KAAK,EAAE;MAAEN,KAAK,EAAE;IAAI,CAAC;IACrBO,KAAK,EAAE;MAAEP,KAAK,EAAE;IAAE;EACpB,CAAC;EACDN,YAAY,EAAZA,YAAY;EACZC,cAAc,EAAdA,cAAc;EACda,IAAI,EAAE9C,QAAQ;EACd+C,WAAW,EAAE;AACf,CAAC,CAAC;AAEF,eAAeb,aAAa"}
@@ -39,4 +39,5 @@ var createVolumetricCloud = function createVolumetricCloud() {
39
39
  scene.add(cloudGroup);
40
40
  return cloudGroup;
41
41
  };
42
- export default createVolumetricCloud;
42
+ export default createVolumetricCloud;
43
+ //# sourceMappingURL=inex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BoxGeometry","Mesh","use","cloudMaterial","VolumetricCloud","box","cloudGroup","useScene","camera","useframe","createVolumetricCloud","scene","Error","add"],"sources":["../../../src/environment/volumetricCloud/inex.ts"],"sourcesContent":["import { BoxGeometry, BufferGeometryUtils, Mesh, use } from '@anov/3d-core'\nimport cloudMaterial from './cloudMaterial'\n\nexport class VolumetricCloud {\n private geometries: BoxGeometry[] = []\n public cloudGroup: Mesh\n\n constructor() {\n // cloud density\n // for (let i = 0; i < 100; i++) {\n // const cloud = new BoxGeometry(100, 100, 100)\n\n // cloud.translate(Math.random() * 1000 - 500, -Math.random() * Math.random() * 200 - 15, i)\n // // cloud.rotateZ(Math.random() * Math.PI / 2)\n // cloud.scale(Math.random() * Math.random() * 1.1 + 0.5, Math.random() * Math.random() * 1.1 + 0.5, 1)\n // this.geometries.push(cloud)\n // }\n\n const box = new BoxGeometry(100, 100, 100)\n // const mergedGeometry = BufferGeometryUtils.mergeGeometries(this.geometries, false)\n this.cloudGroup = new Mesh(box, cloudMaterial)\n\n const { camera } = use.useScene()\n\n use.useframe(() => {\n // @ts-ignore\n // this.cloudGroup.material.uniforms.cameraPos.value.copy(camera!.position)\n })\n }\n}\n\nconst createVolumetricCloud = () => {\n const { scene } = use.useScene()\n const cloudGroup = new VolumetricCloud().cloudGroup\n\n if (!scene)\n throw new Error('scene is not defined')\n\n scene.add(cloudGroup)\n\n return cloudGroup\n}\n\nexport default createVolumetricCloud"],"mappings":";;;;;;;AAAA,SAASA,WAAW,EAAuBC,IAAI,EAAEC,GAAG,QAAQ,eAAe;AAC3E,OAAOC,aAAa;AAEpB,WAAaC,eAAe,6BAI1B,2BAAc;EAAA;EAAA,oCAHsB,EAAE;EAAA;EAIpC;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA,IAAMC,GAAG,GAAG,IAAIL,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1C;EACA,IAAI,CAACM,UAAU,GAAG,IAAIL,IAAI,CAACI,GAAG,EAAEF,aAAa,CAAC;EAE9C,oBAAmBD,GAAG,CAACK,QAAQ,EAAE;IAAzBC,MAAM,iBAANA,MAAM;EAEdN,GAAG,CAACO,QAAQ,CAAC,YAAM;IACjB;IACA;EAAA,CACD,CAAC;AACJ,CAAC;AAGH,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqB,GAAS;EAClC,qBAAkBR,GAAG,CAACK,QAAQ,EAAE;IAAxBI,KAAK,kBAALA,KAAK;EACb,IAAML,UAAU,GAAG,IAAIF,eAAe,EAAE,CAACE,UAAU;EAEnD,IAAI,CAACK,KAAK,EACR,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EAEzCD,KAAK,CAACE,GAAG,CAACP,UAAU,CAAC;EAErB,OAAOA,UAAU;AACnB,CAAC;AAED,eAAeI,qBAAqB"}
@@ -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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"}
@@ -382,4 +382,5 @@ function updateSpritesOpacity(sprites, camera) {
382
382
  function clamp(num, min, max) {
383
383
  return Math.min(Math.max(num, min), max);
384
384
  }
385
- export default ViewHelper;
385
+ export default ViewHelper;
386
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BackSide","Clock","Euler","Mesh","MeshBasicMaterial","Object3D","OrthographicCamera","Quaternion","Raycaster","SphereGeometry","Vector2","Vector3","Vector4","getAxesLines","getAxesSpritePoints","getDomContainer","Array","fill","map","_","i","POS_X","POS_Y","POS_Z","NEG_X","NEG_Y","NEG_Z","clock","targetPosition","targetQuaternion","euler","q1","q2","point","dim","turnRate","Math","PI","raycaster","mouse","mouseStart","mouseAngle","dummy","radius","ViewHelper","camera","renderer","placement","size","domElement","orthoCamera","position","set","backgroundSphere","getBackgroundSphere","axesLines","spritePoints","domContainer","parentElement","appendChild","domRect","getBoundingClientRect","startListening","controlsChangeEvent","listener","updateOrientation","update","add","onpointerdown","e","onPointerDown","onpointermove","onPointerMove","onpointerleave","onPointerLeave","drag","dragging","isClick","resetSprites","clientX","clientY","sub","multiplyScalar","width","rotation","x","clamp","rotationStart","y","updateMatrixWorld","copy","quaternion","invert","applyQuaternion","target","setFromQuaternion","endDrag","document","removeEventListener","handleClick","animating","preventDefault","setRadius","addEventListener","material","opacity","handleHover","style","cursor","object","getIntersectionObject","setOrientation","userData","type","offset","scale","controls","delta","getDelta","animate","height","autoClear","setViewport","render","viewport","fromCamera","updateSpritesOpacity","offsetHeight","getViewport","step","rotateTowards","angleTo","orientation","prepareAnimationData","geometry","dispose","forEach","sprite","remove","sphere","color","side","transparent","depthTest","focusPoint","axis","setFromEuler","console","error","prepareQuaternions","distanceTo","lookAt","updatePointer","left","top","setFromCamera","startCoords","threshold","abs","event","intersectionObjects","intersects","intersectObjects","length","intersection","sprites","z","num","min","max"],"sources":["../../../src/helper/view/index.ts"],"sourcesContent":["import type {\n Camera,\n LineSegments,\n Material,\n OrbitControls,\n PerspectiveCamera,\n Sprite,\n WebGLRenderer,\n lib,\n} from '@anov/3d-core'\n\nimport {\n BackSide,\n Clock,\n Euler,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n OrthographicCamera,\n Quaternion,\n Raycaster,\n SphereGeometry,\n Vector2,\n Vector3,\n Vector4,\n use,\n} from '@anov/3d-core'\nimport { getAxesLines, getAxesSpritePoints, getDomContainer } from './utils'\n\nconst [POS_X, POS_Y, POS_Z, NEG_X, NEG_Y, NEG_Z] = Array(6)\n .fill(0)\n .map((_, i) => i)\n\nconst clock = new Clock()\nconst targetPosition = new Vector3()\nconst targetQuaternion = new Quaternion()\nconst euler = new Euler()\nconst q1 = new Quaternion()\nconst q2 = new Quaternion()\nconst point = new Vector3()\nconst dim = 128\nconst turnRate = 2 * Math.PI\nconst raycaster = new Raycaster()\nconst mouse = new Vector2()\nconst mouseStart = new Vector2()\nconst mouseAngle = new Vector2()\nconst dummy = new Object3D()\nlet radius = 0\n\ntype GizmoOrientation = '+x' | '-x' | '+y' | '-y' | '+z' | '-z'\n\nexport type DomPlacement =\n | 'top-left'\n | 'top-right'\n | 'top-center'\n | 'center-right'\n | 'center-left'\n | 'center-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom-center'\n\nclass ViewHelper extends Object3D {\n camera: OrthographicCamera | PerspectiveCamera\n orthoCamera = new OrthographicCamera(-1.8, 1.8, 1.8, -1.8, 0, 4)\n isViewHelper = true\n animating = false\n target = new Vector3()\n backgroundSphere: Mesh\n axesLines: LineSegments\n spritePoints: Sprite[]\n domElement: HTMLElement\n domContainer: HTMLElement\n domRect: DOMRect\n dragging = false\n renderer: WebGLRenderer\n controls?: OrbitControls | lib.TrackballControls\n controlsChangeEvent: { listener: () => void }\n viewport: Vector4 = new Vector4()\n offsetHeight = 0\n\n constructor(\n camera: PerspectiveCamera | OrthographicCamera,\n renderer: WebGLRenderer,\n placement: DomPlacement = 'bottom-right',\n size = 128,\n ) {\n super()\n\n this.renderer = renderer\n this.camera = camera\n this.domElement = renderer.domElement\n this.orthoCamera.position.set(0, 0, 2)\n\n this.backgroundSphere = getBackgroundSphere()\n this.axesLines = getAxesLines()\n this.spritePoints = getAxesSpritePoints()\n this.domContainer = getDomContainer(placement, size)\n\n // This may cause confusion if the parent isn't the body and doesn't have a `position:relative`\n this.domElement.parentElement!.appendChild(this.domContainer)\n this.domRect = this.domContainer.getBoundingClientRect()\n this.startListening()\n\n this.controlsChangeEvent = { listener: () => this.updateOrientation() }\n this.update()\n this.updateOrientation()\n\n this.add(this.backgroundSphere, this.axesLines, ...this.spritePoints)\n }\n\n startListening() {\n this.domContainer.onpointerdown = e => this.onPointerDown(e)\n this.domContainer.onpointermove = e => this.onPointerMove(e)\n this.domContainer.onpointerleave = () => this.onPointerLeave()\n }\n\n onPointerDown(e: PointerEvent) {\n const drag = (e: PointerEvent) => {\n if (!this.dragging && isClick(e, mouseStart))\n return\n if (!this.dragging) {\n resetSprites(this.spritePoints)\n this.dragging = true\n }\n\n mouseAngle\n .set(e.clientX, e.clientY)\n .sub(mouseStart)\n .multiplyScalar((1 / this.domRect.width) * Math.PI)\n\n this.rotation.x = clamp(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n rotationStart.x + mouseAngle.y,\n Math.PI / -2 + 0.001,\n Math.PI / 2 - 0.001,\n )\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n this.rotation.y = rotationStart.y + mouseAngle.x\n this.updateMatrixWorld()\n\n q1.copy(this.quaternion).invert()\n\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n this.camera.rotation.setFromQuaternion(q1)\n\n this.updateOrientation(false)\n }\n const endDrag = () => {\n document.removeEventListener('pointermove', drag, false)\n document.removeEventListener('pointerup', endDrag, false)\n\n if (!this.dragging) {\n this.handleClick(e)\n return\n }\n\n this.dragging = false\n }\n\n if (this.animating === true)\n return\n e.preventDefault()\n\n mouseStart.set(e.clientX, e.clientY)\n\n const rotationStart = euler.copy(this.rotation)\n\n setRadius(this.camera, this.target)\n\n document.addEventListener('pointermove', drag, false)\n document.addEventListener('pointerup', endDrag, false)\n }\n\n onPointerMove(e: PointerEvent) {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0.2\n this.handleHover(e)\n }\n\n onPointerLeave() {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0\n resetSprites(this.spritePoints)\n this.domContainer.style.cursor = ''\n }\n\n handleClick(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n if (!object)\n return\n\n this.setOrientation(object.userData.type)\n }\n\n handleHover(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n resetSprites(this.spritePoints)\n\n if (!object) {\n this.domContainer.style.cursor = ''\n }\n else {\n object.material.map!.offset.x = 0.5\n object.scale.multiplyScalar(1.2)\n this.domContainer.style.cursor = 'pointer'\n }\n }\n\n setControls(controls?: OrbitControls | lib.TrackballControls) {\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n this.target = new Vector3()\n }\n\n if (!controls)\n return\n\n this.controls = controls\n controls.addEventListener('change', this.controlsChangeEvent.listener)\n this.target = controls.target\n }\n\n render() {\n const delta = clock.getDelta()\n if (this.animating)\n this.animate(delta)\n\n const { width, height } = this.domElement.getBoundingClientRect()\n const autoClear = this.renderer.autoClear\n\n this.renderer.autoClear = false\n this.renderer.setViewport(width - dim, height - dim, dim, dim)\n this.renderer.render(this, this.orthoCamera)\n this.renderer.setViewport(this.viewport)\n this.renderer.autoClear = autoClear\n }\n\n updateOrientation(fromCamera = true) {\n if (fromCamera) {\n this.quaternion.copy(this.camera.quaternion).invert()\n this.updateMatrixWorld()\n }\n\n updateSpritesOpacity(this.spritePoints, this.camera)\n }\n\n update() {\n this.domRect = this.domContainer.getBoundingClientRect()\n this.offsetHeight = this.domElement.offsetHeight\n setRadius(this.camera, this.target)\n this.renderer.getViewport(this.viewport)\n\n this.updateOrientation()\n }\n\n animate(delta: number) {\n const step = delta * turnRate\n\n // animate position by doing a slerp and then scaling the position on the unit sphere\n\n q1.rotateTowards(q2, step)\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n // animate orientation\n\n this.camera.quaternion.rotateTowards(targetQuaternion, step)\n\n this.updateOrientation()\n\n if (q1.angleTo(q2) === 0)\n this.animating = false\n }\n\n setOrientation(orientation: GizmoOrientation) {\n prepareAnimationData(this.camera, this.target, orientation)\n this.animating = true\n }\n\n dispose() {\n this.axesLines.geometry.dispose();\n (this.axesLines.material as Material).dispose()\n\n this.backgroundSphere.geometry.dispose();\n (this.backgroundSphere.material as Material).dispose()\n\n this.spritePoints.forEach((sprite) => {\n sprite.material.map!.dispose()\n sprite.material.dispose()\n })\n\n this.domContainer.remove()\n\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n }\n }\n}\n\nfunction getBackgroundSphere() {\n const geometry = new SphereGeometry(1.6)\n const sphere = new Mesh(\n geometry,\n new MeshBasicMaterial({\n color: 0xFFFFFF,\n side: BackSide,\n transparent: true,\n opacity: 0,\n depthTest: false,\n }),\n )\n\n return sphere\n}\n\nfunction prepareAnimationData(\n camera: OrthographicCamera | PerspectiveCamera,\n focusPoint: Vector3,\n axis: GizmoOrientation,\n) {\n switch (axis) {\n case '+x':\n targetPosition.set(1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI * 0.5, 0))\n break\n\n case '+y':\n targetPosition.set(0, 1, 0)\n targetQuaternion.setFromEuler(new Euler(-Math.PI * 0.5, 0, 0))\n break\n\n case '+z':\n targetPosition.set(0, 0, 1)\n targetQuaternion.setFromEuler(new Euler())\n break\n\n case '-x':\n targetPosition.set(-1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, -Math.PI * 0.5, 0))\n break\n\n case '-y':\n targetPosition.set(0, -1, 0)\n targetQuaternion.setFromEuler(new Euler(Math.PI * 0.5, 0, 0))\n break\n\n case '-z':\n targetPosition.set(0, 0, -1)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI, 0))\n break\n\n default:\n console.error('ViewHelper: Invalid axis.')\n }\n\n setRadius(camera, focusPoint)\n prepareQuaternions(camera, focusPoint)\n}\n\nfunction setRadius(camera: Camera, focusPoint: Vector3) {\n radius = camera.position.distanceTo(focusPoint)\n}\n\nfunction prepareQuaternions(camera: Camera, focusPoint: Vector3) {\n targetPosition.multiplyScalar(radius).add(focusPoint)\n\n dummy.position.copy(focusPoint)\n\n dummy.lookAt(camera.position)\n q1.copy(dummy.quaternion)\n\n dummy.lookAt(targetPosition)\n q2.copy(dummy.quaternion)\n}\n\nfunction updatePointer(\n e: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n) {\n mouse.x = ((e.clientX - domRect.left) / domRect.width) * 2 - 1\n mouse.y = -((e.clientY - domRect.top) / domRect.height) * 2 + 1\n\n raycaster.setFromCamera(mouse, orthoCamera)\n}\n\nfunction isClick(\n e: PointerEvent,\n startCoords: Vector2,\n threshold = 10,\n) {\n return (\n Math.abs(e.clientX - startCoords.x) < threshold\n && Math.abs(e.clientY - startCoords.y) < threshold\n )\n}\n\nfunction getIntersectionObject(\n event: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n intersectionObjects: Sprite[],\n) {\n updatePointer(event, domRect, orthoCamera)\n\n const intersects = raycaster.intersectObjects(intersectionObjects)\n\n if (!intersects.length)\n return null\n\n const intersection = intersects[0]\n return intersection.object as Sprite\n}\n\nfunction resetSprites(sprites: Sprite[]) {\n let i = sprites.length\n\n while (i--) {\n const scale = i < 3 ? 0.6 : 0.4\n sprites[i].scale.set(scale, scale, scale)\n sprites[i].material.map!.offset.x = 1\n }\n // sprites.forEach((sprite) => (sprite.material.map!.offset.x = 1));\n}\n\nfunction updateSpritesOpacity(sprites: Sprite[], camera: Camera) {\n point.set(0, 0, 1)\n point.applyQuaternion(camera.quaternion)\n\n if (point.x >= 0) {\n sprites[POS_X].material.opacity = 1\n sprites[NEG_X].material.opacity = 0.5\n }\n else {\n sprites[POS_X].material.opacity = 0.5\n sprites[NEG_X].material.opacity = 1\n }\n\n if (point.y >= 0) {\n sprites[POS_Y].material.opacity = 1\n sprites[NEG_Y].material.opacity = 0.5\n }\n else {\n sprites[POS_Y].material.opacity = 0.5\n sprites[NEG_Y].material.opacity = 1\n }\n\n if (point.z >= 0) {\n sprites[POS_Z].material.opacity = 1\n sprites[NEG_Z].material.opacity = 0.5\n }\n else {\n sprites[POS_Z].material.opacity = 0.5\n sprites[NEG_Z].material.opacity = 1\n }\n}\n\nfunction clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max)\n}\n\nexport default ViewHelper\n"],"mappings":"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"}