@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.
- package/dist/camera/index.d.ts +69 -0
- package/dist/camera/index.js +257 -0
- package/dist/camera/index.js.map +1 -0
- package/dist/city/flyinglead.js +2 -0
- package/dist/city/flyinglead.js.map +1 -0
- package/dist/city/radar.js +2 -0
- package/dist/city/radar.js.map +1 -0
- package/dist/city/scanning.js +2 -0
- package/dist/city/scanning.js.map +1 -0
- package/dist/city/surroundLine.js +2 -0
- package/dist/city/surroundLine.js.map +1 -0
- package/dist/environment/rain.js +2 -1
- package/dist/environment/rain.js.map +1 -0
- package/dist/environment/{rainShder → rainShader}/index.js +2 -1
- package/dist/environment/rainShader/index.js.map +1 -0
- package/dist/environment/{rainShder → rainShader}/shader.js +2 -1
- package/dist/environment/rainShader/shader.js.map +1 -0
- package/dist/environment/shaderCloud/cloudMaterial.js +2 -1
- package/dist/environment/shaderCloud/cloudMaterial.js.map +1 -0
- package/dist/environment/shaderCloud/index.js +2 -1
- package/dist/environment/shaderCloud/index.js.map +1 -0
- package/dist/environment/shaderCloud/shader.js +2 -1
- package/dist/environment/shaderCloud/shader.js.map +1 -0
- package/dist/environment/{showShder → showShader}/index.js +2 -1
- package/dist/environment/showShader/index.js.map +1 -0
- package/dist/environment/{showShder → showShader}/shader.js +3 -2
- package/dist/environment/showShader/shader.js.map +1 -0
- package/dist/environment/sky/index.js +11 -10
- package/dist/environment/sky/index.js.map +1 -0
- package/dist/environment/skyBox/index.d.ts +41 -0
- package/dist/environment/skyBox/index.js +150 -0
- package/dist/environment/skyBox/index.js.map +1 -0
- package/dist/environment/snow.js +4 -1
- package/dist/environment/snow.js.map +1 -0
- package/dist/environment/sun/index.js +2 -1
- package/dist/environment/sun/index.js.map +1 -0
- package/dist/environment/utils/points.js +4 -3
- package/dist/environment/utils/points.js.map +1 -0
- package/dist/environment/volumetricCloud/cloudMaterial.js +2 -1
- package/dist/environment/volumetricCloud/cloudMaterial.js.map +1 -0
- package/dist/environment/volumetricCloud/inex.js +2 -1
- package/dist/environment/volumetricCloud/inex.js.map +1 -0
- package/dist/heatmap/index.d.ts +9 -0
- package/dist/heatmap/index.js +138 -0
- package/dist/heatmap/index.js.map +1 -0
- package/dist/helper/view/index.js +2 -1
- package/dist/helper/view/index.js.map +1 -0
- package/dist/helper/view/utils.js +2 -1
- package/dist/helper/view/utils.js.map +1 -0
- package/dist/index.d.ts +11 -6
- package/dist/index.js +12 -6
- package/dist/index.js.map +1 -0
- package/dist/line/curve.d.ts +33 -0
- package/dist/line/curve.js +71 -0
- package/dist/line/curve.js.map +1 -0
- package/dist/line/index.d.ts +0 -0
- package/dist/line/index.js +2 -0
- package/dist/line/index.js.map +1 -0
- package/dist/line/round-curve.d.ts +19 -0
- package/dist/line/round-curve.js +212 -0
- package/dist/line/round-curve.js.map +1 -0
- package/dist/material/finirMaterialMaterial/index.d.ts +9 -0
- package/dist/material/finirMaterialMaterial/index.js +47 -0
- package/dist/material/finirMaterialMaterial/index.js.map +1 -0
- package/dist/material/pristineGridMaterial/index.js +2 -1
- package/dist/material/pristineGridMaterial/index.js.map +1 -0
- package/dist/material/pristineGridMaterial/shader/fragment.js +2 -1
- package/dist/material/pristineGridMaterial/shader/fragment.js.map +1 -0
- package/dist/material/pristineGridMaterial/shader/vertex.js +2 -1
- package/dist/material/pristineGridMaterial/shader/vertex.js.map +1 -0
- package/dist/poi/core/Base.d.ts +7 -0
- package/dist/poi/core/Base.js +24 -0
- package/dist/poi/core/Base.js.map +1 -0
- package/dist/poi/core/Css2D.js +181 -0
- package/dist/poi/core/Css2D.js.map +1 -0
- package/dist/poi/core/Css3D.d.ts +1 -0
- package/dist/poi/core/Css3D.js +24 -0
- package/dist/poi/core/Css3D.js.map +1 -0
- package/dist/poi/core/Sprite.d.ts +12 -0
- package/dist/poi/core/Sprite.js +145 -0
- package/dist/poi/core/Sprite.js.map +1 -0
- package/dist/poi/core/SpriteBase.d.ts +11 -0
- package/dist/poi/core/SpriteBase.js +58 -0
- package/dist/poi/core/SpriteBase.js.map +1 -0
- package/dist/poi/index.d.ts +12 -0
- package/dist/poi/index.js +29 -0
- package/dist/poi/index.js.map +1 -0
- package/dist/poi/utils/base64.d.ts +3 -0
- package/dist/poi/utils/base64.js +4 -0
- package/dist/poi/utils/base64.js.map +1 -0
- package/dist/poi/utils/canvas.d.ts +3 -0
- package/dist/poi/utils/canvas.js +68 -0
- package/dist/poi/utils/canvas.js.map +1 -0
- package/dist/poi/utils/css.d.ts +35 -0
- package/dist/poi/utils/css.js +41 -0
- package/dist/poi/utils/css.js.map +1 -0
- package/dist/poi/utils/type.d.ts +35 -0
- package/dist/poi/utils/type.js +39 -0
- package/dist/poi/utils/type.js.map +1 -0
- package/dist/poiBack/assets.d.ts +2 -0
- package/dist/poiBack/assets.js +3 -0
- package/dist/poiBack/assets.js.map +1 -0
- package/dist/poiBack/dom.d.ts +2 -0
- package/dist/poiBack/dom.js +36 -0
- package/dist/poiBack/dom.js.map +1 -0
- package/dist/poiBack/index.d.ts +19 -0
- package/dist/poiBack/index.js +145 -0
- package/dist/poiBack/index.js.map +1 -0
- package/dist/poiBack/type.d.ts +20 -0
- package/dist/poiBack/type.js +6 -0
- package/dist/poiBack/type.js.map +1 -0
- package/dist/postEffects/bloomPass.js +2 -1
- package/dist/postEffects/bloomPass.js.map +1 -0
- package/dist/postEffects/index.js +2 -1
- package/dist/postEffects/index.js.map +1 -0
- package/dist/postEffects/outlinePass.js +9 -2
- package/dist/postEffects/outlinePass.js.map +1 -0
- package/dist/scene/grow/grow.d.ts +10 -0
- package/dist/scene/grow/grow.js +128 -0
- package/dist/scene/grow/grow.js.map +1 -0
- package/dist/scene/grow/growStyle.d.ts +2 -0
- package/dist/scene/grow/growStyle.js +3 -0
- package/dist/scene/grow/growStyle.js.map +1 -0
- package/dist/scene/grow/index.d.ts +2 -0
- package/dist/scene/grow/index.js +3 -0
- package/dist/scene/grow/index.js.map +1 -0
- package/dist/scene/grow/style_down.d.ts +13 -0
- package/dist/scene/grow/style_down.js +92 -0
- package/dist/scene/grow/style_down.js.map +1 -0
- package/dist/scene/grow/style_up.d.ts +13 -0
- package/dist/scene/grow/style_up.js +96 -0
- package/dist/scene/grow/style_up.js.map +1 -0
- package/dist/scene/grow/type.d.ts +46 -0
- package/dist/scene/grow/type.js +42 -0
- package/dist/scene/grow/type.js.map +1 -0
- package/dist/scene/index.d.ts +1 -0
- package/dist/scene/index.js +2 -0
- package/dist/scene/index.js.map +1 -0
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -0
- package/dist/weather/fog2DMesh.d.ts +14 -0
- package/dist/weather/fog2DMesh.js +77 -0
- package/dist/weather/fog2DMesh.js.map +1 -0
- package/dist/weather/glsl/fog.d.ts +2 -0
- package/dist/weather/glsl/fog.js +3 -0
- package/dist/weather/glsl/fog.js.map +1 -0
- package/dist/weather/index.d.ts +4 -0
- package/dist/weather/index.js +12 -0
- package/dist/weather/index.js.map +1 -0
- package/package.json +10 -3
- package/dist/core/mouseDrawe.d.ts +0 -2
- package/dist/core/mouseDrawe.js +0 -1
- package/dist/environment/cloud/cloud.d.ts +0 -1
- package/dist/environment/cloud/cloud.js +0 -1
- package/dist/environment/cloud/index.d.ts +0 -7
- package/dist/environment/cloud/index.js +0 -60
- /package/dist/environment/{rainShder → rainShader}/index.d.ts +0 -0
- /package/dist/environment/{rainShder → rainShader}/shader.d.ts +0 -0
- /package/dist/environment/{showShder → showShader}/index.d.ts +0 -0
- /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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"}
|
package/dist/city/flyinglead.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/city/flyinglead.ts"],"sourcesContent":[""],"mappings":""}
|
package/dist/city/radar.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/city/radar.ts"],"sourcesContent":[""],"mappings":""}
|
package/dist/city/scanning.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/city/scanning.ts"],"sourcesContent":[""],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/city/surroundLine.ts"],"sourcesContent":[""],"mappings":""}
|
package/dist/environment/rain.js
CHANGED
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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. / (
|
|
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:
|
|
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,
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|