@anov/3d-ability 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/camera/index.js +31 -31
  2. package/dist/camera/index.js.map +1 -1
  3. package/dist/environment/sky/index.d.ts +15 -5
  4. package/dist/environment/sky/index.js +26 -20
  5. package/dist/environment/sky/index.js.map +1 -1
  6. package/dist/environment/skyv2/config.d.ts +32 -0
  7. package/dist/environment/skyv2/config.js +50 -0
  8. package/dist/environment/skyv2/config.js.map +1 -0
  9. package/dist/environment/skyv2/index.d.ts +14 -0
  10. package/dist/environment/skyv2/index.js +140 -0
  11. package/dist/environment/skyv2/index.js.map +1 -0
  12. package/dist/environment/skyv2/shader/cloud/frag.d.ts +2 -0
  13. package/dist/environment/skyv2/shader/cloud/frag.js +3 -0
  14. package/dist/environment/skyv2/shader/cloud/frag.js.map +1 -0
  15. package/dist/environment/skyv2/shader/cloud/vert.d.ts +2 -0
  16. package/dist/environment/skyv2/shader/cloud/vert.js +3 -0
  17. package/dist/environment/skyv2/shader/cloud/vert.js.map +1 -0
  18. package/dist/environment/skyv2/shader/sky/frag.d.ts +2 -0
  19. package/dist/environment/skyv2/shader/sky/frag.js +3 -0
  20. package/dist/environment/skyv2/shader/sky/frag.js.map +1 -0
  21. package/dist/environment/skyv2/type.d.ts +14 -0
  22. package/dist/environment/skyv2/type.js +26 -0
  23. package/dist/environment/skyv2/type.js.map +1 -0
  24. package/dist/index.d.ts +6 -3
  25. package/dist/index.js +6 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/material/fakeGlowMaterial/index.d.ts +17 -0
  28. package/dist/material/fakeGlowMaterial/index.js +57 -0
  29. package/dist/material/fakeGlowMaterial/index.js.map +1 -0
  30. package/dist/material/fakeGlowMaterial/shader/fragmentShader.d.ts +2 -0
  31. package/dist/material/fakeGlowMaterial/shader/fragmentShader.js +3 -0
  32. package/dist/material/fakeGlowMaterial/shader/fragmentShader.js.map +1 -0
  33. package/dist/material/fakeGlowMaterial/shader/vertexShader.d.ts +2 -0
  34. package/dist/material/fakeGlowMaterial/shader/vertexShader.js +3 -0
  35. package/dist/material/fakeGlowMaterial/shader/vertexShader.js.map +1 -0
  36. package/dist/poi/Sprite/index.js +1 -1
  37. package/dist/poi/Sprite/index.js.map +1 -1
  38. package/dist/postEffects/bloomSelect.js +40 -6
  39. package/dist/postEffects/bloomSelect.js.map +1 -1
  40. package/dist/postEffects/outlinePass.js.map +1 -1
  41. package/dist/weather/index.d.ts +36 -0
  42. package/dist/weather/index.js +273 -5
  43. package/dist/weather/index.js.map +1 -1
  44. package/dist/weather/objects/CloudMesh.d.ts +22 -0
  45. package/dist/weather/objects/CloudMesh.js +122 -0
  46. package/dist/weather/objects/CloudMesh.js.map +1 -0
  47. package/dist/weather/{fog2DMesh.d.ts → objects/Fog2DMesh.d.ts} +6 -7
  48. package/dist/weather/objects/Fog2DMesh.js +94 -0
  49. package/dist/weather/objects/Fog2DMesh.js.map +1 -0
  50. package/dist/weather/objects/SkyMesh.d.ts +7 -0
  51. package/dist/weather/{fog2DMesh.js → objects/SkyMesh.js} +19 -55
  52. package/dist/weather/objects/SkyMesh.js.map +1 -0
  53. package/dist/weather/objects/SnowMesh.d.ts +17 -0
  54. package/dist/weather/objects/SnowMesh.js +163 -0
  55. package/dist/weather/objects/SnowMesh.js.map +1 -0
  56. package/dist/weather/shaders/cloud.d.ts +37 -0
  57. package/dist/weather/shaders/cloud.js +38 -0
  58. package/dist/weather/shaders/cloud.js.map +1 -0
  59. package/dist/weather/shaders/fog.d.ts +16 -0
  60. package/dist/weather/shaders/fog.js +17 -0
  61. package/dist/weather/shaders/fog.js.map +1 -0
  62. package/dist/weather/shaders/sky.d.ts +6 -0
  63. package/dist/weather/shaders/sky.js +7 -0
  64. package/dist/weather/shaders/sky.js.map +1 -0
  65. package/dist/weather/shaders/snow.d.ts +28 -0
  66. package/dist/weather/shaders/snow.js +33 -0
  67. package/dist/weather/shaders/snow.js.map +1 -0
  68. package/dist/weather/utils/constant.d.ts +38 -0
  69. package/dist/weather/utils/constant.js +25 -0
  70. package/dist/weather/utils/constant.js.map +1 -0
  71. package/dist/weather/utils/type.d.ts +11 -0
  72. package/dist/weather/utils/type.js +23 -0
  73. package/dist/weather/utils/type.js.map +1 -0
  74. package/package.json +3 -3
  75. package/dist/weather/fog2DMesh.js.map +0 -1
  76. package/dist/weather/glsl/fog.d.ts +0 -2
  77. package/dist/weather/glsl/fog.js +0 -3
  78. package/dist/weather/glsl/fog.js.map +0 -1
@@ -88,10 +88,10 @@ var Camera = /*#__PURE__*/function () {
88
88
  }, {
89
89
  key: "handleChanged",
90
90
  value: function handleChanged() {
91
- var _this = this;
92
- this.controls.addEventListener('change', function () {
93
- if (_this.isTransitionPeriod) _this.sceneControl.renderer.render(_this.sceneControl.scene, _this.sceneControl.camera);
94
- });
91
+ // this.controls.addEventListener('change', () => {
92
+ // // if (this.isTransitionPeriod)
93
+ // // this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)
94
+ // })
95
95
  }
96
96
 
97
97
  /**
@@ -101,7 +101,7 @@ var Camera = /*#__PURE__*/function () {
101
101
  }, {
102
102
  key: "focus",
103
103
  value: function focus(params) {
104
- var _this2 = this;
104
+ var _this = this;
105
105
  return new Promise(function (res) {
106
106
  var position = params.target,
107
107
  pitch = params.pitch,
@@ -115,14 +115,14 @@ var Camera = /*#__PURE__*/function () {
115
115
  var _params$isTrigger2;
116
116
  var position = _ref2.position,
117
117
  lookat = _ref2.lookat;
118
- _this2.isTrigger = (_params$isTrigger2 = params.isTrigger) !== null && _params$isTrigger2 !== void 0 ? _params$isTrigger2 : true;
118
+ _this.isTrigger = (_params$isTrigger2 = params.isTrigger) !== null && _params$isTrigger2 !== void 0 ? _params$isTrigger2 : true;
119
119
  },
120
120
  onComplate: function onComplate() {
121
121
  var _params$duration;
122
- _this2.isTrigger = false;
122
+ _this.isTrigger = false;
123
123
  res({
124
- position: _this2.camera.position.toArray(),
125
- target: _this2.controls.target.toArray(),
124
+ position: _this.camera.position.toArray(),
125
+ target: _this.controls.target.toArray(),
126
126
  duration: (_params$duration = params.duration) !== null && _params$duration !== void 0 ? _params$duration : 0,
127
127
  userInput: true,
128
128
  pitch: pitch !== null && pitch !== void 0 ? pitch : 40
@@ -132,15 +132,15 @@ var Camera = /*#__PURE__*/function () {
132
132
  };
133
133
  if (Array.isArray(position[0])) {
134
134
  var currentPos = position;
135
- var _this2$caclCurrentPos = _this2.caclCurrentPos(currentPos, 0),
136
- lastPosition = _this2$caclCurrentPos.lastPosition,
137
- lastLookat = _this2$caclCurrentPos.lastLookat;
138
- _this2.moveCameraTo(lastPosition, lastLookat, pitch, moveOptions());
135
+ var _this$caclCurrentPos = _this.caclCurrentPos(currentPos, 0),
136
+ lastPosition = _this$caclCurrentPos.lastPosition,
137
+ lastLookat = _this$caclCurrentPos.lastLookat;
138
+ _this.moveCameraTo(lastPosition, lastLookat, pitch, moveOptions());
139
139
  } else {
140
140
  var _currentPos = position;
141
- var _lastPosition = _this2.caclSingleCoordinate(_this2.controls.target, _this2.camera.position, new Vector3().fromArray(_currentPos));
142
- var _lastLookat = _this2.caclTargetByPitch(0, new Vector3().fromArray(_currentPos), _lastPosition);
143
- _this2.moveCameraTo(_lastPosition, _lastLookat, pitch, moveOptions());
141
+ var _lastPosition = _this.caclSingleCoordinate(_this.controls.target, _this.camera.position, new Vector3().fromArray(_currentPos));
142
+ var _lastLookat = _this.caclTargetByPitch(0, new Vector3().fromArray(_currentPos), _lastPosition);
143
+ _this.moveCameraTo(_lastPosition, _lastLookat, pitch, moveOptions());
144
144
  }
145
145
  });
146
146
  }
@@ -152,24 +152,24 @@ var Camera = /*#__PURE__*/function () {
152
152
  }, {
153
153
  key: "set",
154
154
  value: function set(params) {
155
- var _this3 = this;
155
+ var _this2 = this;
156
156
  return new Promise(function (res, _) {
157
157
  var _params$isTrigger3, _ref3;
158
- _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, {
158
+ _this2.moveCameraTo(new Vector3(params.position[0], params.position[1], params.position[2]), new Vector3(params.target[0], params.target[1], params.target[2]), 0, {
159
159
  isTrigger: (_params$isTrigger3 = params.isTrigger) !== null && _params$isTrigger3 !== void 0 ? _params$isTrigger3 : true,
160
160
  duration: (_ref3 = params.duration && params.duration * 1000) !== null && _ref3 !== void 0 ? _ref3 : 1000,
161
161
  onUpdate: function onUpdate(_ref4) {
162
162
  var _params$isTrigger4;
163
163
  var position = _ref4.position,
164
164
  lookat = _ref4.lookat;
165
- _this3.isTrigger = (_params$isTrigger4 = params.isTrigger) !== null && _params$isTrigger4 !== void 0 ? _params$isTrigger4 : true;
165
+ _this2.isTrigger = (_params$isTrigger4 = params.isTrigger) !== null && _params$isTrigger4 !== void 0 ? _params$isTrigger4 : true;
166
166
  },
167
167
  onComplate: function onComplate() {
168
168
  var _params$duration2;
169
- _this3.isTrigger = false;
169
+ _this2.isTrigger = false;
170
170
  res({
171
- position: _this3.camera.position.toArray(),
172
- target: _this3.controls.target.toArray(),
171
+ position: _this2.camera.position.toArray(),
172
+ target: _this2.controls.target.toArray(),
173
173
  isTrigger: true,
174
174
  duration: (_params$duration2 = params.duration) !== null && _params$duration2 !== void 0 ? _params$duration2 : 0,
175
175
  userInput: true
@@ -201,7 +201,7 @@ var Camera = /*#__PURE__*/function () {
201
201
  }, {
202
202
  key: "moveCameraTo",
203
203
  value: function moveCameraTo(position, target) {
204
- var _this4 = this;
204
+ var _this3 = this;
205
205
  var pitch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
206
206
  var options = arguments.length > 3 ? arguments[3] : undefined;
207
207
  var currentPoition = this.camera.position.clone();
@@ -212,7 +212,7 @@ var Camera = /*#__PURE__*/function () {
212
212
  this.controls.target.copy(target);
213
213
  requestAnimationFrame(function () {
214
214
  (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
215
- _this4.sceneControl.renderer.render(_this4.sceneControl.scene, _this4.sceneControl.camera);
215
+ _this3.sceneControl.renderer.render(_this3.sceneControl.scene, _this3.sceneControl.camera);
216
216
  });
217
217
  return;
218
218
  }
@@ -227,18 +227,18 @@ var Camera = /*#__PURE__*/function () {
227
227
  p: -this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)
228
228
  }, (options === null || options === void 0 ? void 0 : options.duration) || 1000).onStart(function () {
229
229
  (options === null || options === void 0 ? void 0 : options.onStart) && options.onStart();
230
- _this4.controls.enabled = false;
231
- _this4.isTransitionPeriod = true;
230
+ _this3.controls.enabled = false;
231
+ _this3.isTransitionPeriod = true;
232
232
  }).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function (_ref5) {
233
233
  var t = _ref5.t,
234
234
  lookat = _ref5.lookat,
235
235
  p = _ref5.p;
236
- _this4.controls.target.copy(lookat);
236
+ _this3.controls.target.copy(lookat);
237
237
  if (pitch)
238
238
  // @ts-ignore
239
- _this4.camera.rotationParent.x = p;
239
+ _this3.camera.rotationParent.x = p;
240
240
  var currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t);
241
- _this4.camera.position.copy(currentPosition);
241
+ _this3.camera.position.copy(currentPosition);
242
242
  (options === null || options === void 0 ? void 0 : options.onUpdate) && options.onUpdate({
243
243
  position: currentPosition,
244
244
  lookat: lookat
@@ -247,9 +247,9 @@ var Camera = /*#__PURE__*/function () {
247
247
  requestAnimationFrame(function () {
248
248
  (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
249
249
  });
250
- _this4.controls.enabled = true;
250
+ _this3.controls.enabled = true;
251
251
  setTimeout(function () {
252
- _this4.isTransitionPeriod = false;
252
+ _this3.isTransitionPeriod = false;
253
253
  });
254
254
  }).start();
255
255
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","MathUtils","TWEEN","Vector3","Camera","camera","controls","sceneControl","isTrigger","handleChanged","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","addEventListener","isTransitionPeriod","renderer","render","scene","params","Promise","res","duration","moveOptions","onUpdate","lookat","onComplate","toArray","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","requestAnimationFrame","tween","stop","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, SceneControl } 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 isTrigger?: boolean\n}\n\nclass Camera {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private isTransitionPeriod = false\n private isTrigger = true\n private tween: any\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n this.isTrigger = true\n this.camera = sceneControl.camera!\n this.controls = sceneControl.controls!\n this.sceneControl = sceneControl\n this.handleChanged()\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 * caclSingleCoordinate\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 * handle camera changed\n */\n private handleChanged() {\n this.controls.addEventListener('change', () => {\n if (this.isTransitionPeriod)\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n })\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number; isTrigger?: boolean }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\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 isTrigger: params.isTrigger ?? true,\n duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n },\n onComplate: () => {\n this.isTrigger = false\n\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.isTrigger = !options.isTrigger\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = 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 requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\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","sceneControl","isTrigger","handleChanged","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","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","requestAnimationFrame","renderer","render","scene","tween","stop","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, SceneControl } 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 isTrigger?: boolean\n}\n\nclass Camera {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private isTransitionPeriod = false\n private isTrigger = true\n private tween: any\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n this.isTrigger = true\n this.camera = sceneControl.camera!\n this.controls = sceneControl.controls!\n this.sceneControl = sceneControl\n this.handleChanged()\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 * caclSingleCoordinate\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 * handle camera changed\n */\n private handleChanged() {\n // this.controls.addEventListener('change', () => {\n // // if (this.isTransitionPeriod)\n // // this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n // })\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number; isTrigger?: boolean }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\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 isTrigger: params.isTrigger ?? true,\n duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n },\n onComplate: () => {\n this.isTrigger = false\n\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.isTrigger = !options.isTrigger\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = 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 requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\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,12 +1,22 @@
1
- import { Group, Vector3 } from '@anov/3d-core';
1
+ import { Group, Vector3, lib } from '@anov/3d-core';
2
2
  /**
3
- * create sky system
3
+ * create sky system, main time
4
4
  * @param date
5
5
  * @param latitude
6
6
  * @param longitude
7
+ * @param sunRadius default 300 sun radius
7
8
  * @returns
8
9
  */
9
- declare const createSkySystem: (date: Date, latitude: number, longitude: number, sunRadius?: number) => [(currentDate?: Date) => Vector3, Group & {
10
- sunPosition: Vector3;
11
- }, any];
10
+ declare const createSkySystem: (date: Date, latitude: number, longitude: number, sunRadius?: number) => {
11
+ setDate: (currentDate?: Date) => Vector3;
12
+ skyGroup: Group & {
13
+ sunPosition: Vector3;
14
+ };
15
+ sky: lib.Sky;
16
+ skyControl: {
17
+ disabled: () => void;
18
+ disabledSun: () => void;
19
+ enabledSun: () => void;
20
+ };
21
+ };
12
22
  export default createSkySystem;
@@ -14,8 +14,6 @@ var Sky = lib.Sky;
14
14
  var initsSkySystem = function initsSkySystem(options) {
15
15
  var sky = new Sky();
16
16
  var position = new Vector3();
17
- var _use$useScene = use.useScene(),
18
- renderer = _use$useScene.renderer;
19
17
  sky.scale.setScalar(450000);
20
18
  var effectController = {
21
19
  turbidity: 10,
@@ -46,10 +44,10 @@ var initsSkySystem = function initsSkySystem(options) {
46
44
  var initSunLight = function initSunLight(options) {
47
45
  var _opts$mapSize, _opts$mapSize2;
48
46
  var opts = options || {};
49
- var sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 10));
47
+ var sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 8));
50
48
  sunLight.castShadow = true;
51
49
  sunLight.shadow.bias = getLastValue(opts.bias, -0.005);
52
- sunLight.shadow.mapSize.set(getLastValue((_opts$mapSize = opts.mapSize) === null || _opts$mapSize === void 0 ? void 0 : _opts$mapSize[0], 1024 * 2), getLastValue((_opts$mapSize2 = opts.mapSize) === null || _opts$mapSize2 === void 0 ? void 0 : _opts$mapSize2[1], 1024 * 2));
50
+ sunLight.shadow.mapSize.set(getLastValue((_opts$mapSize = opts.mapSize) === null || _opts$mapSize === void 0 ? void 0 : _opts$mapSize[0], 1024), getLastValue((_opts$mapSize2 = opts.mapSize) === null || _opts$mapSize2 === void 0 ? void 0 : _opts$mapSize2[1], 1024));
53
51
  var cam = sunLight.shadow.camera;
54
52
  cam.near = getLastValue(opts.near, 1);
55
53
  cam.far = getLastValue(opts.far, 10000);
@@ -61,17 +59,18 @@ var initSunLight = function initSunLight(options) {
61
59
  };
62
60
 
63
61
  /**
64
- * create sky system
62
+ * create sky system, main time
65
63
  * @param date
66
64
  * @param latitude
67
65
  * @param longitude
66
+ * @param sunRadius default 300 sun radius
68
67
  * @returns
69
68
  */
70
69
  var createSkySystem = function createSkySystem(date, latitude, longitude) {
71
70
  var sunRadius = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 300;
72
- var _use$useScene2 = use.useScene(),
73
- renderer = _use$useScene2.renderer,
74
- scene = _use$useScene2.scene;
71
+ var _use$useScene = use.useScene(),
72
+ renderer = _use$useScene.renderer,
73
+ scene = _use$useScene.scene;
75
74
  sunRadius = 300;
76
75
  if (!renderer && !scene) throw new Error('renderer or scene is not exist');
77
76
  var _initsSkySystem = initsSkySystem(),
@@ -81,12 +80,9 @@ var createSkySystem = function createSkySystem(date, latitude, longitude) {
81
80
  uniforms = _initsSkySystem2[2];
82
81
  var sunLight = initSunLight();
83
82
  var skyGroup = new Group();
84
-
85
- // TODO: 工厂案例临时释
86
- // scene!.add(sky)
83
+ scene.add(sky);
87
84
  skyGroup.add(sunLight);
88
- // scene!.add(skyGroup)
89
-
85
+ scene.add(skyGroup);
90
86
  var move = function move(altitude, azimuth) {
91
87
  position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth);
92
88
  uniforms.sunPosition.value.copy(position);
@@ -102,19 +98,29 @@ var createSkySystem = function createSkySystem(date, latitude, longitude) {
102
98
  altitude = _getSunPosition.altitude,
103
99
  azimuth = _getSunPosition.azimuth;
104
100
  move(altitude, azimuth);
105
-
106
- /**
107
- * set date
108
- * @param currentDate
109
- * @returns
110
- */
111
101
  var setDate = function setDate(currentDate) {
112
102
  var _getSunPosition2 = getSunPosition(currentDate || date, latitude, longitude),
113
103
  altitude = _getSunPosition2.altitude,
114
104
  azimuth = _getSunPosition2.azimuth;
115
105
  return move(altitude, azimuth);
116
106
  };
117
- return [setDate, skyGroup, sky];
107
+ var skyControl = {
108
+ disabled: function disabled() {},
109
+ disabledSun: function disabledSun() {
110
+ sunLight.visible = false;
111
+ sky.visible = false;
112
+ },
113
+ enabledSun: function enabledSun() {
114
+ sunLight.visible = true;
115
+ sky.visible = true;
116
+ }
117
+ };
118
+ return {
119
+ setDate: setDate,
120
+ skyGroup: skyGroup,
121
+ sky: sky,
122
+ skyControl: skyControl
123
+ };
118
124
  };
119
125
  export default createSkySystem;
120
126
  //# sourceMappingURL=index.js.map
@@ -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 // 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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"}
1
+ {"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","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","useScene","renderer","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate","skyControl","disabled","disabledSun","visible","enabledSun"],"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\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, 8))\n sunLight.castShadow = true\n\n sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024), getLastValue(opts.mapSize?.[1], 1024))\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, main time\n * @param date\n * @param latitude\n * @param longitude\n * @param sunRadius default 300 sun radius\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n sunRadius = 300\n\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 const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n const skyControl = {\n disabled: () => {},\n disabledSun: () => {\n sunLight.visible = false\n sky.visible = false\n },\n enabledSun: () => {\n sunLight.visible = true\n sky.visible = true\n },\n }\n\n return {\n setDate,\n skyGroup,\n sky,\n skyControl,\n }\n}\n\nexport default createSkySystem\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export declare const CloudShaderConfig: {
2
+ texture1: {
3
+ value: null;
4
+ };
5
+ texture2: {
6
+ value: null;
7
+ };
8
+ iTime: {
9
+ value: number;
10
+ };
11
+ cloudDensity: {
12
+ value: number;
13
+ };
14
+ cloudDensity2: {
15
+ value: number;
16
+ };
17
+ cloudalpha: {
18
+ value: number;
19
+ };
20
+ cloudscale: {
21
+ value: number;
22
+ };
23
+ speed: {
24
+ value: number;
25
+ };
26
+ color: {
27
+ value: number[];
28
+ };
29
+ flash: {
30
+ value: number;
31
+ };
32
+ };
@@ -0,0 +1,50 @@
1
+ // @ts-nocheck
2
+
3
+ import { RepeatWrapping, TextureLoader } from '@anov/3d-core';
4
+ var textureLoader = new TextureLoader();
5
+
6
+ // 默认配置
7
+ export var CloudShaderConfig = {
8
+ texture1: {
9
+ value: null
10
+ },
11
+ texture2: {
12
+ value: null
13
+ },
14
+ iTime: {
15
+ value: 0
16
+ },
17
+ cloudDensity: {
18
+ value: 0.01
19
+ },
20
+ cloudDensity2: {
21
+ value: 1
22
+ },
23
+ cloudalpha: {
24
+ value: 1
25
+ },
26
+ cloudscale: {
27
+ value: 8.0
28
+ },
29
+ speed: {
30
+ value: 0.5
31
+ },
32
+ color: {
33
+ value: [0.9, 0.9, 0.9]
34
+ },
35
+ flash: {
36
+ value: 11.3
37
+ }
38
+ };
39
+ CloudShaderConfig.texture1.value = textureLoader.load('./T_soft_smoke.png');
40
+ CloudShaderConfig.texture2.value = textureLoader.load('./T_TileNoise.png');
41
+ CloudShaderConfig.texture1.value.wrapS = CloudShaderConfig.texture1.value.wrapT = RepeatWrapping;
42
+ CloudShaderConfig.texture2.value.wrapS = CloudShaderConfig.texture2.value.wrapT = RepeatWrapping;
43
+ CloudShaderConfig.cloudDensity.value = 0.02;
44
+ CloudShaderConfig.cloudDensity2.value = 1.6;
45
+ CloudShaderConfig.cloudalpha.value = 0.8;
46
+ CloudShaderConfig.cloudscale.value = 8.0;
47
+ CloudShaderConfig.speed.value = 0.3;
48
+ CloudShaderConfig.color.value = [0.9, 0.9, 0.9];
49
+ CloudShaderConfig.flash.value = 0.3;
50
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RepeatWrapping","TextureLoader","textureLoader","CloudShaderConfig","texture1","value","texture2","iTime","cloudDensity","cloudDensity2","cloudalpha","cloudscale","speed","color","flash","load","wrapS","wrapT"],"sources":["../../../src/environment/skyv2/config.ts"],"sourcesContent":["// @ts-nocheck\n\nimport { RepeatWrapping, TextureLoader } from '@anov/3d-core'\n\nconst textureLoader = new TextureLoader()\n\n// 默认配置\nexport const CloudShaderConfig = {\n texture1: { value: null },\n texture2: { value: null },\n iTime: { value: 0 },\n\n cloudDensity: { value: 0.01 },\n cloudDensity2: { value: 1 },\n cloudalpha: { value: 1 },\n cloudscale: { value: 8.0 },\n speed: { value: 0.5 },\n color: { value: [0.9, 0.9, 0.9] },\n flash: { value: 11.3 },\n}\n\nCloudShaderConfig.texture1.value = textureLoader.load('./T_soft_smoke.png')\nCloudShaderConfig.texture2.value = textureLoader.load('./T_TileNoise.png')\nCloudShaderConfig.texture1.value.wrapS = CloudShaderConfig.texture1.value.wrapT = RepeatWrapping\nCloudShaderConfig.texture2.value.wrapS = CloudShaderConfig.texture2.value.wrapT = RepeatWrapping\n\nCloudShaderConfig.cloudDensity.value = 0.02\nCloudShaderConfig.cloudDensity2.value = 1.6\nCloudShaderConfig.cloudalpha.value = 0.8\nCloudShaderConfig.cloudscale.value = 8.0\nCloudShaderConfig.speed.value = 0.3\nCloudShaderConfig.color.value = [0.9, 0.9, 0.9]\nCloudShaderConfig.flash.value = 0.3"],"mappings":"AAAA;;AAEA,SAASA,cAAc,EAAEC,aAAa,QAAQ,eAAe;AAE7D,IAAMC,aAAa,GAAG,IAAID,aAAa,EAAE;;AAEzC;AACA,OAAO,IAAME,iBAAiB,GAAG;EAC/BC,QAAQ,EAAE;IAAEC,KAAK,EAAE;EAAK,CAAC;EACzBC,QAAQ,EAAE;IAAED,KAAK,EAAE;EAAK,CAAC;EACzBE,KAAK,EAAE;IAAEF,KAAK,EAAE;EAAE,CAAC;EAEnBG,YAAY,EAAE;IAAEH,KAAK,EAAE;EAAK,CAAC;EAC7BI,aAAa,EAAE;IAAEJ,KAAK,EAAE;EAAE,CAAC;EAC3BK,UAAU,EAAE;IAAEL,KAAK,EAAE;EAAE,CAAC;EACxBM,UAAU,EAAE;IAAEN,KAAK,EAAE;EAAI,CAAC;EAC1BO,KAAK,EAAE;IAAEP,KAAK,EAAE;EAAI,CAAC;EACrBQ,KAAK,EAAE;IAAER,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;EAAE,CAAC;EACjCS,KAAK,EAAE;IAAET,KAAK,EAAE;EAAK;AACvB,CAAC;AAEDF,iBAAiB,CAACC,QAAQ,CAACC,KAAK,GAAGH,aAAa,CAACa,IAAI,CAAC,oBAAoB,CAAC;AAC3EZ,iBAAiB,CAACG,QAAQ,CAACD,KAAK,GAAGH,aAAa,CAACa,IAAI,CAAC,mBAAmB,CAAC;AAC1EZ,iBAAiB,CAACC,QAAQ,CAACC,KAAK,CAACW,KAAK,GAAGb,iBAAiB,CAACC,QAAQ,CAACC,KAAK,CAACY,KAAK,GAAGjB,cAAc;AAChGG,iBAAiB,CAACG,QAAQ,CAACD,KAAK,CAACW,KAAK,GAAGb,iBAAiB,CAACG,QAAQ,CAACD,KAAK,CAACY,KAAK,GAAGjB,cAAc;AAEhGG,iBAAiB,CAACK,YAAY,CAACH,KAAK,GAAG,IAAI;AAC3CF,iBAAiB,CAACM,aAAa,CAACJ,KAAK,GAAG,GAAG;AAC3CF,iBAAiB,CAACO,UAAU,CAACL,KAAK,GAAG,GAAG;AACxCF,iBAAiB,CAACQ,UAAU,CAACN,KAAK,GAAG,GAAG;AACxCF,iBAAiB,CAACS,KAAK,CAACP,KAAK,GAAG,GAAG;AACnCF,iBAAiB,CAACU,KAAK,CAACR,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/CF,iBAAiB,CAACW,KAAK,CAACT,KAAK,GAAG,GAAG"}
@@ -0,0 +1,14 @@
1
+ import type { Group, SceneControl } from '@anov/3d-core';
2
+ import { Fog2DMesh } from '../../';
3
+ declare class Sky {
4
+ fog2d: Fog2DMesh | null;
5
+ sky: Group | null;
6
+ cloud: Group | null;
7
+ scene: SceneControl | null;
8
+ constructor();
9
+ init(scene: SceneControl): Promise<any>;
10
+ setScale(): void;
11
+ private setWeatherStrategy;
12
+ setWeather(weatherType: string): void;
13
+ }
14
+ export default Sky;