@anov/3d-ability 0.0.13 → 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.
- package/dist/camera/index.js +31 -31
- package/dist/camera/index.js.map +1 -1
- package/dist/environment/sky/index.d.ts +15 -5
- package/dist/environment/sky/index.js +26 -20
- package/dist/environment/sky/index.js.map +1 -1
- package/dist/environment/skyv2/config.d.ts +32 -0
- package/dist/environment/skyv2/config.js +50 -0
- package/dist/environment/skyv2/config.js.map +1 -0
- package/dist/environment/skyv2/index.d.ts +14 -0
- package/dist/environment/skyv2/index.js +140 -0
- package/dist/environment/skyv2/index.js.map +1 -0
- package/dist/environment/skyv2/shader/cloud/frag.d.ts +2 -0
- package/dist/environment/skyv2/shader/cloud/frag.js +3 -0
- package/dist/environment/skyv2/shader/cloud/frag.js.map +1 -0
- package/dist/environment/skyv2/shader/cloud/vert.d.ts +2 -0
- package/dist/environment/skyv2/shader/cloud/vert.js +3 -0
- package/dist/environment/skyv2/shader/cloud/vert.js.map +1 -0
- package/dist/environment/skyv2/shader/sky/frag.d.ts +2 -0
- package/dist/environment/skyv2/shader/sky/frag.js +3 -0
- package/dist/environment/skyv2/shader/sky/frag.js.map +1 -0
- package/dist/environment/skyv2/type.d.ts +14 -0
- package/dist/environment/skyv2/type.js +26 -0
- package/dist/environment/skyv2/type.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/postEffects/outlinePass.js.map +1 -1
- package/dist/weather/index.d.ts +36 -0
- package/dist/weather/index.js +273 -5
- package/dist/weather/index.js.map +1 -1
- package/dist/weather/objects/CloudMesh.d.ts +22 -0
- package/dist/weather/objects/CloudMesh.js +122 -0
- package/dist/weather/objects/CloudMesh.js.map +1 -0
- package/dist/weather/{fog2DMesh.d.ts → objects/Fog2DMesh.d.ts} +6 -7
- package/dist/weather/objects/Fog2DMesh.js +94 -0
- package/dist/weather/objects/Fog2DMesh.js.map +1 -0
- package/dist/weather/objects/SkyMesh.d.ts +7 -0
- package/dist/weather/{fog2DMesh.js → objects/SkyMesh.js} +19 -55
- package/dist/weather/objects/SkyMesh.js.map +1 -0
- package/dist/weather/objects/SnowMesh.d.ts +17 -0
- package/dist/weather/objects/SnowMesh.js +163 -0
- package/dist/weather/objects/SnowMesh.js.map +1 -0
- package/dist/weather/shaders/cloud.d.ts +37 -0
- package/dist/weather/shaders/cloud.js +38 -0
- package/dist/weather/shaders/cloud.js.map +1 -0
- package/dist/weather/shaders/fog.d.ts +16 -0
- package/dist/weather/shaders/fog.js +17 -0
- package/dist/weather/shaders/fog.js.map +1 -0
- package/dist/weather/shaders/sky.d.ts +6 -0
- package/dist/weather/shaders/sky.js +7 -0
- package/dist/weather/shaders/sky.js.map +1 -0
- package/dist/weather/shaders/snow.d.ts +28 -0
- package/dist/weather/shaders/snow.js +33 -0
- package/dist/weather/shaders/snow.js.map +1 -0
- package/dist/weather/utils/constant.d.ts +38 -0
- package/dist/weather/utils/constant.js +25 -0
- package/dist/weather/utils/constant.js.map +1 -0
- package/dist/weather/utils/type.d.ts +11 -0
- package/dist/weather/utils/type.js +23 -0
- package/dist/weather/utils/type.js.map +1 -0
- package/package.json +3 -3
- package/dist/weather/fog2DMesh.js.map +0 -1
- package/dist/weather/glsl/fog.d.ts +0 -2
- package/dist/weather/glsl/fog.js +0 -3
- package/dist/weather/glsl/fog.js.map +0 -1
package/dist/camera/index.js
CHANGED
|
@@ -88,10 +88,10 @@ var Camera = /*#__PURE__*/function () {
|
|
|
88
88
|
}, {
|
|
89
89
|
key: "handleChanged",
|
|
90
90
|
value: function handleChanged() {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
122
|
+
_this.isTrigger = false;
|
|
123
123
|
res({
|
|
124
|
-
position:
|
|
125
|
-
target:
|
|
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
|
|
136
|
-
lastPosition =
|
|
137
|
-
lastLookat =
|
|
138
|
-
|
|
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 =
|
|
142
|
-
var _lastLookat =
|
|
143
|
-
|
|
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
|
|
155
|
+
var _this2 = this;
|
|
156
156
|
return new Promise(function (res, _) {
|
|
157
157
|
var _params$isTrigger3, _ref3;
|
|
158
|
-
|
|
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
|
-
|
|
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
|
-
|
|
169
|
+
_this2.isTrigger = false;
|
|
170
170
|
res({
|
|
171
|
-
position:
|
|
172
|
-
target:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
231
|
-
|
|
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
|
-
|
|
236
|
+
_this3.controls.target.copy(lookat);
|
|
237
237
|
if (pitch)
|
|
238
238
|
// @ts-ignore
|
|
239
|
-
|
|
239
|
+
_this3.camera.rotationParent.x = p;
|
|
240
240
|
var currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t);
|
|
241
|
-
|
|
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
|
-
|
|
250
|
+
_this3.controls.enabled = true;
|
|
251
251
|
setTimeout(function () {
|
|
252
|
-
|
|
252
|
+
_this3.isTransitionPeriod = false;
|
|
253
253
|
});
|
|
254
254
|
}).start();
|
|
255
255
|
}
|
package/dist/camera/index.js.map
CHANGED
|
@@ -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) =>
|
|
10
|
-
|
|
11
|
-
|
|
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,
|
|
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
|
|
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$
|
|
73
|
-
renderer = _use$
|
|
74
|
-
scene = _use$
|
|
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
|
-
|
|
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
|
-
|
|
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","
|
|
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;
|