@anov/3d-ability 0.0.4-alpha8 → 0.0.4
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 +4 -0
- package/dist/camera/index.js +44 -26
- package/dist/camera/index.js.map +1 -1
- package/dist/environment/sky/index.js +5 -2
- package/dist/environment/sky/index.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/poi/core/Sprite.d.ts +1 -0
- package/dist/poi/core/Sprite.js +11 -0
- package/dist/poi/core/Sprite.js.map +1 -1
- package/dist/poi/utils/css.d.ts +4 -4
- package/dist/poi/utils/css.js +12 -8
- package/dist/poi/utils/css.js.map +1 -1
- 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 +3 -3
- package/dist/animation/index.d.ts +0 -0
- package/dist/animation/index.js +0 -2
- package/dist/animation/index.js.map +0 -1
- package/dist/core/mouseDrawe.d.ts +0 -2
- package/dist/core/mouseDrawe.js +0 -2
- package/dist/core/mouseDrawe.js.map +0 -1
- package/dist/environment/cloud/cloud.d.ts +0 -1
- package/dist/environment/cloud/cloud.js +0 -2
- package/dist/environment/cloud/cloud.js.map +0 -1
- package/dist/environment/cloud/index.d.ts +0 -7
- package/dist/environment/cloud/index.js +0 -61
- package/dist/environment/cloud/index.js.map +0 -1
- package/dist/poi/core/Css2D.d.ts +0 -20
package/dist/camera/index.d.ts
CHANGED
package/dist/camera/index.js
CHANGED
|
@@ -14,14 +14,32 @@ var Camera = /*#__PURE__*/function () {
|
|
|
14
14
|
_defineProperty(this, "isTransitionPeriod", false);
|
|
15
15
|
this.camera = camera;
|
|
16
16
|
this.controls = controls;
|
|
17
|
+
this.controls.object = this.camera;
|
|
18
|
+
// this.handleChanged()
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* @returns
|
|
23
|
-
*/
|
|
22
|
+
* handle camera changed
|
|
23
|
+
*/
|
|
24
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
|
+
}, {
|
|
25
43
|
key: "caclCurrentPos",
|
|
26
44
|
value: function caclCurrentPos(currentPos, pitch) {
|
|
27
45
|
var box = new Box3();
|
|
@@ -83,7 +101,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
83
101
|
}, {
|
|
84
102
|
key: "focus",
|
|
85
103
|
value: function focus(params) {
|
|
86
|
-
var
|
|
104
|
+
var _this2 = this;
|
|
87
105
|
return new Promise(function (res) {
|
|
88
106
|
var position = params.target,
|
|
89
107
|
pitch = params.pitch,
|
|
@@ -104,8 +122,8 @@ var Camera = /*#__PURE__*/function () {
|
|
|
104
122
|
onComplate: function onComplate() {
|
|
105
123
|
var _params$duration;
|
|
106
124
|
res({
|
|
107
|
-
position:
|
|
108
|
-
target:
|
|
125
|
+
position: _this2.camera.position.toArray(),
|
|
126
|
+
target: _this2.controls.target.toArray(),
|
|
109
127
|
isTrigger: true,
|
|
110
128
|
duration: (_params$duration = params.duration) !== null && _params$duration !== void 0 ? _params$duration : 0,
|
|
111
129
|
userInput: true,
|
|
@@ -116,15 +134,15 @@ var Camera = /*#__PURE__*/function () {
|
|
|
116
134
|
};
|
|
117
135
|
if (Array.isArray(position[0])) {
|
|
118
136
|
var currentPos = position;
|
|
119
|
-
var
|
|
120
|
-
lastPosition =
|
|
121
|
-
lastLookat =
|
|
122
|
-
|
|
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());
|
|
123
141
|
} else {
|
|
124
142
|
var _currentPos = position;
|
|
125
|
-
var _lastPosition =
|
|
126
|
-
var _lastLookat =
|
|
127
|
-
|
|
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());
|
|
128
146
|
}
|
|
129
147
|
});
|
|
130
148
|
}
|
|
@@ -136,10 +154,10 @@ var Camera = /*#__PURE__*/function () {
|
|
|
136
154
|
}, {
|
|
137
155
|
key: "set",
|
|
138
156
|
value: function set(params) {
|
|
139
|
-
var
|
|
157
|
+
var _this3 = this;
|
|
140
158
|
return new Promise(function (res, _) {
|
|
141
159
|
var _ref3;
|
|
142
|
-
|
|
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, {
|
|
143
161
|
duration: (_ref3 = params.duration && params.duration * 1000) !== null && _ref3 !== void 0 ? _ref3 : 1000,
|
|
144
162
|
onUpdate: function onUpdate(_ref4) {
|
|
145
163
|
var position = _ref4.position,
|
|
@@ -154,8 +172,8 @@ var Camera = /*#__PURE__*/function () {
|
|
|
154
172
|
onComplate: function onComplate() {
|
|
155
173
|
var _params$duration2;
|
|
156
174
|
res({
|
|
157
|
-
position:
|
|
158
|
-
target:
|
|
175
|
+
position: _this3.camera.position.toArray(),
|
|
176
|
+
target: _this3.controls.target.toArray(),
|
|
159
177
|
isTrigger: true,
|
|
160
178
|
duration: (_params$duration2 = params.duration) !== null && _params$duration2 !== void 0 ? _params$duration2 : 0,
|
|
161
179
|
userInput: true
|
|
@@ -187,7 +205,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
187
205
|
}, {
|
|
188
206
|
key: "moveCameraTo",
|
|
189
207
|
value: function moveCameraTo(position, target) {
|
|
190
|
-
var
|
|
208
|
+
var _this4 = this;
|
|
191
209
|
var pitch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
192
210
|
var options = arguments.length > 3 ? arguments[3] : undefined;
|
|
193
211
|
var currentPoition = this.camera.position.clone();
|
|
@@ -208,27 +226,27 @@ var Camera = /*#__PURE__*/function () {
|
|
|
208
226
|
p: -this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)
|
|
209
227
|
}, (options === null || options === void 0 ? void 0 : options.duration) || 1000).onStart(function () {
|
|
210
228
|
(options === null || options === void 0 ? void 0 : options.onStart) && options.onStart();
|
|
211
|
-
|
|
212
|
-
|
|
229
|
+
_this4.controls.enabled = false;
|
|
230
|
+
_this4.isTransitionPeriod = true;
|
|
213
231
|
}).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function (_ref5) {
|
|
214
232
|
var t = _ref5.t,
|
|
215
233
|
lookat = _ref5.lookat,
|
|
216
234
|
p = _ref5.p;
|
|
217
|
-
|
|
235
|
+
_this4.controls.target.copy(lookat);
|
|
218
236
|
if (pitch)
|
|
219
237
|
// @ts-ignore
|
|
220
|
-
|
|
238
|
+
_this4.camera.rotationParent.x = p;
|
|
221
239
|
var currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t);
|
|
222
|
-
|
|
240
|
+
_this4.camera.position.copy(currentPosition);
|
|
223
241
|
(options === null || options === void 0 ? void 0 : options.onUpdate) && options.onUpdate({
|
|
224
242
|
position: currentPosition,
|
|
225
243
|
lookat: lookat
|
|
226
244
|
});
|
|
227
245
|
}).onComplete(function () {
|
|
228
246
|
(options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
|
|
229
|
-
|
|
247
|
+
_this4.controls.enabled = true;
|
|
230
248
|
setTimeout(function () {
|
|
231
|
-
|
|
249
|
+
_this4.isTransitionPeriod = false;
|
|
232
250
|
});
|
|
233
251
|
}).start();
|
|
234
252
|
}
|
package/dist/camera/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","MathUtils","TWEEN","Vector3","Camera","camera","controls","currentPos","pitch","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","position","clone","sub","target","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distance","distanceTo","newTarget","prevTarget","prevPosition","lastTarget","params","Promise","res","duration","moveOptions","onUpdate","lookat","onComplate","toArray","isTrigger","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","Tween","t","p","to","rotation","onStart","enabled","isTransitionPeriod","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\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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"}
|
|
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":";;;;;;;AACA,SAASA,IAAI,EAAEC,SAAS,EAAEC,KAAK,EAAEC,OAAO,QAAQ,eAAe;AAAA,IAUzDC,MAAM;EAKV,gBAAYC,MAAyB,EAAEC,QAAuB,EAAE;IAAA;IAAA;IAAA;IAAA,4CAFnC,KAAK;IAGhC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IAExB,IAAI,CAACA,QAAQ,CAACC,MAAM,GAAG,IAAI,CAACF,MAAM;IAClC;EACF;;EAEA;AACF;AACA;EAFE;IAAA;IAAA,OAGA,yBAAwB;MAAA;MACtB,IAAI,CAACC,QAAQ,CAACE,gBAAgB,CAAC,QAAQ,EAAE,YAAM;QAC7C,IAAI,CAAC,KAAI,CAACC,kBAAkB,EAAE;UAC5B,IAAMC,MAAM,GAAG,KAAI,CAACJ,QAAQ,CAACK,MAAM;UACnC,IAAMC,QAAQ,GAAG,KAAI,CAACP,MAAM,CAACO,QAAQ;UAErCC,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAEJ,MAAM,EAAEE,QAAQ,CAAC;QACjD;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,wBAAuBG,UAA0B,EAAEC,KAAa,EAAE;MAChE,IAAMC,GAAG,GAAG,IAAIjB,IAAI,EAAE;MAEtBiB,GAAG,CAACC,aAAa,CAACH,UAAU,CAACI,GAAG,CAAC,UAAAC,IAAI;QAAA,OAAI,IAAIjB,OAAO,CAACiB,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC,CAAC;MAEjF,IAAMC,MAAM,GAAGJ,GAAG,CAACK,SAAS,CAAC,IAAInB,OAAO,EAAE,CAAC;MAC3C,IAAMoB,IAAI,GAAGN,GAAG,CAACO,OAAO,CAAC,IAAIrB,OAAO,EAAE,CAAC;MACvC,IAAMsB,YAAY,GAAGF,IAAI,CAACG,MAAM,EAAE,GAAG,GAAG;MAExC,IAAMC,WAAW,GAAGF,YAAY,GAAGG,IAAI,CAACC,GAAG,CAAC,IAAI,CAACxB,MAAM,CAACyB,GAAG,GAAG,CAAC,GAAGF,IAAI,CAACG,EAAE,GAAG,GAAG,CAAC;MAChF,IAAMC,sBAAsB,GAAGL,WAAW;MAC1C,IAAMM,eAAe,GAAI,IAAI,CAAC5B,MAAM,CAACO,QAAQ,CAACsB,KAAK,EAAE,CAAEC,GAAG,CAAC,IAAI,CAAC7B,QAAQ,CAACK,MAAM,CAAC,CAACyB,SAAS,EAAE,EAAC;;MAE7F,IAAMC,YAAY,GAAGJ,eAAe,CAACK,cAAc,CAACN,sBAAsB,CAAC,CAACO,GAAG,CAAClB,MAAM,CAAC;MACvF,IAAMmB,UAAU,GAAG,IAAI,CAACC,iBAAiB,CAACzB,KAAK,EAAEK,MAAM,EAAEgB,YAAY,CAAC;MAEtE,OAAO;QACLA,YAAY,EAAZA,YAAY;QACZG,UAAU,EAAVA;MACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,2BAA0BxB,KAAa,EAAEL,MAAe,EAAEC,QAAiB,EAAE;MAC3E,IAAMqB,eAAe,GAAG,IAAI9B,OAAO,EAAE,CAACuC,UAAU,CAAC/B,MAAM,EAAEC,QAAQ,CAAC;MAClE,IAAM+B,QAAQ,GAAG,IAAIxC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACrC,IAAMyC,cAAc,GAAG,IAAIzC,OAAO,EAAE,CAAC0C,YAAY,CAACZ,eAAe,EAAEU,QAAQ,CAAC,CAACP,SAAS,EAAE;MAExFH,eAAe,CAACa,cAAc,CAACF,cAAc,EAAE3C,SAAS,CAAC8C,QAAQ,CAAC/B,KAAK,CAAC,CAAC;MAEzE,IAAMgC,QAAQ,GAAGpC,QAAQ,CAACqC,UAAU,CAACtC,MAAM,CAAC;MAC5C,IAAMuC,SAAS,GAAGtC,QAAQ,CAACsB,KAAK,EAAE,CAACK,GAAG,CAACN,eAAe,CAACG,SAAS,EAAE,CAACE,cAAc,CAACU,QAAQ,CAAC,CAAC;MAE5F,OAAOE,SAAS;IAClB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,8BAA6BC,UAAmB,EAAEC,YAAqB,EAAEC,UAAmB,EAAE;MAC5F,IAAMpB,eAAe,GAAGoB,UAAU,CAACnB,KAAK,EAAE,CAACC,GAAG,CAACgB,UAAU,CAAC,CAACf,SAAS,EAAE;MACtE,OAAOH,eAAe,CAACK,cAAc,CAACe,UAAU,CAACJ,UAAU,CAACE,UAAU,CAAC,CAAC,CAACZ,GAAG,CAACa,YAAY,CAAC;IAC5F;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,eAAME,MAAoF,EAAE;MAAA;MAC1F,OAAO,IAAIC,OAAO,CAAC,UAACC,GAAG,EAAK;QAC1B,IAAgB5C,QAAQ,GAAsB0C,MAAM,CAA5C3C,MAAM;UAAYK,KAAK,GAAesC,MAAM,CAA1BtC,KAAK;UAAEyC,QAAQ,GAAKH,MAAM,CAAnBG,QAAQ;QACzC,IAAMC,WAAW,GAAG,SAAdA,WAAW;UAAA;UAAA,OAAU;YACzBD,QAAQ,UAAGA,QAAQ,IAAIA,QAAQ,GAAG,IAAI,uCAAK,IAAI;YAC/CE,QAAQ,EAAE,yBAA0B;cAAA,IAAvB/C,QAAQ,SAARA,QAAQ;gBAAEF,MAAM,SAANA,MAAM;YAK7B,CAAC,CAJC;YACA;YACA;YACA;YACD;;YACDkD,UAAU,EAAE,sBAAM;cAAA;cAChBJ,GAAG,CAAC;gBACF5C,QAAQ,EAAE,MAAI,CAACP,MAAM,CAACO,QAAQ,CAACiD,OAAO,EAAE;gBACxClD,MAAM,EAAE,MAAI,CAACL,QAAQ,CAACK,MAAM,CAACkD,OAAO,EAAE;gBACtCC,SAAS,EAAE,IAAI;gBACfL,QAAQ,sBAAEH,MAAM,CAACG,QAAQ,+DAAI,CAAC;gBAC9BM,SAAS,EAAE,IAAI;gBACf/C,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI;cAClB,CAAC,CAAC;YACJ;UACF,CAAC;QAAA,CAA8B;QAE/B,IAAIgD,KAAK,CAACC,OAAO,CAACrD,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;UAC9B,IAAMG,UAAU,GAAGH,QAA0B;UAC7C,4BAAqC,MAAI,CAACsD,cAAc,CAACnD,UAAU,EAAE,CAAC,CAAC;YAA/DsB,YAAY,yBAAZA,YAAY;YAAEG,UAAU,yBAAVA,UAAU;UAEhC,MAAI,CAAC2B,YAAY,CACf9B,YAAY,EACZG,UAAU,EACVxB,KAAK,EACL0C,WAAW,EAAE,CACd;QACH,CAAC,MACI;UACH,IAAM3C,WAAU,GAAGH,QAAwB;UAC3C,IAAMyB,aAAY,GAAG,MAAI,CAAC+B,oBAAoB,CAAC,MAAI,CAAC9D,QAAQ,CAACK,MAAM,EAAE,MAAI,CAACN,MAAM,CAACO,QAAQ,EAAE,IAAIT,OAAO,EAAE,CAACkE,SAAS,CAACtD,WAAU,CAAC,CAAC;UAC/H,IAAMyB,WAAU,GAAG,MAAI,CAACC,iBAAiB,CAAC,CAAC,EAAE,IAAItC,OAAO,EAAE,CAACkE,SAAS,CAACtD,WAAU,CAAC,EAAEsB,aAAY,CAAC;UAE/F,MAAI,CAAC8B,YAAY,CACf9B,aAAY,EACZG,WAAU,EACVxB,KAAK,EACL0C,WAAW,EAAE,CACd;QACH;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,aAAIJ,MAAgG,EAAE;MAAA;MACpG,OAAO,IAAIC,OAAO,CAAE,UAACC,GAAG,EAAEc,CAAC,EAAK;QAAA;QAC9B,MAAI,CAACH,YAAY,CACf,IAAIhE,OAAO,CAACmD,MAAM,CAAC1C,QAAQ,CAAC,CAAC,CAAC,EAAE0C,MAAM,CAAC1C,QAAQ,CAAC,CAAC,CAAC,EAAE0C,MAAM,CAAC1C,QAAQ,CAAC,CAAC,CAAC,CAAC,EACvE,IAAIT,OAAO,CAACmD,MAAM,CAAC3C,MAAM,CAAC,CAAC,CAAC,EAAE2C,MAAM,CAAC3C,MAAM,CAAC,CAAC,CAAC,EAAE2C,MAAM,CAAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,CAAC,EACD;UACE8C,QAAQ,WAAGH,MAAM,CAACG,QAAQ,IAAIH,MAAM,CAACG,QAAQ,GAAG,IAAI,yCAAK,IAAI;UAC7DE,QAAQ,EAAE,yBAA0B;YAAA,IAAvB/C,QAAQ,SAARA,QAAQ;cAAEF,MAAM,SAANA,MAAM;UAM7B,CAAC,CALC;UACA;UACA;UACA;UACA;UACD;;UACDkD,UAAU,EAAE,sBAAM;YAAA;YAChBJ,GAAG,CAAC;cACF5C,QAAQ,EAAE,MAAI,CAACP,MAAM,CAACO,QAAQ,CAACiD,OAAO,EAAE;cACxClD,MAAM,EAAE,MAAI,CAACL,QAAQ,CAACK,MAAM,CAACkD,OAAO,EAAE;cACtCC,SAAS,EAAE,IAAI;cACfL,QAAQ,uBAAEH,MAAM,CAACG,QAAQ,iEAAI,CAAC;cAC9BM,SAAS,EAAE;YACb,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACN,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,eAAM;MACJ,OAAO;QACLnD,QAAQ,EAAE,CAAC,IAAI,CAACP,MAAM,CAACO,QAAQ,CAAC2D,CAAC,EAAE,IAAI,CAAClE,MAAM,CAACO,QAAQ,CAAC4D,CAAC,EAAE,IAAI,CAACnE,MAAM,CAACO,QAAQ,CAAC6D,CAAC,CAAC;QAClF9D,MAAM,EAAE,CAAC,IAAI,CAACL,QAAQ,CAACK,MAAM,CAAC4D,CAAC,EAAE,IAAI,CAACjE,QAAQ,CAACK,MAAM,CAAC6D,CAAC,EAAE,IAAI,CAAClE,QAAQ,CAACK,MAAM,CAAC8D,CAAC;MACjF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,sBAAqB7D,QAAiB,EAAED,MAAe,EAAkD;MAAA;MAAA,IAAhDK,KAAK,uEAAG,CAAC;MAAA,IAAE0D,OAAmC;MACrG,IAAMC,cAAc,GAAG,IAAI,CAACtE,MAAM,CAACO,QAAQ,CAACsB,KAAK,EAAE;MACnD,IAAM0C,4BAA4B,GAAG,IAAIzE,OAAO,EAAE;MAElD,IAAI,CAAAuE,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEjB,QAAQ,MAAK,CAAC,EAAE;QAC3B,IAAI,CAACpD,MAAM,CAACO,QAAQ,CAACiE,IAAI,CAACjE,QAAQ,CAAC;QACnC,IAAI,CAACN,QAAQ,CAACK,MAAM,CAACkE,IAAI,CAAClE,MAAM,CAAC;QAEjC,CAAA+D,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEd,UAAU,KAAIc,OAAO,CAACd,UAAU,EAAE;QAC3C;MACF;MAEA,IAAI1D,KAAK,CAAC4E,KAAK,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAErE,MAAM,EAAE,IAAI,CAACJ,QAAQ,CAACK,MAAM,CAACuB,KAAK,EAAE;QAAE8C,CAAC,EAAE;MAAE,CAAC,CAAC,CAACC,EAAE,CAAC;QAAEF,CAAC,EAAE,CAAC;QAAErE,MAAM,EAAEC,MAAM;QAAEqE,CAAC,EAAG,CAAC,IAAI,CAAC3E,MAAM,CAAC6E,QAAQ,CAACX,CAAC,IAAIvD,KAAK,GAAGf,SAAS,CAAC8C,QAAQ,CAAC,CAAC/B,KAAK,CAAC,GAAG,CAAC;MAAG,CAAC,EAAE,CAAA0D,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEjB,QAAQ,KAAI,IAAI,CAAC,CACnM0B,OAAO,CAAC,YAAM;QACb,CAAAT,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAES,OAAO,KAAIT,OAAO,CAACS,OAAO,EAAE;QACrC,MAAI,CAAC7E,QAAQ,CAAC8E,OAAO,GAAG,KAAK;QAC7B,MAAI,CAAC3E,kBAAkB,GAAG,IAAI;MAChC,CAAC,CAAC,CACD4E,MAAM,CAACnF,KAAK,CAACoF,MAAM,CAACC,SAAS,CAACC,KAAK,CAAC,CACpC7B,QAAQ,CAAC,iBAAsB;QAAA,IAAnBoB,CAAC,SAADA,CAAC;UAAErE,MAAM,SAANA,MAAM;UAAEsE,CAAC,SAADA,CAAC;QACvB,MAAI,CAAC1E,QAAQ,CAACK,MAAM,CAACkE,IAAI,CAACnE,MAAM,CAAC;QAEjC,IAAIM,KAAK;UACT;UACE,MAAI,CAACX,MAAM,CAACoF,cAAc,CAAClB,CAAC,GAAGS,CAAC;QAElC,IAAMU,eAAe,GAAGd,4BAA4B,CAACe,WAAW,CAAChB,cAAc,EAAE/D,QAAQ,EAAEmE,CAAC,CAAC;QAC7F,MAAI,CAAC1E,MAAM,CAACO,QAAQ,CAACiE,IAAI,CAACa,eAAe,CAAC;QAC1C,CAAAhB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEf,QAAQ,KAAIe,OAAO,CAACf,QAAQ,CAAC;UAAE/C,QAAQ,EAAE8E,eAAe;UAAEhF,MAAM,EAANA;QAAO,CAAC,CAAC;MAC9E,CAAC,CAAC,CACDkF,UAAU,CAAC,YAAM;QAChB,CAAAlB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEd,UAAU,KAAIc,OAAO,CAACd,UAAU,EAAE;QAC3C,MAAI,CAACtD,QAAQ,CAAC8E,OAAO,GAAG,IAAI;QAE5BS,UAAU,CAAC,YAAM;UACf,MAAI,CAACpF,kBAAkB,GAAG,KAAK;QACjC,CAAC,CAAC;MACJ,CAAC,CAAC,CACDqF,KAAK,EAAE;IACZ;EAAC;EAAA;AAAA;AAGH,eAAe1F,MAAM"}
|
|
@@ -81,9 +81,12 @@ var createSkySystem = function createSkySystem(date, latitude, longitude) {
|
|
|
81
81
|
uniforms = _initsSkySystem2[2];
|
|
82
82
|
var sunLight = initSunLight();
|
|
83
83
|
var skyGroup = new Group();
|
|
84
|
-
|
|
84
|
+
|
|
85
|
+
// TODO: 工厂案例临时释
|
|
86
|
+
// scene!.add(sky)
|
|
85
87
|
skyGroup.add(sunLight);
|
|
86
|
-
scene
|
|
88
|
+
// scene!.add(skyGroup)
|
|
89
|
+
|
|
87
90
|
var move = function move(altitude, azimuth) {
|
|
88
91
|
position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth);
|
|
89
92
|
uniforms.sunPosition.value.copy(position);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","bias","mapSize","set","cam","camera","near","far","left","right","top","bottom","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: 0.1,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 10))\n sunLight.castShadow = true\n\n sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 2), getLastValue(opts.mapSize?.[1], 1024 * 2))\n\n const cam = sunLight.shadow.camera\n cam.near = getLastValue(opts.near, 1)\n cam.far = getLastValue(opts.far, 10000)\n cam.left = getLastValue(opts.left, -1000)\n cam.right = getLastValue(opts.right, 1000)\n cam.top = getLastValue(opts.top, 1000)\n cam.bottom = getLastValue(opts.bottom, -1000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n sunRadius = 300\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n scene!.add(sky)\n skyGroup.add(sunLight)\n scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","bias","mapSize","set","cam","camera","near","far","left","right","top","bottom","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: 0.1,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 10))\n sunLight.castShadow = true\n\n sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 2), getLastValue(opts.mapSize?.[1], 1024 * 2))\n\n const cam = sunLight.shadow.camera\n cam.near = getLastValue(opts.near, 1)\n cam.far = getLastValue(opts.far, 10000)\n cam.left = getLastValue(opts.left, -1000)\n cam.right = getLastValue(opts.right, 1000)\n cam.top = getLastValue(opts.top, 1000)\n cam.bottom = getLastValue(opts.bottom, -1000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n sunRadius = 300\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n // TODO: 工厂案例临时释\n // scene!.add(sky)\n skyGroup.add(sunLight)\n // scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { SceneControl } from '@anov/3d-core';
|
|
2
|
-
import { mouseDraweLine } from './core/mouseDrawe';
|
|
3
2
|
import { createSnow } from './environment/snow';
|
|
4
3
|
import { createRain } from './environment/rain';
|
|
5
|
-
import createCloud from './environment/cloud';
|
|
6
4
|
import { initPostEffects } from './postEffects';
|
|
7
5
|
import createHighSelectedTool from './postEffects/outlinePass';
|
|
8
6
|
import { createSun } from './environment/sun';
|
|
@@ -18,7 +16,8 @@ import HeatMap from './heatmap/index';
|
|
|
18
16
|
import SkyBox from './environment/skyBox';
|
|
19
17
|
import Camera from './camera/index';
|
|
20
18
|
import { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve';
|
|
19
|
+
import Fog2DMesh from './weather/fog2DMesh';
|
|
21
20
|
export * from './scene';
|
|
22
21
|
export { SceneControl, // todo remove
|
|
23
|
-
|
|
24
|
-
createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, };
|
|
22
|
+
createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, EPoiType, HeatMap, initPostEffects, // effect
|
|
23
|
+
createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh, };
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { SceneControl } from '@anov/3d-core';
|
|
2
|
-
import { mouseDraweLine } from "./core/mouseDrawe";
|
|
3
2
|
import { createSnow } from "./environment/snow";
|
|
4
3
|
import { createRain } from "./environment/rain";
|
|
5
|
-
import createCloud from "./environment/cloud";
|
|
6
4
|
import { initPostEffects } from "./postEffects";
|
|
7
5
|
import createHighSelectedTool from "./postEffects/outlinePass";
|
|
8
6
|
import { createSun } from "./environment/sun";
|
|
@@ -18,10 +16,11 @@ import HeatMap from "./heatmap/index";
|
|
|
18
16
|
import SkyBox from "./environment/skyBox";
|
|
19
17
|
import Camera from "./camera/index";
|
|
20
18
|
import { RoundLineGeometry, createRoundLineWallMesh } from "./line/round-curve";
|
|
19
|
+
import Fog2DMesh from "./weather/fog2DMesh";
|
|
21
20
|
export * from "./scene";
|
|
22
21
|
export { SceneControl,
|
|
23
22
|
// todo remove
|
|
24
|
-
|
|
23
|
+
createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, EPoiType, HeatMap, initPostEffects,
|
|
25
24
|
// effect
|
|
26
|
-
createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh };
|
|
25
|
+
createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh };
|
|
27
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SceneControl","
|
|
1
|
+
{"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Poi","EPoiType","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport Poi, { EPoiType } from './poi'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/fog2DMesh'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n Poi, EPoiType,\n HeatMap,\n initPostEffects, // effect\n createHighSelectedTool,\n GridMaterial,\n SkyBox,\n ViewHelper,\n Camera,\n RoundLineGeometry,\n createRoundLineWallMesh,\n Fog2DMesh,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,OAAOC,GAAG,IAAIC,QAAQ;AACtB,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AACnD,OAAOC,SAAS;AAEhB;AAEA,SACEpB,YAAY;AAAE;AACdE,UAAU,EACVD,UAAU,EACVI,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,GAAG,EAAEC,QAAQ,EACbC,OAAO,EACPZ,eAAe;AAAE;AACjBC,sBAAsB,EACtBE,YAAY,EACZU,MAAM,EACNT,UAAU,EACVU,MAAM,EACNC,iBAAiB,EACjBC,uBAAuB,EACvBC,SAAS"}
|
package/dist/poi/core/Sprite.js
CHANGED
|
@@ -7,6 +7,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
7
7
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
8
8
|
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); } }
|
|
9
9
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
10
|
+
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
|
11
|
+
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
|
10
12
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
11
13
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
12
14
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
@@ -127,6 +129,15 @@ var AnovSprite = /*#__PURE__*/function (_Sprite) {
|
|
|
127
129
|
hasExecuted = true;
|
|
128
130
|
};
|
|
129
131
|
}
|
|
132
|
+
}, {
|
|
133
|
+
key: "addEventListener",
|
|
134
|
+
value: function addEventListener(type, cb) {
|
|
135
|
+
var _this4 = this;
|
|
136
|
+
_get(_getPrototypeOf(AnovSprite.prototype), "addEventListener", this).call(this, type, cb);
|
|
137
|
+
return function () {
|
|
138
|
+
return _get(_getPrototypeOf(AnovSprite.prototype), "removeEventListener", _this4).call(_this4, type, cb);
|
|
139
|
+
};
|
|
140
|
+
}
|
|
130
141
|
}]);
|
|
131
142
|
return AnovSprite;
|
|
132
143
|
}(Sprite);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Sprite","SpriteMaterial","Texture","Vector2","gsap","getCanvas","EAnimationType","POI_IMG","DafultOption","width","height","img","scale","animation","type","appear","duration","AnovSprite","data","option","map","poiType","create","center","setX","setZ","visible","setMaterial","canvas","isFadeOrAppearAnimation","fadeIn","opacity","texture","needsUpdate","material","setAttribute","hasExecuted","onAfterRender","setTimeout","to","repeat","ease","grow","y"],"sources":["../../../src/poi/core/Sprite.ts"],"sourcesContent":["import { Sprite, SpriteMaterial, Texture, Vector2 } from '@anov/3d-core'\nimport gsap from 'gsap'\nimport { getCanvas } from '../utils/canvas'\nimport { EAnimationType } from '../utils/type'\nimport type { EPoiType, IOption } from '../utils/type'\nimport { POI_IMG } from '../utils/base64'\n\nconst DafultOption = {\n width: 200,\n height: 260,\n img: POI_IMG,\n scale: 60,\n animation: {\n type: EAnimationType.appear,\n duration: 0.3,\n },\n}\n\nclass AnovSprite extends Sprite {\n poiType: EPoiType\n data!: any\n option!: IOption\n constructor(type: EPoiType, data: string, option: IOption) {\n super(new SpriteMaterial({ map: null }))\n this.poiType = type\n this.data = data\n this.option = { ...DafultOption, ...option }\n this.create()\n }\n\n private create() {\n const { scale = 1, animation } = this.option\n // 精灵的锚点\n this.center = new Vector2(0.5, 0)\n this.scale.setX(scale)\n this.scale.setZ(scale)\n this.visible = false\n // 异步生成材质\n const setMaterial = async () => {\n const canvas = await getCanvas(this.data, this.option)\n // 判断条件\n const isFadeOrAppearAnimation = animation?.type === EAnimationType.fadeIn || animation?.type === EAnimationType.appear\n // 根据条件设置 opacity 的值\n const opacity = isFadeOrAppearAnimation ? 0 : 1\n // 生成精灵模型\n const texture = new Texture(canvas)\n texture.needsUpdate = true\n this.material = new SpriteMaterial({ map: texture, opacity })\n this.visible = true\n }\n setMaterial()\n this.setAttribute()\n }\n\n private setAttribute() {\n let hasExecuted = false\n // 执行渐显、打印内容等操作\n this.onAfterRender = () => {\n if (hasExecuted)\n return\n setTimeout(() => {\n const { animation } = this.option\n if (animation?.type === EAnimationType.fadeIn || animation?.type === EAnimationType.appear) {\n gsap.to(this.material, {\n opacity: 1,\n ...animation,\n repeat: 0,\n ease: 'none',\n })\n }\n if (animation?.type === EAnimationType.grow || animation?.type === EAnimationType.appear) {\n gsap.to(this.scale, {\n y: this.option.scale,\n ...animation,\n repeat: 0,\n ease: 'power2.out',\n })\n }\n })\n hasExecuted = true\n }\n }\n}\n\nexport default AnovSprite"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["Sprite","SpriteMaterial","Texture","Vector2","gsap","getCanvas","EAnimationType","POI_IMG","DafultOption","width","height","img","scale","animation","type","appear","duration","AnovSprite","data","option","map","poiType","create","center","setX","setZ","visible","setMaterial","canvas","isFadeOrAppearAnimation","fadeIn","opacity","texture","needsUpdate","material","setAttribute","hasExecuted","onAfterRender","setTimeout","to","repeat","ease","grow","y","cb"],"sources":["../../../src/poi/core/Sprite.ts"],"sourcesContent":["import { Sprite, SpriteMaterial, Texture, Vector2 } from '@anov/3d-core'\nimport gsap from 'gsap'\nimport { getCanvas } from '../utils/canvas'\nimport { EAnimationType } from '../utils/type'\nimport type { EPoiType, IOption } from '../utils/type'\nimport { POI_IMG } from '../utils/base64'\n\nconst DafultOption = {\n width: 200,\n height: 260,\n img: POI_IMG,\n scale: 60,\n animation: {\n type: EAnimationType.appear,\n duration: 0.3,\n },\n}\n\nclass AnovSprite extends Sprite {\n poiType: EPoiType\n data!: any\n option!: IOption\n constructor(type: EPoiType, data: string, option: IOption) {\n super(new SpriteMaterial({ map: null }))\n this.poiType = type\n this.data = data\n this.option = { ...DafultOption, ...option }\n this.create()\n }\n\n private create() {\n const { scale = 1, animation } = this.option\n // 精灵的锚点\n this.center = new Vector2(0.5, 0)\n this.scale.setX(scale)\n this.scale.setZ(scale)\n this.visible = false\n // 异步生成材质\n const setMaterial = async () => {\n const canvas = await getCanvas(this.data, this.option)\n // 判断条件\n const isFadeOrAppearAnimation = animation?.type === EAnimationType.fadeIn || animation?.type === EAnimationType.appear\n // 根据条件设置 opacity 的值\n const opacity = isFadeOrAppearAnimation ? 0 : 1\n // 生成精灵模型\n const texture = new Texture(canvas)\n texture.needsUpdate = true\n this.material = new SpriteMaterial({ map: texture, opacity })\n this.visible = true\n }\n setMaterial()\n this.setAttribute()\n }\n\n private setAttribute() {\n let hasExecuted = false\n // 执行渐显、打印内容等操作\n this.onAfterRender = () => {\n if (hasExecuted)\n return\n setTimeout(() => {\n const { animation } = this.option\n if (animation?.type === EAnimationType.fadeIn || animation?.type === EAnimationType.appear) {\n gsap.to(this.material, {\n opacity: 1,\n ...animation,\n repeat: 0,\n ease: 'none',\n })\n }\n if (animation?.type === EAnimationType.grow || animation?.type === EAnimationType.appear) {\n gsap.to(this.scale, {\n y: this.option.scale,\n ...animation,\n repeat: 0,\n ease: 'power2.out',\n })\n }\n })\n hasExecuted = true\n }\n }\n\n public addEventListener(type: string, cb: any) {\n super.addEventListener(type, cb)\n return () => super.removeEventListener(type, cb)\n }\n}\n\nexport default AnovSprite"],"mappings":"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"}
|
package/dist/poi/utils/css.d.ts
CHANGED
|
@@ -13,13 +13,13 @@ export declare const getBasePoiStyle: () => {
|
|
|
13
13
|
export declare const getPanelStyle: () => {
|
|
14
14
|
container: {
|
|
15
15
|
width: string;
|
|
16
|
-
height: string;
|
|
17
|
-
backgroundImage: string;
|
|
18
|
-
backgroundSize: string;
|
|
19
|
-
backgroundRepeat: string;
|
|
16
|
+
'min-height': string;
|
|
20
17
|
color: string;
|
|
21
18
|
pointerEvents: string;
|
|
22
19
|
cursor: string;
|
|
20
|
+
'border-image-source': string;
|
|
21
|
+
'border-image-slice': string;
|
|
22
|
+
'border-image-width': string;
|
|
23
23
|
};
|
|
24
24
|
title: {
|
|
25
25
|
boxSizing: string;
|
package/dist/poi/utils/css.js
CHANGED
|
@@ -16,14 +16,18 @@ export var getBasePoiStyle = function getBasePoiStyle() {
|
|
|
16
16
|
export var getPanelStyle = function getPanelStyle() {
|
|
17
17
|
return {
|
|
18
18
|
container: {
|
|
19
|
-
width: '
|
|
20
|
-
height: '
|
|
21
|
-
backgroundImage:
|
|
22
|
-
backgroundSize: '100% 100%',
|
|
23
|
-
backgroundRepeat: 'no-repeat',
|
|
24
|
-
color: '#fff',
|
|
25
|
-
pointerEvents: 'auto',
|
|
26
|
-
cursor: 'pointer'
|
|
19
|
+
'width': '520px',
|
|
20
|
+
'min-height': '220px',
|
|
21
|
+
// 'backgroundImage': `url(${PANEL_IMG})`,
|
|
22
|
+
// 'backgroundSize': '100% 100%',
|
|
23
|
+
// 'backgroundRepeat': 'no-repeat',
|
|
24
|
+
'color': '#fff',
|
|
25
|
+
'pointerEvents': 'auto',
|
|
26
|
+
'cursor': 'pointer',
|
|
27
|
+
'border-image-source': "url(".concat(PANEL_IMG, ")"),
|
|
28
|
+
'border-image-slice': '100 38 10 fill',
|
|
29
|
+
/* 九宫格裁剪,填充方式为拉伸 */
|
|
30
|
+
'border-image-width': '100px 38px 10px'
|
|
27
31
|
},
|
|
28
32
|
title: {
|
|
29
33
|
boxSizing: 'border-box',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PANEL_IMG","PERSON_IMG","getBasePoiStyle","backgroundImage","minWidth","backgroundSize","backgroundRepeat","fontSize","color","fontWeight","boxSizing","padding","pointerEvents","getPanelStyle","container","
|
|
1
|
+
{"version":3,"names":["PANEL_IMG","PERSON_IMG","getBasePoiStyle","backgroundImage","minWidth","backgroundSize","backgroundRepeat","fontSize","color","fontWeight","boxSizing","padding","pointerEvents","getPanelStyle","container","title","content","lineHeight"],"sources":["../../../src/poi/utils/css.ts"],"sourcesContent":["import { PANEL_IMG, PERSON_IMG } from './base64'\n\nexport const getBasePoiStyle = () => {\n return {\n backgroundImage: `url(${PERSON_IMG})`,\n minWidth: '110px',\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n fontSize: '18px',\n color: '#fff',\n fontWeight: 'bold',\n boxSizing: 'border-box',\n padding: '2px 20px 10px 45px',\n pointerEvents: 'auto',\n }\n}\n\nexport const getPanelStyle = () => {\n return {\n container: {\n 'width': '520px',\n 'min-height': '220px',\n // 'backgroundImage': `url(${PANEL_IMG})`,\n // 'backgroundSize': '100% 100%',\n // 'backgroundRepeat': 'no-repeat',\n 'color': '#fff',\n 'pointerEvents': 'auto',\n 'cursor': 'pointer',\n 'border-image-source': `url(${PANEL_IMG})`,\n 'border-image-slice': '100 38 10 fill', /* 九宫格裁剪,填充方式为拉伸 */\n 'border-image-width': '100px 38px 10px',\n },\n title: {\n boxSizing: 'border-box',\n padding: '8px 15px 0 35px',\n fontSize: '26px',\n fontWeight: 'bold',\n },\n content: {\n padding: '26px 24px 10px 35px',\n fontSize: '16px',\n lineHeight: '30px',\n },\n }\n}"],"mappings":"AAAA,SAASA,SAAS,EAAEC,UAAU;AAE9B,OAAO,IAAMC,eAAe,GAAG,SAAlBA,eAAe,GAAS;EACnC,OAAO;IACLC,eAAe,gBAASF,UAAU,MAAG;IACrCG,QAAQ,EAAE,OAAO;IACjBC,cAAc,EAAE,WAAW;IAC3BC,gBAAgB,EAAE,WAAW;IAC7BC,QAAQ,EAAE,MAAM;IAChBC,KAAK,EAAE,MAAM;IACbC,UAAU,EAAE,MAAM;IAClBC,SAAS,EAAE,YAAY;IACvBC,OAAO,EAAE,oBAAoB;IAC7BC,aAAa,EAAE;EACjB,CAAC;AACH,CAAC;AAED,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAa,GAAS;EACjC,OAAO;IACLC,SAAS,EAAE;MACT,OAAO,EAAE,OAAO;MAChB,YAAY,EAAE,OAAO;MACrB;MACA;MACA;MACA,OAAO,EAAE,MAAM;MACf,eAAe,EAAE,MAAM;MACvB,QAAQ,EAAE,SAAS;MACnB,qBAAqB,gBAASd,SAAS,MAAG;MAC1C,oBAAoB,EAAE,gBAAgB;MAAE;MACxC,oBAAoB,EAAE;IACxB,CAAC;IACDe,KAAK,EAAE;MACLL,SAAS,EAAE,YAAY;MACvBC,OAAO,EAAE,iBAAiB;MAC1BJ,QAAQ,EAAE,MAAM;MAChBE,UAAU,EAAE;IACd,CAAC;IACDO,OAAO,EAAE;MACPL,OAAO,EAAE,qBAAqB;MAC9BJ,QAAQ,EAAE,MAAM;MAChBU,UAAU,EAAE;IACd;EACF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Mesh } from '@anov/3d-core';
|
|
2
|
+
interface Fog2DMeshOptions {
|
|
3
|
+
color?: [number, number, number];
|
|
4
|
+
alpha?: number;
|
|
5
|
+
speed?: number;
|
|
6
|
+
}
|
|
7
|
+
declare class Fog2DMesh extends Mesh {
|
|
8
|
+
private speed;
|
|
9
|
+
constructor(ops?: Fog2DMeshOptions);
|
|
10
|
+
setColor(color: [number, number, number]): void;
|
|
11
|
+
setAlpha(alpha: number): void;
|
|
12
|
+
setSpeed(speed: number): void;
|
|
13
|
+
}
|
|
14
|
+
export default Fog2DMesh;
|
|
@@ -0,0 +1,77 @@
|
|
|
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 _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
6
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
7
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
8
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
9
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
10
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
11
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
12
|
+
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; }
|
|
13
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
14
|
+
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); }
|
|
15
|
+
import { Mesh, PlaneGeometry, ShaderMaterial, use } from '@anov/3d-core';
|
|
16
|
+
import { frag as fragmentShader, vert as vertexShader } from "./glsl/fog";
|
|
17
|
+
var fog2dShaderPass = {
|
|
18
|
+
uniforms: {
|
|
19
|
+
iTime: {
|
|
20
|
+
value: 0
|
|
21
|
+
},
|
|
22
|
+
fogcolor: {
|
|
23
|
+
value: [0.9, 0.9, 0.9]
|
|
24
|
+
},
|
|
25
|
+
alpha: {
|
|
26
|
+
value: 0.5
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
vertexShader: vertexShader,
|
|
30
|
+
fragmentShader: fragmentShader
|
|
31
|
+
};
|
|
32
|
+
var Fog2DMesh = /*#__PURE__*/function (_Mesh) {
|
|
33
|
+
_inherits(Fog2DMesh, _Mesh);
|
|
34
|
+
var _super = _createSuper(Fog2DMesh);
|
|
35
|
+
function Fog2DMesh(ops) {
|
|
36
|
+
var _this;
|
|
37
|
+
_classCallCheck(this, Fog2DMesh);
|
|
38
|
+
_this = _super.call(this);
|
|
39
|
+
_defineProperty(_assertThisInitialized(_this), "speed", 0.01);
|
|
40
|
+
_this.geometry = new PlaneGeometry(10, 10);
|
|
41
|
+
fog2dShaderPass.uniforms.fogcolor.value = (ops === null || ops === void 0 ? void 0 : ops.color) || [0.9, 0.9, 0.9];
|
|
42
|
+
fog2dShaderPass.uniforms.alpha.value = (ops === null || ops === void 0 ? void 0 : ops.alpha) || 0.5;
|
|
43
|
+
_this.speed = (ops === null || ops === void 0 ? void 0 : ops.speed) || 0.01;
|
|
44
|
+
_this.material = new ShaderMaterial({
|
|
45
|
+
uniforms: fog2dShaderPass.uniforms,
|
|
46
|
+
vertexShader: fog2dShaderPass.vertexShader,
|
|
47
|
+
fragmentShader: fog2dShaderPass.fragmentShader,
|
|
48
|
+
side: 2,
|
|
49
|
+
transparent: true,
|
|
50
|
+
depthWrite: false
|
|
51
|
+
});
|
|
52
|
+
_this.renderOrder = 1;
|
|
53
|
+
use.useframe(function () {
|
|
54
|
+
fog2dShaderPass.uniforms.iTime.value += _this.speed;
|
|
55
|
+
});
|
|
56
|
+
return _this;
|
|
57
|
+
}
|
|
58
|
+
_createClass(Fog2DMesh, [{
|
|
59
|
+
key: "setColor",
|
|
60
|
+
value: function setColor(color) {
|
|
61
|
+
fog2dShaderPass.uniforms.fogcolor.value = color;
|
|
62
|
+
}
|
|
63
|
+
}, {
|
|
64
|
+
key: "setAlpha",
|
|
65
|
+
value: function setAlpha(alpha) {
|
|
66
|
+
fog2dShaderPass.uniforms.alpha.value = alpha;
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
key: "setSpeed",
|
|
70
|
+
value: function setSpeed(speed) {
|
|
71
|
+
this.speed = speed;
|
|
72
|
+
}
|
|
73
|
+
}]);
|
|
74
|
+
return Fog2DMesh;
|
|
75
|
+
}(Mesh);
|
|
76
|
+
export default Fog2DMesh;
|
|
77
|
+
//# sourceMappingURL=fog2DMesh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Mesh","PlaneGeometry","ShaderMaterial","use","frag","fragmentShader","vert","vertexShader","fog2dShaderPass","uniforms","iTime","value","fogcolor","alpha","Fog2DMesh","ops","geometry","color","speed","material","side","transparent","depthWrite","renderOrder","useframe"],"sources":["../../src/weather/fog2DMesh.ts"],"sourcesContent":["import { Mesh, PlaneGeometry, ShaderMaterial, use } from '@anov/3d-core'\nimport { frag as fragmentShader, vert as vertexShader } from './glsl/fog'\n\nconst fog2dShaderPass = {\n uniforms: {\n iTime: { value: 0 },\n fogcolor: { value: [0.9, 0.9, 0.9] },\n alpha: { value: 0.5 },\n },\n\n vertexShader,\n fragmentShader,\n}\n\ninterface Fog2DMeshOptions {\n color?: [number, number, number]\n alpha?: number\n speed?: number\n}\n\nclass Fog2DMesh extends Mesh {\n private speed = 0.01\n\n constructor(ops?: Fog2DMeshOptions) {\n super()\n this.geometry = new PlaneGeometry(10, 10)\n\n fog2dShaderPass.uniforms.fogcolor.value = ops?.color || [0.9, 0.9, 0.9]\n fog2dShaderPass.uniforms.alpha.value = ops?.alpha || 0.5\n this.speed = ops?.speed || 0.01\n\n this.material = new ShaderMaterial({\n uniforms: fog2dShaderPass.uniforms,\n vertexShader: fog2dShaderPass.vertexShader,\n fragmentShader: fog2dShaderPass.fragmentShader,\n side: 2,\n transparent: true,\n depthWrite: false,\n })\n this.renderOrder = 1\n\n use.useframe(() => {\n fog2dShaderPass.uniforms.iTime.value += this.speed\n })\n }\n\n setColor(color: [number, number, number]) {\n fog2dShaderPass.uniforms.fogcolor.value = color\n }\n\n setAlpha(alpha: number) {\n fog2dShaderPass.uniforms.alpha.value = alpha\n }\n\n setSpeed(speed: number) {\n this.speed = speed\n }\n}\n\nexport default Fog2DMesh"],"mappings":";;;;;;;;;;;;;;AAAA,SAASA,IAAI,EAAEC,aAAa,EAAEC,cAAc,EAAEC,GAAG,QAAQ,eAAe;AACxE,SAASC,IAAI,IAAIC,cAAc,EAAEC,IAAI,IAAIC,YAAY;AAErD,IAAMC,eAAe,GAAG;EACtBC,QAAQ,EAAE;IACRC,KAAK,EAAE;MAAEC,KAAK,EAAE;IAAE,CAAC;IACnBC,QAAQ,EAAE;MAAED,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC;IACpCE,KAAK,EAAE;MAAEF,KAAK,EAAE;IAAI;EACtB,CAAC;EAEDJ,YAAY,EAAZA,YAAY;EACZF,cAAc,EAAdA;AACF,CAAC;AAAA,IAQKS,SAAS;EAAA;EAAA;EAGb,mBAAYC,GAAsB,EAAE;IAAA;IAAA;IAClC;IAAO,wDAHO,IAAI;IAIlB,MAAKC,QAAQ,GAAG,IAAIf,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC;IAEzCO,eAAe,CAACC,QAAQ,CAACG,QAAQ,CAACD,KAAK,GAAG,CAAAI,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEE,KAAK,KAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACvET,eAAe,CAACC,QAAQ,CAACI,KAAK,CAACF,KAAK,GAAG,CAAAI,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEF,KAAK,KAAI,GAAG;IACxD,MAAKK,KAAK,GAAG,CAAAH,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEG,KAAK,KAAI,IAAI;IAE/B,MAAKC,QAAQ,GAAG,IAAIjB,cAAc,CAAC;MACjCO,QAAQ,EAAED,eAAe,CAACC,QAAQ;MAClCF,YAAY,EAAEC,eAAe,CAACD,YAAY;MAC1CF,cAAc,EAAEG,eAAe,CAACH,cAAc;MAC9Ce,IAAI,EAAE,CAAC;MACPC,WAAW,EAAE,IAAI;MACjBC,UAAU,EAAE;IACd,CAAC,CAAC;IACF,MAAKC,WAAW,GAAG,CAAC;IAEpBpB,GAAG,CAACqB,QAAQ,CAAC,YAAM;MACjBhB,eAAe,CAACC,QAAQ,CAACC,KAAK,CAACC,KAAK,IAAI,MAAKO,KAAK;IACpD,CAAC,CAAC;IAAA;EACJ;EAAC;IAAA;IAAA,OAED,kBAASD,KAA+B,EAAE;MACxCT,eAAe,CAACC,QAAQ,CAACG,QAAQ,CAACD,KAAK,GAAGM,KAAK;IACjD;EAAC;IAAA;IAAA,OAED,kBAASJ,KAAa,EAAE;MACtBL,eAAe,CAACC,QAAQ,CAACI,KAAK,CAACF,KAAK,GAAGE,KAAK;IAC9C;EAAC;IAAA;IAAA,OAED,kBAASK,KAAa,EAAE;MACtB,IAAI,CAACA,KAAK,GAAGA,KAAK;IACpB;EAAC;EAAA;AAAA,EApCqBlB,IAAI;AAuC5B,eAAec,SAAS"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const vert = "\nvarying highp vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position, 1.0);\n}\n\n";
|
|
2
|
+
export declare const frag = "\nuniform vec3 fogcolor;\nuniform float iTime;\nuniform float alpha;\n\nvarying highp vec2 vUv;\n\nfloat random(vec2 _st) {\n return fract(sin(dot(_st.xy, vec2(0.630, 0.710))) *\n 43759.329);\n}\n\n//\u67CF\u6797\u566A\u58F0\nfloat noise(vec2 _st) {\n vec2 i = floor(_st);\n vec2 f = fract(_st);\n\n float a = random(i);\n float b = random(i + vec2(1.0, 0.0));\n float c = random(i + vec2(0.0, 1.0));\n float d = random(i + vec2(1.0, 1.0));\n\n vec2 u = f * f * (3.0 - 2.0 * f);\n\n return mix(a, b, u.x) +\n (c - a) * u.y * (1.0 - u.x) +\n (d - b) * u.x * u.y;\n}\n\n#define NUM_OCTAVES 6\n\n//\u5E03\u6717\u5206\u5F62\nfloat fbm(vec2 _st) {\n float v = 0.0;\n float a = 0.5;\n vec2 shift = vec2(100.0, 100.0);\n mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.50));\n\n for(int i = 0; i < NUM_OCTAVES; ++i) {\n v += a * noise(_st);\n //_st = mul(_st, rot) * 2.0 + shift;\n _st = _st * rot * 2.0 + shift;\n a *= 0.5;\n }\n return v;\n}\n\nvec3 FilterColor(vec3 color1, vec3 color2) {\n //\u6EE4\u8272\n return 1.0 - (1.0 - color1) * (1.0 - color2);\n}\n\n// -----------------------------------------------\u95EA\u7535\n\nvoid mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec3 backcolor = vec3(0.);\n\n uv.y = 1.0 - uv.y;\n\n vec2 st = uv * 10.0;\n\n st.x += iTime * 0.1;\n st.y -= iTime * 0.2;\n\n vec3 color;\n vec2 q;\n\n q.x = fbm(st + 0.00 * iTime * 5.0);\n q.y = fbm(st + vec2(1.0, 1.0));\n\n vec2 r;\n r.x = fbm(st + 1.0 * q + vec2(1.7, 9.2) + 0.15 * iTime * 5.0);\n r.y = fbm(st + 1.0 * q + vec2(8.3, 2.8) + 0.126 * iTime * 5.0);\n\n float f = fbm(st + r);\n\n color = mix(vec3(1.0, 1.0, 1.0), vec3(1.0, 1.0, 1.0), clamp((f * f) * 4.0, 0.0, 1.0));\n color = mix(color, vec3(1.0, 1.0, 1.0), clamp(length(q), 0.0, 1.0));\n color = mix(color, vec3(1.0, 1.0, 1.0), clamp(length(r.x), 0.0, 1.0));\n vec3 cloud = vec3((f * f * f + 0.3 * f * f + 0.5 * f) * color);\n\n fragColor = vec4(FilterColor(cloud * fogcolor, backcolor), alpha);\n\n}\n\nvoid main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n}\n";
|