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

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 +41 -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,69 @@
1
+ import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core';
2
+ declare type vector3Array = [number, number, number];
3
+ declare class Camera {
4
+ private camera;
5
+ private controls;
6
+ private isTransitionPeriod;
7
+ constructor(camera: PerspectiveCamera, controls: OrbitControls);
8
+ /**
9
+ * handle camera changed
10
+ */
11
+ private handleChanged;
12
+ /**
13
+ * caclCurrentPos
14
+ * @param currentPos
15
+ * @returns
16
+ */
17
+ private caclCurrentPos;
18
+ /**
19
+ * caclTargetByPitch
20
+ * @param pitch
21
+ * @param target
22
+ * @param position
23
+ * @returns
24
+ */
25
+ private caclTargetByPitch;
26
+ /**
27
+ * caclSingle Coordinate
28
+ * @param prevTarget
29
+ * @param prevPosition
30
+ * @param lastTarget
31
+ * @returns
32
+ */
33
+ private caclSingleCoordinate;
34
+ /**
35
+ * focus On Position
36
+ * @param params
37
+ */
38
+ focus(params: {
39
+ target: vector3Array | vector3Array[];
40
+ pitch?: number;
41
+ duration?: number;
42
+ }): Promise<unknown>;
43
+ /**
44
+ * set camera
45
+ * @param params
46
+ */
47
+ set(params: {
48
+ position: vector3Array;
49
+ target: vector3Array;
50
+ isTrigger?: boolean;
51
+ duration?: number;
52
+ }): Promise<unknown>;
53
+ /**
54
+ * get Camera info
55
+ * @returns
56
+ */
57
+ get(): {
58
+ position: number[];
59
+ target: number[];
60
+ };
61
+ /**
62
+ * interpolation move camera
63
+ * @param position
64
+ * @param target
65
+ * @param options
66
+ */
67
+ private moveCameraTo;
68
+ }
69
+ export default Camera;
@@ -0,0 +1,257 @@
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
+ import { Box3, MathUtils, TWEEN, Vector3 } from '@anov/3d-core';
9
+ var Camera = /*#__PURE__*/function () {
10
+ function Camera(camera, controls) {
11
+ _classCallCheck(this, Camera);
12
+ _defineProperty(this, "camera", void 0);
13
+ _defineProperty(this, "controls", void 0);
14
+ _defineProperty(this, "isTransitionPeriod", false);
15
+ this.camera = camera;
16
+ this.controls = controls;
17
+ this.controls.object = this.camera;
18
+ // this.handleChanged()
19
+ }
20
+
21
+ /**
22
+ * handle camera changed
23
+ */
24
+ _createClass(Camera, [{
25
+ key: "handleChanged",
26
+ value: function handleChanged() {
27
+ var _this = this;
28
+ this.controls.addEventListener('change', function () {
29
+ if (!_this.isTransitionPeriod) {
30
+ var lookat = _this.controls.target;
31
+ var position = _this.camera.position;
32
+ console.log('camera changed', lookat, position);
33
+ }
34
+ });
35
+ }
36
+
37
+ /**
38
+ * caclCurrentPos
39
+ * @param currentPos
40
+ * @returns
41
+ */
42
+ }, {
43
+ key: "caclCurrentPos",
44
+ value: function caclCurrentPos(currentPos, pitch) {
45
+ var box = new Box3();
46
+ box.setFromPoints(currentPos.map(function (item) {
47
+ return new Vector3(item[0], item[1], item[2]);
48
+ }));
49
+ var center = box.getCenter(new Vector3());
50
+ var size = box.getSize(new Vector3());
51
+ var halfDiagonal = size.length() * 0.5;
52
+ var maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180);
53
+ var cameraToCenterDistance = maxDistance;
54
+ var directionVector = this.camera.position.clone().sub(this.controls.target).normalize(); // 相机指向物体中心的向量
55
+
56
+ var lastPosition = directionVector.multiplyScalar(cameraToCenterDistance).add(center);
57
+ var lastLookat = this.caclTargetByPitch(pitch, center, lastPosition);
58
+ return {
59
+ lastPosition: lastPosition,
60
+ lastLookat: lastLookat
61
+ };
62
+ }
63
+
64
+ /**
65
+ * caclTargetByPitch
66
+ * @param pitch
67
+ * @param target
68
+ * @param position
69
+ * @returns
70
+ */
71
+ }, {
72
+ key: "caclTargetByPitch",
73
+ value: function caclTargetByPitch(pitch, target, position) {
74
+ var directionVector = new Vector3().subVectors(target, position);
75
+ var upVector = new Vector3(0, 1, 0);
76
+ var localPitchAxis = new Vector3().crossVectors(directionVector, upVector).normalize();
77
+ directionVector.applyAxisAngle(localPitchAxis, MathUtils.degToRad(pitch));
78
+ var distance = position.distanceTo(target);
79
+ var newTarget = position.clone().add(directionVector.normalize().multiplyScalar(distance));
80
+ return newTarget;
81
+ }
82
+
83
+ /**
84
+ * caclSingle Coordinate
85
+ * @param prevTarget
86
+ * @param prevPosition
87
+ * @param lastTarget
88
+ * @returns
89
+ */
90
+ }, {
91
+ key: "caclSingleCoordinate",
92
+ value: function caclSingleCoordinate(prevTarget, prevPosition, lastTarget) {
93
+ var directionVector = lastTarget.clone().sub(prevTarget).normalize();
94
+ return directionVector.multiplyScalar(lastTarget.distanceTo(prevTarget)).add(prevPosition);
95
+ }
96
+
97
+ /**
98
+ * focus On Position
99
+ * @param params
100
+ */
101
+ }, {
102
+ key: "focus",
103
+ value: function focus(params) {
104
+ var _this2 = this;
105
+ return new Promise(function (res) {
106
+ var position = params.target,
107
+ pitch = params.pitch,
108
+ duration = params.duration;
109
+ var moveOptions = function moveOptions() {
110
+ var _ref;
111
+ return {
112
+ duration: (_ref = duration && duration * 1000) !== null && _ref !== void 0 ? _ref : 1000,
113
+ onUpdate: function onUpdate(_ref2) {
114
+ var position = _ref2.position,
115
+ lookat = _ref2.lookat;
116
+ } // sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {
117
+ // position: position.toArray(),
118
+ // target: lookat.toArray(),
119
+ // })
120
+ ,
121
+
122
+ onComplate: function onComplate() {
123
+ var _params$duration;
124
+ res({
125
+ position: _this2.camera.position.toArray(),
126
+ target: _this2.controls.target.toArray(),
127
+ isTrigger: true,
128
+ duration: (_params$duration = params.duration) !== null && _params$duration !== void 0 ? _params$duration : 0,
129
+ userInput: true,
130
+ pitch: pitch !== null && pitch !== void 0 ? pitch : 40
131
+ });
132
+ }
133
+ };
134
+ };
135
+ if (Array.isArray(position[0])) {
136
+ var currentPos = position;
137
+ var _this2$caclCurrentPos = _this2.caclCurrentPos(currentPos, 0),
138
+ lastPosition = _this2$caclCurrentPos.lastPosition,
139
+ lastLookat = _this2$caclCurrentPos.lastLookat;
140
+ _this2.moveCameraTo(lastPosition, lastLookat, pitch, moveOptions());
141
+ } else {
142
+ var _currentPos = position;
143
+ var _lastPosition = _this2.caclSingleCoordinate(_this2.controls.target, _this2.camera.position, new Vector3().fromArray(_currentPos));
144
+ var _lastLookat = _this2.caclTargetByPitch(0, new Vector3().fromArray(_currentPos), _lastPosition);
145
+ _this2.moveCameraTo(_lastPosition, _lastLookat, pitch, moveOptions());
146
+ }
147
+ });
148
+ }
149
+
150
+ /**
151
+ * set camera
152
+ * @param params
153
+ */
154
+ }, {
155
+ key: "set",
156
+ value: function set(params) {
157
+ var _this3 = this;
158
+ return new Promise(function (res, _) {
159
+ var _ref3;
160
+ _this3.moveCameraTo(new Vector3(params.position[0], params.position[1], params.position[2]), new Vector3(params.target[0], params.target[1], params.target[2]), 0, {
161
+ duration: (_ref3 = params.duration && params.duration * 1000) !== null && _ref3 !== void 0 ? _ref3 : 1000,
162
+ onUpdate: function onUpdate(_ref4) {
163
+ var position = _ref4.position,
164
+ lookat = _ref4.lookat;
165
+ } // params.isTrigger
166
+ // && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {
167
+ // position: position.toArray(),
168
+ // target: lookat.toArray(),
169
+ // })
170
+ ,
171
+
172
+ onComplate: function onComplate() {
173
+ var _params$duration2;
174
+ res({
175
+ position: _this3.camera.position.toArray(),
176
+ target: _this3.controls.target.toArray(),
177
+ isTrigger: true,
178
+ duration: (_params$duration2 = params.duration) !== null && _params$duration2 !== void 0 ? _params$duration2 : 0,
179
+ userInput: true
180
+ });
181
+ }
182
+ });
183
+ });
184
+ }
185
+
186
+ /**
187
+ * get Camera info
188
+ * @returns
189
+ */
190
+ }, {
191
+ key: "get",
192
+ value: function get() {
193
+ return {
194
+ position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],
195
+ target: [this.controls.target.x, this.controls.target.y, this.controls.target.z]
196
+ };
197
+ }
198
+
199
+ /**
200
+ * interpolation move camera
201
+ * @param position
202
+ * @param target
203
+ * @param options
204
+ */
205
+ }, {
206
+ key: "moveCameraTo",
207
+ value: function moveCameraTo(position, target) {
208
+ var _this4 = this;
209
+ var pitch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
210
+ var options = arguments.length > 3 ? arguments[3] : undefined;
211
+ var currentPoition = this.camera.position.clone();
212
+ var currentPositionInterpolation = new Vector3();
213
+ if ((options === null || options === void 0 ? void 0 : options.duration) === 0) {
214
+ this.camera.position.copy(position);
215
+ this.controls.target.copy(target);
216
+ (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
217
+ return;
218
+ }
219
+ new TWEEN.Tween({
220
+ t: 0,
221
+ lookat: this.controls.target.clone(),
222
+ p: 0
223
+ }).to({
224
+ t: 1,
225
+ lookat: target,
226
+ p: -this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)
227
+ }, (options === null || options === void 0 ? void 0 : options.duration) || 1000).onStart(function () {
228
+ (options === null || options === void 0 ? void 0 : options.onStart) && options.onStart();
229
+ _this4.controls.enabled = false;
230
+ _this4.isTransitionPeriod = true;
231
+ }).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function (_ref5) {
232
+ var t = _ref5.t,
233
+ lookat = _ref5.lookat,
234
+ p = _ref5.p;
235
+ _this4.controls.target.copy(lookat);
236
+ if (pitch)
237
+ // @ts-ignore
238
+ _this4.camera.rotationParent.x = p;
239
+ var currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t);
240
+ _this4.camera.position.copy(currentPosition);
241
+ (options === null || options === void 0 ? void 0 : options.onUpdate) && options.onUpdate({
242
+ position: currentPosition,
243
+ lookat: lookat
244
+ });
245
+ }).onComplete(function () {
246
+ (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
247
+ _this4.controls.enabled = true;
248
+ setTimeout(function () {
249
+ _this4.isTransitionPeriod = false;
250
+ });
251
+ }).start();
252
+ }
253
+ }]);
254
+ return Camera;
255
+ }();
256
+ export default Camera;
257
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Box3","MathUtils","TWEEN","Vector3","Camera","camera","controls","object","addEventListener","isTransitionPeriod","lookat","target","position","console","log","currentPos","pitch","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distance","distanceTo","newTarget","prevTarget","prevPosition","lastTarget","params","Promise","res","duration","moveOptions","onUpdate","onComplate","toArray","isTrigger","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","Tween","t","p","to","rotation","onStart","enabled","easing","Easing","Quadratic","InOut","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../src/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, TWEEN, Vector3 } from '@anov/3d-core'\n\ntype vector3Array = [number, number, number]\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n}\n\nclass Camera {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private isTransitionPeriod = false\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls) {\n this.camera = camera\n this.controls = controls\n\n this.controls.object = this.camera\n // this.handleChanged()\n }\n\n /**\n * handle camera changed\n */\n private handleChanged() {\n this.controls.addEventListener('change', () => {\n if (!this.isTransitionPeriod) {\n const lookat = this.controls.target\n const position = this.camera.position\n\n console.log('camera changed', lookat, position)\n }\n })\n }\n\n /**\n * caclCurrentPos\n * @param currentPos\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], pitch: number) {\n const box = new Box3()\n\n box.setFromPoints(currentPos.map(item => new Vector3(item[0], item[1], item[2])))\n\n const center = box.getCenter(new Vector3())\n const size = box.getSize(new Vector3())\n const halfDiagonal = size.length() * 0.5\n\n const maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180)\n const cameraToCenterDistance = maxDistance\n const directionVector = (this.camera.position.clone()).sub(this.controls.target).normalize() // 相机指向物体中心的向量\n\n const lastPosition = directionVector.multiplyScalar(cameraToCenterDistance).add(center)\n const lastLookat = this.caclTargetByPitch(pitch, center, lastPosition)\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclTargetByPitch\n * @param pitch\n * @param target\n * @param position\n * @returns\n */\n private caclTargetByPitch(pitch: number, target: Vector3, position: Vector3) {\n const directionVector = new Vector3().subVectors(target, position)\n const upVector = new Vector3(0, 1, 0)\n const localPitchAxis = new Vector3().crossVectors(directionVector, upVector).normalize()\n\n directionVector.applyAxisAngle(localPitchAxis, MathUtils.degToRad(pitch))\n\n const distance = position.distanceTo(target)\n const newTarget = position.clone().add(directionVector.normalize().multiplyScalar(distance))\n\n return newTarget\n }\n\n /**\n * caclSingle Coordinate\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3) {\n const directionVector = lastTarget.clone().sub(prevTarget).normalize()\n return directionVector.multiplyScalar(lastTarget.distanceTo(prevTarget)).add(prevPosition)\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n // sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n // position: position.toArray(),\n // target: lookat.toArray(),\n // })\n },\n onComplate: () => {\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n pitch: pitch ?? 40,\n })\n },\n }) as ChangeCameraPresetOptions\n\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, 0)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos))\n const lastLookat = this.caclTargetByPitch(0, new Vector3().fromArray(currentPos), lastPosition)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera\n * @param params\n */\n set(params: { position: vector3Array; target: vector3Array; isTrigger?: boolean; duration?: number }) {\n return new Promise ((res, _) => {\n this.moveCameraTo(\n new Vector3(params.position[0], params.position[1], params.position[2]),\n new Vector3(params.target[0], params.target[1], params.target[2]),\n 0,\n {\n duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n // params.isTrigger\n // && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n // position: position.toArray(),\n // target: lookat.toArray(),\n // })\n },\n onComplate: () => {\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n })\n },\n })\n })\n }\n\n /**\n * get Camera info\n * @returns\n */\n get() {\n return {\n position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],\n target: [this.controls.target.x, this.controls.target.y, this.controls.target.z],\n }\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param options\n */\n private moveCameraTo(position: Vector3, target: Vector3, pitch = 0, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n options?.onComplate && options.onComplate()\n return\n }\n\n new TWEEN.Tween({ t: 0, lookat: this.controls.target.clone(), p: 0 }).to({ t: 1, lookat: target, p: (-this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)) }, options?.duration || 1000)\n .onStart(() => {\n options?.onStart && options.onStart()\n this.controls.enabled = false\n this.isTransitionPeriod = true\n })\n .easing(TWEEN.Easing.Quadratic.InOut)\n .onUpdate(({ t, lookat, p }) => {\n this.controls.target.copy(lookat)\n\n if (pitch)\n // @ts-ignore\n this.camera.rotationParent.x = p\n\n const currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t)\n this.camera.position.copy(currentPosition)\n options?.onUpdate && options.onUpdate({ position: currentPosition, lookat })\n })\n .onComplete(() => {\n options?.onComplate && options.onComplate()\n this.controls.enabled = true\n\n setTimeout(() => {\n this.isTransitionPeriod = false\n })\n })\n .start()\n }\n}\n\nexport default Camera"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=flyinglead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/city/flyinglead.ts"],"sourcesContent":[""],"mappings":""}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=radar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/city/radar.ts"],"sourcesContent":[""],"mappings":""}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=scanning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/city/scanning.ts"],"sourcesContent":[""],"mappings":""}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=surroundLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/city/surroundLine.ts"],"sourcesContent":[""],"mappings":""}
@@ -41,4 +41,5 @@ export var createRain = function createRain() {
41
41
  }
42
42
  };
43
43
  return [start, stop];
44
- };
44
+ };
45
+ //# sourceMappingURL=rain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["globalObjectManage","use","EnvironmentPoints","useframe","createRain","size","range","speed","opacity","count","points","url","removeFrame","start","scene","add","point","animation","position","y","speedY","stop","remove"],"sources":["../../src/environment/rain.ts"],"sourcesContent":["import { globalObjectManage, use } from '@anov/3d-core'\nimport type { AVector3 } from './utils/points'\nimport EnvironmentPoints from './utils/points'\n\nconst { useframe } = use\n\ntype CreateRainReturn = [\n () => void,\n () => void,\n]\n\nexport interface SpeedType {\n x?: number\n y?: number\n z?: number\n}\n\n/**\n * create rain\n * @param size 雨滴大小\n * @param range 降雨范围\n * @param speed 降雨速度\n * @param opacity 雨滴透明度\n * @param count 雨滴密度\n * @returns\n */\nexport const createRain = (size = 10, range = 100, speed?: SpeedType, opacity = 0.6, count = 100) => {\n const points = new EnvironmentPoints({\n size,\n opacity,\n range,\n count,\n speed,\n url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAOeSURBVHic7Zq9jxRlHMc/z8yz87K3nsCdmOMUuAMT9GJhYgyxk8IYG2sJMTQUUECBuU4aWhusoKUAEhttjH+AEopLLCxQCXLqeUi84y7L7t687lDMjsdL4Nh7npk1eeZbTZ7sfp9v9vns7/nNMyMYkRZu338ZYIeXzQEcnJ64Pooc1igm/T9JjmriA1Ot4wANS+wdDNUEjEJiVBP3gvi3PIDYAeB7cvcochhPQOU14Kc7a/sBfMd+AyAbjP++vLEPYHaP/0eVeWoCqp5wZtKbB8g2Fx+AiXH79ODybJV5jCeg8l0gTtIMQNqP//ZR0gfAbdiVZjKegMpqwHq7Mw9Pr3whR+bjK53oM4DJlnO5ilzGE1DZ/y2K0wigIa3G8z7XC9NFgDFPzlQQqyag9BrwoBudgq1XvlDTtfcD/PLX6kcAh16f+L60cNQElF8DekHcA/Bd6Q/zvW6Y3ARoeY23yshVyHgCSqsBq534LAy/8oXGXPtNgD9Xwk8A9k663+pLtynjCSitBoRx3vMXHd52tREm/wI0vUYpJ0bGE6C9Bqx1ogsAjrSK+30lynzHfgVgtROcAZhoeReUAj4h4wnQVgO++u6WC3Dyw9kAnn3Xt12l/RwoaVta61ZNgC6jdje4BNDynRMAQohSdpj1TnAeYOdL/jkdfjUBuoyeddanW0GUAOC7DS3ZjSdAuQ9YeRCdhPJXvpDn5JH/vt/7FGB6V/Oqil9NgKpBy7OO6AjyosqyvB/YOSY/HgzVBKhImQCBeFtHkBeeb9BeWMJ+T4dfTYAGjwMaPIaWEMzq8DGeAOVuKivK8oikes9hPAHKNaB4rq969jes4uKAQFE1AaoG/X52d3A5peo1jLJ+tqTDpyZA1UAI6+bgslIC+li/6vCpCVA1iNP0RwBH2h9AeWeBhYq+I4rjGzr8agJUDW4tta8BvHNw1xfqcbaWEHn3ut5LvtHhZzwB2v6v3SBZBGi69j5dno+qaPuCKF3O55HTOnyNJ0Db0+G1bvQ5QNP1vs5H9G4GYsDASntD69vkxhOgfc/uhfF1AK8hD8Nm1d6uin0/iPs3AJqufF8146MyngDtb4icurJ0BODi0ddWAVznv7fEhiUh7/iStJv7/lDK8wfjCSitb19Y7E4BzE27CwCetIu7xa3mzAA2wmQZ4M7d8F2AuZnWP2XkrAmoaqJ77XAeYNyVxwCkzWNPlJKUnwHaYXwZ4NVx78sqchlPwENsoeFfLBJUzgAAAABJRU5ErkJggg==',\n })\n\n let removeFrame: (() => void) | null = null\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)\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 CreateRainReturn\n}"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,GAAG,QAAQ,eAAe;AAEvD,OAAOC,iBAAiB;AAExB,IAAQC,QAAQ,GAAKF,GAAG,CAAhBE,QAAQ;AAahB;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;IACPF,KAAK,EAALA,KAAK;IACLG,KAAK,EAALA,KAAK;IACLF,KAAK,EAALA,KAAK;IACLI,GAAG,EAAE;EACP,CAAC,CAAC;EAEF,IAAIC,WAAgC,GAAG,IAAI;EAE3C,IAAMC,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBb,kBAAkB,CAACc,KAAK,CAAEC,GAAG,CAACL,MAAM,CAACM,KAAK,CAAE;IAE5CJ,WAAW,GAAGT,QAAQ,CAAC,YAAM;MAC3BO,MAAM,CAACO,SAAS,CACd,UAACC,QAAkB,EAAK;QACtBA,QAAQ,CAACC,CAAC,IAAID,QAAQ,CAACE,MAAM;QAE7B,IAAIF,QAAQ,CAACC,CAAC,IAAI,CAAC,EACjBD,QAAQ,CAACC,CAAC,GAAG,IAAI,GAAG,CAAC;MACzB,CAAC,CACF;IACH,CAAC,CAAC;EACJ,CAAC;EAED,IAAME,IAAI,GAAG,SAAPA,IAAI,GAAS;IACjB,IAAIT,WAAW,EAAE;MACfA,WAAW,EAAE;MACbZ,kBAAkB,CAACc,KAAK,CAAEQ,MAAM,CAACZ,MAAM,CAACM,KAAK,CAAE;IACjD;EACF,CAAC;EAED,OAAO,CACLH,KAAK,EACLQ,IAAI,CACL;AACH,CAAC"}
@@ -67,4 +67,5 @@ var Snow = /*#__PURE__*/function () {
67
67
  }]);
68
68
  return Snow;
69
69
  }();
70
- export default Snow;
70
+ export default Snow;
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Mesh","PlaneGeometry","ShaderMaterial","Vector2","use","rainShader","Snow","initGeometry","useScene","scene","camera","Error","geometry","uniforms","iResolution","value","window","innerWidth","innerHeight","material","side","depthWrite","transparent","blending","vertexShader","fragmentShader","i","mesh","position","z","scale","x","Math","random","y","add","meshes","push","useframe","iTime","forEach","lookAt","visible"],"sources":["../../../src/environment/rainShader/index.ts"],"sourcesContent":["import { Mesh, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport rainShader from './shader'\n\nclass Snow {\n private meshes: Mesh[] = []\n\n constructor() {\n this.initGeometry()\n }\n\n private initGeometry() {\n const { scene, camera } = use.useScene()\n\n if (!scene && !camera)\n throw new Error('please init scene and camera first')\n\n const geometry = new PlaneGeometry(10000, 10000)\n\n // @ts-ignore\n rainShader.uniforms.iResolution.value = new Vector2(window.innerWidth, window.innerHeight)\n\n const material = new ShaderMaterial({\n uniforms: rainShader.uniforms,\n side: 2,\n depthWrite: false,\n transparent: true,\n blending: 2,\n vertexShader: rainShader.vertexShader,\n fragmentShader: rainShader.fragmentShader,\n })\n\n for (let i = 0; i < 10; i++) {\n const mesh = new Mesh(geometry, material)\n // const mesh = new Mesh(geometry, new MeshBasicMaterial({ color: new Color(Math.random() * 0xFFFFFF) }))\n mesh.position.z = -10000 + i * 1000\n mesh.scale.x = Math.random() * 0.5 + 1\n mesh.scale.y = Math.random() * 0.5 + 1\n\n scene!.add(mesh)\n\n this.meshes.push(mesh)\n }\n\n use.useframe(() => {\n rainShader.uniforms.iTime.value += 0.01\n\n this.meshes.forEach((mesh) => {\n mesh.lookAt(camera!.position.x, camera!.position.y * 0.1, camera!.position.z)\n })\n })\n }\n\n stop() {\n this.meshes.forEach((mesh) => {\n mesh.visible = false\n })\n }\n\n continue() {\n this.meshes.forEach((mesh) => {\n mesh.visible = true\n })\n }\n}\n\nexport default Snow"],"mappings":";;;;;;;AAAA,SAASA,IAAI,EAAEC,aAAa,EAAEC,cAAc,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AACjF,OAAOC,UAAU;AAAgB,IAE3BC,IAAI;EAGR,gBAAc;IAAA;IAAA,gCAFW,EAAE;IAGzB,IAAI,CAACC,YAAY,EAAE;EACrB;EAAC;IAAA;IAAA,OAED,wBAAuB;MAAA;MACrB,oBAA0BH,GAAG,CAACI,QAAQ,EAAE;QAAhCC,KAAK,iBAALA,KAAK;QAAEC,MAAM,iBAANA,MAAM;MAErB,IAAI,CAACD,KAAK,IAAI,CAACC,MAAM,EACnB,MAAM,IAAIC,KAAK,CAAC,oCAAoC,CAAC;MAEvD,IAAMC,QAAQ,GAAG,IAAIX,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;;MAEhD;MACAI,UAAU,CAACQ,QAAQ,CAACC,WAAW,CAACC,KAAK,GAAG,IAAIZ,OAAO,CAACa,MAAM,CAACC,UAAU,EAAED,MAAM,CAACE,WAAW,CAAC;MAE1F,IAAMC,QAAQ,GAAG,IAAIjB,cAAc,CAAC;QAClCW,QAAQ,EAAER,UAAU,CAACQ,QAAQ;QAC7BO,IAAI,EAAE,CAAC;QACPC,UAAU,EAAE,KAAK;QACjBC,WAAW,EAAE,IAAI;QACjBC,QAAQ,EAAE,CAAC;QACXC,YAAY,EAAEnB,UAAU,CAACmB,YAAY;QACrCC,cAAc,EAAEpB,UAAU,CAACoB;MAC7B,CAAC,CAAC;MAEF,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;QAC3B,IAAMC,IAAI,GAAG,IAAI3B,IAAI,CAACY,QAAQ,EAAEO,QAAQ,CAAC;QACzC;QACAQ,IAAI,CAACC,QAAQ,CAACC,CAAC,GAAG,CAAC,KAAK,GAAGH,CAAC,GAAG,IAAI;QACnCC,IAAI,CAACG,KAAK,CAACC,CAAC,GAAGC,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QACtCN,IAAI,CAACG,KAAK,CAACI,CAAC,GAAGF,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QAEtCxB,KAAK,CAAE0B,GAAG,CAACR,IAAI,CAAC;QAEhB,IAAI,CAACS,MAAM,CAACC,IAAI,CAACV,IAAI,CAAC;MACxB;MAEAvB,GAAG,CAACkC,QAAQ,CAAC,YAAM;QACjBjC,UAAU,CAACQ,QAAQ,CAAC0B,KAAK,CAACxB,KAAK,IAAI,IAAI;QAEvC,KAAI,CAACqB,MAAM,CAACI,OAAO,CAAC,UAACb,IAAI,EAAK;UAC5BA,IAAI,CAACc,MAAM,CAAC/B,MAAM,CAAEkB,QAAQ,CAACG,CAAC,EAAErB,MAAM,CAAEkB,QAAQ,CAACM,CAAC,GAAG,GAAG,EAAExB,MAAM,CAAEkB,QAAQ,CAACC,CAAC,CAAC;QAC/E,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,gBAAO;MACL,IAAI,CAACO,MAAM,CAACI,OAAO,CAAC,UAACb,IAAI,EAAK;QAC5BA,IAAI,CAACe,OAAO,GAAG,KAAK;MACtB,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,qBAAW;MACT,IAAI,CAACN,MAAM,CAACI,OAAO,CAAC,UAACb,IAAI,EAAK;QAC5BA,IAAI,CAACe,OAAO,GAAG,IAAI;MACrB,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,eAAepC,IAAI"}
@@ -25,4 +25,5 @@ var rainShader = {
25
25
  vertexShader: /* glsl */"\n varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",
26
26
  fragmentShader: /* glsl */"\n\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float radian;\n uniform float rainSpeed;\n uniform vec3 rainColor;\n varying highp vec2 vUv;\n\n float random(float t){\n return fract(sin(t*745.523)*7894.552);\n }\n \n\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n\n //vec2 uv = gl_FragCoord.xy/iResolution.xy;\n vec2 uv =vUv;\n mat2 r=mat2(cos(radian),-sin(radian),sin(radian),cos(radian));\n uv*=r;\n uv.y += iTime*2.0*rainSpeed;\n uv.xy *= 500.0;///\u96E8\u70B9\u4E2A\u6570\n uv.y += random(floor(uv.x))*500.0;\n //vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.2)-1.7)), 0.0,1.0))*rainColor;///1.7\u90A3\u4E2A\u662F\u96E8\u70B9\u6D53\u5EA60.2\u90A3\u4E2A\u662F\u96E8\u6EF4\u957F\u5EA6\n vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.09)-1.90)), 0.0,1.0))*rainColor;\n gl_FragColor = vec4(col+rain,0.7);\n }"
27
27
  };
28
- export default rainShader;
28
+ export default rainShader;
29
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Color","rainShader","uniforms","tDiffuse","value","iResolution","iTime","radian","rainSpeed","rainColor","vertexShader","fragmentShader"],"sources":["../../../src/environment/rainShader/shader.ts"],"sourcesContent":["import { Color } from '@anov/3d-core'\n\n// source from https://www.shadertoy.com/view/wd2GDG\nconst rainShader = {\n uniforms: {\n tDiffuse: { value: null },\n iResolution: { value: null },\n iTime: { value: 0 },\n radian: { value: 0 },\n rainSpeed: { value: 0.1 },\n rainColor: { value: new Color(1, 1, 1) },\n },\n\n vertexShader: /* glsl */`\n varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }`,\n\n fragmentShader: /* glsl */`\n\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float radian;\n uniform float rainSpeed;\n uniform vec3 rainColor;\n varying highp vec2 vUv;\n\n float random(float t){\n return fract(sin(t*745.523)*7894.552);\n }\n \n\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n\n //vec2 uv = gl_FragCoord.xy/iResolution.xy;\n vec2 uv =vUv;\n mat2 r=mat2(cos(radian),-sin(radian),sin(radian),cos(radian));\n uv*=r;\n uv.y += iTime*2.0*rainSpeed;\n uv.xy *= 500.0;///雨点个数\n uv.y += random(floor(uv.x))*500.0;\n //vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.2)-1.7)), 0.0,1.0))*rainColor;///1.7那个是雨点浓度0.2那个是雨滴长度\n vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.09)-1.90)), 0.0,1.0))*rainColor;\n gl_FragColor = vec4(col+rain,0.7);\n }`,\n\n}\nexport default rainShader\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,eAAe;;AAErC;AACA,IAAMC,UAAU,GAAG;EACjBC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;IACzBC,WAAW,EAAE;MAAED,KAAK,EAAE;IAAK,CAAC;IAC5BE,KAAK,EAAE;MAAEF,KAAK,EAAE;IAAE,CAAC;IACnBG,MAAM,EAAE;MAAEH,KAAK,EAAE;IAAE,CAAC;IACpBI,SAAS,EAAE;MAAEJ,KAAK,EAAE;IAAI,CAAC;IACzBK,SAAS,EAAE;MAAEL,KAAK,EAAE,IAAIJ,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAAE;EACzC,CAAC;EAEDU,YAAY,EAAE,yMAKN;EAERC,cAAc,EAAE;AA8BlB,CAAC;AACD,eAAeV,UAAU"}
@@ -36,4 +36,5 @@ var CloudMaterial = /*#__PURE__*/_createClass(function CloudMaterial(opts) {
36
36
  transparent: true
37
37
  });
38
38
  });
39
- export default CloudMaterial;
39
+ export default CloudMaterial;
40
+ //# sourceMappingURL=cloudMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ShaderMaterial","CloudShader","CloudMaterial","opts","material","uniforms","iResolution","value","iTime","cloudDensity","skyAlpha","opacity","cloudscale","density","side","vertexShader","fragmentShader","depthWrite","transparent"],"sources":["../../../src/environment/shaderCloud/cloudMaterial.ts"],"sourcesContent":["import { ShaderMaterial } from '@anov/3d-core'\nimport CloudShader from './shader'\n\ntype CloudMaterialOptions = {\n opacity?: number\n density?: number\n}\n\nclass CloudMaterial {\n public material: ShaderMaterial\n constructor(opts: CloudMaterialOptions) {\n this.material = new ShaderMaterial({\n uniforms: {\n iResolution: {\n value: null,\n },\n iTime: {\n value: 0,\n },\n cloudDensity: {\n value: 0.8,\n },\n skyAlpha: {\n value: opts.opacity ?? 0.0,\n },\n cloudscale: {\n value: opts.density ?? 5.4,\n },\n },\n side: 2,\n vertexShader: CloudShader.vertexShader,\n fragmentShader: CloudShader.fragmentShader,\n depthWrite: false,\n transparent: true,\n })\n }\n}\n\nexport default CloudMaterial"],"mappings":";;;;;;;AAAA,SAASA,cAAc,QAAQ,eAAe;AAC9C,OAAOC,WAAW;AAAgB,IAO5BC,aAAa,6BAEjB,uBAAYC,IAA0B,EAAE;EAAA;EAAA;EAAA;EACtC,IAAI,CAACC,QAAQ,GAAG,IAAIJ,cAAc,CAAC;IACjCK,QAAQ,EAAE;MACRC,WAAW,EAAE;QACXC,KAAK,EAAE;MACT,CAAC;MACDC,KAAK,EAAE;QACLD,KAAK,EAAE;MACT,CAAC;MACDE,YAAY,EAAE;QACZF,KAAK,EAAE;MACT,CAAC;MACDG,QAAQ,EAAE;QACRH,KAAK,mBAAEJ,IAAI,CAACQ,OAAO,yDAAI;MACzB,CAAC;MACDC,UAAU,EAAE;QACVL,KAAK,mBAAEJ,IAAI,CAACU,OAAO,yDAAI;MACzB;IACF,CAAC;IACDC,IAAI,EAAE,CAAC;IACPC,YAAY,EAAEd,WAAW,CAACc,YAAY;IACtCC,cAAc,EAAEf,WAAW,CAACe,cAAc;IAC1CC,UAAU,EAAE,KAAK;IACjBC,WAAW,EAAE;EACf,CAAC,CAAC;AACJ,CAAC;AAGH,eAAehB,aAAa"}
@@ -42,4 +42,5 @@ var createSkyCloud = function createSkyCloud(opacity, density) {
42
42
  };
43
43
  return [setCloudDensity, clear];
44
44
  };
45
- export default createSkyCloud;
45
+ export default createSkyCloud;
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ModelLoader","use","Materialcloud","loader","createSkyCloud","opacity","density","useScene","scene","isNeedUpdate","currentDensity","Error","cloudModel","loadGLTF","undefined","gltf","model","scale","set","children","material","add","useframe","uniforms","iTime","value","setCloudDensity","clear","removeFromParent"],"sources":["../../../src/environment/shaderCloud/index.ts"],"sourcesContent":["import type { Group } from '@anov/3d-core'\nimport { ModelLoader, use } from '@anov/3d-core'\nimport Materialcloud from './cloudMaterial'\n\nconst loader = new ModelLoader()\n\nconst createSkyCloud = (opacity?: number, density?: number) => {\n const { scene } = use.useScene()\n\n let isNeedUpdate = false\n let currentDensity = 5.4\n\n if (!scene)\n throw new Error('scene is not defined')\n\n let cloudModel: Group\n\n loader.loadGLTF('http://182.92.210.127:8009/image/skySphereMesh.glb', false, false, undefined,\n (gltf) => {\n const model = gltf.scene\n cloudModel = model as Group\n\n model.scale.set(10000, 15000, 10000)\n\n // @ts-ignore\n model.children[0].material = new Materialcloud({\n opacity: opacity ?? 0.6,\n density: density ?? 5.4,\n\n }).material\n\n scene.add(model)\n\n use.useframe(() => {\n isNeedUpdate && (\n // @ts-ignore\n model.children[0].material = new Materialcloud({\n opacity: opacity ?? 0.6,\n density: currentDensity,\n\n }).material\n )\n\n // @ts-ignore\n model.children[0].material.uniforms.iTime.value += 0.03\n\n isNeedUpdate = false\n })\n return gltf\n })\n\n const setCloudDensity = (density?: number) => {\n isNeedUpdate = true\n currentDensity = density ?? currentDensity\n }\n\n const clear = () => {\n cloudModel && cloudModel.removeFromParent()\n }\n\n return [setCloudDensity, clear] as [typeof setCloudDensity, typeof clear]\n}\n\nexport default createSkyCloud"],"mappings":"AACA,SAASA,WAAW,EAAEC,GAAG,QAAQ,eAAe;AAChD,OAAOC,aAAa;AAEpB,IAAMC,MAAM,GAAG,IAAIH,WAAW,EAAE;AAEhC,IAAMI,cAAc,GAAG,SAAjBA,cAAc,CAAIC,OAAgB,EAAEC,OAAgB,EAAK;EAC7D,oBAAkBL,GAAG,CAACM,QAAQ,EAAE;IAAxBC,KAAK,iBAALA,KAAK;EAEb,IAAIC,YAAY,GAAG,KAAK;EACxB,IAAIC,cAAc,GAAG,GAAG;EAExB,IAAI,CAACF,KAAK,EACR,MAAM,IAAIG,KAAK,CAAC,sBAAsB,CAAC;EAEzC,IAAIC,UAAiB;EAErBT,MAAM,CAACU,QAAQ,CAAC,oDAAoD,EAAE,KAAK,EAAE,KAAK,EAAEC,SAAS,EAC3F,UAACC,IAAI,EAAK;IACR,IAAMC,KAAK,GAAGD,IAAI,CAACP,KAAK;IACxBI,UAAU,GAAGI,KAAc;IAE3BA,KAAK,CAACC,KAAK,CAACC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;IAEpC;IACAF,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,GAAG,IAAIlB,aAAa,CAAC;MAC7CG,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,GAAG;MACvBC,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI;IAEtB,CAAC,CAAC,CAACc,QAAQ;IAEXZ,KAAK,CAACa,GAAG,CAACL,KAAK,CAAC;IAEhBf,GAAG,CAACqB,QAAQ,CAAC,YAAM;MACjBb,YAAY;MACV;MACAO,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,GAAG,IAAIlB,aAAa,CAAC;QAC7CG,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,GAAG;QACvBC,OAAO,EAAEI;MAEX,CAAC,CAAC,CAACU,QAAQ,CACZ;;MAED;MACAJ,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,CAACG,QAAQ,CAACC,KAAK,CAACC,KAAK,IAAI,IAAI;MAEvDhB,YAAY,GAAG,KAAK;IACtB,CAAC,CAAC;IACF,OAAOM,IAAI;EACb,CAAC,CAAC;EAEJ,IAAMW,eAAe,GAAG,SAAlBA,eAAe,CAAIpB,OAAgB,EAAK;IAC5CG,YAAY,GAAG,IAAI;IACnBC,cAAc,GAAGJ,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAII,cAAc;EAC5C,CAAC;EAED,IAAMiB,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBf,UAAU,IAAIA,UAAU,CAACgB,gBAAgB,EAAE;EAC7C,CAAC;EAED,OAAO,CAACF,eAAe,EAAEC,KAAK,CAAC;AACjC,CAAC;AAED,eAAevB,cAAc"}
@@ -3,4 +3,5 @@ var CloudShader = {
3
3
  vertexShader: /* glsl */"\n\n varying highp vec2 vUv;\n\n void main() {\n\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }",
4
4
  fragmentShader: /* glsl */"\nprecision highp float;\nuniform float skyAlpha;\nuniform float iTime;\nuniform float cloudDensity;\nuniform float cloudscale;\nconst float speed = 0.02;\nconst float clouddark = 0.5;\nconst float cloudlight = 0.3;\nconst float cloudcover = 0.2;\nconst float cloudalpha = 8.0;\nconst float skytint = 0.5;\nconst vec3 skycolour1 = vec3(0.2, 0.4, 0.6);\nconst vec3 skycolour2 = vec3(0.4, 0.7, 1.0);\n\nconst mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );\nconst vec2 iResolution = vec2(0.001,0.001);\nvarying highp vec2 vUv;\n\nvec2 hash( vec2 p ) {\np = vec2(dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)));\nreturn -1.0 + 2.0*fract(sin(p)*43758.5453123);\n}\n\nfloat noise( in vec2 p ) {\n const float K1 = 0.366025404; // (sqrt(3)-1)/2;\n const float K2 = 0.211324865; // (3-sqrt(3))/6;\n\tvec2 i = floor(p + (p.x+p.y)*K1);\n vec2 a = p - i + (i.x+i.y)*K2;\n vec2 o = (a.x>a.y) ? vec2(1.0,0.0) : vec2(0.0,1.0); //vec2 of = 0.5 + 0.5*vec2(sign(a.x-a.y), sign(a.y-a.x));\n vec2 b = a - o + K2;\n\tvec2 c = a - 1.0 + 2.0*K2;\n vec3 h = max(0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );\n\tvec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));\n return dot(n, vec3(70.0));\n}\n\nfloat fbm(vec2 n) {\n\tfloat total = 0.0, amplitude = 0.1;\n\tfor (int i = 0; i < 7; i++) {\n\t\ttotal += noise(n) * amplitude;\n\t\tn = m * n;\n\t\tamplitude *= 0.4;\n\t}\n\treturn total*1.0;\n}\n\n// -----------------------------------------------\nfloat distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n}\nvoid mainImage( out vec4 fragColor, in vec2 fragCoord ) {\n // vec2 p = fragCoord.xy / iResolution.xy;\n vec2 p = vUv*1.;\n\tvec2 uv = p*vec2(iResolution.x/iResolution.y,1.0);\n float time = iTime * speed;\n float q = fbm(uv * cloudscale * 0.5);\n////////\u538B\u8FB9\n float dis= max(max((p.x*51.-50.0), 1.-(p.x*51.)),max((p.y*3.-2.), 1.-(p.y*3.)));\n float sphere =pow(distanceTo(vec2(0.5,0.5),p),8.)*1000.;/////\u753B\u5706\u57082\n\n\n //ridged noise shape\n\tfloat r = 0.0;\n\tuv *= cloudscale;\n uv -= q - time;\n float weight = 0.8;\n for (int i=0; i<8; i++){\n\t\tr += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.7;\n }\n\n //noise shape\n\tfloat f = 0.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale;\n uv -= q - time;\n weight = 0.7;\n for (int i=0; i<8; i++){\n\t\tf += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n f *= r + f;\n\n //noise colour\n float c = 0.0;\n time = iTime * speed * 2.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*2.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n //noise ridge colour\n float c1 = 0.0;\n time = iTime * speed * 3.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*3.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc1 += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n c += c1;\n\n vec3 skycolour = mix(skycolour2, skycolour1, p.y)+sphere*0.3;\n vec3 cloudcolour = vec3(1.1, 1.1, 0.9) * clamp((clouddark + cloudlight*c), 0.0, 1.0);\n\n f = cloudcover + cloudalpha*f*r;\n\n float cloudIntensity = clamp(f + c, 0.0, 1.0) * (cloudDensity);\n\n vec3 result = mix(skycolour, clamp(skytint * skycolour + cloudcolour, 0.0, 1.0), cloudIntensity);\n\n\tfragColor = vec4(result, 0.5);\n //fragColor = vec4(sphere,0,0,1.); ////- clamp(dis,0.,1.)\n}\n\nvoid main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n}\n"
5
5
  };
6
- export default CloudShader;
6
+ export default CloudShader;
7
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CloudShader","vertexShader","fragmentShader"],"sources":["../../../src/environment/shaderCloud/shader.ts"],"sourcesContent":["/* eslint-disable no-tabs */\nconst CloudShader = {\n vertexShader: /* glsl */ `\n\n varying highp vec2 vUv;\n\n void main() {\n\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }`,\n\n fragmentShader: /* glsl */ `\nprecision highp float;\nuniform float skyAlpha;\nuniform float iTime;\nuniform float cloudDensity;\nuniform float cloudscale;\nconst float speed = 0.02;\nconst float clouddark = 0.5;\nconst float cloudlight = 0.3;\nconst float cloudcover = 0.2;\nconst float cloudalpha = 8.0;\nconst float skytint = 0.5;\nconst vec3 skycolour1 = vec3(0.2, 0.4, 0.6);\nconst vec3 skycolour2 = vec3(0.4, 0.7, 1.0);\n\nconst mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );\nconst vec2 iResolution = vec2(0.001,0.001);\nvarying highp vec2 vUv;\n\nvec2 hash( vec2 p ) {\np = vec2(dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)));\nreturn -1.0 + 2.0*fract(sin(p)*43758.5453123);\n}\n\nfloat noise( in vec2 p ) {\n const float K1 = 0.366025404; // (sqrt(3)-1)/2;\n const float K2 = 0.211324865; // (3-sqrt(3))/6;\n\tvec2 i = floor(p + (p.x+p.y)*K1);\n vec2 a = p - i + (i.x+i.y)*K2;\n vec2 o = (a.x>a.y) ? vec2(1.0,0.0) : vec2(0.0,1.0); //vec2 of = 0.5 + 0.5*vec2(sign(a.x-a.y), sign(a.y-a.x));\n vec2 b = a - o + K2;\n\tvec2 c = a - 1.0 + 2.0*K2;\n vec3 h = max(0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );\n\tvec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));\n return dot(n, vec3(70.0));\n}\n\nfloat fbm(vec2 n) {\n\tfloat total = 0.0, amplitude = 0.1;\n\tfor (int i = 0; i < 7; i++) {\n\t\ttotal += noise(n) * amplitude;\n\t\tn = m * n;\n\t\tamplitude *= 0.4;\n\t}\n\treturn total*1.0;\n}\n\n// -----------------------------------------------\nfloat distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n}\nvoid mainImage( out vec4 fragColor, in vec2 fragCoord ) {\n // vec2 p = fragCoord.xy / iResolution.xy;\n vec2 p = vUv*1.;\n\tvec2 uv = p*vec2(iResolution.x/iResolution.y,1.0);\n float time = iTime * speed;\n float q = fbm(uv * cloudscale * 0.5);\n////////压边\n float dis= max(max((p.x*51.-50.0), 1.-(p.x*51.)),max((p.y*3.-2.), 1.-(p.y*3.)));\n float sphere =pow(distanceTo(vec2(0.5,0.5),p),8.)*1000.;/////画圆圈2\n\n\n //ridged noise shape\n\tfloat r = 0.0;\n\tuv *= cloudscale;\n uv -= q - time;\n float weight = 0.8;\n for (int i=0; i<8; i++){\n\t\tr += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.7;\n }\n\n //noise shape\n\tfloat f = 0.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale;\n uv -= q - time;\n weight = 0.7;\n for (int i=0; i<8; i++){\n\t\tf += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n f *= r + f;\n\n //noise colour\n float c = 0.0;\n time = iTime * speed * 2.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*2.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n //noise ridge colour\n float c1 = 0.0;\n time = iTime * speed * 3.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*3.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc1 += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n c += c1;\n\n vec3 skycolour = mix(skycolour2, skycolour1, p.y)+sphere*0.3;\n vec3 cloudcolour = vec3(1.1, 1.1, 0.9) * clamp((clouddark + cloudlight*c), 0.0, 1.0);\n\n f = cloudcover + cloudalpha*f*r;\n\n float cloudIntensity = clamp(f + c, 0.0, 1.0) * (cloudDensity);\n\n vec3 result = mix(skycolour, clamp(skytint * skycolour + cloudcolour, 0.0, 1.0), cloudIntensity);\n\n\tfragColor = vec4(result, 0.5);\n //fragColor = vec4(sphere,0,0,1.); ////- clamp(dis,0.,1.)\n}\n\nvoid main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n}\n`,\n}\n\nexport default CloudShader\n"],"mappings":"AAAA;AACA,IAAMA,WAAW,GAAG;EAClBC,YAAY,EAAE,iNASN;EAERC,cAAc,EAAE;AAwIlB,CAAC;AAED,eAAeF,WAAW"}
@@ -70,4 +70,5 @@ var Snow = /*#__PURE__*/function () {
70
70
  }]);
71
71
  return Snow;
72
72
  }();
73
- export default Snow;
73
+ export default Snow;
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Mesh","PlaneGeometry","ShaderMaterial","Vector2","use","snowShader","Snow","initGeometry","useScene","scene","camera","Error","geometry","uniforms","iResolution","value","window","innerWidth","innerHeight","material","side","transparent","depthTest","blending","vertexShader","fragmentShader","i","mesh","position","z","scale","x","Math","random","y","add","meshes","push","useframe","iTime","snowSpeed","forEach","lookAt","visible"],"sources":["../../../src/environment/showShader/index.ts"],"sourcesContent":["import { Mesh, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport snowShader from './shader'\n\n// todo: merge rain\nclass Snow {\n private meshes: Mesh[] = []\n\n constructor() {\n this.initGeometry()\n }\n\n private initGeometry() {\n const { scene, camera } = use.useScene()\n\n if (!scene && !camera)\n throw new Error('please init scene and camera first')\n\n const geometry = new PlaneGeometry(10000, 10000)\n\n // @ts-ignore\n snowShader.uniforms.iResolution.value = new Vector2(window.innerWidth, window.innerHeight)\n\n const material = new ShaderMaterial({\n uniforms: snowShader.uniforms,\n side: 2,\n transparent: true,\n depthTest: false,\n blending: 2,\n vertexShader: snowShader.vertexShader,\n fragmentShader: snowShader.fragmentShader,\n })\n\n for (let i = 0; i < 10; i++) {\n const mesh = new Mesh(geometry, material)\n // const mesh = new Mesh(geometry, new MeshBasicMaterial({ color: new Color(Math.random() * 0xFFFFFF) }))\n mesh.position.z = -10000 + i * 1000\n mesh.scale.x = Math.random() * 0.5 + 1\n mesh.scale.y = Math.random() * 0.5 + 1\n\n scene!.add(mesh)\n\n this.meshes.push(mesh)\n }\n\n use.useframe(() => {\n snowShader.uniforms.iTime.value += 0.01\n snowShader.uniforms.snowSpeed.value = 1\n\n this.meshes.forEach((mesh) => {\n mesh.lookAt(camera!.position.x, camera!.position.y * 0.1, camera!.position.z)\n })\n })\n }\n\n stop() {\n this.meshes.forEach((mesh) => {\n mesh.visible = false\n })\n }\n\n continue() {\n this.meshes.forEach((mesh) => {\n mesh.visible = true\n })\n }\n}\n\nexport default Snow"],"mappings":";;;;;;;AAAA,SAASA,IAAI,EAAEC,aAAa,EAAEC,cAAc,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AACjF,OAAOC,UAAU;;AAEjB;AAAA,IACMC,IAAI;EAGR,gBAAc;IAAA;IAAA,gCAFW,EAAE;IAGzB,IAAI,CAACC,YAAY,EAAE;EACrB;EAAC;IAAA;IAAA,OAED,wBAAuB;MAAA;MACrB,oBAA0BH,GAAG,CAACI,QAAQ,EAAE;QAAhCC,KAAK,iBAALA,KAAK;QAAEC,MAAM,iBAANA,MAAM;MAErB,IAAI,CAACD,KAAK,IAAI,CAACC,MAAM,EACnB,MAAM,IAAIC,KAAK,CAAC,oCAAoC,CAAC;MAEvD,IAAMC,QAAQ,GAAG,IAAIX,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;;MAEhD;MACAI,UAAU,CAACQ,QAAQ,CAACC,WAAW,CAACC,KAAK,GAAG,IAAIZ,OAAO,CAACa,MAAM,CAACC,UAAU,EAAED,MAAM,CAACE,WAAW,CAAC;MAE1F,IAAMC,QAAQ,GAAG,IAAIjB,cAAc,CAAC;QAClCW,QAAQ,EAAER,UAAU,CAACQ,QAAQ;QAC7BO,IAAI,EAAE,CAAC;QACPC,WAAW,EAAE,IAAI;QACjBC,SAAS,EAAE,KAAK;QAChBC,QAAQ,EAAE,CAAC;QACXC,YAAY,EAAEnB,UAAU,CAACmB,YAAY;QACrCC,cAAc,EAAEpB,UAAU,CAACoB;MAC7B,CAAC,CAAC;MAEF,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;QAC3B,IAAMC,IAAI,GAAG,IAAI3B,IAAI,CAACY,QAAQ,EAAEO,QAAQ,CAAC;QACzC;QACAQ,IAAI,CAACC,QAAQ,CAACC,CAAC,GAAG,CAAC,KAAK,GAAGH,CAAC,GAAG,IAAI;QACnCC,IAAI,CAACG,KAAK,CAACC,CAAC,GAAGC,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QACtCN,IAAI,CAACG,KAAK,CAACI,CAAC,GAAGF,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QAEtCxB,KAAK,CAAE0B,GAAG,CAACR,IAAI,CAAC;QAEhB,IAAI,CAACS,MAAM,CAACC,IAAI,CAACV,IAAI,CAAC;MACxB;MAEAvB,GAAG,CAACkC,QAAQ,CAAC,YAAM;QACjBjC,UAAU,CAACQ,QAAQ,CAAC0B,KAAK,CAACxB,KAAK,IAAI,IAAI;QACvCV,UAAU,CAACQ,QAAQ,CAAC2B,SAAS,CAACzB,KAAK,GAAG,CAAC;QAEvC,KAAI,CAACqB,MAAM,CAACK,OAAO,CAAC,UAACd,IAAI,EAAK;UAC5BA,IAAI,CAACe,MAAM,CAAChC,MAAM,CAAEkB,QAAQ,CAACG,CAAC,EAAErB,MAAM,CAAEkB,QAAQ,CAACM,CAAC,GAAG,GAAG,EAAExB,MAAM,CAAEkB,QAAQ,CAACC,CAAC,CAAC;QAC/E,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,gBAAO;MACL,IAAI,CAACO,MAAM,CAACK,OAAO,CAAC,UAACd,IAAI,EAAK;QAC5BA,IAAI,CAACgB,OAAO,GAAG,KAAK;MACtB,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,qBAAW;MACT,IAAI,CAACP,MAAM,CAACK,OAAO,CAAC,UAACd,IAAI,EAAK;QAC5BA,IAAI,CAACgB,OAAO,GAAG,IAAI;MACrB,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,eAAerC,IAAI"}
@@ -27,6 +27,7 @@ var snowShader = {
27
27
  }
28
28
  },
29
29
  vertexShader: /* glsl */"\n varying highp vec2 vUv;\n varying vec3 vPosition;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",
30
- fragmentShader: /* glsl */"\n #define PI 3.14159265359\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float size;\n uniform float density;\n uniform float snowSpeed;\n uniform float camVert;\n varying highp vec2 vUv;\n\n float ball(vec2 p) {\n float d = distance(vec2(.5), p);\n return smoothstep(size,size - .05, d);\n }\n float N11(float n) {\n return fract(sin(n * 871.213) * 3134.422);\n }\n float N21(vec2 uv) {\n return N11(N11(uv.x) + uv.y);\n }\n \n float snow(vec2 uv, float t) {\n vec2 org_uv = vec2(uv.x, uv.y);\n float z = 10.;\n uv.y += t * .5;\n vec2 gv = fract(uv*z);\n vec2 id = floor(uv*z); \n gv.x += (sin(N21(id) * 128. + t) * .4);\n gv.y += (sin(N11(N21(id)) * 128. + t) * .4);\n float dots = ball(gv);\n return dots;\n }\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n vec2 uv= vUv;\n float t = iTime * .3*snowSpeed;\n vec2 gh_uv = uv;\n vec3 colSnow = vec3(0.);\n float m = 0.;\n \n for(float i =0.; i <= .5; i += 1. / (16.*density)) {\n float z = mix(1., .5 , i);\n vec2 offset = vec2(N11(i), N11(N11(i)));\n m += snow((uv + offset) * z, t) * .3;\n }\n \n\n colSnow = vec3(m)*1.2;\n gl_FragColor = vec4(colSnow,colSnow.x);\n }"
30
+ fragmentShader: /* glsl */"\n #define PI 3.14159265359\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float size;\n uniform float density;\n uniform float snowSpeed;\n uniform float camVert;\n varying highp vec2 vUv;\n\n float ball(vec2 p) {\n float d = distance(vec2(.5), p);\n return smoothstep(size,size - .05, d);\n }\n float N11(float n) {\n return fract(sin(n * 871.213) * 3134.422);\n }\n float N21(vec2 uv) {\n return N11(N11(uv.x) + uv.y);\n }\n \n float snow(vec2 uv, float t) {\n vec2 org_uv = vec2(uv.x, uv.y);\n float z = 10.;\n uv.y += t * .5;\n vec2 gv = fract(uv*z);\n vec2 id = floor(uv*z); \n gv.x += (sin(N21(id) * 128. + t) * .4);\n gv.y += (sin(N11(N21(id)) * 128. + t) * .4);\n float dots = ball(gv);\n return dots;\n }\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n vec2 uv= vUv;\n float t = iTime * .3*snowSpeed;\n vec2 gh_uv = uv;\n vec3 colSnow = vec3(0.);\n float m = 0.;\n \n for(float i =0.; i <= .5; i += 1. / (5.*density)) {\n float z = mix(1., .5 , i);\n vec2 offset = vec2(N11(i), N11(N11(i)));\n m += snow((uv + offset) * z, t) * .3;\n }\n \n\n colSnow = vec3(m)*1.2;\n gl_FragColor = vec4(colSnow,colSnow.x);\n }"
31
31
  };
32
- export default snowShader;
32
+ export default snowShader;
33
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["snowShader","uniforms","tDiffuse","value","iResolution","iTime","size","density","snowSpeed","camVert","vertexShader","fragmentShader"],"sources":["../../../src/environment/showShader/shader.ts"],"sourcesContent":["// source from https://www.shadertoy.com/view/wt3GWH\nconst snowShader = {\n uniforms: {\n tDiffuse: { value: null },\n iResolution: { value: null },\n iTime: { value: 0 },\n size: { value: 0.032 }, // 0.05\n density: { value: 1.0 }, // 1.0\n snowSpeed: { value: 0.1 }, // 1.0\n camVert: { value: 1.0 },\n },\n\n vertexShader: /* glsl */`\n varying highp vec2 vUv;\n varying vec3 vPosition;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }`,\n\n fragmentShader: /* glsl */`\n #define PI 3.14159265359\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float size;\n uniform float density;\n uniform float snowSpeed;\n uniform float camVert;\n varying highp vec2 vUv;\n\n float ball(vec2 p) {\n float d = distance(vec2(.5), p);\n return smoothstep(size,size - .05, d);\n }\n float N11(float n) {\n return fract(sin(n * 871.213) * 3134.422);\n }\n float N21(vec2 uv) {\n return N11(N11(uv.x) + uv.y);\n }\n \n float snow(vec2 uv, float t) {\n vec2 org_uv = vec2(uv.x, uv.y);\n float z = 10.;\n uv.y += t * .5;\n vec2 gv = fract(uv*z);\n vec2 id = floor(uv*z); \n gv.x += (sin(N21(id) * 128. + t) * .4);\n gv.y += (sin(N11(N21(id)) * 128. + t) * .4);\n float dots = ball(gv);\n return dots;\n }\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n vec2 uv= vUv;\n float t = iTime * .3*snowSpeed;\n vec2 gh_uv = uv;\n vec3 colSnow = vec3(0.);\n float m = 0.;\n \n for(float i =0.; i <= .5; i += 1. / (5.*density)) {\n float z = mix(1., .5 , i);\n vec2 offset = vec2(N11(i), N11(N11(i)));\n m += snow((uv + offset) * z, t) * .3;\n }\n \n\n colSnow = vec3(m)*1.2;\n gl_FragColor = vec4(colSnow,colSnow.x);\n }`,\n\n}\nexport default snowShader\n"],"mappings":"AAAA;AACA,IAAMA,UAAU,GAAG;EACjBC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;IACzBC,WAAW,EAAE;MAAED,KAAK,EAAE;IAAK,CAAC;IAC5BE,KAAK,EAAE;MAAEF,KAAK,EAAE;IAAE,CAAC;IACnBG,IAAI,EAAE;MAAEH,KAAK,EAAE;IAAM,CAAC;IAAE;IACxBI,OAAO,EAAE;MAAEJ,KAAK,EAAE;IAAI,CAAC;IAAE;IACzBK,SAAS,EAAE;MAAEL,KAAK,EAAE;IAAI,CAAC;IAAE;IAC3BM,OAAO,EAAE;MAAEN,KAAK,EAAE;IAAI;EACxB,CAAC;EAEDO,YAAY,EAAE,0OAMN;EAERC,cAAc,EAAE;AAoDlB,CAAC;AACD,eAAeX,UAAU"}
@@ -24,7 +24,7 @@ var initsSkySystem = function initsSkySystem(options) {
24
24
  mieDirectionalG: 0.7,
25
25
  elevation: 2,
26
26
  azimuth: 180,
27
- exposure: renderer.toneMappingExposure
27
+ exposure: 0.1
28
28
  };
29
29
  // @ts-ignore
30
30
  var uniforms = sky.material.uniforms;
@@ -46,18 +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
51
  sunLight.shadow.bias = getLastValue(opts.bias, -0.005);
52
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
53
  var cam = sunLight.shadow.camera;
54
- // cam.near = getLastValue(opts.near, 0.1)
55
- // cam.far = getLastValue(opts.far, 10000)
56
- // cam.left = getLastValue(opts.left, -10000)
57
- // cam.right = getLastValue(opts.right, 10000)
58
- // cam.top = getLastValue(opts.top, 10000)
59
- // cam.bottom = getLastValue(opts.bottom, -10000)
60
-
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);
61
60
  return sunLight;
62
61
  };
63
62
 
@@ -73,6 +72,7 @@ var createSkySystem = function createSkySystem(date, latitude, longitude) {
73
72
  var _use$useScene2 = use.useScene(),
74
73
  renderer = _use$useScene2.renderer,
75
74
  scene = _use$useScene2.scene;
75
+ sunRadius = 300;
76
76
  if (!renderer && !scene) throw new Error('renderer or scene is not exist');
77
77
  var _initsSkySystem = initsSkySystem(),
78
78
  _initsSkySystem2 = _slicedToArray(_initsSkySystem, 3),
@@ -113,4 +113,5 @@ var createSkySystem = function createSkySystem(date, latitude, longitude) {
113
113
  };
114
114
  return [setDate, skyGroup, sky];
115
115
  };
116
- export default createSkySystem;
116
+ export default createSkySystem;
117
+ //# sourceMappingURL=index.js.map